机器学习实战——3.1 决策树的构造

目录

1. 信息增益

 2. 划分数据集

2.1 按照给定特征划分数据集

 2.2 选择最好的数据集划分方式

3. 递归构建决策树

3.1 多数表决的方法

3.2 创建树


1. 信息增益

在划分数据集之前之后信息发生的变化称为信息增益,获得信息增益最高的特征就是最好的选择。集合信息的度量方式称为香农熵或简称为熵。

此代码的功能式计算给定数据集的熵:

def calcshannonent(dataset):
    numentries = len(dataset)
    labelcounts = {}
    for featvec in dataset:
        currentlabel = featvec[-1]  # 创建一个数据词典,它的键值是最后一列的数值
        if currentlabel not in labelcounts.keys():labelcounts[currentlabel] = 0    # 如果当前键值不存在,则扩展字典并将当前键值加入字典
        labelcounts[currentlabel] += 1
    shannonent = 0.0
    for key in labelcounts:
        prob = float(labelcounts[key])/numentries
        shannonent -= prob*log(prob, 2)  # 以2为底求对数
    return shannonent

        我们可以利用creatdataset()函数得到简单鱼鉴定数据集:

def creatdataset():
    dataset = [[1, 1, 'yes'],
               [1, 1, 'yes'],
               [1, 0, 'no'],
               [0, 1, 'no'],
               [0, 1, 'no']]
    labels = ['no surfacing', 'flippers']
    return dataset, labels

查看数据集:

mydata, labels = creatdataset()
print("mydata:", mydata)
print("labels:", labels)
print("香农熵:", calcshannonent(mydata))

输出结果:

         熵越高,则混合数据也越多,这里我们增加第三个名为maybe的分类,测试

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值