我已经在梯度增强回归器上使用了交叉验证。

我已经在交叉验证期间为每个分数计算了RMSE,并找到了平均值,但是与使用train_test_split和比较(预测的,实际的)相比,RMSE似乎相差太远。

根据我的理解,使用train_test_split不会过拟合,因为我没有在测试集中测试参数的差异组合。

这种差异代表什么?

这是我的代码:

X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.3, random_state=0)

gbr_le = GradientBoostingRegressor(
    n_estimators  = 1000,
    learning_rate = 0.1,
    random_state  = 0
)

model = gbr_le.fit(X_train, y_train)
y_pred = model.predict(X_test)
print(f'{np.sqrt(metrics.mean_squared_error(y_test, y_pred))}')

>>> 4.881378370139346


并使用简历:

scores = cross_val_score(gbr_le, X, y, cv=7, scoring='neg_mean_squared_error')

statistics.mean([np.sqrt(-sc) for sc in scores])

>>> 9.381100515895412

最佳答案

您需要检查交叉验证分数的标准差。可能是您的平均值为9.3,并且标准偏差相当高。在这种情况下,您的简历结果可能会传达出数据错误率的真实情况,但由于测试数据偶然导致的错误评分很低,这是偶然的。尝试更改随机状态,查看您的错误率是否仍在4附近,或者是否会发生变化,并且与交叉验证得分的分布相似。

关于python - 哪些信息可以通过简历传达出更高的RMSE分数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59744346/

10-12 21:10