fxm*_*fxm 6 java scala apache-spark apache-spark-mllib
我处理了一个Double存储列表,如下所示:
JavaRDD<Double> myDoubles
Run Code Online (Sandbox Code Playgroud)
我想计算这个列表的平均值.根据文件,:
MLlib的所有方法都使用Java友好类型,因此您可以像在Scala中一样导入和调用它们.唯一需要注意的是,这些方法使用Scala RDD对象,而Spark Java API使用单独的JavaRDD类.您可以通过在JavaRDD对象上调用.rdd()将Java RDD转换为Scala.
在同一页面上,我看到以下代码:
val MSE = valuesAndPreds.map{case(v, p) => math.pow((v - p), 2)}.mean()
Run Code Online (Sandbox Code Playgroud)
根据我的理解,这相当于(在类型方面)
Double MSE = RDD<Double>.mean()
Run Code Online (Sandbox Code Playgroud)
结果,我试图计算我JavaRDD喜欢的平均值:
myDoubles.rdd().mean()
Run Code Online (Sandbox Code Playgroud)
然而,它不起作用,并给我以下的错误:The method mean() is undefined for the type RDD<Double>.我也没有在RDD scala文档中找到这个函数的提及..这是因为我对自己的理解不好,还是这个呢?
fxm*_*fxm 10
它实际上非常简单:mean()为JavaDoubleRDD类定义.我没有找到如何从投JavaRDD<Double>来JavaDoubleRDD,但对我来说,这是没有必要的.
确实,这行在scala中
val mean = valuesAndPreds.map{case(v, p) => (v - p)}.mean()
Run Code Online (Sandbox Code Playgroud)
可以用Java表示
double mean = valuesAndPreds.mapToDouble(tuple -> tuple._1 - tuple._2).mean();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11984 次 |
| 最近记录: |