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

server/2024/10/9 9:23:15/

热度编码(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/server/129196.html

相关文章

【Redis入门到精通九】Redis中的主从复制

目录 主从复制 1.配置主从复制 2.主从复制中的拓扑结构 3.主从复制原理 4.主从复制总结 主从复制 在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他服务器,满⾜故障恢复和负载均衡等需求。Redis 也是如此,它为我们提…

【AIGC】ChatGPT提示词Prompt高效编写模式:结构化Prompt、提示词生成器与单样本/少样本提示

💯前言 在如今AI技术迅猛发展的背景下,尽管像ChatGPT这样的大型语言模型具备强大的生成能力,但它们的输出质量有时仍难以完全满足我们的预期。为了让ChatGPT生成更加准确、可靠的内容,掌握高效的Prompt编写技巧变得尤为重要。本文…

Win10 安装 Redis 数据库

一、Redis 数据库介绍 Redis 是一个开源的高性能键值对(key-value)的非关系型数据库。它通常用作数据结构服务器,支持多种类型的数据结构,如字符串(strings)、哈希(hashes)、列表&a…

PSO-SVM时序预测 | MATLAB实现PSO-SVM粒子群优化支持向量机时间序列预测

时序预测 | MATLAB实现PSO-SVM粒子群优化支持向量机时间序列预测 目录 时序预测 | MATLAB实现PSO-SVM粒子群优化支持向量机时间序列预测基本介绍程序设计结果分析参考资料基本介绍 MATLAB实现PSO-SVM粒子群优化支持向量机时间序列预测。粒子群优化算法(Particle Swarm optimiza…

查看PyTorch的GPU使用情况的工具

文章目录 torch.cuda APISnapshottorchinfo torch.cuda API torch.cuda.memory_stats:返回给定设备的 CUDA 内存分配器统计信息字典。该函数的返回值是一个统计字典,每个字典都是一个非负整数。torch.cuda.memory_summary:返回给定设备当前内…

Authentication Lab | Client Side Auth

关注这个靶场的其它相关笔记:Authentication Lab —— 靶场笔记合集-CSDN博客 0x01:Client Side Auth 前情提要 有些时候,开发人员会将身份验证的逻辑写于前端,这样写是十分不安全的,因为前端的代码几乎全部都是可见的…

Spring源码二IOC容器源码

文章目录 Spring IOC初始化源码剖析1.prepareRefresh2.obtainFreshBeanFactory3.prepareBeanFactory4.postProcessBeanFactory5.invokeBeanFactoryPostProcessors6.registerBeanPostProcessors7.initMessageSource8.initApplicationEventMulticaster9.onRefresh10.registerList…