机器学习入门——决策树的实例

写文章的目的是为了巩固所学,和方便回顾查找。如有讲错的地方,欢迎指出,谢谢。

我们的数据集 tree(1).csv 长这样:

RID age income student credit_rating buy
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 no excellent yes
13 middle_aged high yes fair yes
14 senior medium no excellent no
#导入必要的库
from sklearn.feature_extraction import DictVectorizer
import csv
from sklearn import preprocessing
from sklearn import tree
#加载数据文件
load_file = open(r'tree(1).csv')
reader = csv.reader(load_file)  #载入数据
headers = reader.__next__()   #读取第一行
print(headers)
#试着打印结果,也可以作为指标加载数据是否成功

打印结果:

['RID', 'age', 'income', 'student', 'credit_rating', 'class_buys_computer']

观察我们的数据,发现数据中的特征,例如:age:youth ..等,导入无法识别,因此需要对特征进行抽取,用到了DictVectorizer
DictVectorizer 使用可以参考这篇文章

说明: DictVectorizer的处理对象是符号化(非数字化)的但是具有一定结构的特征数据,如字典等,将符号转成数字0/1表示。

lables = []    #用于存储标记实例,也就是本例中的是否购入电脑
feature = []   #用于存储特征#reader返回的值是csv文件中每行的列表,将每行读取的值作为列表返回
for row in reader:lables.append(row[len(row)-1])features = {}for each in range(1,len(row)-1):features[headers[each]] = row[each]feature.append(features)vec = DictVectorizer()
x = vec.fit_transform(feature).toarray()
print('特征提取后的X'+'\n'+str(x))
# print(headers)
lab = preprocessing.LabelBinarizer()
y = lab.fit_transform(lables)
print('Y'+'\n'+str(y))

输出:

特征提取后的X
[[0. 0. 1. 0. 1. 1. 0. 0. 1. 0.][0. 0. 1. 1. 0. 1. 0. 0. 1. 0.][1. 0. 0. 0. 1. 1. 0. 0. 1. 0.][0. 1. 0. 0. 1. 0. 0. 1. 1. 0.][0. 1. 0. 0. 1. 0. 1. 0. 0. 1.][0. 1. 0. 1. 0. 0. 1. 0. 0. 1.][1. 0. 0. 1. 0. 0. 1. 0. 0. 1.][0. 0. 1. 0. 1. 0. 0. 1. 1. 0.][0. 0. 1. 0. 1. 0. 1. 0. 0. 1.][0. 1. 0. 0. 1. 0. 0. 1. 0. 1.][0. 0. 1. 1. 0. 0. 0. 1. 0. 1.][1. 0. 0. 1. 0. 0. 0. 1. 1. 0.][1. 0. 0. 0. 1. 1. 0. 0. 0. 1.][0. 1. 0. 1. 0. 0. 0. 1. 1. 0.]]
特征提取后的Y:
[[0][0][1][1][1][0][1][0][1][1][1][1][1][0]]

建立决策树模型

result = tree.DecisionTreeClassifier(criterion='entropy')
#使用特征选择标准为entropy,默认为基尼系数”gini”
result.fit(x,y)
# print('result'+str(result))
with open('tree1.dot','w') as f:f = tree.export_graphviz(result,out_file=f,feature_names=vec.get_feature_names())
#保存成文件

关于特征标准选择可以参考这篇文章

可以使用Graphviz工具可视化决策树(需要配置成环境变量才可以在控制台使用)
命令:dot -Tpdf tree1.dot -o pic.pdf
结果如下:

