1. 理解分类变量与独热编码的本质
在数据处理和机器学习领域,分类变量(Categorical Variables)是我们经常需要面对的一种数据类型。这类变量通常表示某种类别或分组信息,比如性别(男/女)、城市(北京/上海/广州)、学历(本科/硕士/博士)等。与数值型变量不同,分类变量的值之间没有数学上的大小关系,它们只是表示不同的类别。
1.1 为什么需要独热编码?
大多数机器学习算法(特别是基于数学运算的模型)都要求输入是数值型数据。直接将分类变量用数字编码(如男=1,女=2)会给模型带来错误的假设——模型会认为"女"比"男"大,这显然是不合理的。这就是我们需要独热编码(One-Hot Encoding)的根本原因。
独热编码的核心思想是:为每个类别创建一个新的二进制列(0或1),表示该样本是否属于这个类别。例如:
原始数据:
| 性别 |
|---|
| 男 |
| 女 |
| 男 |
独热编码后:
| 性别_男 | 性别_女 |
|---|---|
| 1 | 0 |
| 0 | 1 |
| 1 | 0 |
1.2 Pandas中的get_dummies函数
Pandas提供的pd.get_dummies()函数是处理这种转换的最便捷工具。它的设计非常智能,能够自动识别数据框中的分类变量(包括字符串和离散数值),并完成一键转换。在实际项目中,这个函数的使用频率非常高,特别是在数据预处理阶段。
注意:虽然get_dummies非常方便,但它默认会为每个分类变量的所有可能值都创建新列。这在某些情况下(特别是分类值很多时)会导致"维度爆炸",需要特别注意。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 深入解析get_dummies的列生成规则
2.1 默认命名规则
pd.get_dummies()生成的新列名遵循一套明确的规则,理解这些规则对于后续的数据分析和模型构建非常重要。默认情况下,新列名的格式为:
code复制原列名_分类值
这个规则有几个关键点:
- 前缀部分使用原始列名
- 使用下划线"_"作为分隔符
- 后缀部分是原始数据中的分类值
例如,对于"性别"列(值为"男"和"女"),会生成"性别
