1. 问题描述
由于隐形眼镜类型较多,患者选择方式众多,且患者眼部观察数据类型较多,因此有经验的医生也不能很好地给出适合患者佩戴的隐形眼镜类型。针对这种情况,如果有一些已知的患者眼部观察数据及其所佩戴的隐形眼镜类型的数据,则可通过这些数据构建决策树代替医生来判断患者所适合的隐形眼镜类型。
2. 数据准备
隐形眼镜数据集来自于文本文档“lenses.txt”,其中每一行即为一个患者眼部状况的观察条件和他所佩戴的隐形眼镜类型。第一列为患者年龄,其后每一列分别为患者患病类型、是否散光等最后一列为患者所佩戴隐形眼镜类型。
3. 模型原理
3.1.决策树构建
引入信息熵概念,依据某一标签分类后的数据集信息熵减少量作为判断原则,划分后数据集信息熵减少最多的标签作为首选决策标签,以此作为决策树的分支节点。重复该操作直到决策树各分支下数据类型一致或数据分类完成。
3.2.数据预测
输入已构建的决策树和数据在各类标签下的取值,通过决策树的分支条件进行判断,最终得到该数据的类型。
4. 算法实现
4.1.信息熵计算
def calcShannonEnt(dataSet):
numEntries = len(dataSet)
labelCounts = {}</