SparkML-使用RegressionEvaluator()同时获取多个指标

时间:2018-09-17 06:41:57

标签: scala apache-spark apache-spark-mllib

我正在尝试使用RegressionEvaluator()评估梯度提升的树回归模型。我想比较此evaluator的四个可能指标:

  • rmse
  • mse
  • r2

这就是我目前正在处理的任务。

//PREDICTION AND METRICS FOR GBT
val predictions = cvGBTModel.transform(test)

//Root Mean Squared Error
val evaluatorRMSE = new RegressionEvaluator()
  .setLabelCol("label")
  .setPredictionCol("prediction")
  .setMetricName("rmse");
val rmse = evaluatorRMSE.evaluate(predictions);

//Mean Squared Error
val evaluatorMSE = new RegressionEvaluator()
  .setLabelCol("label")
  .setPredictionCol("prediction")
  .setMetricName("mse");
val mse = evaluatorMSE.evaluate(predictions);

//Regression through the origin
val evaluatorR2 = new RegressionEvaluator()
  .setLabelCol("label")
  .setPredictionCol("prediction")
  .setMetricName("r2");
val r2 = evaluatorR2.evaluate(predictions);

//Mean absolute error
val evaluatorMAE = new RegressionEvaluator()
  .setLabelCol("label")
  .setPredictionCol("prediction")
  .setMetricName("mae");
val mae = evaluatorMAE.evaluate(predictions);


print("Root Mean Squared Error (RMSE) on test data = " + rmse);
print("Mean squared error (MSE) on test data = " + mse);
print("Regression through the origin(R2) on test data = " + r2);
print("Mean absolute error (MAE) on test data = " + mae);

是否可以在不运行4个不同评估器的情况下同时获取这四个指标?

顺便说一句,我发现了一个类似的question,用户发现RegressionEvaluator是用RegressionMetrics实现的,该RegressionMetrics应该已经包含了我要寻找的四个指标。但是尚不清楚如何从评估者访问这些指标。

0 个答案:

没有答案