机器学习——决策树

本文详细介绍了决策树的概念,包括定义、算法结构、一般流程。内容涵盖数据集划分、信息熵、信息增益、信息增益率、基尼指数等关键概念,并探讨了如何构建决策树。同时,提到了决策树的可视化方法,如使用Matplotlib的注解功能。最后,通过隐形眼镜数据集展示了决策树的实际应用。

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

      定义         

        分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点和有向边组成。结点有两种类型:内部结点和叶节点。内部结点表示一个特征或属性,叶节点表示一个类。

        算法结构 

        决策树在逻辑上以树的形式存在,包含根节点、内部结点和叶节点。
        根节点:包含数据集中的所有数据的集合
        内部节点:每个内部节点为一个判断条件,并且包含数据集中满足从根节点到该节点所有条件的数据的集合。根据内部结点的判断条件测试结果,对应的数据的集合将分到两个或多个子节点中。
        叶节点:最终的类别。

         

        一般流程 

  1. 通过任意方法收集数据
  2. 数据离散化
  3. 检查完成后的构造树是否符合预期
  4. 构成树的数据结构
  5. 使用经验书计算错误率
  6. 使用算法

         信息增益

        在建立决策树之前,我们需要先学习一个非常重要的概念,那就是信息熵。

       一条信息的信息量大小和它的不确定性有直接的关系,要搞清楚一件非常非常不确定的事情,或者是我们一无所知的事情,需要了解大量信息==>信息量的度量就等于不确定性的多少。

        熵定义为信息的期望值,如果待分类的事物可能划分在多个类之中,则符号xi的信息定义为:

                               ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        l(x_{i})=-log_{2}p(x_{i})

                                                                        p(x_{i})为选择该分类的概率

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

                                                H=-\sum_{i=1}^{n}p(x_{i})log_{2}p(x_{i})

                                        n为分类数目,随机数目的不确定性随熵增大而增大

        代码实现

from math import log

def createDataSet():
    dataSet = [[1, 1, 'yes'],
               [1, 1, 'yes'],
               [1, 0, 'no'],
               [0, 1, 'no'],
               [0, 1, 'no']]
    labels = ['no surfacing','flippers']
    #change to discrete values
    return dataSet, labels

def calcShannonEnt(dataSet):
    numEntries = len(dataSet)
    labelCounts = {}
    for featVec in dataSet: #the the number of unique elements and their occurance
        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[k
决策树算法是一种广泛应用于分类和回归的机器学习算法,它基于树形结构对样本进行分类或预测。决策树算法的主要思想是通过一系列的判断来对样本进行分类或预测。在决策树中,每个节点表示一个属性或特征,每个分支代表该属性或特征的一个取值,而每个叶子节点代表一个分类或预测结果。 决策树算法的训练过程主要包括以下步骤: 1. 特征选择:根据某种指标(如信息增益或基尼系数)选择最优的特征作为当前节点的分裂属性。 2. 决策树生成:根据选择的特征将数据集分成若干个子集,并递归地生成决策树。 3. 剪枝:通过剪枝操作来提高决策树的泛化性能。 决策树算法的优点包括易于理解和解释、计算复杂度较低、对缺失值不敏感等。但是,决策树算法也存在一些缺点,如容易出现过拟合、对离散数据敏感等。 下面是一个决策树算法的案例:假设我们要根据一个人的年龄、性别、教育程度和职业预测其收入水平(高于或低于50K)。首先,我们需要将这些特征进行编码,将其转换为数值型数据。然后,我们可以使用决策树算法对这些数据进行训练,并生成一个决策树模型。最后,我们可以使用该模型对新的数据进行分类或预测。例如,根据一个人的年龄、性别、教育程度和职业,我们可以使用决策树模型预测该人的收入水平。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值