使用 sklearn 的决策树分类器 100% 准确率

Posted

技术标签:

【中文标题】使用 sklearn 的决策树分类器 100% 准确率【英文标题】:100% accuracy with decision tree classifier using sklearn 【发布时间】: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 嗯,确实是这样。非常感谢。我应该怎么做才能使结果更好? 嗯,这取决于你的问题。首先你能说一下为什么你认为这是一个问题吗?我不确定,但我想这是因为您认为您的模型过度拟合。由于问题主要取决于数据,我只能推荐使用另一种模型,采用不同的方法。 我所说的所有内容现在都被添加为答案。 非常感谢。实际上,我的矩阵中有一个特征可以完全描述目标值。 【参考方案1】:

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

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

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

查看文档Decision Tree Classifier。

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

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

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

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

【讨论】:

以上是关于使用 sklearn 的决策树分类器 100% 准确率的主要内容,如果未能解决你的问题,请参考以下文章

Sklearn 决策树分类器显示浮点错误 Python [不是重复的]

sklearn决策树算法DecisionTreeClassifier(API)的使用以及决策树代码实例 - 莺尾花分类

机器学习 sklearn 监督学习 分类算法 决策树 DecisionTree

机器学习 sklearn 监督学习 分类算法 决策树 DecisionTree

机器学习 sklearn 监督学习 分类算法 决策树 DecisionTree

决策树唯一性sklearn