决策树----对天气和自身状态是否适合去运动做出预测

本文探讨了如何使用决策树算法预测天气和身体状况是否适合运动,详细解释了信息熵、信息增益、信息增益率和基尼指数在选择最优决策属性中的作用,并通过自建数据集和ID3、C4.5算法进行了实验,展示了不同划分方法创建的决策树及其预测效果。
摘要由CSDN通过智能技术生成

目录

前言

一、决策树原理

二、实验过程

2.1.最优决策属性的选择

2.1.1信息熵

2.1.2信息增益(代表算法:ID3)

2.2 准备数据集

2.3 创建决策树 

2.4 保存和读取决策树

2.5 绘制决策树

2.6 使用决策树进行分类

2.7 创建的决策树结果

2.7.1用信息增益创建的决策树

2.7.2用信息增益率创建的决策树

2.7.3用基尼指数创建的决策树


---------------------------------------------------------------------------------------------------------------------------------
前言

提示:通过自建数据集,创建决策树对天气和身体状态是否适合去运动进行预测。


提示:以下是本篇文章正文内容,下面案例可供参考




一、决策树原理

        决策树是一个预测判别模型。它代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,每个分支路径代表某个可能的属性值,每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值。.决策树是从训练数据中学习得出一个树状模型,通过做出一系列决策(选择)来对数据进行划分,这类似于针对一系列问题进行选择。决策树的决策过程就是从根节点开始,测试待分类项中对应的特征属性,并按照其值选择输出分支,直到叶子结点,将叶子结点存放的类别作为决策结果。属于监督学习算法,属性选择的度量是决策树的关键。

决策树由结点有向边组成。结点有两种类型:内部结点叶节点。内部结点表示一个特征或属性,叶节点表示一个分类结果。
例如:根据声音和头发判断一个人的性别。

测试员A:先根据头发判断,再根据声音判断,头发长、声音粗为男生,头发长、声音细为女生;头发短、声音粗为男生,头发短、声音细为女生;于是得到如下决策树。

测试员B:首先判断声音,声音细是女生,声音粗、头发短是男生,声音粗、头发长是女生。得到如下决策树:

 这时我们发现两种决策树都可以用来判断,但是哪种最优呢?这就要度量那个特征获得的收益最高,就将他作为最佳划分特征。



二、实验过程



2.1.最优决策属性的选择

一般而 言,随着划分过程不断进行,我们希望决策树的分支结点 所包含的样本尽可能属于同一类别,即结点的“纯度 ”(purity)越来越高。在实验中我通过三种方法对属性进行划分。


2.1.1信息熵

划分数据集的大原则是:将无序的数据变得有序。如果我们能测量数据的复杂度,对比按

 信息熵”是度量样本集合纯度最常用的一种指标,假定 当前样本集合D中第k类样本所占的比例为pk (K=1, 2, ..., |y|)

,则D的信息熵定义为: 

Ent(D)的值越小,则D的纯度越高

计算信息熵时约定:若p = 0,则plog2p=0

• Ent(D)的最小值为0,最大值为log2|y|

例如:

​ 计算信息熵的代码如下:

#计算给定数据集的香农熵
def calcShannonEnt(dataSet):
    '''
    计算给定数据集的香农熵
    :param dataSet: 数据集
    :return: 香农熵
    '''
    # 返回数据集的行数,样本容量
    numEntries = len(dataSet)
    # 保存每个标签出现出现次数的字典
    labelCounts = {}
    #对每组特征向量进行统计
    for featVec in dataSet:
        #提取标签(label)信息
        currentLabel = featVec[-1]
        #如果存在标签没有放入统计次数的字典,则将其添加
        if currentLabel not in labelCounts.keys():
            labelCounts[currentLabel] = 0
        #label计数
        labelCounts[currentLabel] += 1
    #香农熵赋初值
    shannonEnt = 0.0
    for key in labelCounts:
        #选择该标签的概率
        prob = float(labelCounts[key])/numEntries
        shannonEnt -=prob * log(prob,2)
    return shannonEnt

2.1.2信息增益(代表算法:ID3)

信息增益表示两个信息熵的差值。信息增益计算如下:

在上例中,属性A1对样本集D进行划分所得的信息增益为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值