One-Hot编码

一、什么是One-Hot编码?

One-Hot编码是一种将分类变量转换为二进制向量的方法,适用于机器学习和深度学习算法。每个类别被表示为一个向量,向量长度等于类别总数,其中对应类别的位置为1,其余为0。

举例
分类变量“颜色” {红色, 绿色, 蓝色}:

  • 红色 → [1, 0, 0]
  • 绿色 → [0, 1, 0]
  • 蓝色 → [0, 0, 1]

二、为什么需要One-Hot编码?

One-Hot编码解决了以下问题:

  1. 避免误导性顺序:整数编码(如红色=0,绿色=1)可能让模型误认为类别有大小关系。
  2. 处理字符串:将字符串类别转换为数值形式。
  3. 模型兼容性:为算法提供数值输入。

三、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(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱看烟花的码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值