【发布时间】:2014-10-08 21:50:32
【问题描述】:
我对使用 Scala 很感兴趣,因为它似乎是一种并行化操作的好方法。我需要设计一种使用向量乘法的机器学习算法(就像许多人一样)。我知道如何做算法,但我想做的是来自 HashMaps 的稀疏向量实现。几乎所有向量都存储为 HashMaps[Int, Double],其中向量中给定双精度的索引是作为键的整数。
使用 Pythonish 伪代码, ==> {1:7, 2:6, 3:5, 4:4}
我想使用 fold、reduce、map ... 等定义点积函数,但我不想使用 foldLeft、reduceLeft ... 因为我希望这可能是可并行化的,因为我的向量可以得到多达 6000 多个维度,对于点积,顺序无关紧要。
我已经阅读了很多 foldLeft 和 reduceLeft 的示例,但我还没有弄清楚如何使用 HashMap.fold 或 HashMap.reduce。
我在一定程度上理解函数式编程,但我不理解 Scala 中的错误消息。这是我或多或少想要的模板。
object NGramAnalysis {
def main(args: Array[String]) {
val mapped = HashMap(1->1.2, 5->2.4)
println(mapped.fold( .... What goes here ... )
}
}
结论 我想要一个使用 HashMap.fold NOT foldLeft 和 HashMap.reduce
的可靠示例提前谢谢你。我已经挣扎了一段时间了。
【问题讨论】: