scala 稀疏向量

http://mocom.xmu.edu.cn/article/show/58481eb2e083c990247075a5/0/1

 1、

/创建一个标签为1.0(分类中可视为正样本)的稠密向量标注点

scala> val pos = LabeledPoint(1.0, Vectors.dense(2.0, 0.0, 8.0)) pos: org.apache.spark.mllib.regression.LabeledPoint = (1.0,[2.0,0.0,8.0])

//创建一个标签为0.0(分类中可视为负样本)的稀疏向量标注点

scala> val neg = LabeledPoint(0.0, Vectors.sparse(3, Array(0, 2), Array(2.0, 8.0)))

neg: org.apache.spark.mllib.regression.LabeledPoint = (0.0,(3,[0,2],[2.0,8.0]))

2、

def load_data(train_add:String,test_add:String):RDD[LabeledPoint]={
val train_data=sc.textFile(train_add).map(x=>x.split(",").map(_.toInt.toDouble).toList)
.map(x=>
{ val label=x.head
val values=x.tail
val r_index= new ArrayBuffer[Int]()
val r_values = new ArrayBuffer[Double]()
val len=values.size
println(len)
for (i <- 0 until len){
println(i)
if (values(i)==1.0){
r_index +=i
r_values +=values(i)
}
}
val sparse_value=Vectors.sparse(len,r_index.toArray,r_values.toArray)
LabeledPoint(label,sparse_value)
})
train_data
}

原文地址:https://www.cnblogs.com/zhangbojiangfeng/p/7162618.html