机器学习值决策树算法(上)-ID3实现

本文深入介绍了决策树算法,包括其特点、应用和信息概念。通过Python展示了如何实现ID3决策树的生成,并预告了下篇文章将讨论如何用matplotlib绘制决策树图形及分类操作。同时,提到了在数据变化不大时,如何利用pickle存储决策树以提高效率。
摘要由CSDN通过智能技术生成

1.决策树算法简介

决策树概念介绍
决策树算法是监督学习算法的其中一种,用于根据已有数据训练数据针对未知数据进行分类的一种算法,该算法的核心理念是通过不断的判断,递归,判断,来计算数据的分类。
举例说明
概念可能不大好理解,举例就会清楚直观了,相信大多数人都有过生病的体验,找医生看病的时候,医生就会让你伸出舌头看看,摸摸你的额头等,这就是根据症状来判断是什么病,如果你患了感冒,医生会首先问你是否有腹泻,然后让你伸出舌头,看看你的舌苔,之后会问你是否头痛,发冷,根据这一系列的数据,医生便可以推断你的感冒类型,对症下药。
发热 腹泻 舌苔黄 头痛 畏寒 感冒类型
轻微 轻微 风热型感冒
风寒型感冒
轻微 暑湿型感冒
时行感冒

2.决策树算法特点及应用

特点:
  • 计算复杂度不高
  • 输出结果便于理解
  • 适用于分类,适合标称数值
应用:
之前在微信里,朋友发给我一个链接,点进去是一个机器人来根据你的问题答案猜测是哪位明星的问题,当时觉得非常的神奇,在学习了决策树之后,才明白了其中的道理,当然这也是我猜测,首先,这个网站会收藏很多的问题作为特征值,并收集很多明星的信息,把该信息录入本地数据集,例如上面的发热,腹泻等特征,然后抽取问题1,根据答案来选择下一个提出的问题(如果选择不知道则忽略该特征),直到指定特征被用完(答完10个问题),根据最后结果集中出现次数最多作为答案。

3.信息概念介绍

信息概念:
信息是反映一个事件出现概率的单位(曾经在大学学的通信原理已经忘得一干二净),首先列出公式,下面再分析。
- 信息 = log2(概率)
上述的发热症状,无论哪种感冒都存在发热现象,那么这个信息其实对我们分析病情是无关紧要,所以他的信息是0,也许大家不能理解这个公式的计算方式,但我们并不准确需要这个值,我们只需要信息与概率的对应关系,无论是log3或者log4,对数据分类不造成影响,如果出现概率不为1的话,概率越大,信息量也就越小。
信息熵概念:
信息熵是反映一组数据的不确定性,就好比掷骰子,扔12面的骰子比6面的骰子结果不确定性就会高很多,信息熵就是用来反映这个不确定性的单位,计算公式如下:
- 信息熵 = sum(-概率1*log2(概率1), -概率2*log2(概率2),……)
从公式可能不太容易看出什么,不如我们用数值代入,6面骰子,有6种情况,每一种都是1/6,那么结果就是log2(6)=0.778,12面骰子就是log2(12)=1.079,不确定性高了之后,信息熵也得到了上涨,下面列出计算信息熵的python代码。
from math import log
from collections import Counter

def calc_shannon_ent(data_set):
    last_item_set = [item[-1] for item in data_set] # 抽取需要计算信息熵的列,这里直接取最后一列来计算
    data_length = len(last_item_set) # 计算数据集的长度
    counter_data = Counter(last_item_set) # 使用Counter来计算出现概率,counter_data的值是字典,例如{'a': 5, 'b': 2}

    shannon_ent = 0.0
    for item_s in counter_data.iteritems():
        probability = item_s[1] / float(data_length)
        info = log(probability, 2)
        shannon_ent -= info * probability
    return shannon_ent
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值