小编Ale*_*ese的帖子

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

我正在使用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

label scala apache-spark apache-spark-mllib

6
推荐指数
1
解决办法
4057
查看次数

使用Apache-Spark,根据条件减少或折叠RDD

我正在使用Apache Spark和Scala.我有一个RDD的String,Int

val counts =words.map(word => (word, 1)).reduceByKey((a,b) => (a + b))     
Run Code Online (Sandbox Code Playgroud)

现在我通过Key减少了RDD,但是我想添加另一个功能来减少相似的单词.

我虽然使用Levenshtein距离,欧几里德距离或余弦距离.

那么,我如何应用其中一个函数来减少我的RDD?

例:

RDD ->  (forks,12), (fork,4), (chair,15) , (table,1), (tables,11)
Run Code Online (Sandbox Code Playgroud)

承认相似度算法有效,如何获得减少的RDD,如:

RDD -> (fork,16), (table,12), (chair,15)
Run Code Online (Sandbox Code Playgroud)

我尝试过类似的东西:

counts.foldLeft(){(x,y) => 
  if(x._1.euclideanDistance(y._1) > 0.9) 
    (x,x._2+y._2) 
}
Run Code Online (Sandbox Code Playgroud)

reduce fold apache-spark rdd

1
推荐指数
1
解决办法
1559
查看次数

标签 统计

apache-spark ×2

apache-spark-mllib ×1

fold ×1

label ×1

rdd ×1

reduce ×1

scala ×1