网站首页 > 技术文章 正文
独热编码
独热编码是在机器学习中处理分类数据时常用的预处理技术。它有两个主要目的:
A) 将分类值转换为神经网络和回归等算法可以理解的数字向量。许多模型需要数字输入。
B) 以捕获其唯一性的方式表示分类值。如果没有独热编码,算法可能会错误地将不同的类别视为相同的值。
为了将像“颜色”这样的分类变量进行 3 个类别(红色、绿色、蓝色)的一次性编码,创建了 3 个新的数值特征:
- 红色:如果颜色为红色,则为 1,否则为 0
- 绿色:如果颜色为绿色,则为 1,否则为 0
- 蓝色:如果颜色为蓝色,则为 1,否则为 0
所以“红色”变成 [1, 0, 0],“绿色”变成 [0, 1, 0],“蓝色”变成 [0, 0, 1]。注意事项
- 创建的新要素列数等于原始数据中不同类别的数量。因此,如果有 10 个不同的颜色值,则一个热编码将生成 10 个新列。
- 它可以大大扩展数据的维度。如果对多个分类变量进行单热编码,每个分类变量都具有许多可能的值,则要素总数可能会变得非常大。
- 对于具有逻辑顺序的类别(如“小”、“中”、“大”),序号编码是将值映射到整数(0、1、2)而不是二进制的替代方法。这提供了有关序号关系的详细信息。
Python 代码
1:使用 numpy,并且代码非常简单:
import numpy as np
colors = ['red', 'green', 'blue']
red = [1, 0, 0]
green = [0, 1, 0]
blue = [0, 0, 1]
print("Red encoding:", red)
print("Green encoding:", green)
print("Blue encoding:", blue)
这将输出以下内容:
Red encoding: [1, 0, 0]
Green encoding: [0, 1, 0]
Blue encoding: [0, 0, 1]
2:使用 scikit-learn 库(这是首选方法):
import numpy as np
from sklearn.preprocessing import OneHotEncoder
colors = ['red', 'green', 'blue']
# reshape as 2D array
colors = np.array(colors).reshape(-1,1)
encoder = OneHotEncoder(sparse_output=False)
encoded = encoder.fit_transform(colors)
print(encoded)
这将输出以下内容:
[[0. 0. 1.]
[0. 1. 0.]
[1. 0. 0.]]
其它
- 独热编码在统计学中也称为“虚拟编码”。只有一个编码值是 1,其余的都是 0 或“假人”。
- 虽然通用技术已经存在了几十年,但特定术语“独热编码”可能在 1980 年代/1990 年代的机器学习研究论文中逐渐出现,然后在 2000 年代获得更广泛的普及。但最初的铸币者尚不清楚。它现在已成为标准术语。
猜你喜欢
- 2024-10-12 数据预处理-分类变量数据编码 分类变量数据分析
- 2024-10-12 程序员深夜用Python跑神经网络,只为用中二动作关掉台灯
- 2024-10-12 Pandas第十三课:特征工程与数据预处理
- 2024-10-12 CVPR2019 | 面对高度不均衡数据如何提高精度?这篇文章有妙招
- 2024-10-12 数据特征常用构建方法详解及实例 数据特征包括哪些?
- 2024-10-12 “千克”和“毫升”:单位不同就不能做朋友了吗?
- 2024-10-12 a和one的区别 a与one区别
- 2024-10-12 手把手教你做客户挽留模型【纯技术】
- 2024-10-12 One Hot Encoder 在机器学习分类模型中的重要性
- 2024-10-12 08-人人都懂的人工智能:高维的one-hot编码
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)