【问题标题】:Decision Tree display isn't doing what I want决策树显示没有做我想要的
【发布时间】:2018-09-17 07:27:26
【问题描述】:

我正在尝试正确显示决策树;我非常接近,但我无法正确显示班级。

当我使用 class_names=True 时,我得到了这个:

如何解释 class=y[1]?

这里有更多细节:

请注意,图像已被剪裁,但仍沿同一行继续。

然后:

clf.fit(X, Y)
dot_data = tree.export_graphviz(clf, out_file=None, feature_names=combo.columns[2:], class_names=class_names)
graph = graphviz.Source(dot_data)
graph.render('r')

产生这样的输出,我知道这是错误的,因为出现 5 次的唯一成绩是 A。

有什么问题?

相关链接

https://datascience.stackexchange.com/questions/28574/decisiontreeclassifier-object-has-no-attribute-importances 是一个有趣的答案,提供了一些有用的提示,但根本没有回答我在这里的问题。

【问题讨论】:

  • 您的具体情况是什么?您显示的Y 表示9 类分类,而所示树节点中的value 元素用于5 类分类。 y 到底是什么 - 与显示的 Y 相同吗?请提供更多详细信息、示例数据和用于可视化的确切代码(没有屏幕截图!) - 到目前为止,您的问题还不清楚
  • 显示为“y”(小写)的内容由 tree.export_graphviz 生成。这只是巧合,与我的变量 Y 无关。换句话说,显示总是使用小写的 y。 ...好的,我将尝试用代码重申问题。谢谢。

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


【解决方案1】:

我找到了这个解决方案:

clf = tree.DecisionTreeClassifier(max_depth=4)
clf.fit(X, Y)
dot_data = tree.export_graphviz(clf, out_file=None, feature_names=Xprep.columns, class_names=clf.classes_)

事实证明,在 fit 调用的结果中有一个稍微难以找到的属性:clf.classes_,其中包含类的文本再现。

【讨论】:

    猜你喜欢
    • 2020-02-07
    • 1970-01-01
    • 1970-01-01
    • 2019-12-26
    • 2017-06-29
    • 2017-05-22
    • 2017-07-26
    • 2016-01-10
    • 1970-01-01
    相关资源
    最近更新 更多