【问题标题】:Evaluating estimator performance in scikit-learn评估 scikit-learn 中的估计器性能
【发布时间】:2013-06-04 03:18:06
【问题描述】:

我正在使用 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)

【问题讨论】:

    标签: python-2.7 scikit-learn kaggle


    【解决方案1】:

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

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

    也应将纯决策树视为玩具分类器。它们的泛化特性非常差(并且可能会过度拟合)。你真的应该尝试ExtraTreesClassifier,增加n_estimators 的数量。从 n_estimators=10 开始,如果数据集足够小,则为 50、100、500、1000。

    【讨论】:

    • 感谢您的回复。仅供参考,clf.score(X_train, y_train) 返回 1.0 而clf.score(X_test, y_test) 返回 .93
    猜你喜欢
    • 2018-05-26
    • 2014-09-02
    • 2015-02-15
    • 2014-10-03
    • 2020-09-25
    • 1970-01-01
    • 2019-01-15
    • 1970-01-01
    • 2016-06-27
    相关资源
    最近更新 更多