一、什么是One-Hot编码?
One-Hot编码是一种将分类变量转换为二进制向量的方法,适用于机器学习和深度学习算法。每个类别被表示为一个向量,向量长度等于类别总数,其中对应类别的位置为1,其余为0。
举例:
分类变量“颜色” {红色, 绿色, 蓝色}:
- 红色 → [1, 0, 0]
- 绿色 → [0, 1, 0]
- 蓝色 → [0, 0, 1]
二、为什么需要One-Hot编码?
One-Hot编码解决了以下问题:
- 避免误导性顺序:整数编码(如红色=0,绿色=1)可能让模型误认为类别有大小关系。
- 处理字符串:将字符串类别转换为数值形式。
- 模型兼容性:为算法提供数值输入。
三、One-Hot编码的实现
以下是One-Hot编码的多种实现方式,包括手动实现、pandas、scikit-learn,以及使用PyTorch(替换原来的TensorFlow部分)。
1. 手动实现(Python)
import numpy as np
# 原始数据
colors = ['红色', '绿色', '蓝色', '红色']
# 获取唯一类别
unique_colors = sorted(set(colors)) # ['蓝色', '红色', '绿色']
num_classes = len(unique_colors) # 3
# 创建One-Hot编码
one_hot_encoded = np.zeros((len(colors), num_classes))
for i, color in enumerate(colors):
index = unique_colors.index(color)
one_hot_encoded[i, index] = 1
print(one_hot_encoded)
输出:
[[1. 0. 0.] # 红色
[0. 1. 0.] # 绿色
[0. 0. 1.] # 蓝色
[1. 0. 0.]] # 红色
2. 使用pandas
import pandas as pd
# 原始数据
data = pd.DataFrame(

最低0.47元/天 解锁文章
970

被折叠的 条评论
为什么被折叠?



