Ale*_*ese 6 label scala apache-spark apache-spark-mllib
我正在使用Apache-Spark和Scala的MLlib.我需要转换一组Vector
import org.apache.spark.mllib.linalg.{Vector, Vectors}
import org.apache.spark.mllib.regression.LabeledPoint
Run Code Online (Sandbox Code Playgroud)
在LabeledPoint中为了应用MLLib的算法
每个向量由Double值0.0(false)或1.0(true)组成.所有向量都保存在RDD中,因此最终的RDD属于该类型
val data_tmp: org.apache.spark.rdd.RDD[org.apache.spark.mllib.linalg.Vector]
Run Code Online (Sandbox Code Playgroud)
因此,在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)
Run Code Online (Sandbox Code Playgroud)
我如何从这个RDD(data_tmp)或RowMatrix(数据)创建LabeledPoint集来使用MLLib算法?例如,我需要在这里应用SVMs线性alghoritms
我找到了解决方案:
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
}
val data_tmp=result.map(x=> createArray(x._2))
val parsedData = data_tmp.map { line => LabeledPoint(1.0,line) }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4057 次 |
最近记录: |