机器学习-P4 决策树 / 分类树(书P33)

本文详细介绍了决策树的基本概念,包括其作为if-then规则集合的性质、特征选择的重要性以及如何通过香农熵衡量数据纯度。接着,文章通过Python代码实现了决策树的构建过程,包括计算信息增益、选择最佳切分列以及递归构建决策树。最后,文章展示了如何使用sklearn库绘制决策树,并给出了实际操作的例子。
摘要由CSDN通过智能技术生成

一,概述

1,什么是决策树

首先看一组图
决策树的本身就是一种树形结构,可以通过一些精心设计的问题,对数据进行分类
在这里插入图片描述
决策树(Decision Tree)是监督学习中的一种算法,并且是一种基本的分类与回归的方法。
决策树有两种:分类树 和 回归树

需要了解的三个概念:
在这里插入图片描述
可以把决策树看作是一个 if-then 规则的集合:
— 由决策树的根节点到叶节点的每一条路径构建一条规则

2,特征选择

随着划分过程不断进行,我们希望决策树的分支节点所包含的样本尽可能属于同一类别,也就是节点的纯度(purity)越来越高。
下边三个图表示纯度越来越低的过程:
在这里插入图片描述
度量不纯度的指标有很多种,比如:熵、增益率、基尼值数。
这里我们使用的是熵,也叫作香农熵

3,香农熵及计算函数

在这里插入图片描述

二,代码实现

1,需要用到的库(pandas传送门)

import numpy as np
import pandas as pd

传送门:Pandas的教学

2,数据集

这里使用书上的数据集

def createDatas():
    rew_data = {
   
        'no surfacing':[1,1,1,0,0],
        'flippers':[1,1,0,1,1],
        'fish':['yes','yes','no','no','no']}
    dataSet = pd.DataFrame(rew_data)
    return dataSet
dataSet = createDatas()
dataSet

在这里插入图片描述

3,计算香农熵

输入:原始数据集
输出:熵

def calEnt(dataSet):
    n = dataSet.shape[0]
    iset = dataSet.iloc[:,-1].value_counts()
    p = iset / n
    ent = (-p * np.log2(p)).sum()
    return ent

计算一下看看
熵越高,信息的不纯度就越高。也就说明混合的数据就越多。

calEnt(dataSet)
>>>0.9709505944546686

4,信息增益

在这里插入图片描述
在这里插入图片描述
我们来计算一下 第0列信息增益
在这里插入图片描述

a = (3/5)*(-(2/3)*np.log2(2/3)-(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值