简单的python决策树案例相关推荐

  1. python爬虫简单实例-最简单的Python爬虫案例,看得懂说明你已入门,附赠教程

    原标题:最简单的Python爬虫案例,看得懂说明你已入门,附赠教程 这是最简单的Python爬虫案例,如果你能看懂,那么请你保持信心,因为你已经入门Python爬虫,只要带着信心和努力,你的技术能力在 ...

  2. python 筛选提取连续多行_没有比这更简单的Python入门案例,用python打印你的宠物小精灵...

    现在学习Python的人越来越多,但你会以怎样的方式开始编写你的第一个Python代码呢? 下面我教你一个简单的入门案例,很适合最开始的Python学习哦! 即将用到的Python基础语法是:prin ...

  3. python决策树案例_决策树案例:基于python的商品购买能力预测系统

    1 决策树/判定树(decision tree) 1 决策树(Dicision Tree)是机器学习有监督算法中分类算法的一种,有关机器学习中分类和预测算法的评估主要体现在:准确率:预测的准确与否是本 ...

  4. python简单实例-python简单案例

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 一个简单的python资讯采集案例,列表页到详情页,到数据保存,保存为txt文档, ...

  5. 史上最简单的spark教程第二十三章-运行第一个机器学习Java和Python代码案例

    [提前声明] 文章由作者:张耀峰 结合自己生产中的使用经验整理,最终形成简单易懂的文章 写作不易,转载请注明,谢谢! 代码案例地址: ?https://github.com/Mydreamandrea ...

  6. python决策树剪枝_决策树剪枝算法的python实现方法详解

    python 决策树怎样修剪枝 剪枝是决策树停止分支的方法之一,剪枝有分预先剪枝和后剪枝两种.预先剪枝是在树的生长过程中设定一个指标,当达到该指标时就停止生长,这样做容易产生"爱已不在,却还 ...

  7. 数据分享|Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户...

    原文链接:http://tecdat.cn/?p=23518 项目背景:银行的主要盈利业务靠的是贷款,这些客户中的大多数是存款大小不等的责任客户(存款人).银行拥有不断增长的客户(点击文末" ...

  8. 独家 | 如何用简单的Python为数据科学家编写Web应用程序?(附代码链接)

    作者:拉胡尔·阿加瓦尔(Rahul Agarwal), Walmart 实验室的数据科学家 翻译:陈之炎 校对:闫晓雨 本文约4300字,建议阅读10分钟. 本文阐述如何使用StreamLit创建支持 ...

  9. rust python扩展_Rust语言优化Python性能案例

    原标题:Rust语言优化Python性能案例 导读:Python 被很多互联网系统广泛使用,但在另外一方面,它也存在一些性能问题,不过 Sentry 工程师分享的在关键模块上用另外一门语言 Rust ...

最新文章

  1. 通过创建 HttpCookie 对象的实例编写 Cookie
  2. 五分钟教会你函数式编程与闭包
  3. Shell编程之matrix---装逼又炫酷
  4. java学习笔记(十一)基本数据类型的对象包装类
  5. 分享2018年陆陆续续读过的书-附书单
  6. OpenGL编程低级错误范例手册
  7. mysql设置环境变量
  8. pycharm创建我的第一个项目
  9. python人脸识别库_基于facenet的实时人脸识别系统
  10. eLife:一个开源、高性能的自动睡眠分期工具
  11. CVPR 2020 | 旷视研究院提出优化领域自适应物体检测性能的类别正则化框架
  12. Linux perlbrew Perl5 安装教程
  13. 使用PlotNeuralNet绘制自己的网络结构图
  14. 正睿集训模拟赛 Day1
  15. 金额保留小数点后两位方法
  16. 程序设计第二十二题 空心三角形
  17. DirectX11 板条箱示例Demo
  18. 计算机怎么让隐藏的文件夹不能搜索,电脑怎么巧妙隐藏文件夹让人找不到?隐藏电脑文件方法教程...
  19. 苹果电脑常用的计算机英语怎么说,史上最强苹果电脑Mac Pro发布 有啥亮点(中英文)...
  20. 思科和思杰联袂提供全面的桌面虚拟化解决方案

热门文章

  1. Linux设置屏幕分辨率
  2. matlab正态分布均值和方差,MATLAB如何使用normstat函数计算正态分布的期望与方差...
  3. 运算放大器偏置电阻的计算
  4. 【python解决SQLAlchemy+MySQL插入数据时报警告Warning: (1366, “Incorrect string value: ‘\\xD6\\xD0\\xB9\\xFA\\xB】
  5. 【用VSCode编写MarkDown并导出Epub电子书】
  6. 利用python向word文档模板中写入内容
  7. ATmega8 定时器 中断 外部中断 程序
  8. Java总结六:面向对象编程(上)
  9. iOS Jenkins自动化打包
  10. VS--无法迁移解决方案文件(解决办法)