当前位置: 首页 > 知识库问答 >
问题:

在ApacheSpark中使用Scala-MLLib转换LabeledPoint中向量的RDD

谢宸
2023-03-14

我正在使用ApacheSpark和Scala的MLlib。我需要转换一组向量

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

在标签点中,为了应用MLLib算法,每个向量由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)或行矩阵(data)创建一个使用MLLib算法的标签点集?例如,我需要在这里应用SVMs线性alghoritms

共有1个答案

茅华灿
2023-03-14

我找到了解决办法:

    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) }       
 类似资料:
  • 问题内容: 假设我有一个形状为(1,256)的行向量。我想将其转换为形状为(256,1)的列向量。您在Numpy中会如何做? 问题答案: 您可以使用 转置 操作来执行此操作: 例: 请注意,原始数组仍将保持不变。转置操作只会复制并转置它。 如果输入阵列是相当1D中,则可以 促进 通过引入新的(singleton)的轴作为所述第二尺寸数组的列向量。下面是一个示例: 对于一维情况,还有另一个选择是使用

  • 问题内容: 我将JComboBox与自定义类对象一起使用,并且equals方法被覆盖,并且非常深入地集成到代码中。 问题是,如果在JComboBox下拉列表中两个对象相等,那么如果选择了一个,则全部选中,并且get selected索引返回-1。 有没有一种方法可以将a强制转换为a ?我试过了 和 其中是的父项,是的扩展项,但它们都不编译。 我需要的只是JComboBox,不要使用重写的equal

  • 我有一个RDD[标签点],我想找到标签的最小值和最大值,并应用一些转换,例如从所有这些标签中减去数字5。问题是我已经尝试了各种方法来获取标签,但没有任何工作正常。 如何仅访问 RDD 的标签和功能?有没有办法将它们作为列表[双精度]和列表[向量]例如? 我无法转到数据帧。

  • 版本: Matlab 2009a 我正在生成一个大小向量 现在,Matlab将返回的元素向量[240,63,0]改为[-1,1],大小为 PS:我想从大小矩阵上的所有trhe值中减去或加上'1'

  • 我们使用的是Spring数据,当我们调用时,我们收到的是

  • 问题内容: 我正在使用Java本机功能- 在C ++中,我的本机函数- 我的问题是如何将resultList(向量类型)转换为jobject类型? 问题答案: 您必须在C ++中为ArrayList创建包装器。就像是: 有关更多信息,请参见: http://download.oracle.com/javase/1.4.2/docs/guide/jni/spec/functions.html