创建时间: 2024年11月4日 19:55

作者: 蜡笔大新
笔记类别: 机器学习
标签: 分类数据编码, 数据预处理, 机器学习技术
状态: 完成

One-Hot 编码简介

One-Hot 编码是一种常用的数据预处理技术,主要用于处理分类变量。这种编码方法将每个类别变量转换为一个二进制向量,其中只有一个元素为1(表示该类别),其余元素均为0。

工作原理

One-Hot 编码的基本步骤如下:

  1. 确定所有可能的类别
  2. 为每个类别创建一个新的二进制列
  3. 在相应的列中标记1,其他列标记0

示例

假设我们有一个"颜色"特征,包含"红"、"绿"、"蓝"三种类别:

import pandas as pd

# 创建一个包含标签的数据集
data = pd.DataFrame({'color': ['red', 'green', 'blue', 'blue', 'red']})

# 对 'color' 列进行独热编码
one_hot_encoded = pd.get_dummies(data['color'])
print(one_hot_encoded)

结果:

Indexbluegreenred
0001
1010
2100
3100
4001

优点

能够处理非连续型数值特征,也就是离散值。

在一定程度上也起到了扩充特征的作用。它的值只有0和1,不同的类型存储在垂直的空间。比如性别本身是一个特征,经过one hot编码以后,就变成了男或女两个特征,将离散特征通过one-hot编码映射到欧式空间,在回归,分类,聚类等机器学习算法中,特征之间距离的计算或相似度的计算是非常重要的,而我们常用的距离或相似度的计算都是在欧式空间的相似度计算,计算余弦相似性,基于的就是欧式空间。

缺点

当类别的数量很多时,特征空间会变得非常大,成为一个高维稀疏矩阵。在这种情况下,一般可以用PCA来减少维度。而且one hot encoding+PCA这种组合在实际中也非常有用。

应用场景

One-Hot 编码广泛应用于:

  • 自然语言处理
  • 推荐系统
  • 图像分类
  • 其他涉及分类变量的机器学习任务

实现方法

在实际应用中,可以使用各种库来实现One-Hot编码,例如:

  • Pandas的get_dummies()函数
  • Scikit-learn的OneHotEncoder类
最后修改:2024 年 11 月 25 日
如果觉得我的文章对你有用,请随意赞赏