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