微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spark GBTRegressor 给出的 RMSE 与预测不匹配

如何解决Spark GBTRegressor 给出的 RMSE 与预测不匹配

这是我已经矢量化的训练和测试数据集对于 mllib 的样子:

训练:

enter image description here

测试:

enter image description here

两者都经过单独处理以避免数据泄漏(仅估算了缺失值)。当我尝试使用 Gradient Boosting 预测结果时,我得到了以下结果:

enter image description here

但是,评估器显示的结果与两个数据集的数据范围的预测中显示错误范围不匹配。具体来说,我获得的 rmse 是 683.62。如果我更改评估器指标,例如更改为 mse,我也会得到一个与预测结果不匹配的值。

#Dependencies
from pyspark.ml.regression import GBTRegressor
from pyspark.ml.tuning import CrossValidator,ParamGridBuilder
from pyspark.ml.evaluation import RegressionEvaluator
#Model
gbt = GBTRegressor(labelCol="label")
paramGrid = (ParamGridBuilder()\
  .addGrid(gbt.maxDepth,[3,7])\
  .addGrid(gbt.maxIter,[10,20])\
  .build())
# Evaluation metric
evaluator = RegressionEvaluator(metricName="rmse",labelCol=gbt.getLabelCol(),predictionCol=gbt.getPredictionCol())
# CrossValidator
cv = CrossValidator(estimator=gbt,evaluator=evaluator,estimatorParamMaps=paramGrid,numFolds=3)
#Predictions
fitModel = cv.fit(train)
predictions = fitModel.transform(test)
rmse = evaluator.evaluate(predictions)
print(rmse)

有谁知道为什么评估器与显示的结果完全不匹配?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。