数据分析 | 热度编码和标签编码

news/2024/12/22 0:42:24/

热度编码(One-Hot Encoding)和标签编码(Label Encoding)是两种常用的将分类变量转换为数值型变量的方法。下面是对这两种编码
方式的详细解释及Python代码示例。

1. 热度编码(One-Hot Encoding)

定义
热度编码将每个类别转换为一个新的二进制变量(0或1)。每个类别都有一个独立的列,表示该样本是否属于该类别。

优点

  • 不会引入顺序关系,适合无序类别(如颜色、性别等)。
  • 保持了每个类别的独立性。

缺点

  • 对于类别数量较多的变量,可能会导致维度爆炸(即生成大量的虚拟变量)。

Python示例

import pandas as pd# 创建示例数据集
data = pd.DataFrame({'color': ['red', 'blue', 'green', 'blue', 'red']
})# 使用独热编码
one_hot_encoded_data = pd.get_dummies(data, columns=['color'], drop_first=True)print(one_hot_encoded_data)

输出

   color_blue  color_green
0           0            0
1           1            0
2           0            1
3           1            0
4           0            0

解释

  • pd.get_dummies(...)函数将color列中的每种颜色转换为新的二进制列(color_bluecolor_green)。
  • drop_first=True参数删除了第一个类别(red),从而避免了多重共线性。

2. 标签编码(Label Encoding)

定义
标签编码将每个类别转换为一个唯一的整数值。这种方法对每个类别分配一个数字,通常从0开始。

优点

  • 简单且节省内存。
  • 在某些模型(如树模型)中,能够处理有序类别。

缺点

  • 对于无序类别,可能会引入不必要的顺序关系,使得模型误解类别之间的关系。

Python示例

from sklearn.preprocessing import LabelEncoder# 创建示例数据集
data = pd.DataFrame({'color': ['red', 'blue', 'green', 'blue', 'red']
})# 创建LabelEncoder实例
label_encoder = LabelEncoder()# 使用标签编码
data['color_encoded'] = label_encoder.fit_transform(data['color'])print(data)

输出

   color  color_encoded
0    red              2
1   blue              0
2  green              1
3   blue              0
4    red              2

解释

  • LabelEncodercolor列中的每种颜色转换为唯一的整数值。 red被编码为2,blue为0,green为1。
  • 这种方法在处理有序类别时可能有意义,但在处理无序类别时需要谨慎。

总结

  • 热度编码(One-Hot Encoding)

    • 将每个类别转换为独立的二进制列,适合无序类别。
    • 可能导致维度爆炸。
  • 标签编码(Label Encoding)

    • 将每个类别转换为唯一的整数,适合有序类别。
    • 可能引入不必要的顺序关系,适合某些模型(如树模型)使用。

选择合适的编码方式取决于数据的特性和后续模型的需求。在无序类别的情况下,热度编码通常是更好的选择,而标签编码适用于有序
类别。


http://www.ppmy.cn/news/1536574.html

相关文章

宁夏众智科技OA办公系统存在SQL注入漏洞

漏洞描述 宁夏众智科技OA办公系统存在SQL注入漏洞 漏洞复现 POC POST /Account/Login?ACTIndex&CLRHome HTTP/1.1 Host: Content-Length: 45 Cache-Control: max-age0 Origin: http://39.105.48.206 Content-Type: application/x-www-form-urlencoded Upgrade-Insecur…

Python之openpyxl读写 Excel 文件教程

目录 1. 安装 openpyxl2. 创建一个新的 Excel 文件3. 读取 Excel 文件ws.iter_rows 方法参数解释 4. 修改 Excel 文件5. 添加样式6. 删除行和列小结 openpyxl 是一个用于读写 Excel 文件的 Python 库。以下是一些基本用法,包括创建、读取、修改和保存 Excel 文件。 …

STM32 ADC的规则组与注入组详解(下)

STM32 ADC的规则组与注入组详解(上)-CSDN博客 在上篇文章中,我们讨论了STM32中ADC的规则组与注入组的工作原理、四种规则组的转换模式、转换时间、双ADC配合工作和校准的重要性。在这篇文章中,我们将进一步深入探讨规则组与注入组…

C# WPF中的GUI多线程技巧详解

1. 使用BackgroundWorker组件 代码示例: public partial class MainWindow : Window {private BackgroundWorker backgroundWorker new BackgroundWorker();public MainWindow(){InitializeComponent();backgroundWorker.DoWork BackgroundWorker_DoWork;backgrou…

目标检测YOLO实战应用案例100讲-【目标检测】YOLOV11

目录 前言 算法原理 YOLO发展历程 什么是 YOLO11 YOLOv11 的主要特点 YOLO各版本概览 核心优势: YOLOv11改进方向 YOLOv11功能介绍 YOLOv11关键创新 YOLOv11 指标展示 YOLOV11实验 环境设置 准备数据集 训练模型 验证模型 应用领域 一、智慧交通与自动驾…

角色动画——RootMotion全解

1. Unity(2022)的应用 由Animtor组件控制 在Animation Clip下可进行详细设置 ​ 官方文档的介绍(Animation选项卡 - Unity 手册) 上述动画类型在Rag选项卡中设置: Rig 选项卡上的设置定义了 Unity 如何将变形体映射到导入模型中的网格,以便能够将其动画化。 对于人…

数学分析难点精解【1】

文章目录 有理数和无理数的问题有理数和无理数的区别与联系区别联系例题1:识别有理数和无理数例题2:有理数和无理数的运算例题3:有理数和无理数的应用 有理数和无理数的计算有理数的计算公式无理数的计算公式注意事项 根号运算规则1. 定义与性…

Vue的基本用法及模板语法

Vue.js使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue实例的数据。所有 Vue.js的模板都是合法的 HTML,所以能被遵循规范的浏览器和 HTML 解析器解析。 在底层的实现上,Vue将模板编译成虚拟 DOM 渲染函数。结合响应系…