一.使用决策树预测隐形眼镜类型

这里实现一个例子,即利用决策树预测一个患者需要佩戴的隐形眼镜类型。以下是整个预测的大体步骤:

  1. 收集数据:使用书中提供的小型数据集

  2. 准备数据:对文本中的数据进行预处理,如解析数据行

  3. 分析数据:快速检查数据,并使用createPlot()函数绘制最终的树形图

  4. 训练决策树:使用createTree()函数训练

  5. 测试决策树:编写简单的测试函数验证决策树的输出结果&绘图结果

  6. 使用决策树:这部分可选择将训练好的决策树进行存储,以便随时使用

    此处新建脚本文件saveTree.py,将训练好的决策树保存在磁盘中,这里需要使用Python模块的pickle序列化对象。storeTree()函数负责把tree存放在当前目录下的filename(.txt)文件中,而getTree(filename)则是在当前目录下的filename(.txt)文件中读取决策树的相关数据。

"""
Created on Fri Mar 09 10:36 2018@author: AlanSmith
"""import pickledef storeTree(tree, filename):fw = open(filename, 'w')pickle.dump(tree, fw)fw.close()def getTree(filename):fr = open(filename)return pickle.load(fr)

以下代码实现了决策树预测隐形眼镜模型的实例,使用的数据集是隐形眼镜数据集,它包含很多患者的眼部状况的观察条件以及医生推荐的隐形眼镜类型,其中隐形眼镜类型包括:硬材质(hard)、软材质(soft)和不适合佩戴隐形眼镜(no lenses) , 数据来源于UCI数据库。数据集包含下面几个特征:age(年龄), prescript(近视还是远视), astigmatic(散光), tearRate(眼泪清除率)。代码最后调用了之前准备好的createPlot()函数绘制树形图。

"""
Created on Fri Mar 09 10:50 2018@author: AlanSmith
"""import DecisionTree_Tree1
import DecisionTree_PlotTree2
import DecisionTree_SaveTree3fr = open('/Users/Administrator/Desktop/MLiA_SourceCode/machinelearninginaction/Ch03/lenses.txt')
lensesData = [data.strip().split('\t') for data in fr.readlines()]
lensesLabel = ['age', 'prescript', 'astigmatic', 'tearRate']
lensesTree = DecisionTree_Tree1.createTree(lensesData, lensesLabel)
print(lensesData)
print(lensesTree)
print(DecisionTree_PlotTree2.createPlot(lensesTree))

二.关于本章使用的决策树的总结

以上代码的实现基于ID3决策树构造算法,它是一个非常经典的算法,然而实际上决策树的使用中常常会遇到一个问题,即“过度匹配”。有时候,过多的分支选择或匹配选项会给决策带来负面的效果。为了减少过度匹配的问题,通常算法设计者会在一些实际情况中选择“剪枝”。简单说来,如果叶子节点只能增加少许信息,则可以删除该节点。

