决策树—基本原理与实战

本文详细介绍了决策树的基本原理,包括概念、特点、信息增益、数据集划分以及递归构建决策树的过程。此外,还展示了如何使用Python的Matplotlib绘制决策树,并提供了测试和存储分类器的步骤,以及一个使用决策树预测隐形眼镜类型的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概念

        决策树(Decision Tree)是在已知各种情况发生概率的情况下,通过构成决策树来求取净现值的期望值大于0的概率,是直观运用概率分析的一种图解法。通俗的讲,决策树就是带有特殊含义的数据结构中的树结构,其每个根结点(非叶子结点)代表数据的特征标签,根据该特征不同的特征值将数据划分成几个子集,每个子集都是这个根结点的子树,然后对每个子树递归划分下去,而决策树的每个叶子结点则是数据的最终类别标签。对于一个样本特征向量,则从决策树的顶端往下进行分类,直到根结点,得到的类别标签就是这个样本向量的类别。

如:

特点

这里写图片描述

决策树的构造

        要构造决策树,就需要根据样本数据集的数据特征对数据集进行划分,直到针对所有特征都划分过,或者划分的数据子集的所有数据的类别标签相同。然而要构造决策树,面临的第一个问题是先对哪个特征进行划分,即当前数据集上哪个特征在划分数据分类时起决定性作用。因此,为了找到决定性的特征,划分出最好的结果,我们必须评估每个特征。

决策树的一般流程:

(1)收集数据:可以使用任何方法。

(2)准备数据:树构造算法只适用于标称型数据,因此数值型数据必须离散化。

(3)分析数据:可以使用任何方法,构造树完成后,我们应该检查图形是否符合预期。

(4)训练算法:构造树的数据结构

(5)测试算法:使用经验树计算错误率

(6)使用算法:此步骤可以适用于任何监督学习算法,而使用决策树可以更好地理解数据的内在含义

信息增益

        划分数据集的最大原则是:将无序的数据变得更加有序。我们采用量化的方法来度量数据的内容,组织杂乱无章数据的一种方法就是使用信息论度量信息,信息论是量化处理信息的分支科学。我们可以在划分数据前后使用信息论量化度量信息的内容。

        在划分数据集前后信息发生的变化成为信息增益,知道如何计算信息增益,就可以计算根据每个特征划分数据集获得的信息增益,获得信息增益最高的特征就是最好的选择。

        集合信息的度量方式成为香农熵、信息熵或者简称为熵,熵在热力学中的物理意义是体系混乱程度的度量,而在信息科学中也可看成是信息混乱程度的度量,熵越大,信息越混乱。实际上熵定义为信息的期望值,要明确这个概念,就要知道信息的定义。如果待分类的事务可能划分在多个分类之中,则符号Xi的信息定义为

    ——其中p(xi)是选择该分类的概率

为了计算熵,我们需要计算所有类别所有可能值包含的信息期望值,通过下面的公式得到:

    ——其中n是分类的数目

计算熵:

# 计算给定数据集的香农熵(根据dataSet中所有的特征向量的类别计算熵)
# dataSet:给定数据集
# 返回shannonEnt:香农熵
def calcShannonEnt(dataSet):
    numEntries = len(dataSet)
    labelCounts = {}            # 创建一个空字典
    # for循环:使labelCounts字典保存多个键值对,并且以dataSet中数据的类别(标签)为键,该类别数据的条数为对应的值
    for featVec in dataSet:
        currentLabel = featVec[-1]
        if currentLabel not in labelCounts.keys():      # k
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值