注:数据集在文章末尾

(1)决策树简单例子

from sklearn.feature_extraction import DictVectorizer
from sklearn import tree
from sklearn import preprocessing
import csv# 读入数据
Dtree = open(r'AllElectronics.csv', 'r')
reader = csv.reader(Dtree)# 获取第一行数据
headers = reader.__next__()
print(headers)# 定义两个列表
featureList = []
labelList = []for row in reader:# 把label存入listlabelList.append(row[-1])rowDict = {}for i in range(1, len(row)-1):# 建立一个数据字典rowDict[headers[i]] = row[i]# 把数据字典存入listfeatureList.append(rowDict)print(featureList)

输出:

# 把数据转换成01表示
vec = DictVectorizer()
x_data = vec.fit_transform(featureList).toarray()
print("x_data: " + str(x_data))# 打印属性名称
print(vec.get_feature_names())# 打印标签
print("labelList: " + str(labelList))# 把标签转换成01表示
lb = preprocessing.LabelBinarizer()
y_data = lb.fit_transform(labelList)
print("y_data: " + str(y_data))

输出:

# 创建决策树模型
model = tree.DecisionTreeClassifier(criterion='entropy')
# 输入数据建立模型
model.fit(x_data, y_data)# 测试
x_test = x_data[0]
print("x_test: " + str(x_test))predict = model.predict(x_test.reshape(1,-1))
print("predict: " + str(predict))

输出:

# 导出决策树
# pip install graphviz
# http://www.graphviz.org/
import graphviz dot_data = tree.export_graphviz(model, out_file = None, feature_names = vec.get_feature_names(),class_names = lb.classes_,filled = True,rounded = True,special_characters = True)
graph = graphviz.Source(dot_data)
graph.render('computer')

(2)决策树-CART

from sklearn import tree
import numpy as np# 载入数据
data = np.genfromtxt("cart.csv", delimiter=",")
x_data = data[1:,1:-1]
y_data = data[1:,-1]# 创建决策树模型
model = tree.DecisionTreeClassifier()
# 输入数据建立模型
model.fit(x_data, y_data)# 导出决策树
import graphviz # http://www.graphviz.org/dot_data = tree.export_graphviz(model, out_file = None, feature_names = ['house_yes','house_no','single','married','divorced','income'],class_names = ['no','yes'],filled = True,rounded = True,special_characters = True)
graph = graphviz.Source(dot_data)
graph.render('cart')

数据集:“AllElectronics.csv”:

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

数据集:“cart.csv”:

RID,house_yes,house_no,single,married,divorced,income,label
1,1,0,1,0,0,125,0
2,0,1,0,1,0,100,0
3,0,1,1,0,0,70,0
4,1,0,0,1,0,120,0
5,0,1,0,0,1,95,1
6,0,1,0,1,0,60,0
7,1,0,0,0,1,220,0
8,0,1,1,0,0,85,1
9,0,1,0,1,0,75,0
10,0,1,1,0,0,90,1

