【问题标题】:100% accuracy with decision tree classifier using sklearn使用 sklearn 的决策树分类器 100% 准确率
【发布时间】:2020-10-23 06:49:19
【问题描述】:

我正在使用 sklearn 的决策树分类器,但我得到了 100% 的分数,但我不知道出了什么问题。我已经测试了 svm 和 knn,两者都给出了 60% 到 80% 的准确率并且看起来还可以。这是我的代码:

    from sklearn.tree import DecisionTreeClassifier
    maxScore = 0
    index = 0
    Depths = [1, 5, 10, 20, 40]
    for i,d in enumerate(Depths):
        clf1 = DecisionTreeClassifier(max_depth=d)
        score = cross_val_score(clf1, X_train, Y_train, cv=10).mean()     
        index = i if(score > maxScore) else index
        maxScore = max(score, maxScore)
        print('The cross val score for Decision Tree classifier (max_depth=' + str(d) + ') is ' + 
        str(score))

    d = Depths[index]
    print()
    print("So the best value for max_depth parameter is " + str(d))
    print()

    # Classifying
    clf1 = DecisionTreeClassifier(max_depth=d)
    clf1.fit(X_train, Y_train)
    preds = clf1.predict(X_valid)
    print(" The accuracy obtained using Decision tree classifier is {0:.8f}%".format(100* 
    (clf1.score(X_valid, Y_valid))))

这是输出: 决策树分类器(max_depth=1)的交叉验证分数为 1.0

决策树分类器 (max_depth=5) 的交叉值得分为 0.9996212121212121

决策树分类器 (max_depth=10) 的交叉验证分数为 1.0

决策树分类器的交叉验证分数 (max_depth=20) 为 1.0

决策树分类器的交叉验证分数 (max_depth=40) 为 0.9996212121212121

所以 max_depth 参数的最佳值是 1

使用决策树分类器得到的准确率为100.00000000%

【问题讨论】:

  • 如果这有帮助,我会发布这个作为答案)
  • Harut Hunanyan 嗯,确实是这样。非常感谢。我应该怎么做才能使结果更好?
  • 嗯,这取决于你的问题。首先你能说一下为什么你认为这是一个问题吗?我不确定,但我想这是因为您认为您的模型过度拟合。由于问题主要取决于数据,我只能推荐使用另一种模型,采用不同的方法。
  • 我所说的所有内容现在都被添加为答案。
  • 非常感谢。实际上,我的矩阵中有一个特征可以完全描述目标值。

标签: python machine-learning scikit-learn decision-tree


【解决方案1】:

我认为有一个明显的结论:您的标签与某些特征或至少与其中一个特征具有高度相关性。可能你的数据不是很好。

无论如何,您可以检查决策树模型的单个特征拆分如何影响模型预测。

使用model.feature_importances_ 属性来查看特征对于模型预测的“重要性”。

查看文档Decision Tree Classifier

如果您仍然认为您的模型预测不够好,我建议您更改模型,使用不同方法的模型。至少如果你必须使用决策树,你可以试试Random Forest Classifier

它是一个ensemble model。集成学习的基本思想是最终的模型预测是基于多个较弱的模型预测,weak learners。检查制作ensemble models的主要方法。

在随机森林分类器的情况下,弱学习器模型是深度较小的决策树。并且决策树只使用少量特征进行预测,并且每次特征都是随机选择的。选择的特征数量是一个超参数,因此需要对其进行调整。

查看链接和其他教程了解更多信息。

【讨论】:

    猜你喜欢
    • 2017-05-31
    • 2018-04-11
    • 2023-01-01
    • 2018-08-18
    • 2023-04-08
    • 2019-07-19
    • 2017-10-05
    • 2020-05-13
    • 2021-10-18
    相关资源
    最近更新 更多