评估scikit-learn中的估计器性能

时间:2013-06-07 18:16:46

标签: python-2.7 scikit-learn kaggle

我使用scikit-learn 0.13.1参加Kaggle的比赛。我使用决策树分类器,并评估我的估算器,我遵循通过train_test_split分割训练数据的技术,或使用cross_val_score进行交叉验证。这两种技术都表明估算器的准确率约为90%。但是,当我在实际测试数据上使用估算器时,获得的准确度降低了约30%。让我们假设训练数据是测试数据的良好表示。

我还可以做些什么来评估估算器的准确性?

clf = tree.DecisionTreeClassifier( )
...
X_train, X_test, y_train, y_test = train_test_split(train, target, test_size=0.3, random_state=42)
...
clf.fit(X_train, y_train)
print "Accuracy: %0.2f " % clf.score(X_test, y_test)
...    
scores = cv.cross_val_score(clf, train, target, cv=15)
print "Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() / 2)

1 个答案:

答案 0 :(得分:5)

这可能意味着最终评估数据的分布与开发集之间存在显着差异。

测量决策树的过度拟合会很有趣:训练分数clf.score(X_train, y_train)与分数测试分数clf.score(X_test, y_test)之间有什么区别?

纯粹的决策树也应该被视为玩具分类器。它们具有非常差的泛化属性(并且可以过度配合)。对ExtraTreesClassifier的数字越来越多,你应该真正尝试n_estimators。如果数据集足够小,则从n_estimators=10开始,然后从50,100,500,1000开始。