【问题标题】:Cosine Similarity via DIMSUM in SparkSpark中通过DIMSUM的余弦相似度
【发布时间】:2015-12-06 18:48:50
【问题描述】:

我有一个非常简单的代码来尝试余弦相似度:

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.mllib.linalg.distributed.{MatrixEntry,   CoordinateMatrix, RowMatrix}

val rows= Array(((1,2,3,4,5),(1,2,3,4,5),(1,2,4,5,8),(3,4,1,2,7),(7,7,7,7,7)))
val mat = new RowMatrix(rows)

val simsPerfect = mat.columnSimilarities()
val simsEstimate = mat.columnSimilarities(0.8)

我在具有 Spark 1.5 的 Amazon AWS 上运行此代码,但是我在最后两行收到以下消息: "Erroe: value columnSimilarities 不是 org.apache.spark.rdd.RDD[(int,int)] 的成员"

您能帮忙解决这个问题吗?

【问题讨论】:

  • 您确定要在 RowMatrix 上应用 columnSimilarities 吗?
  • 是的,上面的代码就是我运行的那个。 val mat = new RowMatrix(rows) 假设将 RomMatrix 设为 mat,因此 mat.columnSimilarities() 将 columnSimilarities 应用于 RowMatrix
  • 我无法重现错误...
  • 是的,你是对的。对不起!问题是 RowMatrix 没有生成:val data = Array(((1,2,3,4,5),(1,2,3,4,5),(1,2,4,5,8) ,(3,4,1,2,7),(7,7,7,7,7))) val rows = sc.parallelize(data) val mat = new RowMatrix(rows)
  • 最后一行出现错误

标签: scala apache-spark similarity trigonometry


【解决方案1】:

我找到了答案。我需要将矩阵转换为 RDD。这是正确的代码:

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.mllib.linalg.distributed.{MatrixEntry, CoordinateMatrix, RowMatrix}
import org.apache.spark.rdd._
import org.apache.spark.mllib.linalg._


def matrixToRDD(m: Matrix): RDD[Vector] = {
val columns = m.toArray.grouped(m.numRows)
val rows = columns.toSeq.transpose // Skip this if you want a column-major RDD.
val vectors = rows.map(row => new DenseVector(row.toArray))
sc.parallelize(vectors)
}

val dm: Matrix = Matrices.dense(5, 5,Array(1,2,3,4,5,1,2,3,4,5,1,2,4,5,8,3,4,1,2,7,7,7,7,7,7))
val rows = matrixToRDD(dm)
val mat = new RowMatrix(rows)
val simsPerfect = mat.columnSimilarities()
val simsEstimate = mat.columnSimilarities(0.8)

println("Pairwise similarities are: " + simsPerfect.entries.collect.mkString(", "))

println("Estimated pairwise similarities are: " +     simsEstimate.entries.collect.mkString(", "))

干杯

【讨论】:

猜你喜欢
  • 2015-07-15
  • 2018-04-11
  • 2019-12-23
  • 2020-08-12
  • 2011-01-01
  • 2017-12-12
  • 2016-01-26
  • 2013-05-24
相关资源
最近更新 更多