decsion tree(决策树)

其中每个内部结点表示在一个属性上的测试,每个分支代表一个属性的输出,而每个树叶结点代表类或类的分布。树的最顶层是根节点

连续变量要离散化

机器学习中分类方法的一个重要算法

信息熵:

一个信息的信息量大小和它的不确定性有直接的关系,要搞清楚一件非常非常不确定的事情,或者是我么你一无所知的事情,需要了解大量新==》新的度量就等于不确定性的多少

变量的不确定性越大,熵也就越大

ID3

通过信息熵来选择每个节点的判断依据。

infomation gain最大则为当前节点的依据。

决策树的优点缺点

优点:直观,便于理解,小规模数据集有效

缺点:处理连续变量不好 类别较多时,错误增加比较快,可规模性一般

决策树程序

安装anaconda python环境

anaconda环境包含了机器学习的基本所有库

安装graphviz

转化dot文件到pdf

生成决策树图

进入到cmd中allEectronicInformationGainorc.dot所在文件夹

dot -Tpdf allEectronicInformationGainorc.dot -o outpu.pdf

program

#!/usr/bin/env python

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

import csv

import os

from sklearn import preprocessing

from sklearn.feature_extraction import DictVectorizer

from sklearn import tree

dataDir = os.path.dirname(__file__)

#载入数据并分割

allElectroncsData = open(dataDir+"/data/red.csv","r")

reader = csv.reader(allElectroncsData)

num =0

headers = []

for row in reader:

headers = row

if num == 0:

break

print(headers)

featureList = []

labelList = []

for row in reader:

labelList.append(row[-1])

rowDict={}

for i in range(1 , len(row)-1):

rowDict[headers[i]] = row[i]

featureList.append(rowDict)

print(labelList)

for feature in featureList:

print(feature)

#vectordic,向量化

vec = DictVectorizer()

dummyX = vec.fit_transform(featureList).toarray()

print(dummyX)

print(vec.get_feature_names())

#vectorize calss labels

lb = preprocessing.LabelBinarizer()

dummyY = lb.fit_transform(labelList)

print("dummyY:"+str(dummyY))

#using decision tree for classfication

clf = tree.DecisionTreeClassifier(criterion='entropy')##度量标准为entropy信息熵

clf = clf.fit(dummyX,dummyY)

print("clf"+str(clf))

#viuslize model,可视化

# with open("allEectronicInformationGainorc.dot", 'w') as f:

# f = tree.export_graphviz(clf, feature_names=vec.get_feature_names(), out_file=f)

#

# with open("hello.dot", "w") as f1:

# f1 = tree.export_graphviz(clf, feature_names=vec.get_feature_names(), out_file=f1)

#predic 预测

oneRowX = dummyX[0,:]

print("oneRowX:"+str(oneRowX))

newRowX = oneRowX

newRowX[0] =1

newRowX[2] =0

print("newRowX: "+str(newRowX))

predictedY = clf.predict(newRowX)

print("predictY: "+str(predictedY))

