Spark MLlib矩阵(基本数据类型)
⼀、本地矩阵(Local Matrix):本地矩阵具有整型的⾏、列索引值和
双精度浮点型的元素值,它存储在单机上。MLlib⽀持稠密矩阵
DenseMatrix和稀疏矩阵 Sparse Matrix两种本地矩阵,稠密矩阵将所有
元素的值存储在⼀个列优先(Column-major)的双精度型数组中,⽽
稀疏矩阵则将⾮零元素以列优先的 CSC(Compressed Sparse
Column)模式进⾏存储。
scala>import org.apache.spark.mllib.linalg.{Matrix, Matrices}
import org.apache.spark.mllib.linalg.{Matrix, Matrices}
// 创建⼀个 3⾏ 2列的稠密矩阵[ [1.0,2.0], [3.0,4.0], [5.0,6.0] ]
// 请注意,这⾥的数组参数是列先序的!
scala> val dm: Matrix = Matrices.dense(3, 2, Array(1.0, 3.0, 5.0, 2.0,
4.0, 6.0))
dm: org.apache.spark.mllib.linalg.Matrix =
1.0 2.0
3.0 4.0
5.0 6.0
// 创建⼀个 3⾏ 2列的稀疏矩阵[ [9.0,0.0], [0.0,8.0], [0.0,6.0]]
// 第⼀个数组参数表示列指针,即每⼀列元素的开始索引值 +⾮ 0元素
总数
// 第⼆个数组参数表示⾏索引,即对应的元素是属于哪⼀⾏
// 第三个数组即是按列先序排列的所有⾮零元素,通过列指针和⾏索引
即可判断每个元素所在的位置
scala> val sm: Matrix = Matrices.sparse(3, 2, Array(0, 1, 3), Array(0, 1,
2), Array(9, 8, 6))
sm: org.apache.spark.mllib.linalg.Matrix =
3 x 2 CSCMatrix
(0,0) 9.0
(2,1) 6.0
(1,1) 8.0