【问题标题】:In a scikit-learn decision tree, how can you identify the decisions that lead to misclassification?在 scikit-learn 决策树中,您如何识别导致错误分类的决策?
【发布时间】:2021-06-13 18:29:58
【问题描述】:

我正在尝试为数据集创建决策树并研究生成的混淆矩阵。虽然混淆矩阵告诉我发生了多少错误分类它并没有准确地告诉我X_train 中的哪些特定实例被错误分类。我试图找出哪些是这些错误分类的实例以及它们最终在哪个叶节点中。我知道我可以使用decision_path(),但它并没有告诉我该特定实例是否被错误分类。我在这里的主要目标是确定混淆和错误分类的实例的最终位置。以下是我的代码:

from sklearn.datasets import load_iris
iris=load_iris()

Y_train=iris.target
X_train=iris.data

clf=tree.DecisionTreeClassifier( max_depth=3, criterion='entropy')
clf.fit(X_train, Y_train)
pred=clf.predict(X_train)
print('Accuracy on test data is %.2f' % (accuracy_score(Y_train, pred)))

【问题讨论】:

  • 请发minimal reproducible example;为此,您始终可以使用dummy data。
  • 也就是说,这个问题听起来不明确;原则上,我们需要首先定义一个错误分类的例子和一个特定的树节点之间的关系。看不到任何明确的方式来做这样的事情。
  • @desertnaut 有没有办法从df 数据帧中获取所有错误分类的实例
  • 是的,这很简单;如果这是您所追求的,请相应地编辑和更新问题以明确澄清。
  • @desertnaut 我仍在寻找有关错误分类的更多信息。我可以将其添加到现有问题中吗?此外,我正在寻找识别错误分类实例所在的叶节点

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


【解决方案1】:

您在pred 中获得了所有预测,在Y_train 中获得了所有训练值

那么您的错误分类预测就是pred[pred!=Y_train]

如果你想要功能X_train[pred!=Y_train]

【讨论】:

  • @Luie Blanche 有没有办法从 X_train 中找到特定实例的决策路径。这样我可以找出哪个实例被错误分类以及它最终在哪个叶节点中结束
  • 嗯,这就是你在X_train[pred!=Y_train]上使用decision_path的地方
  • @CS2899 欢迎来到 SO;如果答案解决了您的问题,请接受 - 请参阅What should I do when someone answers my question?
  • @Luis Blanche,如果我想获得那些预测类为“Versicolor”的错误分类实例,那我该怎么做? X_train[pred!=Y_train & pred == 'Versicolor'] ?
猜你喜欢
  • 2017-05-03
  • 2013-12-12
  • 2017-02-23
  • 2020-04-05
相关资源
最近更新 更多