【发布时间】:2019-05-21 19:16:27
【问题描述】:
我正在使用 sklearn 来训练决策树分类器。
但是发生了一件奇怪的事情。
决策树的评分函数返回的准确率(0.88)远高于cross_val_score(0.84左右)。
根据document,score函数也计算平均准确率。
它们都应用于测试数据集(87992 个样本)。
交叉验证对子集进行计算,如果结果略有不同是有道理的,但现在差异很大。
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import cross_val_score
clf_tree = DecisionTreeClassifier()
clf_tree.fit(X_train, y_train)
print('Accuracy: %f' % clf_tree.score(X_test, y_test))
print((cross_val_score(clf_tree, X_test, y_test, cv=10, scoring='accuracy')))
print(classification_report(clf_tree.predict(X_test), y_test))
输出:
Accuracy: 0.881262
[0.84022727 0.83875 0.843164 0.84020911 0.84714172 0.83929992 0.83873167 0.8422548 0.84089101 0.84111831]
precision recall f1-score support
0 0.89 0.88 0.88 44426
1 0.88 0.89 0.88 43566
micro avg 0.88 0.88 0.88 87992
macro avg 0.88 0.88 0.88 87992
weighted avg 0.88 0.88 0.88 87992
这里到底发生了什么?感谢您的建议。
【问题讨论】:
标签: python machine-learning scikit-learn