这就是我已经矢量化的训练和测试数据集对于mllib的样子:
列车:
测试:
为避免数据泄露,这两种方法都是分开处理的(只对缺失值进行了插补)。当我尝试用梯度推进来预测结果时,我得到的结果如下:
但是,evaluator显示的结果与两个数据集的数据范围预测中显示的错误范围不匹配。具体来说,我得到的rmse是683.62。如果我将evaluator度量更改为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)
有人知道为什么评估器与显示的结果根本不匹配吗?
暂无答案!
目前还没有任何答案,快来回答吧!