news 2026/4/16 16:05:36

机器学习中的熵

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
机器学习中的熵

摘要:本文探讨了熵在机器学习中的应用,重点介绍了其在决策树算法中的作用。熵用于衡量数据集的纯度或随机性,通过香农熵公式计算。决策树利用熵选择最优分割点,以生成同质性更强的子集。文章还提供了Python实现示例,使用鸢尾花数据集演示熵的计算过程,得出初始熵值为1.585,反映了三个类别的分布随机性。熵的概念源于热力学,现已成为机器学习中重要的数据分割指标。

目录

机器学习中的熵

熵的计算方法

示例计算

熵在决策树中的应用

Python 实现熵的计算

代码实现

代码说明

运行结果


机器学习中的熵

熵源于热力学,后被应用于信息论、统计学和机器学习等多个领域。在机器学习中,熵用于衡量数据集的纯度或随机性,尤其在决策树算法中,用于确定数据分割方式,以生成同质性更强的子集。本文将介绍机器学习中的熵、其特性及 Python 实现。

熵被定义为系统混乱度或随机性的度量。在决策树中,熵用于衡量节点的纯度:若一个节点中的所有样本都属于同一类别,则该节点为 “纯节点”,熵值为 0;若样本均匀分布在多个类别中,则节点纯度低、熵值高。

熵的计算方法

计算熵需先确定数据集中每个类别的概率。设 p(i) 为样本属于第 i 类的概率,若数据集包含 k 个类别,则系统的总熵(记为 H(S))按香农熵公式计算:

示例计算

假设有一个含 100 个样本的数据集,其中 60 个属于 A 类,40 个属于 B 类。则 A 类概率为 0.6,B 类概率为 0.4,数据集的熵为:

熵在决策树中的应用

决策树算法中,熵的核心作用是选择 “最优分割点”—— 目标是找到能使分割后子集总熵最低的分割方式,从而让子集的同质性最强。

具体流程如下:

1.计算整个数据集的初始熵 H(S);

2.针对每个特征(如 X1、X2)的所有可能分割方式,计算分割后的加权熵:

  • 对特征 X1 分割:
  • 对特征 X2 分割:

其中,p1​,p2​,p3​,p4​ 为各子集的样本占比,H(S1),H(S2),H(S3),H(S4) 为各子集的熵;

3.选择总熵最低的分割方式

生成决策树的子节点;

4.递归重复上述过程,直至所有节点为纯节点或满足停止条件。

Python 实现熵的计算

以下结合 scikit-learn 的 “鸢尾花(iris)数据集”,演示熵的计算过程:

代码实现

from sklearn.datasets import load_iris import numpy as np # 加载鸢尾花数据集 iris = load_iris() # 提取特征数据和标签(标签表示花的类别) X = iris.data y = iris.target # 定义熵计算函数 def entropy(y): n = len(y) # 样本总数 # 统计每个类别的样本数量 _, counts = np.unique(y, return_counts=True) # 计算每个类别的概率(占比) probs = counts / n # 按香农熵公式计算熵 return -np.sum(probs * np.log2(probs)) # 计算鸢尾花数据集标签的熵 target_entropy = entropy(y) # 输出结果(保留3位小数) print(f"标签熵值: {target_entropy:.3f}")

代码说明

  1. 加载数据集:使用load_iris()加载鸢尾花数据集,包含 3 个类别、150 个样本;
  2. 熵计算函数entropy(y)
    • 统计标签中每个类别的样本数量;
    • 计算每个类别的概率(占比);
    • 代入香农熵公式计算总熵;
  3. 输出结果:计算并打印数据集标签的熵值。

运行结果

执行上述代码后,输出如下:

plaintext

标签熵值: 1.585

该结果表明,鸢尾花数据集的初始熵为 1.585,反映了数据集中 3 个类别的分布随机性。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 11:02:07

【RAG新范式】超越向量搜索:企业级知识库构建必知的3大RAG高级策略

【RAG新范式】超越向量搜索:企业级知识库构建必知的3大RAG高级策略 摘要:本文深度剖析企业级知识库构建中RAG(检索增强生成)技术的进阶实践。通过电商客服系统案例,我们将揭示传统向量搜索的三大瓶颈:语义鸿…

作者头像 李华
网站建设 2026/4/16 11:09:05

Flutter-OH三方库适配:从兼容性检查到社区提交的完整指南

Flutter-OH三方库适配:从兼容性检查到社区提交的完整指南 欢迎大家加入开源鸿蒙跨平台开发者社区: 随着 OpenHarmony(OH)生态的快速发展,将成熟的 Flutter 应用迁移到鸿蒙平台已成为许多开发者的选择。然而&#xff…

作者头像 李华
网站建设 2026/4/16 12:41:45

金融系统OA如何集成百度编辑器的PDF转存功能?

河南某集团企业项目需求评估与实施记录(基于UEditor的信创兼容方案) 一、项目背景与核心需求 作为集团项目负责人,需在企业网站后台管理系统(基于UEditor、Vue2/Vue3/React前端、SpringBoot后端)中新增以下功能&…

作者头像 李华
网站建设 2026/4/15 21:23:44

AI 智能体的开发

AI 智能体的开发已从简单的“提示词工程”进化为“以工作流为核心的工程化开发”。目前的开发方法论核心在于:不只依赖模型性能,而是通过结构化的设计来弥补模型的随机性。以下是 2026 年主流的 AI 智能体开发方法论:1. 核心设计模式目前的开…

作者头像 李华
网站建设 2026/4/16 11:59:18

打造个性壁纸库?看这里!支持HTTPS+瀑布流的全自动采集建站

温馨提示:文末有资源获取方式想搭建一个与众不同的壁纸分享站,却苦恼于内容更新和用户体验?一款融合了自动采集、优雅设计与强大扩展性的源码系统,正是你苦苦寻觅的答案。它不仅能让你的网站“活”起来,还能让它“美”…

作者头像 李华
网站建设 2026/4/16 12:00:08

Python装饰器:动态增强函数的神器

python 装饰器是什么 装饰器(Decorator) 是 Python 中一种奇妙的“包装”技术。它允许你在不修改原有函数代码的情况下,给函数动态地添加新功能。 想象一下:你写了一个函数,现在想给它加个“执行耗时统计”的功能。你不需要去改动函数内部,只需要在函数头上戴顶“帽子”…

作者头像 李华