spark mllib Matrices CSC

1、关于CSC的介绍,请看这篇博客:SciPy教程 - 稀疏矩阵库scipy.sparse

2、先看一下Matrices.sparse的声明:

def sparse(numRows: Int, numCols: Int, colPtrs: Array[Int], rowIndices: Array[Int], values: Array[Double]): Matrix
	Creates a column-major sparse matrix in Compressed Sparse Column (CSC) format.
	numRows	:number of rows
	numCols	:number of columns
	colPtrs		:the index corresponding to the start of a new column
	rowIndices	:the row index of the entry
	values		:non-zero matrix entries in column major

3、结合实例解释spark.mllib中CSC的用法:

例子1:

9 0  
0 8  
0 6  
values		:  9   8   6  
rowindexces :  0   1   2   (entity所在行的索引)  
colPtrs		:  0   1   3  
对colPtrs的解释:  
CSC是按列压缩,这个是每列起始元素的索引,而且colPtrs的长度等于原矩阵numCols+1,在这里,colPtrs应该有3个元素,  
那最后一个元素就是说:如果还有新列中的元素,它的下标应该从3开始。在这里,第一列(9 0 0)的起始元素的索引为0,第二列(0 8 6)  
的起始元素的索引为1(前面有一列,只有一个元素9,占用了一个位置,下次从1开始),将来的新的列的起始索引为3(前面有两列,  
共有3个元素,下次从3开始)。  
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  
(1,1) 8.0  
(2,1) 6.0  
  
scala> val sm: Matrix = Matrices.sparse(3, 2, Array(0, 1, 3), Array(0, 2, 1), Array(9, 6, 8))  
sm: org.apache.spark.mllib.linalg.Matrix =  
3 x 2 CSCMatrix  
(0,0) 9.0  
(2,1) 6.0  
(1,1) 8.0  

例子2:

9 0
0 8
0 6
0 5
values		:	9	8	6	5
rowindexces	:	0	1	2	3
colPtrs		:	0	1	4
scala> val sm: Matrix = Matrices.sparse(4, 2, Array(0, 1, 4), Array(0, 1, 2, 3), Array(9, 8, 6, 5))
sm: org.apache.spark.mllib.linalg.Matrix =
4 x 2 CSCMatrix
(0,0) 9.0
(1,1) 8.0
(2,1) 6.0
(3,1) 5.0

例子3:

9 0 0 0
0 8 6 5
values		:	9	8	6	5
rowindexces	:	0	1	1	1
colPtrs		:	0	1	2	3	4
scala> val sm: Matrix = Matrices.sparse(2, 4, Array(0, 1, 2, 3, 4), Array(0, 1, 1, 1), Array(9, 8, 6, 5))
sm: org.apache.spark.mllib.linalg.Matrix =
2 x 4 CSCMatrix
(0,0) 9.0
(1,1) 8.0
(1,2) 6.0
(1,3) 5.0


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值