我正在使用 Apache-Spark 和 Scala 的 MLlib。我需要转换一组 Vector
import org.apache.spark.mllib.linalg.{Vector, Vectors}
import org.apache.spark.mllib.regression.LabeledPoint
为了应用 MLLib 的算法,在 LabeledPoint 中
每个向量都由 0.0(假)或 1.0(真)的 Double 值组成。所有的向量都保存在一个 RDD 中,所以最终的 RDD 是
val data_tmp: org.apache.spark.rdd.RDD[org.apache.spark.mllib.linalg.Vector]
因此,在 RDD 中有创建的向量
def createArray(values: List[String]) : Vector =
{
var arr : Array[Double] = new Array[Double](tags_table.size)
tags_table.foreach(x => arr(x._2) = if (values.contains(x._1)) 1.0 else 0.0 )
val dv: Vector = Vectors.dense(arr)
return dv
}
/*each element of result is a List[String]*/
val data_tmp=result.map(x=> createArray(x._2))
val data: RowMatrix = new RowMatrix(data_tmp)
如何从此 RDD (data_tmp) 或 RowMatrix (data) 创建一个 LabeledPoint 集以使用 MLLib 算法?例如,我需要在此处应用 SVM 线性算法