本节我们将通过一个例子讲解决策树如何预测患者需要佩戴的隐形眼镜类别,使用小数据集,我们就可以利用决策树学到很多知识
收集数据:提供的文本文件 |
准备数据:解析tab键分隔的数据行 |
分析数据:快速检查数据,确保正确地解析数据内容,使用createPlot()函数绘制最终的树形图 |
训练算法:使用上个博客的createTree()函数 |
测试算法:编写测试函数验证决策树可以正确分类给定的数据实例 |
使用算法:存储树的数据结构,以便下次使用时无需重新构造树。 |
fr=open("data/3.DecisionTree/lenses.txt")
lenses=[inst.strip().split("\t")for inst in fr.readlines()]
lensesLabels=["age","prescript","astigmatic","tearRate"]
lensesTree=trees.createTree(lenses,lensesLabels)
lensesTree
输出文本格式,所以要能看出树状结构就是用绘图工具去绘制出来
借用书上的,这里不再实现
本章小结
决策树分类器就像带有终止块的流程图,终止块表示分类结果。开始处理数据集时,我们首
先需要测量集合中数据的不一致性,也就是熵,然后寻找最优方案划分数据集,直到数据集中的
所有数据属于同一分类。ID3算法可以用于划分标称型数据集。构建决策树时,我们通常采用递
归的方法将数据集转化为决策树。一般我们并不构造新的数据结构,而是使用Python语言内嵌的
数据结构字典存储树节点信息。
使用Matplotlib的注解功能,我们可以将存储的树结构转化为容易理解的图形。Python语言的
pickle模块可用于存储决策树的结构。隐形眼镜的例子表明决策树可能会产生过多的数据集划分,
从而产生过度匹配数据集的问题。我们可以通过裁剪决策树,合并相邻的无法产生大量信息增益
的叶节点,消除过度匹配问题。
还有其他的决策树的构造算法,最流行的是C4.5和CART,在讨论回归问题时将介绍CART
算法。
本节讨论的是结果确定的分类算法,数据实例最终会被明确划分到某个分类中。
下一章我们讨论的分类算法将不能完全确定数据实例应该划分到某个分类,或者只能给出数据实
例属于给定分类的概率。