小编use*_*401的帖子

为什么交叉验证给出的分数始终高于正常拟合和评分?

我试图了解sklearn交叉验证和评分的工作原理,并观察到一些奇怪的行为。

我实例化一个分类器,然后对其进行 4 折交叉验证,在 90% 准确率 +- 0.5% 范围内获得 4 个分数。

然后我在所有训练数据上重新拟合模型,并在测试数据上对其进行评分。我也在此代码中对训练数据进行评分,只是为了证明一点。

我在将数据拆分为测试集和训练集后运行此代码。

from sklearn.ensemble import GradientBoostingClassifier
from sklearn.metrics import make_scorer, balanced_accuracy_score

gbc = GradientBoostingClassifier()

scores = cross_val_score(gbc, X_train, y_train, cv=4, scoring=make_scorer(balanced_accuracy_score))

print('cv scores: ', scores)
print('cv scores mean: ', scores.mean())

gbc.fit(X_train, y_train)

print('test score on test: ', balanced_accuracy_score(gbc.predict(X_test), y_test))
print('test score on train: ', balanced_accuracy_score(gbc.predict(X_train), y_train))
Run Code Online (Sandbox Code Playgroud)

打印:

cv scores:  [0.89523728 0.90348769 0.90412818 0.89991599]
cv scores mean:  0.900692282366262
test score on test:  0.8684604909814304
test score on train:  0.874880530883581 …
Run Code Online (Sandbox Code Playgroud)

scikit-learn

5
推荐指数
1
解决办法
1783
查看次数

标签 统计

scikit-learn ×1