【机器学习实战系列】读书笔记之DecisionTree(ID3算法)(三)相关推荐

  1. Python《机器学习实战》读书笔记(三)——决策树

    第三章 决策树 引言 3-1 决策树的构造 3-1-1 信息增益 3-1-2 划分数据集 3-1-3 递归构建决策树 3-2 在Python中使用Matplotlib注解绘制树形图 3-2-1 Mat ...

  2. 《机器学习实战》读书笔记(第一部分:分类)

    参考<机器学习实战> 一.KNN 原理: 步骤: 数据处理归一化(x-min)/(max-min) 计算已知类别数据集中的点与当前点之间的距离 选取与当前点距离最小的k个点 确定k个点所在 ...

  3. Python《机器学习实战》读书笔记(四)——朴素贝叶斯

    第四章 基于概率论的分类方法朴素贝叶斯 4-1 基于贝叶斯决策理论的分类方法 4-2 条件概率 4-3 使用条件概率来分类 4-4 使用朴素贝叶斯进行文档分类 4-5 使用Python进行文本分类 4 ...

  4. 《机器学习实战》学习笔记(三):决策树

    欢迎关注WX公众号:[程序员管小亮] [机器学习]<机器学习实战>读书笔记及代码 总目录 https://blog.csdn.net/TeFuirnever/article/details ...

  5. 《机器学习实战》学习笔记(一):机器学习基础

    欢迎关注WX公众号:[程序员管小亮] [机器学习]<机器学习实战>读书笔记及代码 总目录 https://blog.csdn.net/TeFuirnever/article/details ...

  6. 《机器学习实战》学习笔记(四):基于概率论的分类方法 - 朴素贝叶斯

    欢迎关注WX公众号:[程序员管小亮] [机器学习]<机器学习实战>读书笔记及代码 总目录 https://blog.csdn.net/TeFuirnever/article/details ...

  7. 《机器学习实战》学习笔记(八):预测数值型数据 - 回归

    欢迎关注WX公众号:[程序员管小亮] [机器学习]<机器学习实战>读书笔记及代码 总目录 https://blog.csdn.net/TeFuirnever/article/details ...

  8. 《机器学习实战》学习笔记(七):利用AdaBoost 元算法提高分类性能

    欢迎关注WX公众号:[程序员管小亮] [机器学习]<机器学习实战>读书笔记及代码 总目录 https://blog.csdn.net/TeFuirnever/article/details ...

  9. 《机器学习实战》学习笔记(二):k-近邻算法

    欢迎关注WX公众号:[程序员管小亮] [机器学习]<机器学习实战>读书笔记及代码 总目录 https://blog.csdn.net/TeFuirnever/article/details ...

  10. python3《机器学习实战系列》学习笔记----3.2 决策树实战

    前言 一.ID3算法构造决策树 1.1 背景 1.2 信息增益计算 1.3 递归生成决策树 二.使用Matplotlib注解绘制树形图 2.1 Matplotlib注解 2.2 构造注解树 三.测试和 ...

最新文章

  1. Java日志框架-Spring中使用Logback(Spring/Spring MVC)
  2. windows 11预览版来了!
  3. 选择图像的“感兴趣区域”
  4. MAKEWORD(2,2)解释
  5. 转:V.I. Arnold 论数学教育
  6. SAP UI5 应用开发教程之五十六 - SAP UI5 树控件(tree)的开发试读版
  7. 【python】用正则表达式进行文字局部替换
  8. vue项目实战环境的搭建 -- 项目创建及连接github(gitee同理)
  9. 大学本科数学专业课程
  10. 基于opencv的数字识别
  11. PS修改图片上的文字
  12. 永磁直流无刷电机设计之路(三)——电磁参数设计
  13. 二维数组随机生成地图迷宫_经验分享:三套简单的迷宫地图生成方案
  14. 霓虹灯的c语言编写程序,用C语言编写单片机流水灯程序
  15. 深度学习——感知机:多层感知机(multi-layered perceptron)图文详解
  16. 移动互联网广告 全媒体广告平台怎么代理 利润点有多少
  17. matlab中匿名(Anonymous)函数及bsxfun函数
  18. mysql 库损坏恢复数据方法
  19. 7-1 求1到N的和 (5 分)
  20. python江红第五章课后答案_第五章课后习题参考答案

热门文章

  1. 第十六周模测——ZJM要抵御宇宙射线
  2. Apex开发人员指南
  3. 一文读懂锁相环基本原理
  4. jsp/java智能井盖管理系统
  5. JAVA实现Excel模板导入案例分析
  6. PLY格式介绍与读取
  7. win7 计算机无法搜索,Win7笔记本电脑无法搜索无线网络_计算机的基本知识_IT /计算机_信息...
  8. java audioinputstream 读取音频文件_从原始文件中获取最多x个字节的AudioInputStream(剪切音频文件)...
  9. 4. struct 结构体
  10. android 字符串中截取,【安卓按键精灵】几种字符串提取的方法(源码)