决策树最大的优点是我们可以查看最终的树结构,上一篇日志中,我们通过 matplotlib 展示了我们自己的树结构

但是 matplotlib 绘制树结构较为复杂,我们这里来了解一个更为易用的绘图工具 -- Graphviz

Graphviz 不能通过 pip 直接安装,需要我们手动在官网下载并安装:

https://graphviz.gitlab.io/about/

安装完成以后,需要在环境变量 Graphviz 的 bin 路径

然后,我们需要安装 pydotplus,你也可以选择安装 pydot,这里我们以 pydotplus 为例,使用 pydot 可以在网上找到示例代码

pip install pydotplus

然后我们编写代码:

# -*- coding: utf-8 -*-

# {{{

from io import StringIO

import pandas

import pydotplus

from sklearn import tree

from sklearn.preprocessing import LabelEncoder

from sklearn.tree import DecisionTreeClassifier

def createDataSet():

"""

创建数据集

:return: 数据集与特征集

"""

dataSet = [['hot', 'sunny', 'high', 'false', 'no'],

['hot', 'sunny', 'high', 'true', 'no'],

['hot', 'overcast', 'high', 'false', 'yes'],

['cool', 'rain', 'normal', 'false', 'yes'],

['cool', 'overcast', 'normal', 'true', 'yes'],

['mild', 'sunny', 'high', 'false', 'no'],

['cool', 'sunny', 'normal', 'false', 'yes'],

['mild', 'rain', 'normal', 'false', 'yes'],

['mild', 'sunny', 'normal', 'true', 'yes'],

['mild', 'overcast', 'high', 'true', 'yes'],

['hot', 'overcast', 'normal', 'false', 'yes'],

['mild', 'sunny', 'high', 'true', 'no'],

['cool', 'sunny', 'normal', 'true', 'no'],

['mild', 'sunny', 'high', 'false', 'yes']]

labels = ['climate', 'weather', 'temple', 'cold']

return dataSet, labels

if __name__ == '__main__':

dataSet, labels = createDataSet()

yDataList = [] # 提取每组数据的类别,保存在列表里

for each in dataSet:

yDataList.append(each[-1])

dataDict = {}

for each_label in labels:

tempList = list()

for each in dataSet:

tempList.append(each[labels.index(each_label)])

dataDict[each_label] = tempList

dataPD = pandas.DataFrame(dataDict)

leDict = dict()

for col in dataPD.columns:

leDict[col] = LabelEncoder()

dataPD[col] = leDict[col].fit_transform(dataPD[col])

dt = DecisionTreeClassifier()

dt.fit(dataPD.values.tolist(), yDataList)

dot_data = StringIO()

tree.export_graphviz(dt, out_file=dot_data, # 绘制决策树

feature_names=dataPD.keys(),

class_names=dt.classes_,

filled=True, rounded=True,

special_characters=True)

graph = pydotplus.graph_from_dot_data(dot_data.getvalue())

graph.progs = {'dot': u"C:\\Program Files (x86)\\Graphviz2.38\\bin\\dot.exe"}

graph.write_pdf("tree.pdf")

xTest = [['hot', 'overcast', 'high', 'false'], ['mild', 'sunny', 'high', 'true']]

testDict = {}

for each_label in labels:

tempList = list()

for each in xTest:

tempList.append(each[labels.index(each_label)])

testDict[each_label] = tempList

testPD = pandas.DataFrame(testDict) # 生成pandas.DataFrame

for col in testPD.columns: # 为每一列序列化

testPD[col] = leDict[col].transform(testPD[col])

result = dt.predict(testPD.values.tolist())

print(result)

#}}}

保存图片的部分其实只需要下面几行:

dot_data = StringIO()

tree.export_graphviz(dt, out_file=dot_data, # 绘制决策树

feature_names=dataPD.keys(),

class_names=dt.classes_,

filled=True, rounded=True,

special_characters=True)

graph = pydotplus.graph_from_dot_data(dot_data.getvalue())

graph.write_pdf("tree.pdf")

这样我们就以 PDF 格式保存了图片:

