当前位置: 首页 > 面试题库 >

可视化决策树(来自scikit-learn的示例)

慕容修伟
2023-03-14
问题内容

我是使用sciki-learn的菜鸟,所以请多多包涵。

我正在查看示例:http : //scikit-learn.org/stable/modules/tree.html#tree

from sklearn.datasets import load_iris
from sklearn import tree
iris = load_iris()
clf = tree.DecisionTreeClassifier()
clf = clf.fit(iris.data, iris.target)
from StringIO import StringIO
out = StringIO()
out = tree.export_graphviz(clf, out_file=out)
显然,graphiz文件已可以使用。

但是如何使用graphiz文件绘制树呢?(该示例未详细介绍如何绘制树)。

示例代码和提示非常受欢迎!

谢谢!

更新资料

我正在使用ubuntu 12.04,Python 2.7.3


问题答案:

您运行哪个操作系统?你已经graphviz安装好了吗?

在您的示例中,StringIO()对象保存graphviz数据,这是一种检查数据的方法:

...
>>> print out.getvalue()

digraph Tree {
0 [label="X[2] <= 2.4500\nerror = 0.666667\nsamples = 150\nvalue = [ 50.  50.  50.]", shape="box"] ;
1 [label="error = 0.0000\nsamples = 50\nvalue = [ 50.   0.   0.]", shape="box"] ;
0 -> 1 ;
2 [label="X[3] <= 1.7500\nerror = 0.5\nsamples = 100\nvalue = [  0.  50.  50.]", shape="box"] ;
0 -> 2 ;
3 [label="X[2] <= 4.9500\nerror = 0.168038\nsamples = 54\nvalue = [  0.  49.   5.]", shape="box"] ;
2 -> 3 ;
4 [label="X[3] <= 1.6500\nerror = 0.0407986\nsamples = 48\nvalue = [  0.  47.   1.]", shape="box"] ;
3 -> 4 ;
5 [label="error = 0.0000\nsamples = 47\nvalue = [  0.  47.   0.]", shape="box"] ;
4 -> 5 ;
6 [label="error = 0.0000\nsamples = 1\nvalue = [ 0.  0.  1.]", shape="box"] ;
4 -> 6 ;
7 [label="X[3] <= 1.5500\nerror = 0.444444\nsamples = 6\nvalue = [ 0.  2.  4.]", shape="box"] ;
3 -> 7 ;
8 [label="error = 0.0000\nsamples = 3\nvalue = [ 0.  0.  3.]", shape="box"] ;
7 -> 8 ;
9 [label="X[0] <= 6.9500\nerror = 0.444444\nsamples = 3\nvalue = [ 0.  2.  1.]", shape="box"] ;
7 -> 9 ;
10 [label="error = 0.0000\nsamples = 2\nvalue = [ 0.  2.  0.]", shape="box"] ;
9 -> 10 ;
11 [label="error = 0.0000\nsamples = 1\nvalue = [ 0.  0.  1.]", shape="box"] ;
9 -> 11 ;
12 [label="X[2] <= 4.8500\nerror = 0.0425331\nsamples = 46\nvalue = [  0.   1.  45.]", shape="box"] ;
2 -> 12 ;
13 [label="X[0] <= 5.9500\nerror = 0.444444\nsamples = 3\nvalue = [ 0.  1.  2.]", shape="box"] ;
12 -> 13 ;
14 [label="error = 0.0000\nsamples = 1\nvalue = [ 0.  1.  0.]", shape="box"] ;
13 -> 14 ;
15 [label="error = 0.0000\nsamples = 2\nvalue = [ 0.  0.  2.]", shape="box"] ;
13 -> 15 ;
16 [label="error = 0.0000\nsamples = 43\nvalue = [  0.   0.  43.]", shape="box"] ;
12 -> 16 ;
}

您可以将其编写为.dot文件并产生图像输出,如链接的源中所示:

$ dot -Tpng tree.dot -o tree.png (PNG格式输出)



 类似资料:
  • 问题内容: 我正在尝试在Python中使用scikit-learn设计一个简单的决策树(我在Windows OS上将Anaconda的Ipython Notebook与Python 2.7.3结合使用),并将其可视化如下: 但是,出现以下错误: 我使用以下博客文章作为参考:Blogpost链接 以下stackoverflow问题似乎也不适合我:问题 有人可以帮助我如何在scikit-learn中可

  • 问题内容: 有没有办法在scikit-learn中打印经过训练的决策树?我想为自己的论文训练决策树,并希望将论文的图片放入论文中。那可能吗? 问题答案: 有一种方法可以导出为graph_viz格式:http ://scikit- learn.org/stable/modules/generation/sklearn.tree.export_graphviz.html 因此,从在线文档中: 然后,您

  • 问题内容: 我是否可以从决策树中经过训练的树中提取出基本的决策规则(或“决策路径”)作为文本列表? 就像是: 谢谢你的帮助。 问题答案: 我相信这个答案比这里的其他答案更正确: 这会打印出有效的Python函数。这是一个试图返回其输入的树的示例输出,该数字介于0和10之间。 这是我在其他答案中看到的一些绊脚石: 使用来决定一个节点是否为叶是不是一个好主意。如果它是阈值为-2的真实决策节点怎么办?相

  • 问题内容: 我可以从决策树中经过训练的树中提取出基本的决策规则(或“决策路径”)作为文本列表吗? 就像是: 谢谢你的帮助。 问题答案: 我相信这个答案比这里的其他答案更正确: 这会打印出有效的Python函数。这是尝试返回其输入的树的示例输出,该数字介于0到10之间。 这是我在其他答案中看到的一些绊脚石: 使用tree_.threshold == -2来决定一个节点是否为叶是不是一个好主意。如果它

  • 问题内容: 我目前正在使用python的scikit库使用线性内核执行多类SVM。样本训练数据和测试数据如下: 型号数据: 我想绘制决策边界并可视化数据集。有人可以帮忙绘制此类数据吗? 上面给出的数据只是模拟数据,因此可以随时更改值。如果至少您可以建议要执行的步骤,这将很有帮助。提前致谢 问题答案: 您只需选择2个功能即可。 原因是您无法绘制7D图。选择2个要素后,仅将其用于决策面的可视化。 (我

  • scikit-learn 是一个 Python 的机器学习项目。是一个简单高效的数据挖掘和数据分析工具。基于 NumPy、SciPy 和 matplotlib 构建。 Installation 依赖 scikit-learn 要求: Python (>= 2.7 or >= 3.3) NumPy (>= 1.8.2) SciPy (>= 0.13.3) 运行示例需要 Matplotlib >= 1