作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道 Spark Cosine Similarity 是否可以处理稀疏输入数据?我见过一些例子,其中输入由以下形式的空格分隔的特征行组成:
id feat1 feat2 feat3 ...
id1 feat1:1 feat5:1 feat10:1
id2 feat3:1 feat5:1 ..
...
spark/examples/src/main/scala/org/apache/spark/examples/mllib/CosineSimilarity.scala
最佳答案
为什么不?天真的解决方案可能看起来或多或少是这样的:
// Parse input line
def parseLine(line: String) = {
def parseFeature(feature: String) = {
feature.split(":") match {
case Array(k, v) => (k, v.toDouble)
}
}
val bits = line.split(" ")
val id = bits.head
val features = bits.tail.map(parseFeature).toMap
(id, features)
}
// Compute dot product between to dicts
def dotProduct(x: Map[String, Double], y: Map[String, Double]): Double = ???
// Compute norm of dict
def norm(x: Map[String, Double]): Double = ???
// Compute cosine similarity
def sparseCosine(x: Map[String, Double], y: Map[String, Double]): Double = {
dotProduct(x, y) / (norm(x) * norm(y))
}
// Parse input lines
val parsed = sc.textFile("features.txt").map(parseLine)
// Find unique pairs
val pairs = parsed.cartesian(parsed).filter(x => x._1._1 != x._2._1)
// Compute cosine similarity between pairs
pairs.map { case ((k1, m1), (k2, m2)) => ((k1, k2), sparseCosine(m1, m2)) }
关于apache-spark - Spark Cosine Similarity(DIMSUM算法)稀疏输入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30060206/
我是一名优秀的程序员,十分优秀!