绘制出决策树

经过训练的决策树,我们可以使用 export_graphviz 导出器以 Graphviz 格式导出决策树. 如果你是用 conda 来管理包,那么安装 graphviz 二进制文件和 python 包可以用以下指令安装

conda install python-graphviz

或者,可以从 graphviz 项目主页下载 graphviz 的二进制文件,并从 pypi 安装 Python 包装器,并安装 ‘pip install graphviz` .以下是在整个 iris 数据集上训练的上述树的 graphviz 导出示例; 其结果被保存在 iris.pdf 中:

from sklearn.datasets import load_iris

from sklearn import tree

iris = load_iris()

clf_iris = tree.DecisionTreeClassifier()

clf_iris = clf.fit(iris.data, iris.target)

* 下面的代码可以到处我们的决策树 *

:func:export_graphviz 出导出还支持各种美化,包括通过他们的类着色节点(或回归值),如果需要,使用显式变量和类名。

* 注意:默认情况下,会导出图形文件*

Jupyter notebook也可以自动找出相同的模块

import graphviz # doctest: +SKIP

dot_data = tree.export_graphviz(clf, out_file=None) # doctest: +SKIP

graph = graphviz.Source(dot_data) # doctest: +SKIP

graph.render("iris") # doctest: +SKIP

dot_data = tree.export_graphviz(clf, out_file=None, # doctest: +SKIP

feature_names=iris.feature_names, # doctest: +SKIP

class_names=iris.target_names, # doctest: +SKIP

filled=True, rounded=True, # doctest: +SKIP

special_characters=True) # doctest: +SKIP

graph = graphviz.Source(dot_data) # doctest: +SKIP

graph # doctest: +SKIP

* 之后依旧可以使用该函数进行预测数据等操作*

clf_iris.predict(iris.data[:1, :])

array([0])

画出决策树的分类区域

import numpy as np

import matplotlib.pyplot as plt

from sklearn.datasets import load_iris

from sklearn.tree import DecisionTreeClassifier

# Parameters

n_classes = 3

plot_colors = "ryb"

plot_step = 0.02 # Load data

iris = load_iris()

for pairidx, pair in enumerate([[0, 1], [0, 2], [0, 3],

[1, 2], [1, 3], [2, 3]]):

# We only take the two corresponding features

X = iris.data[:, pair]

y = iris.target

# Train

clf = DecisionTreeClassifier().fit(X, y)

# Plot the decision boundary

plt.subplot(2, 3, pairidx + 1)

x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1

y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1

xx, yy = np.meshgrid(np.arange(x_min, x_max, plot_step),

np.arange(y_min, y_max, plot_step))

plt.tight_layout(h_pad=0.5, w_pad=0.5, pad=2.5)

Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])

Z = Z.reshape(xx.shape)

cs = plt.contourf(xx, yy, Z, cmap=plt.cm.RdYlBu)

plt.xlabel(iris.feature_names[pair[0]])

plt.ylabel(iris.feature_names[pair[1]])

# Plot the training points for i, color in zip(range(n_classes), plot_colors):

idx = np.where(y == i)

plt.scatter(X[idx, 0], X[idx, 1], c=color, label=iris.target_names[i],

cmap=plt.cm.RdYlBu, edgecolor='black', s=15)

plt.suptitle("Decision surface of a decision tree using paired features")

plt.legend(loc='lower right', borderpad=0, handletextpad=0)

plt.axis("tight")

plt.show()

参考资料

python画决策树_Python绘制决策树相关推荐

  1. python画正方体_python绘制立方体的方法

    本文实例为大家分享了python绘制立方体的具体代码,供大家参考,具体内容如下 #!/usr/bin/env python # This is (almost) a direct C++ to Pyt ...

  2. 如何在手机上用python画玫瑰_python绘制玫瑰的实现代码

    今天为大家介绍一个Python绘制一朵漂亮的玫瑰花,用python的turtle库这个绘画库是非常简单的,但是还是需要你测试路径方向,慢慢调试,下面的代码具有一定的参考价值 利用python绘制一朵玫 ...

  3. 用python画六芒星_Python绘制六角星、多角星、小太阳、小风车

    绘制如下图的,多角图形.思路. (1)每个角是一个标准的等边三角形,把绘制等边三角形作为一个标准函数. (2)观察图形,可以看出,画的三角形在不断的旋转和移动,因此第一步找到三角形画法起始点的海龟头旋 ...

  4. python画圆柱体_python绘制圆柱体的方法

    本文实例为大家分享了python绘制圆柱体示的具体代码,供大家参考,具体内容如下 #!/usr/bin/env python import vtk # 参考的C++版本源码及解释 感谢原作者 # ht ...

  5. 怎么用python画圆柱_python绘制圆柱体

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  6. 用python画熊_Python绘制PDF,CDF

    PDF,CDF 正态分布的PDF和CDF对比: PDF:概率密度函数(probability density function) CDF : 累积分布函数 (cumulative distributi ...

  7. 用python画树_Python+Turtle动态绘制一棵树实例分享

    本文实例主要是对turtle的使用,实现Python+turtle动态绘制一棵树的实例,具体代码: # drawtree.py from turtle import Turtle, mainloop ...

  8. python画国际象棋_python图形工具turtle绘制国际象棋棋盘

    本文实例为大家分享了python图形工具turtle绘制国际象棋棋盘的具体代码,供大家参考,具体内容如下 #编写程序绘制一个国际象棋的棋盘 import turtle turtle.speed(30) ...

  9. python画箭头_Python matplotlib绘制图形,包括点、曲线、注释和箭头

    Python的matplotlib模块绘制图形功能很强大,今天就用pyplot绘制一个简单的图形,图形中包括曲线.曲线上的点.注释和指向点的箭头. 1. 结果预览: 2. 代码如下: from mat ...

最新文章

  1. Python爬虫之破解百度翻译--requests案例详解(二)
  2. Traceroute笔记
  3. 【Socket网络编程】12. send()、recv()、sendto() 和 recvfrom() 函数解析
  4. VTK:图片之ImageCityBlockDistance
  5. windows下写代码在linux下编译,如何在Windows中编译Linux Unix的代码(采用cygwin)?...
  6. 学习Apache Camel –实时索引推文
  7. php_curl.dll libssh2.dll 始终无法加载的原因 及解决办法
  8. python与线性代数 向量方程
  9. java回调和监听的区别_java监听机制的原理-回调机制
  10. JAVA编程思想——读书笔记 对象的容纳
  11. [病毒]exp1orer.exe
  12. java并发包(JUC)
  13. oracle讲师视频教程,赵强老师:Oracle数据库系列视频课程
  14. 面试经验--Lowe Profero
  15. Springboot+bootstrap+thymeleaf+shiro项目《晨光房屋在线租赁》
  16. 软件测试周刊(第61期):内心强大的人都有三个共性「不和他人作比较」「不对他人有期待」「不批判他人」
  17. 在Linux上解压缩和打包WAR文件
  18. maven阿里镜像下载jar包报错
  19. blender新手入门教程中文 编辑后属性选项显示
  20. 微信小程序入门之广告条

热门文章

  1. java、计算机进制转换,二进制 十进制 十六进制 的进制等等!
  2. 120941138报:工信部正搭建移动应用认证和管理服务
  3. nginx安装配置并nginx添加至systemctl
  4. Idea导出jar包运行报错:找不到主清单属性解决方法
  5. Kafka-消息积压处理方案
  6. PyQT中QTableWidget根据单元格内容设置自动宽度
  7. Tableau和FineReport(帆软)的区別!
  8. SQL中order by里面可以加条件
  9. 大咖 | 车品觉:我们为什么要认识数据的本质
  10. iOS(OC、swift) 结构体和类的区别