python - 使用 CV 获得较高的 RMSE 分数传达什么信息

标签 python machine-learning scikit-learn

我对梯度增强回归器使用了交叉验证。

我在交叉验证期间计算了每个分数的 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 - 使用 CV 获得较高的 RMSE 分数传达什么信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59744346/

相关文章:

python - 我如何使用列转换器获取_feature_names

python - 如何从所有文档集中获取某个单词的 TF-IDF 值?

python - numpy 数组的条件运算

machine-learning - 密集层和卷积层的权重初始化是否不同?

python - Python map(None, fcn()) 是否有更简单的构造?

python - CNN模型预测

regex - python 中单词列表中的单词标记化?

python - TfidfVectorizer toarray() 和 HashingVectorizer 的含义

python - urllib2 不返回完整网页

Python 脚本和 MySQL