使用 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