繁体   English   中英

使用Apache Spark中的Scala - MLLib转换LabeledPoint中的Vector的RDD

[英]Convert RDD of Vector in LabeledPoint using Scala - MLLib in Apache Spark

我正在使用Apache-Spark和Scala的MLlib。 我需要转换一组Vector

import org.apache.spark.mllib.linalg.{Vector, Vectors}    
import org.apache.spark.mllib.regression.LabeledPoint    

在LabeledPoint中,以应用MLLib的算法
每个向量由Double值0.0(假)或1.0(真)组成。 所有向量都保存在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(数据)创建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) }       

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM