#!/usr/bin/env python
#-*-coding:utf-8-*-
#决策树的建立,训练测试,
from sklearn.feature_extraction import DictVectorizer
import csv
from sklearn import preprocessing
from sklearn import tree
from sklearn.externals.six import StringIO#读数据
allElectronicsData=open(r'jueceshu.csv','rb')
reader=csv.reader(allElectronicsData)
headers=reader.next()featureList=[]
labelList=[]
#分析数据
for row in reader:#print(row)if(row):labelList.append(row[len(row)-1])rowDict={}for i in range(1,len(row)-1):rowDict[headers[i]]=row[i]featureList.append(rowDict)print(featureList)
#转化数据
vec=DictVectorizer()
dummyX=vec.fit_transform(featureList).toarray()print('dummyX:'+str(dummyX))
print(vec.get_feature_names())print('labelList:'+str(labelList))lb=preprocessing.LabelBinarizer()
dummyY=lb.fit_transform(labelList)
print('dummyY:'+str(dummyX))#训练数据
clf=tree.DecisionTreeClassifier(criterion='entropy')
clf=clf.fit(dummyX,dummyY)
print('clf'+str(clf))
#转化为dot模式
with open('allElectronicInformationGainDri.dot','w') as f:f=tree.export_graphviz(clf,feature_names=vec.get_feature_names(),out_file=f)#决策树的预测
oneRowX=dummyX[0,:]
print('oneRowX:'+str(oneRowX))newRowX=oneRowX
newRowX[0]=1
newRowX[2]=0
print('newRowX:'+str(newRowX))predictedY=clf.predict(newRowX)
print('predictedY:'+str(predictedY))




student=no <= 0.5

entropy = 0.9403
samples = 14
value = [5, 9]
True
entropy = 0.0
samples = 5
value = [0, 5]
False
age=senior <= 0.5
entropy = 0.5436
samples = 8
value = [1, 7] age=youth <= 0.5
entropy = 0.9183
samples = 6
value = [4, 2]
credit_rating=excellent <= 0.5
entropy = 0.9183
samples = 3
value = [1, 2] credit_rating=excellent <= 0.5
entropy = 0.9183
samples = 3
value = [1, 2]
entropy = 0.0
samples = 2
value = [0, 2]
entropy = 0.0
samples = 1
value = [1, 0]
entropy = 0.0
samples = 2
value = [0, 2]
entropy = 0.0
samples = 3
value = [3, 0]
entropy = 0.0
samples = 1

value = [1, 0]

1. Python

2.  Python机器学习的库:scikit-learn
2.1: 特性:
简单高效的数据挖掘和机器学习分析
对所有用户开放,根据不同需求高度可重用性
基于Numpy, SciPy和matplotlib
开源,商用级别:获得 BSD许可
2.2 覆盖问题领域:
分类(classification), 回归(regression), 聚类(clustering), 降维(dimensionality reduction)
模型选择(model selection), 预处理(preprocessing)
3. 使用用scikit-learn
安装scikit-learn: pip, easy_install, windows installer
安装必要package:numpy, SciPy和matplotlib, 可使用Anaconda (包含numpy, scipy等科学计算常用
package)
     安装注意问题:Python解释器版本(2.7 or 3.4?), 32-bit or 64-bit系统
4. 例子:

文档: http://scikit-learn.org/stable/modules/tree.html
解释Python代码
安装 Graphviz: http://www.graphviz.org/
配置环境变量
      转化dot文件至pdf可视化决策树:dot -Tpdf iris.dot -o outpu.pdf

数据集:

RiD,age,income,student,credit_rating,Class_buys_computer
1,youth,high,no,fair,no
2,youth,high,no,excellent,no
3,middle_aged,high,no,fair,yes
4,senior,medium,no,fair,yes
5,senior,low,yes,fair,yes
6,senior,low,yes,excellent,no
7,middle_aged,low,yes,excellent,yes
8,youth,medium,no,fair,no
9,youth,low,yes,fair,yes
10,senior,medium,yes,fair,yes
11,youth,medium,yes,excellent,yes
12,middle_aged,medium,yes,excellent,yes
13,middle_aged,high,yes,fair,yes
14,senior,medium,no,excellent,no

结果:

结果解释:

字典代表每一行,每个测试样例,每个测试集

dummyX代表格式的转换

labelList代表结果集

dummyY代表结果集的格式化

clfDecisionTreeClassifier代表决策树分类器

oneRowX代表其中一个测试集

newRowX代表一个新的测试集

predictedY代表预测的结果

机器学习——决策树的实现相关推荐

  1. 机器学习——决策树学习

    机器学习--决策树学习 一.什么是决策树 二.决策树的学习过程 特征选择: 决策树生成: 剪枝: 三.决策树的一个具体的实例 导入数据 python strip() 函数和 split() 函数的详解 ...

  2. 3.1 机器学习 --- 决策树

    3.1 机器学习 - 决策树 一 金融评分卡 模型做好后尽量快的上线,以符合要求的模型,尽快上线. 超参数赋予权重,使得模型的参数不一致,而达到均衡样本数据 二 决策树原理 1. 找女朋友 性别:男 ...

  3. 关于《机器学习决策树导出图片、PDF支持中文》解决办法

    很久没有更新博客了,一直以为自己默默无闻,埋头苦干.实际上是一种懒惰! 2020年的春天,是一段难忘的记忆!在这段特殊的时光里,让我静心思考,潜心研究.每每遇到技术困惑,总能在CSDN找到解决办法,由 ...

  4. 机器学习 | 决策树原理剪枝连续值缺失值处理

    机器学习 | 决策树 最近学习了西瓜书决策树一章,简单整理了笔记,后续会继续补充给 文章目录 机器学习 | 决策树 一.基本信息论 1. 信息量 2. 信息熵 二.决策树常用算法 1.ID3 2.C4 ...

  5. 机器学习——决策树(decision tree)

    相关文章链接: 机器学习--人工神经网络(NN) 机器学习--卷积神经网络(CNN) 机器学习--循环神经网络(RNN) 机器学习--长短期记忆(LSTM) 机器学习--决策树(decision tr ...

  6. 机器学习 --- 决策树(educode实训作业)

    引言:本文主要对educoder机器学习 --- 决策树的实训作业进行讲解,创造不易!请您点点关注,点点收藏叭!!! 目录 第1关:什么是决策树 任务描述 相关知识 引例 决策树的相关概念 编程要求 ...

  7. 机器学习 决策树篇——解决离散变量的分类问题

    机器学习 决策树篇--解决离散变量的分类问题 摘要 熵增益和熵增益率计算 熵增益和熵增益率运行结果 离散变量的决策树模型 决策树模型运行结果 摘要 本文通过python实现了熵增益和熵增益率的计算.实 ...

  8. 机器学习——决策树模型:Python实现

    机器学习--决策树模型:Python实现 1 决策树模型的代码实现 1.1 分类决策树模型(DecisionTreeClassifier) 1.2 回归决策树模型(DecisionTreeRegres ...

  9. 机器学习 决策树篇——解决连续变量的分类问题

    机器学习 决策树篇--解决连续变量的分类问题 摘要 信息熵.条件熵.熵增益.熵增益率的计算 GiNi系数.GiNi系数增益的计算 python代码 连续变量决策树分类案例 摘要 本文通过python实 ...

  10. 机器学习 | 决策树之回归树

    机器学习 | 决策树之回归树 上文提到决策树不仅可用于分类,还可进行回归,本文将继续记录回归决策树. 文章目录 机器学习 | 决策树之回归树 前言 一.回归树的构建方法 二.递归二分法 三.回归树的剪 ...

最新文章

  1. 办公室“暧昧”的几种结局。
  2. java xslt 2,使用xsl:for-each-group进行XSLT 2.0分组
  3. 在Javascript中 声明时用var与不用var的区别,== 和 ===的区别
  4. Hologres揭秘:优化COPY,批量导入性能提升5倍+
  5. hive mysql类型,(二)Hive数据类型、数据定义、数据操作和查询
  6. 在CentOS7环境下部署TiDB
  7. python office转pdf_python 如何将office文件转换为PDF
  8. 我只是bug的搬运工之idea的Cannot run program git.exe: CreateProcess error=2
  9. react实例9-拖拽2
  10. matlab画图时候图例混乱解决方法
  11. 完整的支付系统整体架构
  12. java 开源mis系统框架_开源 MIS 系统解决方案 jeeww
  13. 详解win10装回win7不开机的原因和解决方法
  14. 51单片机之系统指令
  15. unity 弹窗提示_【原创】Unity3D 消息提示框
  16. CTA-敏感行为-修改联系人(新建/更新/删除)
  17. 前端三件套之css笔记
  18. 电脑连不上网,WiFi没有显示出来
  19. 生产计划管理软件功能是什么?对生产管理有何好处?
  20. AngularJS 和 Electron 构建桌面应用

热门文章

  1. excel合并多个工作表_多个工作表或者多个工作簿的合并计算
  2. JAVA入门级教学之(Object类中的equals方法)
  3. JAVA入门级教学之(switch语句)
  4. 最大值减最小值等于区间长度_呆哥数学每日一题 ——三角函数求余弦最小值...
  5. 计算机专业网站的开题ppt,.计算机专业开题报告.ppt
  6. 静态成员 java_JAVA中的静态成员
  7. animate动画案例_animate动画案例——小小购物狂
  8. python中怎么计算_python中的加减乘除运算
  9. gradle是否可以编译c语言,build.gradle按条件编译与cmake配置
  10. 【LeetCode笔记】4. 寻找两个正序数组的中位数(Java、二分、递归)