我正在尝试使用RegressionEvaluator()评估梯度提升的树回归模型。我想比较此evaluator的四个可能指标:
这就是我目前正在处理的任务。
//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应该已经包含了我要寻找的四个指标。但是尚不清楚如何从评估者访问这些指标。