编程语言
首页 > 编程语言> > python – 在scikit-learn中可视化决策树

python – 在scikit-learn中可视化决策树

作者:互联网

我正在尝试使用Python中的scikit-learn设计一个简单的决策树(我在Windows操作系统上使用Anaconda的Ipython Notebook和Python 2.7.3)并将其可视化如下:

from pandas import read_csv, DataFrame
from sklearn import tree
from os import system

data = read_csv('D:/training.csv')
Y = data.Y
X = data.ix[:,"X0":"X33"]

dtree = tree.DecisionTreeClassifier(criterion = "entropy")
dtree = dtree.fit(X, Y)

dotfile = open("D:/dtree2.dot", 'w')
dotfile = tree.export_graphviz(dtree, out_file = dotfile, feature_names = X.columns)
dotfile.close()
system("dot -Tpng D:.dot -o D:/dtree2.png")

但是,我收到以下错误:

AttributeError: 'NoneType' object has no attribute 'close'

我使用以下博客文章作为参考:Blogpost link

以下stackoverflow问题对我来说似乎也不起作用:Question

有人可以帮助我如何在scikit-learn中可视化决策树吗?

解决方法:

sklearn.tree.export_graphviz不返回任何内容,因此默认情况下返回None.

通过执行dotfile = tree.export_graphviz(…),您将覆盖之前已分配给dotfile的打开文件对象,因此当您尝试关闭文件时会出现错误(因为它现在为None).

要修复它,请将代码更改为

...
dotfile = open("D:/dtree2.dot", 'w')
tree.export_graphviz(dtree, out_file = dotfile, feature_names = X.columns)
dotfile.close()
...

标签:decision-tree,python,scikit-learn,visualization
来源: https://codeday.me/bug/20190926/1821182.html