Python--《机器学习实战》学习笔记之决策树

本文详细介绍了使用Python构建决策树的过程,包括计算香农熵、按特征划分数据集、选择最佳划分方式、递归构建决策树以及测试和存储算法。通过理解信息增益和熵的概念,构建并应用决策树进行分类任务。
摘要由CSDN通过智能技术生成

从机器学习的门缝开始窥了那一眼

一.计算香农熵

构建决策树涉及选择数据集的什么特征对数据集划分分支
我们一般选择信息增益最高的特征来划分数据集,而信息增益是信息变化前后
的变化强度,我们使用香农熵来度量它
信息增益 = 划分前的香农熵 - 划分后的香农熵 来选择最优特征

信息度量的公式:
在这里插入图片描述
香农熵的定义公式:
在这里插入图片描述

from math import log


def calculate_shannon_entropy(data_set):
    """
    计算给定数据集的香农熵---度量数据集的无序程度
    :param data_set: 输入数据集,数据集的最后一项字段必须是分类标签
    :return:
    """
    # 获取数据长度
    num_entries = len(data_set)
    # 定义分类字典
    label_counts = {
   }
    # feat_vector:特征向量,一个样本
    # feature:特征
    # 从数据集中取出样本向量
    for feat_vector in data_set:
        # 获取当前样本数据的分类标签
        current_label = feat_vector[-1]
        if current_label not in label_counts.keys():
            # 把第一次出现的标签添加到标签字典中
            label_counts[current_label] = 0
        # 当前标签的技术加1
        label_counts[current_label] += 1
    # 定义香农熵
    shannon_entropy = 0.0
    for key in label_counts:
        # 当前分类出现的 概率=当前分类的样本数 / 样本总数
        prob = float(label_counts[key]) / num_entries
        # 使用香农熵公式计算(即信息的期望值)
        shannon_entropy -= prob * log(prob, 2)
        # shannon_entropy += -prob * log(prob, 2)
    return shannon_entropy
    

熵越高,混合的数据越多(分类越多),即信息的不确定越高,信息度越复杂
得到熵之后,就可以按照获取最大信息增益的方法划分数据集

二.按照指定特征划分数据集

def split_data_set(data_set, axis, value):
    """
    按照指定特征值抽取数据集
    两步:
    1.遍历出符合要求的样本---axis特征的value符合指定要求的value
    2.过滤掉用于划分的轴axis的列(即去掉了axis的列)
    3.返回抽取出来的数据集
    :param data_set: 待划分的数据集
    :param axis: 划分数据集的特征---比如选取特征对应的索引
    :param value: 特征的返回值---用于抽取指定特征,与此返回值相同的样本
    :return:
    """
    # 定义抽取样本的数据集---保护数据源不被破坏
    ret_data_set = []
    for feat_vector in data_set:
        # 遍历样本,判断每个样本在本次划分数据集中
        # 指定的特征axis的value是否符合要求的value
        # 符合要求即抽走
        if feat_vector[axis] == valu
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值