Scala: 将RDD[LabelledPoint]转换为RDD[(Long,Vector)]

我的数据存储在一个 RDD[LabeledPoint] 中(在下面的代码中表示为 sparse0.sparseData

我想将其转换为 RDD[(Long,Vector)],这样我就可以在mllib包中运行LDA分析。

我能做到的最好的方法是映射到 RDD[(Long,Vector[Double])],但在输入 LDA.run 方法时无法编译

尝试映射到 RDD[(Long,Vector)].map 方法中也无法编译。(错误信息是Vector需要类型参数)

我的映射方法看起来很复杂,这表明我可能遗漏了一些显而易见的东西。任何提示将不胜感激

val mappedData:Map[Long,Vector[Double]]=sparse0.sparseData().collect().map{      var count:Int=0  row =>    count=count+1    new Tuple2[Long,Vector[Double]](count,row.features.toArray.toVector)}.toMapval mappedRDD=spark.sparkContext.parallelize(mappedData.toSeq)// 使用LDA将文档聚类成三个主题val ldaModel = new LDA().setK(3).run(mappedRDD)

回答:

Scala中的 Vectormllib.linalg.Vector 不同。我会使用 zipWithIndex

val mappedRDD  = sparse0.sparseData().map(_.features).zipWithIndex.map(_.swap)

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注