今天深入学习了机器学习算法中,属于监督学习的决策树模型,我是在github上2w+星的项目学习的:apachecn/AiLearning,在此强烈推荐给新手!
作者的算法基本依靠Python的基础语法完成,比如数据集是以二维列表的形式展示的,利用基础语法对其进行操作,会比较繁琐。联想到利用pandas应该能使代码更简洁,便自己动手实操了一番:
先给出伪代码:
对于一个拥有分类结果的训练数据集:
如果结果列只有一种分类,则返回此分类;
如果数据集只有1列,则返回出现次数最多的分类;
否则要选择最优特征列,创建决策树;
对于每一个特征列:
计算每一个特征值的信息熵和概率
计算这一特征列的期望信息熵(每一个特征值的信息熵和概率相乘后求和)
计算特征列的信息增益(基础信息熵-期望信息熵)
比较每一个特征的信息增益,返回最大信息增益的特征
根据最优特征划分数据集,并剔除第一次选择的最优特征
对于剩余的特征:
递归调用函数,直到返回最终分类结果
实际代码:
#!/usr/bin/python