Spark机器学习:稀疏和稠密向量
稀疏和稠密向量
一个向量(1.0,0.0,3.0)它有2中表示的方法
密集:[1.0,0.0,3.0] 其和一般的数组无异
稀疏:(3,[0,2],[1.0,3.0]) 其表示的含义(元素的个数,元素的序号,元素序号对应的值) 序号从0开始
比如这里:元素个数为:3个、序号0:对应的值为1.0,需要2对应的值为3.0
下面是一个简单的例子
[java] view plain copy
- import org.apache.spark.mllib.linalg.Vectors
- object Test {
- def main(args: Array[String]) {
- val vd = Vectors.dense(2, 5, 8)
- println(vd(1))
- println(vd)
- //向量个数,序号,value
- val vs = Vectors.sparse(4, Array(0, 1, 2, 3), Array(9, 3, 5, 7))
- println(vs(0)) //序号访问
- println(vs)
- val vs2 = Vectors.sparse(4, Array(0, 2, 1, 3), Array(9, 3, 5, 7))
- println(vs2(2))
- println(vs2)
- }
- }
结果:
[plain] view plain copy
- 5.0
- [2.0,5.0,8.0]
- 9.0
- (4,[0,1,2,3],[9.0,3.0,5.0,7.0])
- 3.0
- (4,[0,2,1,3],[9.0,3.0,5.0,7.0])