sklearn 决策树例子_使用 sklearn 构建决策树并使用 Graphviz 绘制树结构相关推荐

  1. sklearn 决策树例子_机器学习|决策树的生成过程是怎样?(一)

    本文笔者将用具体例子讲述决策树的构建过程,分析:决策树生成过程中有什么样的问题? 一.基本概念 决策树的定义: 首先,决策树是一种有监督的分类算法--即给定X,Y值,构建X,Y的映射关系. 不同于线性 ...

  2. sklearn 决策树例子_决策树DecisionTree(附代码实现)

    开局一张图(网图,随便找的). 对这种类型的图很熟悉的小伙伴应该马上就看出来了,这是一颗决策树,没错今天我们的主题就是理解和实现决策树. 决策树和我们以前学过的算法稍微有点不一样,它是个树形结构.决策 ...

  3. sklearn 决策树例子_决策树--规则挖掘应用

    本次主要简单介绍下决策树在风控规则中的简单应用,让读者快速入门.在后续的文章中,会逐一介绍决策树的各种算法原理,如信息增益.ID3算法.C4.5算法.C5.0算法等, 希望感兴趣的朋友可以关注下. 前 ...

  4. boost原理与sklearn源码_机器学习sklearn系列之决策树

    一. Sklearn库 Scikit learn 也简称 sklearn, 自2007年发布以来,scikit-learn已经成为Python重要的机器学习库了.支持包括分类.回归.降维和聚类四大机器 ...

  5. python决策树实例_机器学习中的决策树及python实例

    一棵树在现实生活中有许多枝叶,事实上树的概念在机器学习也有广泛应用,涵盖了分类和回归.在决策分析中,决策树可用于直观地决策和作出决策.决策树,顾名思义,一个树状的决策模型.尽管数据挖掘与机器学习中常常 ...

  6. 【机器学习】什么是决策树模型?如何去构建决策树?何时使用决策树?何时使用神经网络?

    系列文章目录 第十三章 Python 机器学习入门之决策树 目录 系列文章目录 前言 一.决策树模型 1 什么是决策树模型? 2 决策树学习的过程 二.如何确定在节点使用的特征 1 熵的定义 2 什么 ...

  7. 随机森林和决策树区别_第六讲 决策树与随机森林

    概念属性 信息熵:信息量度量的是一个具体事件发生了所带来的信息,而熵则是在结果出来之前对可能产生的信息量的期望--考虑该随机变量的所有可能取值,即所有可能发生事件所带来的信息量的期望.即 .如果一件事 ...

  8. sklearn 相关性分析_用sklearn机器学习预测泰坦尼克号生存概率

    前言 本文为练手记录,适用于刚入门的朋友参照阅读练习,大神请绕道,谢谢! 阅读大约需要10分钟. 一.理解项目概况并提出问题 1.1 登陆官网查看项目概况 Titanic: Machine Learn ...

  9. 决策树例子与python实现

    决策树的划分依据之一是信息增益的大小 对于下面这个例子,使用ID3算法,ID3:使用信息增益g(D,A)进行特征选择 一个特征的信息增益(或信息增益率,或基尼系数)越大,表明特征对样本的熵的减少能力更 ...

最新文章

  1. VS2008显示代码行号
  2. 计算机一级ppt难点,计算机一级复习.ppt
  3. UDP协议抓包分析 -- wireshark
  4. lis最长上升子序列o(nlogn)优化
  5. python csv数据处理_Python数据处理(1) —CSV文件数据处理
  6. Phoenix的数据类型和操作符、函数
  7. unique去除重复的向量_Matlab如何剔除矩阵中重复列向量
  8. ajax中的application/x-www-form-urlencoded中的使用
  9. 最新游戏帐号交易平台源码+支持游戏币交易
  10. [哈佛幸福课13 听后感]
  11. 【Shell 脚本速成】01、编程语言与 Shell 脚本介绍
  12. 元学习—模型不可知元学习(MAML)
  13. linux 系统管理 实战技巧
  14. python编程计算器_Python设计实现的计算器功能完整实例
  15. 服务器usb驱动安装系统安装失败怎么办,Win7系统安装USB3.0驱动程序失败怎么办?Win7系统安装USB3.0驱动程序失败的解决方法...
  16. yolov5 目标检测算法
  17. android电视怎么使用教程,手机无线投屏到电视机的方法和具体该操作
  18. QNX手册学习笔记------同优先级调度算法
  19. 聊一聊IT行业哪个专业工资高?
  20. Java后端开发工程师技术栈整理

热门文章

  1. python cv模块_Python cv包_程序模块 - PyPI - Python中文网
  2. lisp删除块中图元_DeleteBlocks
  3. mycat分表之ER表分片、范围分片、取模分片、日期分片、全局表等
  4. 康乐主机系统怎么安装php,Kangle EP面板详细安装说明
  5. 计算机技师工作调研,技师学院党委书记王庆余到计算机工程系进行“不忘初心、牢记使命”主题教育调研工作...
  6. PHP转换时间戳mktime,php日期转换为时间戳的方法
  7. 华为双系统手机可以刷成单系统_「冯站长之家」今日聚焦:重大突破!华为手机鸿蒙系统2.0,正式面世!骂华为的“喷子”,可以休矣!...
  8. scrapy爬虫循环抓取同一个url,避免同一URL使爬虫关闭
  9. ubuntu18.04安装wireshark3.x与tshark3.x
  10. pandas dataframe按行或列求和