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

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

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

  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 pickle

def 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_SaveTree3

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


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值