写程序学ML:决策树算法原理及实现(二)

[题外话]近期申请了一个微信公众号:平凡程式人生。有兴趣的朋友可以关注,那里将会涉及更多机器学习、OpenCL+OpenCV以及图像处理方面的文章。

2、决策树算法的实现

2.1   决策树的创建

获得训练样本和特征集后,如何创建一颗决策树呢?

可以按照下面的流程处理:

1、  创建模块DecisionTree及其存储文件DecisionTree.py;

2、  获取训练样本所有的分类信息,判断是否所有的分类信息都相同,即所有训练样本都属于同一个类别。如果是,则返回该类型,终止决策树建立;否则执行第二步。

3、  如果当前训练样本中只剩下分类信息了,即叶子结点,则调用函数majorityCnt()返回样本集中数量最多的分类信息。此时终止当前树的处理。

4、  调用函数chooseBestFeatureToSplit()在当前训练样本中选择信息增益最大的特征。

5、  从当前训练样本中获取最佳特征对应的所有特征信息,依次循环:调用函数splitDataSet()将训练样本中与当前特征值一样的样本选出来,产生信息的样本集。然后,递归调用函数createTree()使用新样本集与除去最佳特征的特征集产生新的子树。

6、  依次返回当前构造的决策子树,最终创建整棵决策树。

具体的实现代码如下:

#dataSet为所有训练样本
#labels为训练样本所有特征对应的分类信息
#产生dataSet所对应的树结构信息,以字典形式存储并返回
def createTree(dataSet, labels):
        #获取训练样本dataSet中所有的分类标签信息,存储在列表变量classList中
        classList = [example[-1] for example in dataSet]
        #classList[0]表示第一个分类信
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值