Spark MLlib学习笔记之二——Spark Mllib矩阵向量
Spark Mllib底层的向量、矩阵运算使用了Breeze库,Breeze库提供了Vector/Matrix的实现以及相应计算的接口(Linalg)。但是在MLlib里面同时也提供了Vector和Linalg等的实现。在使用Breeze库时,需要导入相关包:
Import breeze.linalg._
Import breeze.numeric._
Breeze创建函数:
操作名称 |
Breeze函数 |
输出结果 |
对应Numpy函数 |
全0矩阵 |
DenseMatrix.zeros[Double](2,3) |
0.0 0.0 0.0 0.0 0.0 0.0 |
zeros((2,3)) |
全0向量 |
DenseVector.zeros[Double](3) |
DenseVector(0.0,0.0,0.0) |
zeros(3) |
全1向量 |
DenseVector.ones[Double](3) |
DenseVector(1.0,1.0,1.0) |
ones(3) |
按数值填充向量 |
DenseVector.fill(3){1.0} |
DenseVector(1.0,1.0,1.0) |
ones(3)*1.0 |
生成随机向量 |
DenseVector.range(start,end,step), Vector.rangeD(start,end,step) |
DenseVector(1,3,5,7,9) |
|
线性等分向量(用于产生Start, end之间的N点行矢量) |
DenseVector.linspace(start,end,numvals) |
||
单位矩阵 |
DenseMatr.eye[Double](3) |
1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 |
eye(3) |
对角矩阵 |
Diag(DenseVector(1.0,2.0,3.0)) |
1.0 0.0 0.0 0.0 2.0 0.0 0.0 0.0 3.0 |
diag((1.0,2.0,3.0)) |
按照行创建矩阵 |
DenseMatrix((1.0,2.0),(3.0,4.0)) |
1.0 2.0 3.0 4.0 |
array([[1.0,2.0],[3.0,4.0]]) |
按照行创建向量 |
DenseVector(1,2,3,4) |
[1 2 3 4] |
array([1,2,3,4]) |
向量转置 |
DenseVector(1,2,3,4).t |
[1 2 3 4]T |
array([1 2 3 4]).reshape(-1,1) |
从函数创建向量 |
DenseVector.tabulate(3){i => i*2} |
[0 1 4] |
|
从函数创建矩阵 |
DenseMatrix.tabulate(3,2){case(i,j) => i+j} |
0 1 1 2 2 3 |
|
从数组创建向量 |
new DenseVector(array(1, 2, 3,4)) |
[1 2 3 4] |
|
从数组创建矩阵 |
new DenseMatrix(2,3,array(11,12,13,21.22,23)) |
11 12 13 21 22 23 |
|
0到1的随机向量 |
DenseVector.rand(4) |
[0.0222 0.2231 0.5356 0.6902] |
|
0到1的随机矩阵 |
DenseMatrix.rand(2,3) |
0.2122 0.3033 0.8675 0.6628 0.0023 0.9987 |
Breeze元素访问
操作名称 |
Breeze函数 |
对应Numpy函数 |
指定位置 |
a(0,1) |
a[0,1] |
向量子集 |
a(1 to 4), a(1 until 5), a.slice(1,5) |
a[1:5] |
按照指定步长取子集 |
a(5 to 0 by -1) |
a[5:0:-1] |
指定开始位置至结尾 |
a(1 to -1) |
a[1:] |
最后一个元素 |
a(-1) |
a[-1] |
矩阵指定列 |
a(::, 2) |
a[:,2] |
Breeze元素操作
操作名称 |
Breeze函数 |
对应Numpy函数 |
调整矩阵形状 |
a.reshape(3,2) |
a.reshape(3,2) |
矩阵转成向量 |
a.toDenseVector(Makes copy) |
a.flatten() |
复制下三角 |
lowerTriangular(a) |
tril(a) |
复制上三角 |
upperTriangular(a) |
triu(a) |
矩阵复制 |
a.copy |
np.copy(a) |
取对角线元素 |
diag(a) |
diagonal(a) |
子集赋数值 |
a(1 to 4) := 5.0 |
a[1:4]=5.0 |
子集赋向量 |
a(1 to 4) := DenseVector(1.0,2.0,3.0) |
a[1:4]=[1.0 2.0 3.0] |
矩阵赋值 |
a(1 to 3, 1 to 3) := 5.0 |
a[2:4, 2:4] = 5.0 |
矩阵列赋值 |
a(::, 2) := 5.0 |
a(:,3) = 5 |
垂直连接矩阵 |
DenseMatrix.vertcat(a,b) |
[a;b] |
横向连接矩阵 |
DenseMatrix.horzcat(a,b) |
[a,b] |
向量连接 |
DenseVector.vertcat(a,b) |
[a b] |
Breeze数值计算函数
操作名称 |
Breeze函数 |
对应Numpy函数 |
元素加法 |
a + b |
a + b |
元素乘法 |
a :* b |
a * b |
元素除法 |
a :/ b |
a / b |
元素比较 |
a :< b |
a < b |
元素相等 |
a :== b |
a == b |
元素追加 |
a :+= 1.0 |
a += 1 |
元素追乘 |
a :*= 2.0 |
a *= 2 |
向量点积 |
a dot b, a.t * bT |
dot(a,b) |
元素最大值 |
max(a) |
a.max() |
元素最大值及位置 |
argmax(a) |
a.argmax() |
Breeze求和函数
操作名称 |
Breeze函数 |
对应Numpy函数 |
元素求和 |
sum(a) |
a.sum() |
每一列求和 |
sum(a, axis._0), sum(a(::,*)) |
sum(a,0) |
每一行求和 |
sum(a,axis._1), sum(a(*, ::)) |
sum(a,1) |
对角线元素和 |
trace(a) |
a.trace() |
累积和 |
accumulate(a) |
a.cumsum() |
Breeze布尔函数
操作名称 |
Breeze函数 |
对应Numpy函数 |
元素与操作 |
a :& b |
a & b |
元素或操作 |
a :| b |
a | b |
元素非操作 |
!a |
~a |
任意元素非零 |
any(a) |
any(a) |
所有元素非零 |
all(a) |
all(a) |
Breeze线性代数函数
操作名称 |
Breeze函数 |
对应Numpy函数 |
线性求解 |
a \ b |
linalg.solve(a,b) |
转置 |
a.t |
a.conj.transpose() |
求行列式 |
det(a) |
linalg.det(a) |
求逆 |
inv(a) |
linalg.inv(a) |
求伪逆 |
pinv(a) |
linalg.pinv(a) |
求范数 |
norm(a) |
norm(a) |
特征值和特征向量 |
eigSym(a) |
linalg.eig(a)[0] |
特征值 |
val(er,ei,_) = eig(a)(实部与虚部分开) |
lialg.eig(a)[0] |
特征向量 |
eig(a)._3 |
|
奇异值分解 |
val svd.SVD(u,s,v) = svd(a) |
linalg.svd(a) |
求矩阵的秩 |
rank(a) |
rank(a) |
矩阵长度 |
a.length |
a.size |
矩阵行数 |
a.rows |
a.shape[0] |
矩阵列数 |
a.cols |
a.shape[1] |
Breeze取整函数
操作名称 |
Breeze函数 |
对应Numpy函数 |
四舍五入 |
round(a) |
around(a) |
最小整数 |
ceil(a) |
ceil(a) |
最大整数 |
floor(a) |
floor(a) |
符号函数 |
signum(a) |
sign(a) |
取正数 |
abs(a) |
abs(a) |
BLAS向量-向量运算
SROTG |
Givens旋转设置 |
SROTMG |
改进Givens旋转设置 |
SROT |
Givens旋转 |
SROTM |
改进Givens旋转 |
SSWAP |
交换x和y |
SSCAL |
常数a乘以向量x() |
SCOPY |
把x复制到y |
SAXPY |
向量y+常数a乘以向量x(y = a*x + y) |
SDOT |
点积 |
SDSDOT |
扩展精度累积的点积 |
SNRM2 |
欧氏范数 |
SCNRM2 |
欧氏范数 |
SASUM |
绝对值之和 |
ISAMAX |
最大值位置 |
BLAS矩阵-向量运算
SGEMV |
矩阵向量乘法 |
SGBMV |
带状矩阵向量乘法 |
SSYMV |
对称矩阵向量乘法 |
SSBMV |
对称带状矩阵向量乘法 |
SSPMV |
对称填充矩阵向量乘法 |
STRMV |
三角矩阵向量乘法 |
STBMV |
三角带状矩阵向量乘法 |
STPMV |
三角填充矩阵向量乘法 |
STRSV |
求解三角矩阵 |
STBSV |
求解三角带状矩阵 |
STPSV |
求解三角填充矩阵 |
SGER |
A := alpha*x*y’ + A |
SSYR |
A := alpha*x*x’ + A |
SSPR |
A := alpha*x*x’ + A |
SSYR2 |
A := alpha*x*y’ + alpha*y*x’ + A |
SSPR2 |
A := alpha*x*y’ + alpha*y*x’ + A |
BLAS矩阵-矩阵运算
SGEMM |
矩阵乘法 |
SSYMM |
对称矩阵乘法 |
SSYPK |
对称矩阵的秩-k修正 |
SSYR2K |
对称矩阵的秩-2k修正 |
STRMM |
三角矩阵乘法 |
STRSM |
多重右端的三角线性方程组求解 |
--------------------- 本文来自 hoikin-yiu 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/hoikinyiu/article/details/52662268?utm_source=copy
Spark MLlib学习笔记之二——Spark Mllib矩阵向量相关推荐
- 第10课:底实战详解使用Java开发Spark程序学习笔记(二)
Maven下的Spark配置: http://maven.outofmemory.cn/org.apache.spark,这个网站提供了Spark core.Spark Streaming使用Mave ...
- Spark基础学习笔记22:Spark RDD案例分析
文章目录 零.本讲学习目标 一.案例分析:Spark RDD实现单词计数 (一)案例概述 (二)实现步骤 1.新建Maven管理的Spark项目 2.添加Scala和Spark依赖 3.创建WordC ...
- Spark基础学习笔记02:Spark运行时架构
文章目录 零.本讲学习目标 一.Spark运行时架构 二.YARN集群架构 (一)YARN集群主要组件 1.ResourceManager - 资源管理器 2.NodeManager - 节点管理器 ...
- Spark基础学习笔记:搭建spark on yarn 集群
一.Spark On YARN架构 Spark On YARN模式遵循YARN的官方规范,YARN只负责资源的管理和调度,运行哪种应用程序由用户自己实现,因此可能在YARN上同时运行MapReduce ...
- 2022年Spark基础学习笔记目录
一.Spark学习笔记 在私有云上创建与配置虚拟机 Spark基础学习笔记01:初步了解Spark Spark基础学习笔记02:Spark运行时架构 Spark基础学习笔记03:搭建Spark单机版环 ...
- 2022年Spark基础学习笔记
一.Spark学习笔记 在OpenStack私有云上创建与配置虚拟机 Spark基础学习笔记01:初步了解Spark Spark基础学习笔记02:Spark运行时架构 Spark基础学习笔记03:搭建 ...
- 线性代数学习笔记(二十九)——方程组解的结构(一)
停更2年多了,做事得有始有终,继续更新... 本篇笔记回顾了线性方程组解的三种情况,并讨论了齐次线性方程组解的结构,并介绍了齐次线性方程组解的相关性质.其中重点讨论了基础解系定义,以及基础解系的求法和 ...
- Spark基础学习笔记16:创建RDD
文章目录 零.本讲学习目标 一.RDD为何物 (一)RDD概念 (二)RDD示例 (三)RDD主要特征 二.做好准备工作 (一)准备文件 1.准备本地系统文件 2.准备HDFS系统文件 (二)启动Sp ...
- Spark基础学习笔记10:Scala集成开发环境
文章目录 零.本讲学习目标 一.搭建Scala的Eclipse开发环境 (一)安装Scala插件 (二)创建Scala项目 二.搭建Scala的IntelliJ IDEA开发环境 (一)启动IDEA ...
最新文章
- Spring boot使用Spring Security和OAuth2保护REST接口
- 管理者应该如何进行精益管理呢?
- 请简述什么是spring的ioc和di_绿茶用什么茶叶罐储存?有6种茶叶罐适合
- mysql slave 能写吗_MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践
- Linux sh是/bin/bash的快捷方式
- Easyspy网络检测系统
- 《飞鸽传书》把写程序和文学创作相提并论
- 视觉控每天盯着桌面,少不了桌面手机壁纸图片,请收好
- Intel安装框架爆出带本地提权的任意代码执行漏洞CVE-2017-5688
- [面试] C/C++ 语法 —— 内存与操作系统
- 零基础自学python-零基础如何自学python?
- 十四届恩智浦智能车竞赛双车组-星夜兼程队2019回顾
- 网络协议详解1 - NBNS
- DirectX示例翻译和解析StateManager Sample
- Palantir早期员工、连续创业者Brien Colwell:创业动力源自创造文化
- JavaScript设置显示video第一帧
- 武汉坚守第二十二天——谣言与辟谣与慌乱
- FairMOT多目标跟踪(安装+代码解读)
- OPPOR9Android 6.0过程,超简单 OPPOR9升级Android 6.0系统 详细教程
- 2020年李永乐线性代数强化笔记-线性方程组
热门文章
- matlab运行就是编译么,matlab编译运行c文件
- Python爬取某旅游网站中的中国城市信息
- LeetCode题库第2题 两数相加
- shell脚本详解(六)——数组简介和排序算法
- 福建师范大学计算机考研好考吗,福建师范大学考研难吗?一般要什么水平才可以进入?...
- 专科java程序设计试卷_java程序设计试卷(含答案)
- android手机定位
- JAVA 串口编程(二)
- python 清空所有对象_学习python第38天
- python mysql library popular_python之mysql入门详解(四)