Scala NLP是一套机器学习和数值计算的库,它主要是关于科学计算SC、机器学习ML和自然语言处理NLP的,它包括三个库:Breeze、Epic和Puck。

  • Breeze是机器学习和数值计算库
  • Epic是一种高性能统计分析器和结构化预测库
  • Puck是一个快速GPU加速解析器

一、Breeze创建函数

  • 全0矩阵:DenseMatrix.zero[Double](n,m)
  • 全0向量:DenseVector.zero[Double](n)
  • 全1向量:DenseVector.ones[Double](n)
  • 按数值填充向量:DenseVector.fill(n){5.0}
  • 生成随机向量:DenseVector.range(start,stop,step)
  • 线性等分向量:DenseVector.linspace(start,stop,numvals)
  • 单位矩阵:DenseMatrix.eye[Double](n)
  • 对角矩阵:diag(DenseVector(1.0,2.0,3.0))
  • 按照行创建矩阵:DenseMatrix((1.0,2.0),(3.0,4.0))
  • 按照行创建向量:DenseVector(1,2,3,4)
  • 向量转置:DenseVector(1,2,3,4).t
  • 从函数创建向量:DenseVector.tabulate(3){i=>2*i}
  • 从函数创建矩阵:DenseMatrix.tabulate(3,2){case(i,j)=>i+j}
  • 从数组创建向量:new DenseVector(Array(1,2,3,4))
  • 从数组创建矩阵:new DenseMatrix(2,3,Array(11,12,13,14))
  • 0到1的随机向量:DenseVector.rand(4)
  • 0到1的随机矩阵:DenseMatrix.rand(2,3)

二、Breeze元素访问和操作函数

  • 指定位置:a(0,1)
  • 向量子集:a(1 to 4)
  • 按照指定步长取子集:a(5 to 0 by -1)
  • 指定开始位置至结尾:a(1 to -1)
  • 最后一个元素:a(-1)
  • 矩阵指定列:a(::,2)

三、Breeze数值计算函数

  • 调整矩阵形状:a.reshape(3,2)
  • 矩阵转成向量:a.toDenseVector
  • 复制下三角:lowTriangular(a)
  • 复制上三角:upTriangular(a)
  • 矩阵复制:a.copy
  • 取对角线元素:diag(a)
  • 子集赋数值:a(1 to 4):=5.0
  • 子集赋向量:a(1 to 4):=DenseVector(1.0,2.0,3.0)
  • 矩阵赋值:a(1 to 3,1 to 3):=5.0
  • 矩阵列赋值:a(::,2):= 5.0
  • 垂直连接矩阵:DenseMatrix.vertcat(a,b)
  • 横向连接矩阵:DenseMatrix.horzcat(a,b)
  • 向量连接:DenseVector.vertcat(a,b)

四、Breeze求和函数

  • 元素加法:a+b
  • 元素乘法:a:*b
  • 元素除法:a:/b
  • 元素比较:a:<b
  • 元素相等:a:==b
  • 元素追加:a:+=1.0
  • 元素追乘:a:*=2.0
  • 向量点积:a dot b
  • 元素最大值:max(a)
  • 元素最大值及位置:argmax(a)

五、Breeze布尔函数

  • 元素与操作:a:&b
  • 元素或操作:a:|b
  • 元素非操作:!a
  • 任意元素非零:any(a)
  • 所有元素非零:all(a)

六、Breeze线性代数函数

  • 线性求解:a\b
  • 转置:a.t
  • 求特征值:det(a)
  • 求逆:inv(a)
  • 求伪逆:pinv(a)
  • 求范数:norm(a)
  • 特征值和特征向量:eigSym(a)
  • 特征值:eig(a)
  • 特征向量:eig(a)._3
    奇异值分解:svd(a)
  • 求矩阵的秩:rank(a)
  • 矩阵长度:a.length
  • 矩阵行数:a.rows
  • 矩阵列数:a.cols

七、Breeze取整函数

  • 四舍五入:round
  • 最小整数:ceil
  • 最大整数:floor
  • 符号函数:signum
  • 取正数:abs

八、Breeze常量函数

  • 非数字:NaM
  • 无穷大:Inf
  • 圆周率:Constants.Pi
  • 以e为底的指数函数:Constants.E

九、Breeze复数函数

  • 实数:z.real
  • 虚数:z.conjugate

十、Breeze三角函数

  • sin、sinh、asin、asinh
  • cos、cosh、acos、acosh
  • tan、tanh、atan、atanh
  • atan2
  • sincx
  • sincpi

十一、Breeze对数和指数函数

  • log
  • log1p
  • sqrt、sbrt
  • pow

BLAS(Basic Linear Algebra Subprograms)基础线性代数程序集是一个应用程序API接口标准,用以规范发布基础线性代数操作的数值库,按照功能分为三个级别:

  • 向量-向量运算,比如点积、加法和数乘、绝对值的和
  • 矩阵-向量运算,比如矩阵向量乘法
  • 矩阵-矩阵运算,比如矩阵乘法

