本篇以信息增益最大作为最优化策略来详细介绍决策树的决策流程。

  首先给定数据集,见下图

  

注:本数据来源于网络

本篇将以这些数据作为训练数据(虽然少,但足以介绍清楚原理!),下图是决策树选择特征的流程

图中entropy代表决策树在根节点处的信息熵,Entropy(age)表示用age这个特征作为分支节点后的信息熵,同理,Entropy(income)和Entropy(credit)分别表示用收入和信用作为分支节点后计算出的信息熵,注意这里的信息熵并不是指某一次预测的实例选择某个特征后的分类不确定度,而是指一个总体的情况,针对的是n次预测(n足够大)。

信息增益就是用选择特征前后的信息熵做差,求得最大的信息增益作为我们要选择的特征。上图只是计算了根节点的特征选择情况,可以看出,选择特征age可以得到最大的信息熵,所以根节点的特征就选取age,根节点下面的子树的特征选择同理。

  下面用程序来构建决策树

  首先介绍环境:Windows系统,Python3.5.2,anaconda1.5.1,下面是代码。

from sklearn.feature_extraction import DictVectorizer
import csv
from sklearn import tree
from sklearn import preprocessing
from sklearn.externals.six import StringIO# Read in the csv file and put features into list of dict and list of class label
#allElectronicsData = open('D:\PythonWorkspace\DecisionTree\AllElectronics.csv', 'r')
#reader = csv.reader(allElectronicsData)
#headers = reader.next()
#D:\PythonWorkspace\DecisionTree\
with open("AllElectronics.csv","r") as csvfile:reader=csv.reader(csvfile)rows = [row for row in reader]
headers=rows[0]
readers=[]
for i in range(1,len(rows)):readers.append(rows[i])
featureList = []
labelList = []
for row in readers:labelList.append(row[len(row)-1])rowList = []for i in range(1, len(row)-1):rowList.append(len(row[i]))#用字符串长度来标记对应的类别
    featureList.append(rowList)
print (labelList)
print(featureList)
clf = tree.DecisionTreeClassifier(criterion='entropy')#选择信息增益
clf = clf.fit(featureList, labelList)#训练模型

with open("allElectronicInformationGainOri.dot", 'w') as f:f = tree.export_graphviz(clf, feature_names=['age','income','student','credit_rating','class_buys_computer'], out_file=f)#可视化模型,以dot文件输出

newRowX = [11, 3, 3, 4]#找一个测试用例,因为训练数据本身就少,就捏造一个吧。。。

predictedY = clf.predict(newRowX)
print("predictedY: " + str(predictedY))

这是可视化为pdf的结果

转载于:https://www.cnblogs.com/xueyinzhe/p/6854106.html

雪饮者 决策树系列(二)决策树应用相关推荐

  1. 决策树系列之一决策树的入门教程

    决策树 (Decisiontree) 一.决策树的概念 决策树(decision tree)又称为分类树(classification tree),决策树是最为广泛的归纳推理算法之一,处理类别型或连续 ...

  2. 大白话5分钟带你走进人工智能-第二十六节决策树系列之Cart回归树及其参数(5)...

                                                    第二十六节决策树系列之Cart回归树及其参数(5) 上一节我们讲了不同的决策树对应的计算纯度的计算方法, ...

  3. 大白话5分钟带你走进人工智能-第二十二节决策树系列之概念介绍(1)

                                                                第二十二节决策树系列之概念介绍(1) 本系列我们讲一个新算法及其衍生出来的系列算 ...

  4. python机器学习案例系列教程——决策树(ID3、C4.5、CART)

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 决策树简介 决策树算是最好理解的分类器了.决策树就是一个多层if-else函数,就是对对象属性进行多层if-else判断,获取目标属性 ...

  5. 大白话5分钟带你走进人工智能-第二十四节决策树系列之分裂流程和Gini系数评估(3)...

     第二十四节决策树系列之分裂流程和Gini系数评估(3) 上一节中我们讲解了决策树的数学表达形式,本节的话我们讲解决策树的分裂流程以及分裂条件的评估.我们基于决策树的递归表达式上:           ...

  6. gini系数 决策树_决策树系列--ID3、C4.5、CART

    决策树系列,涉及很好算法,接下来的几天内,我会逐步讲解决策树系列算法 1.基本概念 首先我们理解什么是熵:熵的概念最早源于物理学,用于度量一个热力学系统的无序程度.在信息论里面,信息熵是衡量信息量的大 ...

  7. 机器学习实验二 决策树

    文章目录 一.算法原理 二.基本步骤 三.量化纯度 四.剪枝处理 五.连续值处理 六.代码实现 一.算法原理 1.决策树(Decision Tree)是一种简单但是广泛使用的分类器.通过训练数据构建决 ...

  8. 机器学习系列文章-决策树

    决策树 由于我们是使用sklearn对决策树代码进行实现,所以并不是很关心其原理部分.但我仍需要对其进行一定的了解.通过查询资料,去学习了下决策树的原理,这里对其原理进行简要介绍. 注:这里决策树的原 ...

  9. 决策树(二)——决策树的生成

    说明:这篇博客是看李航老师的<统计学习方法>的笔记总结,博客中有很多内容是摘选自李航老师的<统计学习方法>一书,仅供学习交流使用. 决策树的生成 在上一篇博客决策树(一)--构 ...

  10. 一文速学数模-分类模型(二)决策树(Decision Tree)算法详解及python实现

    目录 一.决策树概述 二.工作原理及特点 三.决策树的构造 四.信息增益

最新文章

  1. Mongodb -(3) replica set+sharding
  2. 2017.9.18 鬼谷子的钱袋 思考记录
  3. java session使用_Nginx+tomcat实现session共享
  4. 【语音分析】基于matlab GUI语音信号线性预测(LPC)分析【含Matlab源码 910期】
  5. 著名线性代数教授 85岁麻省理工学院教授,给2020本科生教授《线性代数入门》
  6. ANSYS 有限元分析 命令流 实例
  7. 如何读计算机领域的论文,计算机领域学术论文分类
  8. Java 集合类入门篇
  9. css 控制文字换行相关属性
  10. c语言栈的实现以及操作
  11. C语言中的strlen与sizeof的区别
  12. PTA乙级1028 人口普查
  13. WordNet 介绍(ICL-PKU)
  14. 【解决方案】物流行业如何通过国标GB28181协议国标平台EasyGBS建立车载视频可视化监控系统?
  15. 计算机控制系统 裴润,自动控制原理(上下)
  16. java采用sm文件加密sm_Java sm3加密算法的实现
  17. 将阿拉伯数字转换为罗马数字
  18. 《等自己》张绍刚 毛不易
  19. 终于有人把云计算、大数据和 AI 讲明白了
  20. 数值计算网格------学习

热门文章

  1. ABBYY FineReader PDF for Mac(PDF转换工具)
  2. 犀牛Rhinoceros 7 for Mac(三维建模软件)
  3. MacOS如何设置不使用时退出登录用户账号
  4. Duplicate File Finder pro如何查找删除相似照片
  5. DEVONthink Pro作为浏览器插件脚本,如何使用
  6. 51CTO博客改版日记(目录) 2006年 by小废
  7. 7个示例科普CPU CACHE(zz)
  8. 《OpenGL ES 3.x游戏开发(下卷)》一2.8 小结
  9. android 开源框架
  10. Ubuntu 12.04 安装PYQT4和Eric4