Python实现决策树并且使用Graphviz可视化的例子


Posted in Python onAugust 09, 2019

一、什么是决策树(decision tree)——机器学习中的一个重要的分类算法

决策树是一个类似于数据流程图的树结构:其中,每个内部节点表示一个属性上的测试,每个分支代表一个属性输出,而每个树叶结点代表类或者类的分布,树的最顶层是根结点

根据天气情况决定出游与否的案例

Python实现决策树并且使用Graphviz可视化的例子

二、决策树算法构建

2.1决策树的核心思路

特征选择:从训练数据的特征中选择一个特征作为当前节点的分裂标准(特征选择的标准不同产生了不同的特征决策树算法)。

决策树生成:根据所选特征评估标准,从上至下递归地生成子节点,直到数据集不可分则停止决策树停止声场。

剪枝:决策树容易过拟合,需要剪枝来缩小树的结构和规模(包括预剪枝和后剪枝)。

2.2 熵的概念:度量信息的方式

实现决策树的算法包括ID3、C4.5算法等。常见的ID3核心思想是以信息增益度量属性选择,选择分裂后信息增益最大的属性进行分裂。

一条信息的信息量大小和它的不确定性有直接的关系,要搞清楚一件非常不确定的事情,或者是我们一无所知的事情,需要大量的信息====>信息量的度量就等于不确定性的 多少。也就是说变量的不确定性越大,熵就越大

信息熵的计算公司

Python实现决策树并且使用Graphviz可视化的例子

S为所有事件集合,p为发生概率,c为特征总数。

信息增益(information gain)是指信息划分前后的熵的变化,也就是说由于使用这个属性分割样例而导致的期望熵降低。也就是说,信息增益就是原有信息熵与属性划分后信息熵(需要对划分后的信息熵取期望值)的差值,具体计算如下:

Python实现决策树并且使用Graphviz可视化的例子

其中,第二项为属性A对S划分的期望信息。

三、IDE3决策树的Python实现

以下面这个不同年龄段的人买电脑的情况为例子建模型算法

Python实现决策树并且使用Graphviz可视化的例子

'''
Created on 2018年7月5日
使用python内的科学计算的库实现利用决策树解决问题 
@author: lenovo
'''
#coding:utf-8
from sklearn.feature_extraction import DictVectorizer
#数据存储的格式 python自带不需要安装
import csv 
#预处理的包
from sklearn import preprocessing
from sklearn.externals.six import StringIO
from sklearn.tree import tree 
from sklearn.tree import export_graphviz
'''
文件保存格式需要是utf-8
window中的目录形式需要是左斜杠 F:/AA_BigData/test_data/test1.csv
excel表格存储成csv格式并且是utf-8格式的编码
'''
'''
决策树数据源读取
scklearn要求的数据类型 特征值属性必须是数值型的
需要对数据进行预处理
'''
#装特征的值
featureList=[] 
#装类别的词
labelList=[]
with open("F:/AA_BigData/test_data/decision_tree.csv", "r",encoding="utf-8") as csvfile:
 decision =csv.reader(csvfile)
 headers =[]
 row =1
 for item in decision:
 if row==1:
  row=row+1
  for head in item:
  headers.append(head)
 else:
  itemDict={}
  labelList.append(item[len(item)-1])
  for num in range(1,len(item)-1):
#  print(item[num])
  itemDict[headers[num]]=item[num]
  featureList.append(itemDict) 
print(headers)
print(labelList)
print(featureList)
'''
将原始数据转换成包含有字典的List
将建好的包含字典的list用DictVectorizer对象转换成0-1矩阵
'''
vec =DictVectorizer()
dumyX =vec.fit_transform(featureList).toarray();
#对于类别使用同样的方法
lb =preprocessing.LabelBinarizer()
dumyY=lb.fit_transform(labelList)
print(dumyY)
'''
 1.构建分类器——决策树模型
 2.使用数据训练决策树模型
'''
clf =tree.DecisionTreeClassifier(criterion="entropy")
clf.fit(dumyX,dumyY)
print(str(clf))
'''
1.将生成的分类器转换成dot格式的 数据
2.在命令行中dot -Tpdf iris.dot -o output.pdf将dot文件转换成pdf图的文件
'''
#视频上讲的不适用python3.5
with open("F:/AA_BigData/test_data/decisiontree.dot", "w") as wFile:
 export_graphviz(clf,out_file=wFile,feature_names=vec.get_feature_names())

