news 2026/6/12 2:35:09

one-hot编码

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
one-hot编码

我来详细介绍一下one-hot 编码(独热编码)。

什么是 One-Hot 编码?

One-Hot 编码是一种将分类变量转换为二进制向量的技术,其中每个类别都表示为一个二进制向量,只有一个元素为1("热"),其余都为0。

工作原理

假设有一个颜色类别变量:["红", "绿", "蓝"]

原始数据:

text

红 绿 蓝 红

One-Hot 编码后:

text

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

为什么要使用 One-Hot 编码?

  1. 消除类别间的序数关系:避免机器学习模型误以为类别之间有大小顺序关系

  2. 兼容算法:许多机器学习算法(如线性回归、神经网络)需要数值输入

  3. 保持类别独立性:每个类别都成为独立的特征维度

在 Python 中的实现

方法1:使用 pandas

python

import pandas as pd # 创建示例数据 df = pd.DataFrame({'颜色': ['红', '绿', '蓝', '红', '绿']}) # 进行 one-hot 编码 one_hot = pd.get_dummies(df['颜色'], prefix='颜色') print(one_hot)

方法2:使用 scikit-learn

python

from sklearn.preprocessing import OneHotEncoder import numpy as np # 创建示例数据 data = np.array(['红', '绿', '蓝', '红', '绿']).reshape(-1, 1) # 创建编码器 encoder = OneHotEncoder(sparse_output=False) # 拟合和转换 one_hot_encoded = encoder.fit_transform(data) print(one_hot_encoded)

One-Hot 编码的优缺点

优点:

  • ✅ 简单直观,易于实现

  • ✅ 消除了类别间的虚假序数关系

  • ✅ 与大多数机器学习算法兼容

缺点:

  • 维度灾难:如果类别很多,会创建大量稀疏特征

  • 稀疏矩阵:存储效率低

  • ❌ 丢失了类别之间的关系信息(如果有的话)

替代方案

  1. 标签编码(Label Encoding):将类别转换为数字(0, 1, 2...)

  2. 目标编码(Target Encoding):用目标变量的统计量编码

  3. 二进制编码(Binary Encoding):将类别先转换为数字,再转换为二进制

实用建议

  • 当类别数量较少(如<15)时,使用 One-Hot 编码

  • 当类别数量很多时,考虑其他编码方式或特征选择

  • 在神经网络中,One-Hot 编码通常用于输入层

  • 对于有序类别,可以考虑使用有序编码而不是 One-Hot

示例:完整代码

python

import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression # 示例数据 data = pd.DataFrame({ '颜色': ['红', '绿', '蓝', '红', '绿', '蓝'], '尺寸': ['大', '中', '小', '中', '大', '小'], '价格': [100, 200, 150, 120, 180, 160] }) # One-Hot 编码分类变量 data_encoded = pd.get_dummies(data, columns=['颜色', '尺寸']) print("原始数据:") print(data) print("\nOne-Hot 编码后:") print(data_encoded)

One-Hot 编码是数据预处理中的基础且重要的技术,特别适用于处理名义型分类变量。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/12 15:40:37

Thinkphp和Laravel在线跑腿系统--论文vue

目录具体实现截图项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理具体实现截图 本系统&#xff08;程序源码数据库调试部署讲解&#xff09;带文档1万字以上 同行可拿货,招校园代理 Thinkphp和Laravel在线跑腿系统–论文vue 项目开发技术…

作者头像 李华
网站建设 2026/6/12 15:46:50

Thinkphp和Laravel重点人员信息查询系统vue

目录具体实现截图项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理具体实现截图 本系统&#xff08;程序源码数据库调试部署讲解&#xff09;带文档1万字以上 同行可拿货,招校园代理 Thinkphp和Laravel重点人员信息查询系统vue 项目开发技术…

作者头像 李华
网站建设 2026/6/12 3:36:07

堆排序和topk问题

系列文章目录 文章目录系列文章目录前言一、堆排序定义二、时间复杂度三、实现思路a.注意&#xff08;升/降&#xff09;四、topk问题前言 常见的基本排序算法有冒泡、选择、插入&#xff0c;但效率太低。 堆排序和快速排序算法则是相对高效的算法。这篇主要先介绍堆排序 一、…

作者头像 李华
网站建设 2026/6/8 7:43:24

Java毕设项目推荐-基于springboot的幼儿园管理系统的设计与实现家校互动(通知推送、留言沟通)、膳食营养规划【附源码+文档,调试定制服务】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/11 13:43:52

Java毕设项目推荐-基于springboot小区团购管理设计与实现基于springboot的社区团购系统的设计与实现【附源码+文档,调试定制服务】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/12 13:14:33

《AI应用架构师:在AI驱动数字转型的浪潮中破浪前行》

AI应用架构师&#xff1a;在AI驱动数字转型的浪潮中破浪前行 引言&#xff1a;为什么你的AI项目总是“翻车”&#xff1f; 凌晨三点&#xff0c;某零售企业的技术总监盯着电脑屏幕发呆——他们花了120万采购的AI推荐系统上线3个月&#xff0c;用户转化率没涨反降&#xff0c;…

作者头像 李华