我正在使用 Spark 和 Scala(两者都是新手)。我有这个代码:
val indices: List[Int] = List()
val featValues: List[Double] = List()
...
val vector = SparseVector(100000, indices.toArray, featValues.toArray)
但我不断收到此错误:
<console>:24: error: could not find implicit value for evidence parameter of type breeze.storage.DefaultArrayValue[Any]
val vector = SparseVector(100000, indices.toArray, featValues.toArray)
我确信只熟悉 Scala 的人可以帮助我。 SparseVector 的文档是:
我用谷歌搜索发现了这个: Could not find implicit value for evidence parameter of type scala.reflect.ClassManifest[T]
但我不知道如何解释答案。
编辑: 我实际上是从 Breeze 导入另一个 SparseVector,而我应该从 org.apache.spark.mllib.linalg.SparseVector 导入。
我再次启动交互式 shell 并输入:import org.apache.spark.mllib.linalg.SparseVector
现在,在重复上面的相同代码后,我收到错误:未找到:值 SparseVector
。
编辑2: 我应该清楚“...”暗示我正在初始化列表。
最佳答案
看起来您还没有初始化索引和值,因此 scala 在某些时候会尝试使用它们的默认值。另外,根据您链接的文档,您需要使用 new 创建 SparseVector (也许没有伴随对象?)
我无法测试,但我建议尝试以下操作:
val indices = Array(1,2,3) // indices is expected to be an array of Int
val values = Array(1.0d,2.0d,3.0d) // values is an array of doubles
val v2 = new SparseVector(3, indices, values)
这个有用吗?如果确实如此,问题可能出在您在 val featValues
关于Scala <控制台> :24: error: could not find implicit value for evidence parameter of type breeze. storage.DefaultArrayValue[任意],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23274856/