决策树与KNN均属于分类算法,它将欲处理的数据看做树的根,然后选取数据的特征作为分类的节点,每次选取一个节点将数据分成不同的子集,每次划分出来的子集可看做是树的分支,一次划分过程即为一次决策过程,直至最后无法继续划分,则停止进程,最终形成根在上部的一颗树型结构。
1、构造决策树
在构造决策树前,先选取特征作为划分数据集的依据。为得到在划分数据时起决定作用的特征,要对每个特征进行评估。
(1)信息增益
划分数据的大原则:将无序的数据变得更加有序
信息增益:在划分数据前后信息发生的变化
计算每个特征值划分数据集获得的信息增益,获得信息增益最高的特征就是最好的选择。(香农熵)
(2)划分数据集
对所有特征进行遍历,选择信息熵最高的特征作为划分依据。
(3)递归构建决策树
由于特征值可能多余两个,即可能存在大于两个分支的数据集划分。在第一次划分后,数据将被向下传递到树分支的下一个节点,再次进行划分。这是一个递归的过程。递归结束的条件是:程序遍历完所有划分数据集的属性,或者每个分支下的所有实例都有相同的分类。
2、用matplotlib注解绘制树型图
在此处,由于本人使用的是python3.6,而不是python2.6,遇到一个小问题
firstStr = myTree.keys()[0]
secondDict = myTree[firstStr]
应改为:
firstStr = list(inputTree.keys())
firstStr1=firstStr[0]
secondDict = inputTree[firstStr1]
3、测试算法
使用训练数据构造决策树,然后用该预测模型对实际待测数据进行分类。