Graphviz对决策树的可视化

Python实现决策树并且使用Graphviz可视化的例子

以上这篇Python实现决策树并且使用Graphviz可视化的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详解Python使用simplejson模块解析JSON的方法
Mar 24 Python
python 请求服务器的实现代码(http请求和https请求)
May 25 Python
Python之用户输入的实例
Jun 22 Python
Python实现八皇后问题示例代码
Dec 09 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
Jan 23 Python
Django异步任务之Celery的基本使用
Mar 23 Python
python字典的遍历3种方法详解
Aug 10 Python
使用Python为中秋节绘制一块美味的月饼
Sep 11 Python
Django实现任意文件上传(最简单的方法)
Jun 03 Python
python-图片流传输的思路及示例(url转换二维码)
Dec 21 Python
Python实现石头剪刀布游戏
Jan 20 Python
Python数据分析之pandas读取数据
Jun 02 Python
Django ORM 常用字段与不常用字段汇总
Aug 09 #Python
详解如何减少python内存的消耗
Aug 09 #Python
Django命名URL和反向解析URL实现解析
Aug 09 #Python
利用python list完成最简单的DB连接池方法
Aug 09 #Python
python使用requests.session模拟登录
Aug 09 #Python
如何在Cloud Studio上执行Python代码?
Aug 09 #Python
python切片(获取一个子列表(数组))详解
Aug 09 #Python
You might like
30 个很棒的PHP开源CMS内容管理系统小结
2011/10/14 PHP
PHP+jQuery实现自动补全功能源码
2013/05/15 PHP
ThinkPHP之N方法实例详解
2014/06/20 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
2015/12/25 PHP
PHP Cookei记录用户历史浏览信息的代码
2016/02/03 PHP
php实现的错误处理封装类实例
2017/06/20 PHP
YII2自动登录Cookie总是失效的解决方法
2017/06/28 PHP
基于JQuery的抓取博客园首页RSS的代码
2011/12/01 Javascript
jquery实现盒子下拉效果示例代码
2013/09/12 Javascript
js中通过split函数分割字符串成数组小例子
2013/09/21 Javascript
jQuery 计算iframe 窗口大小的方法
2014/05/13 Javascript
初识Node.js
2014/09/03 Javascript
在JavaScript中处理时间之setMinutes()方法的使用
2015/06/11 Javascript
JavaScript 模块的循环加载实现方法
2015/12/13 Javascript
BootStrap iCheck插件全选与获取value值的解决方法
2016/08/24 Javascript
Vue表单实例代码
2016/09/05 Javascript
JS实现中英文混合文字溢出友好截取功能
2018/08/06 Javascript
jquery UI实现autocomplete在获取焦点时得到显示列表功能示例
2019/06/04 jQuery
[04:44]显微镜下的DOTA2第二期——你所没有注意到的细节
2014/06/20 DOTA
Python学习之Anaconda的使用与配置方法
2018/01/04 Python
Django 中使用流响应处理视频的方法
2018/07/20 Python
windows下python 3.6.4安装配置图文教程
2018/08/21 Python
深入浅析Python2.x和3.x版本的主要区别
2018/11/30 Python
在macOS上搭建python环境的实现方法
2019/08/13 Python
python 初始化一个定长的数组实例
2019/12/02 Python
浅谈keras 模型用于预测时的注意事项
2020/06/27 Python
EVE LOM英国官网:全世界最好的洁面膏
2017/10/30 全球购物
Jack Rogers官网:美国经典的女性鞋靴品牌
2019/09/04 全球购物
美国最好的葡萄酒网上商店:Wine Library
2019/11/02 全球购物
小学作文评语大全
2014/04/21 职场文书
同居协议书范本
2014/04/23 职场文书
党员干部民主生活会议批评与自我批评材料
2014/09/20 职场文书
党员教师四风问题整改措施思想汇报
2014/10/08 职场文书
英语版自我评价,35句话轻松搞定
2019/10/08 职场文书
CSS中Single Div 绘图技巧的实现
2021/06/18 HTML / CSS
Win11 引入 Windows 365 云操作系统,适应疫情期间混合办公模式:启动时直接登录、模
2022/04/06 数码科技