决策树 python 结果画图_scikit-learn决策树的python实现以及作图相关推荐

  1. 用python海龟画图_天呐!python 的乌龟绘图怎么用啊!?

    今天做的是用python实现画图,画出你想要的图案,只要你的想象力足够丰富,以及能够合理的运用这个turtle模块,基本可以画出你想要的东西出来.而且如果真要看turtle的画笔的效果的话,用pyth ...

  2. python语言画图代码_零: python matplotlib 画图进阶(含完整代码)

    导论: 在科研和研究的过程中,无论是哪个学科或者将来走上工作岗位,可视化是非常重要的一个环节. 这里的重要性,在我看来有三点:人是视觉动物,老板看你工作做的怎么样,paper reviewer看你研究 ...

  3. python小乌龟画图_#python 乌龟画图教程#天呐,python 的乌龟绘图怎么用

    python海龟绘图怎么增加每次画圆的半径 import turtle#导入海龟制图库 r=10#增加的,也是初始半径 for i in range(9):#批量比循环 turtle.penup()# ...

  4. python决策树画图_python输出决策树图形的例子

    python输出决策树图形的例子 windows10: 1,先要pip安装pydotplus和graphviz: pip install pydotplus pip install graphviz ...

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

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

  6. python中sklearn实现决策树及模型评估_sklearn实现决策树

    sklearn是一个功能非常强大的工具,可以用几行代码实现丰富的机器学习算法. 本文介绍使用sklearn实现决策树 决策树是经典的机器学习算法,很多复杂的机器学习算法都是由决策时演变而来.它是一种使 ...

  7. python预测糖尿病_使用决策树与随机深林预测糖尿病(python)

    (一)算法简介 决策树是一种树形结构,其中每一个内部节点表示在一个特征(属性)上的测试,每个分支代表一个测试输出,每个叶子节点代表一种类别. (二)代码实例 使用决策树预测糖尿病 参考引用于:贪心学院 ...

  8. Python机器学习【二】 - 决策树

    Python机器学习[二] - 决策树 原文地址:Python机器学习[二] - 决策树 上一篇基于sklearn Python库创建K近邻模型(KNN)实现了机器学习Hello World示例,KN ...

  9. 决策树分类python代码_分类算法-决策树 Decision Tree

    决策树(Decision Tree)是一个非参数的监督式学习方法,决策树又称为判定树,是运用于分类的一种树结构,其中的每个内部节点代表对某一属性的一次测试,每条边代表一个测试结果,叶节点代表某个类或类 ...

  10. 决策树(四):使用决策树预测隐形眼镜类型

    使用决策树预测隐形眼镜类型 介绍 代码部分 总结 介绍 本节我们将通过一个例子讲解决策树如何预测患者需要佩戴的隐形眼镜类型.使用小数据集 ,我们就可以利用决策树学到很多知识:眼科医生是如何判断患者需要 ...

最新文章

  1. 【转载】Real6410 Linux 常见问题总结(截至2010/07/26)
  2. Android蓝牙开发前序知识
  3. cpu内存调度python_Python/Pycharm内存和CPU分配以提高运行速度?
  4. 数据结构-图的深度优先遍历(DFS)和广度优先遍历(BFS)算法分析
  5. c.语言 获取随机数,C 语言随机数获取
  6. mysql 导入超时_sql数据库有1000M怎么导入mysql?导入超时怎么办?
  7. Detectron2学习笔记
  8. 计算机专业学术论文精选,计算机科学与技术专业本科生毕业论文精选.doc
  9. 首期「线上开发」直播出炉!轻量算法+轻量开发:AI 小白也能上手实操的一款图像分类器...
  10. 苹果手机如何隐藏软件_手机资讯:苹果软件下载演示
  11. 53所高校研究生补贴政策一览表!
  12. 把Android系统签名弄成jks
  13. linux下pcie串口卡驱动安装,pci串口卡万能驱动
  14. 如何在阿里云建立网站
  15. 如何降低程序员的工资?
  16. 关于技术人员的非技术能力
  17. 乌隆他尼皇家大学-静待绽放的“明珠”
  18. 抖音xlog算法解密过程
  19. jQuery-获取/设置 属性(标准属性,自定义属性)和内容
  20. Laravel框架-迁移文件

热门文章

  1. Centos7 修改运行级别
  2. 中国的数据科学家阶层正在形成
  3. 工具栏对象GUI Status 与GUI Title
  4. WinForm 实现两个容器之间控件的拖动及排列(图文)
  5. KS009基于SSH实现宠物管理系统
  6. 9/6字节校招研发岗位笔试
  7. go run/ go install/ go build / go get的区别
  8. Linked list(单链表)
  9. HDU 1022[Train Problem I] 栈的应用
  10. 剑指Offer 替换空格