在Spark MLlib中,采用了BLAS线性代数运算符,BLAS的基本运算函数:

  • 点积:dot
  • 常数乘以向量加另一个向量:axpy
  • 准备Givens旋转:rotg
  • 实施旋转:rot
  • 准备修改过的Givens旋转:rotmg
  • 实施修改过的旋转:gotm
  • 把x复制到y:copy
  • 交换x和y:swap
  • 2-范数:nrm2
  • 绝对值求和:asum
  • 常数乘以向量:scal
  • 最大绝对值元素的索引:amax

本篇完~

MLlib Breeze和BLAS简介相关推荐

  1. RDD、矩阵基础——3. 矩阵、向量(Breeze、BLAS)

    MLlib库底层的Vector(向量).Matrix(矩阵)运算使用了 Breeze库和BLAS库. Breeze库提供了相应计算的接口(Linalg). 但是在MLlib里面同时也提供了Vector ...

  2. BLAS之GEMM和GEMV

    BLAS简介 BLAS全称是Basic Linear Algebra Subprograms是规定了一套低级的执行常见线性代数操作的规范.其实现经常针对特殊的机器进行优化,比较著名的·BLAS库有AC ...

  3. Winograd,GEMM算法综述(CNN中高效卷积实现)(上)

                           高效卷积实现算法和应用综述(上) 在下一篇文章会介绍Winograd算法的应用,在ICLR,CVPR,FPGA,FCCM等机器学习和FPGA领域的定会上的 ...

  4. PyTorch Python API详解大全(持续更新ing...)

    诸神缄默不语-个人CSDN博文目录 具体内容以官方文档为准. 最早更新时间:2021.4.23 最近更新时间:2023.1.9 文章目录 0. 常用入参及函数统一解释 1. torch 1.1 Ten ...

  5. 基础篇 | 15 C++ 科学计算 - OpenBLAS的安装与使用

    BLAS简介 类似于Anaconda里面的numpy,C++里面也有类似的矩阵运算库,称之为BLAS(Basic Linear Algebra Subprograms):基础线性代数子程序库. 支持的 ...

  6. 电商大数据项目-推荐系统实战之推荐算法(三)

    电商大数据项目-推荐系统实战(一)环境搭建以及日志,人口,商品分析 https://blog.51cto.com/6989066/2325073 电商大数据项目-推荐系统实战之推荐算法 https:/ ...

  7. Spark入门实战系列--8.Spark MLlib(上)--机器学习及SparkMLlib简介

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.机器学习概念 1.1 机器学习的定义 在维基百科上对机器学习提出以下几种定义: l&qu ...

  8. 学习笔记Spark(九)—— Spark MLlib应用(1)—— 机器学习简介、Spark MLlib简介

    一.机器学习简介 1.1.机器学习概念 机器学习就是让机器能像人一样有学习.理解.认识的能力. 机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能. ...

  9. Spark MLlib 入门--Breeze函数

    Breeze函数介绍 (欢迎加qq1204738320学习交流) Spark MLlib底层的向量.矩阵运算使用了Breeze库,Breeze库提供了Vector/Matrix的实现以及 相应计算的接 ...

最新文章

  1. 注册时发短信如何防止别人恶意调用短信接口
  2. Context类(上下文)
  3. mysql按字段多条组合_MySQL按分组把字段值组合成一个结果
  4. 嵌入式linux tftp rpm,嵌入式linux的tftp配置
  5. java除号_Java的运算符
  6. 【C#】ADO .Net Entities Framework使用查询语句时遇到的错误
  7. OpenStack Keystone v3 API新特性
  8. 2017/4/12 afternoon
  9. qt 获取用户缩放_Qt-如何创建随窗口缩放并保持纵横比的图像?
  10. Android:登录保存回显用户信息或配置文件(sharedpreferences)
  11. 李子奈《计量经济学》第四版笔记和课后答案
  12. [任务2]安装ubuntu Linux
  13. 二建带记忆功能计算机,二建实务记忆技巧
  14. 【转载】高光谱图像处理与信息提取综述
  15. mysql rebuild index_批量rebuild索引
  16. c语言无符号整型越界,整型输出越界问题
  17. 智能控制导论 # 模糊控制 1 理论及实例
  18. ya的意思_请问ya是你的意思吗,为什么不写成yo – 手机爱问
  19. 《前端》html总结
  20. Vue在build编译时写在style中的路径问题

热门文章

  1. mysql timestamp 用法_mysql之TIMESTAMP(时间戳)用法详解
  2. jquery对象PHP转换,JavaScript_jQuery对象与DOM对象之间的相互转换,1、jQuery对象转换成DOM对象 jQue - phpStudy...
  3. continue语句
  4. Centos Discuz!论坛系统
  5. 机器人玛娜的扮演者_银河奥特曼S:玛娜的扮演者未婚先孕上推特热搜,机器人也能生孩子...
  6. datetime.datetime.now().strftime
  7. 快表的使用之访问内存有效时间计算
  8. 手把手教你如何将有线音箱改装成蓝牙音箱
  9. “好人综合症”是一种心理疾病
  10. wincc画面窗口 c语言,WINCC实现多画面窗口的问题(带附图 )-急