sklearn 决策树例子_使用 sklearn 构建决策树并使用 Graphviz 绘制树结构
决策树最大的优点是我们可以查看最终的树结构,上一篇日志中,我们通过 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 绘制树结构相关推荐
- sklearn 决策树例子_机器学习|决策树的生成过程是怎样?(一)
本文笔者将用具体例子讲述决策树的构建过程,分析:决策树生成过程中有什么样的问题? 一.基本概念 决策树的定义: 首先,决策树是一种有监督的分类算法--即给定X,Y值,构建X,Y的映射关系. 不同于线性 ...
- sklearn 决策树例子_决策树DecisionTree(附代码实现)
开局一张图(网图,随便找的). 对这种类型的图很熟悉的小伙伴应该马上就看出来了,这是一颗决策树,没错今天我们的主题就是理解和实现决策树. 决策树和我们以前学过的算法稍微有点不一样,它是个树形结构.决策 ...
- sklearn 决策树例子_决策树--规则挖掘应用
本次主要简单介绍下决策树在风控规则中的简单应用,让读者快速入门.在后续的文章中,会逐一介绍决策树的各种算法原理,如信息增益.ID3算法.C4.5算法.C5.0算法等, 希望感兴趣的朋友可以关注下. 前 ...
- boost原理与sklearn源码_机器学习sklearn系列之决策树
一. Sklearn库 Scikit learn 也简称 sklearn, 自2007年发布以来,scikit-learn已经成为Python重要的机器学习库了.支持包括分类.回归.降维和聚类四大机器 ...
- python决策树实例_机器学习中的决策树及python实例
一棵树在现实生活中有许多枝叶,事实上树的概念在机器学习也有广泛应用,涵盖了分类和回归.在决策分析中,决策树可用于直观地决策和作出决策.决策树,顾名思义,一个树状的决策模型.尽管数据挖掘与机器学习中常常 ...
- 【机器学习】什么是决策树模型?如何去构建决策树?何时使用决策树?何时使用神经网络?
系列文章目录 第十三章 Python 机器学习入门之决策树 目录 系列文章目录 前言 一.决策树模型 1 什么是决策树模型? 2 决策树学习的过程 二.如何确定在节点使用的特征 1 熵的定义 2 什么 ...
- 随机森林和决策树区别_第六讲 决策树与随机森林
概念属性 信息熵:信息量度量的是一个具体事件发生了所带来的信息,而熵则是在结果出来之前对可能产生的信息量的期望--考虑该随机变量的所有可能取值,即所有可能发生事件所带来的信息量的期望.即 .如果一件事 ...
- sklearn 相关性分析_用sklearn机器学习预测泰坦尼克号生存概率
前言 本文为练手记录,适用于刚入门的朋友参照阅读练习,大神请绕道,谢谢! 阅读大约需要10分钟. 一.理解项目概况并提出问题 1.1 登陆官网查看项目概况 Titanic: Machine Learn ...
- 决策树例子与python实现
决策树的划分依据之一是信息增益的大小 对于下面这个例子,使用ID3算法,ID3:使用信息增益g(D,A)进行特征选择 一个特征的信息增益(或信息增益率,或基尼系数)越大,表明特征对样本的熵的减少能力更 ...
最新文章
- VS2008显示代码行号
- 计算机一级ppt难点,计算机一级复习.ppt
- UDP协议抓包分析 -- wireshark
- lis最长上升子序列o(nlogn)优化
- python csv数据处理_Python数据处理(1) —CSV文件数据处理
- Phoenix的数据类型和操作符、函数
- unique去除重复的向量_Matlab如何剔除矩阵中重复列向量
- ajax中的application/x-www-form-urlencoded中的使用
- 最新游戏帐号交易平台源码+支持游戏币交易
- [哈佛幸福课13 听后感]
- 【Shell 脚本速成】01、编程语言与 Shell 脚本介绍
- 元学习—模型不可知元学习(MAML)
- linux 系统管理 实战技巧
- python编程计算器_Python设计实现的计算器功能完整实例
- 服务器usb驱动安装系统安装失败怎么办,Win7系统安装USB3.0驱动程序失败怎么办?Win7系统安装USB3.0驱动程序失败的解决方法...
- yolov5 目标检测算法
- android电视怎么使用教程,手机无线投屏到电视机的方法和具体该操作
- QNX手册学习笔记------同优先级调度算法
- 聊一聊IT行业哪个专业工资高?
- Java后端开发工程师技术栈整理
热门文章
- python cv模块_Python cv包_程序模块 - PyPI - Python中文网
- lisp删除块中图元_DeleteBlocks
- mycat分表之ER表分片、范围分片、取模分片、日期分片、全局表等
- 康乐主机系统怎么安装php,Kangle EP面板详细安装说明
- 计算机技师工作调研,技师学院党委书记王庆余到计算机工程系进行“不忘初心、牢记使命”主题教育调研工作...
- PHP转换时间戳mktime,php日期转换为时间戳的方法
- 华为双系统手机可以刷成单系统_「冯站长之家」今日聚焦:重大突破!华为手机鸿蒙系统2.0,正式面世!骂华为的“喷子”,可以休矣!...
- scrapy爬虫循环抓取同一个url,避免同一URL使爬虫关闭
- ubuntu18.04安装wireshark3.x与tshark3.x
- pandas dataframe按行或列求和