gpt4 book ai didi

apache-spark - 一次获取多个回归指标

转载 作者:行者123 更新时间:2023-12-05 07:38:18 26 4
gpt4 key购买 nike

我正在使用 ML 包进行回归,我的数据得到了很好的结果。我现在正尝试一次获取多个指标,就像现在一样,我正在按照此处示例的建议进行操作:https://spark.apache.org/docs/2.1.0/ml-classification-regression.html

基本上示例中的代码是这样的:

val  evaluator  =  new  RegressionEvaluator()
.setLabelCol("label")
.setPredictionCol("prediction")
.setMetricName("rmse")
val rmse = evaluator.evaluate(predictions)

这为我的测试数据提供了 RMSE,这很好,但我也对 MSE、MAE、MAPE、R² 和 Q² 感兴趣因此,我在这里查看了文档:

https://spark.apache.org/docs/2.1.0/api/java/org/apache/spark/ml/evaluation/RegressionEvaluator.html#metricName%28%29

我看到我可以得到 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,我确信数据集只处理一次。

关于apache-spark - 一次获取多个回归指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48023365/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com