【机器学习】监督学习--(分类)决策树①相关推荐

  1. 机器学习——监督学习之决策树分类模型

    概念 a.一种树形结构的分类器. b.通过顺序询问分类点的属性决定分类点的最终类别. c.决策树的构建通常根据特征的信息增益或其他指标. d.分类时,只需要按照决策树中的结点依次进行判断,即可得到样本 ...

  2. 机器学习之分类决策树与回归决策树—基于python实现

    大家好,我是带我去滑雪! 本期为大家介绍决策树算法,它一种基学习器,广泛应用于集成学习,用于大幅度提高模型的预测准确率.决策树在分区域时,会考虑特征向量对响应变量的影响,且每次仅使用一个分裂变量,这使 ...

  3. 【机器学习】分类决策树与回归决策树案例

    一.回顾 什么是决策树,信息熵 构建决策树的过程 ID3.C4.5和CRAT算法 上面三篇,主要介绍了相关的理论知识,其中构建决策树的过程可以很好地帮助我们理解决策树的分裂属性的选择. 本篇所有源代码 ...

  4. 机器学习之分类-决策树随机森林

    决策树 原理(信息论) 信息熵 信息:消除随机不定性的东西 信息熵公式,单位bit H ( X ) = − ∑ i = 1 n ( P ( x i ) log ⁡ b P ( x i ) ) H(X) ...

  5. 机器学习之分类决策树节点划分指标

    目录 信息熵 基尼Gini 指数 传送门 信息熵 基尼Gini 指数 其它情况以此类推 传送门 集成学习:XGBoost, lightGBM 通俗理解信息熵

  6. 监督学习--分类之决策树

    监督学习-分类-决策树 决策树使用树形分支结构分类事物 例: 小丽找对象,要求:高.帅.富 小明找对象,要求:美美美 if height >= 172:if hansom = '帅':if ri ...

  7. [Python从零到壹] 十四.机器学习之分类算法五万字总结全网首发(决策树、KNN、SVM、分类对比实验)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  8. 机器学习----监督学习算法之决策树(Decision Tree)

    感谢Jack-Cui大佬的知识分享 机器学习专栏点击这里 目录 感谢Jack-Cui大佬的知识分享 0. 概述 1. 使用决策树做预测需要以下过程: 2. 决策树构建步骤 2.1 特征选择 2.1.1 ...

  9. 【机器学习基础】CH2 - 监督学习(5)决策树

    2.5 决策树 到目前为止,我们已经研究了线性或线性基模型及其核变量. 在本节中,我们将考虑一种不同的分类或回归方法,在这种方法中,分类器是分段常数函数. 这类方法中最简单的是决策树,它将输入空间 分 ...

  10. [监督学习] 分类(决策树)

    决策树 决策树(decision tree) 是一种基本的分类与回归方法.本博客主要讨论用于分类的决策树.决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程.学习时,利用训练数据,根 ...

最新文章

  1. ubuntu 下 object-c环境配置与hello world 编译
  2. 系统架构师-基础到企业应用架构-系统设计规范与原则[上篇]
  3. 关于一个局部变量未初始化引发的项目异常退出问题
  4. 你们的前端是怎么入门的?(并且找到工作)?
  5. MySQL主从复制 + Mycat实现读写分离
  6. U盘强制格式化的解决方案
  7. 绘制谢尔宾斯基三角形
  8. 校友会2020计算机专业排名,校友会2020中国一流专业排名1200强公布,北大位列第一...
  9. 把老婆训练成女黑客的漏洞大神黄正|宅客故事
  10. The number of method references in a .dex file cannot exceed 64K
  11. B-spline Curves 学习之B样条曲线的移动控制点、修改节点分析(7)
  12. 计算机科学与技术专业图书,《计算机科学与技术专业毕业论文选》—甲虎网一站式图书批发平台...
  13. 【Python 百练成钢】高精度加法、阶乘计算、矩阵幂运算、矩阵面积交
  14. 国际短信系统平台软件源码开发路由功能—移讯云短信系统
  15. IPhone基于OAtuth的 twitter客户端开发
  16. 在Jetson TK1上安装ROS(机器人操作系统)
  17. 不规则图形数格子的方法_方格图中不规则图形的面积计算
  18. 从开发到部署:一站式指南创建个性化 Slack App 问答机器人
  19. Ubuntu18.04系统下安装IDL8.4版本(破解版)
  20. 3.2 Trino二次开发-动态数据源管理-源码解读2

热门文章

  1. 完成端口可用回射服务器
  2. pymol怎么做底物口袋表面_汽车表面有划痕怎么办?建议大家这样做,自己动手就解决...
  3. python编程代码执行漏洞_代码执行漏洞 - 安全先师的个人空间 - OSCHINA - 中文开源技术交流社区...
  4. java中构造函数有什么用,java中的构造函数有什么用?用它有什么好处?在什么地方用?...
  5. php接收不到post数据_PHP解决Vue发起POST请求,接收不到数据
  6. mysql 设置数据库只读_如何设置mysql数据库为只读
  7. 【LeetCode】剑指 Offer 56. 数组中数字出现的次数
  8. 《深入理解 Spring Cloud 与微服务构建》第三章 Spring Cloud
  9. 分页——SQL Server 对比 MySQL
  10. Python 关键词触发的魔法方法