Python 2.7 评估scikit学习中的估计器性能

Python 2.7 评估scikit学习中的估计器性能,python-2.7,scikit-learn,kaggle,Python 2.7,Scikit Learn,Kaggle,我正在使用scikit学习0.13.1进行上的竞赛。我使用了一个决策树分类器,为了评估我的估计器,我采用了通过train_test_split分割训练数据的技术,或者使用cross_val_score进行交叉验证的技术。这两种技术都可以证明估计器的准确率约为90%。然而,当我在实际测试数据上使用估计器时,得到的准确度大约要低30%。让我们假设训练数据是测试数据的良好表示 我还能做些什么来评估估计器的准确性 clf = tree.DecisionTreeClassifier( ) ... X_tr

我正在使用scikit学习0.13.1进行上的竞赛。我使用了一个决策树分类器,为了评估我的估计器,我采用了通过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)

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

不过,测量决策树的过度拟合是很有意思的:训练分数clf.scoreX_train,y_train和测试分数clf.scoreX_test,y_test对你的分割有什么区别


此外,纯决策树应该被视为一个玩具分类器。它们的泛化特性非常差,可能会过度拟合。你真的应该尝试增加n_估计数的ExtraTreesClassifier。如果数据集足够小,从n_估计器=10开始,然后是50、100、500、1000。

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

不过,测量决策树的过度拟合是很有意思的:训练分数clf.scoreX_train,y_train和测试分数clf.scoreX_test,y_test对你的分割有什么区别

此外,纯决策树应该被视为一个玩具分类器。它们的泛化特性非常差,可能会过度拟合。你真的应该尝试增加n_估计数的ExtraTreesClassifier。从n_估计数=10开始,然后如果数据集足够小,则从50、100、500、1000开始。

谢谢您的回复。仅供参考,clf.scoreX_train,y_train返回1.0,而clf.scoreX_test,y_test返回。93谢谢回复。仅供参考,clf.scoreX_train,y_train返回1.0,而clf.scoreX_test,y_test返回0.93