Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 一次获得多元回归指标_Apache Spark - Fatal编程技术网

Apache spark 一次获得多元回归指标

Apache spark 一次获得多元回归指标,apache-spark,Apache Spark,为了回归的目的,我正在使用ML包,并且我在数据上得到了很好的结果。 我现在尝试一次获取多个指标,就像现在一样,我正在做下面的示例所建议的: 示例中的代码基本上如下所示: val evaluator = new RegressionEvaluator() .setLabelCol("label") .setPredictionCol("prediction") .setMetricName("rmse") val rmse = evaluator.evaluate(pre

为了回归的目的,我正在使用ML包,并且我在数据上得到了很好的结果。 我现在尝试一次获取多个指标,就像现在一样,我正在做下面的示例所建议的:

示例中的代码基本上如下所示:

val  evaluator  =  new  RegressionEvaluator()
  .setLabelCol("label")
  .setPredictionCol("prediction")
  .setMetricName("rmse")
val  rmse  =  evaluator.evaluate(predictions)
这给了我测试数据的RMSE,这很好,但我也对MSE、MAE、MAPE、R²和Q²感兴趣 因此,我在这里查看了文档:

我看到我可以得到RMSE、MSE、MAE和R²,但我似乎不能一次计算所有这些值,只对数据行进行一次检查,而不是像示例代码所示的那样进行5次检查

如何实现单次计算

然后,还有MAPE和Q²缺失,我如何计算它们,理想情况下,同时计算其他4个


查看
RegressionEvaluator
的源代码,我发现它是通过创建一个
RegressionMetrics
对象来实现的,该对象通过使用
多变量统计摘要一次计算所有统计信息

现在,进一步查看文档,我能够理解Q²只是验证集上的R²,因此原始代码让我了解了

但是对于MAPE来说,
MultivariateStatisticalSummary
中的两个术语是不够的,因此我必须添加一个新术语,如下所示:

if (observation != 0)
  math.abs(observation - prediction) / observation
else
  0
然后MAPE就是这样:

def meanAbsolutePercentageError: Double = {
  summary.mean(2)
}
现在我有了我需要的所有指标,因为它使用了
MultivariateStatisticalSummary
,我相信数据集只处理一次