首页 > 其他分享 >独热编码(One-Hot Encoding)

独热编码(One-Hot Encoding)

时间:2024-10-30 15:20:19浏览次数:8  
标签:编码 Encoding 特征 独热 010 Hot

一、独热编码出现之前:针对无序离散的分类特征,机器学习算法的分类器并不能直接进行数据处理。因为,分类器通常处理的数据是连续且有序的。

但是我们可以对这些离散的特征数据建立映射表来让其有序并且连续起来。例如:针对一个人对象,我们可以假设其属性进行了如下映射。

性别特征:
["男","女"] => 0,1 =>二维
居住地特征:
["北京","上海,"深圳"] => 0,1,2 =>三维
职业特征:
["演员","老师","公务员","工程师","消防员"] => 0,1,2,3,4 => 五维

此时,针对样本A(女,北京,老师)=>(1,0,2)先进行特征映射,然后采用独热编码使其转化成有序且连续。

二、如何处理数据:

1. 什么是独热编码?

独热编码(One-Hot Encoding),又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。即,只有一位是1,其余都是零值。独热编码 是利用0和1表示一些参数,使用N位状态寄存器来对N个状态进行编码。

例如,对六个状态进行编码:
自然顺序码为 000,001,010,011,100,101
独热编码则是 000001,000010,000100,001000,010000,100000

回到一开始的例子,性别特征:["男","女"],按照N位状态寄存器来对N个状态进行编码的原理:

性别特征:["男","女"](这里N=2 二维数据)
男 => 10
女 => 01

地区特征:["北京","上海,"深圳"](这里N=3,三维数据):
北京 => 100
上海 => 010
深圳 => 001

工作特征:["演员","厨师","公务员","工程师","律师"](这里N=5,五维数据):
演员 => 10000
老师 => 01000
公务员 => 00100
工程师 => 00010
消防员 => 00001

所以,样本A的特征是["女","北京","工程师"]的时候,独热编码(One-Hot Encoding)的结果为:

[0,1,1,0,0,0,0,0,1,0]

2. 优点

在回归,分类,聚类等机器学习算法中,特征之间距离的计算或相似度的计算是非常重要的。而常用的距离或相似度的计算都是在欧式空间的相似度计算,计算余弦相似性,基于的就是欧式空间。
使用独热编码(One-Hot Encoding),将离散特征的取值扩展到了欧式空间,离散特征的某个取值就对应欧式空间的某个点。将离散型特征使用独热编码(One-Hot Encoding),会让特征之间的距离计算更加合理。

独热编码的优点为:

1.能够处理非连续型数值特征。
2.在一定程度上也扩充了特征。比如性别本身是一个特征,经过one hot编码以后,就变成了男或女两个特征。

特征类别较多时,数据经过独热编码可能会变得过于稀疏。

参考:独热编码(One-Hot Encoding)介绍及实现_天空下的斌的博客-CSDN博客_独热码表

数据处理——One-Hot Encoding_zhiyong_will的博客-CSDN博客

三、 sklearn Python 代码实现

from sklearn import preprocessing

encoder = preprocessing.OneHotEncoder()
# 4个特征:

#第一个特征(即为第一列)为[0,1,2,1],其中三类特征值[0,1,2],因此One-Hot Code可将[0,1,2]表示为:[100,010,001]
#第一个特征有三种值:采用三个编码:[100,010,001]
#同理第二个特征列可将两类特征值[2,3]表示为[10,01]
#第三个特征将4类特征值[1,2,4,5]表示为[1000,0100,0010,0001]
#第四个特征将2类特征值[3,12]表示为[10,01]

encoder.fit([
[0, 2, 1, 12],
[1, 3, 5, 3],
[2, 3, 2, 12],
[1, 2, 4, 3]
])
encoded_vector = encoder.transform([[2, 3, 5, 3]]).toarray()
print("\n Encoded vector =", encoded_vector)
#[[0. 0. 1. 0. 1. 0. 0. 0. 1. 1. 0.]]
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/yanghaoji/article/details/123734304

标签:编码,Encoding,特征,独热,010,Hot
From: https://www.cnblogs.com/arwen-xu/p/18515901

相关文章

  • LeetCode Hot 100:多维动态规划
    LeetCodeHot100:多维动态规划62.不同路径思路1:动态规划classSolution{public:intuniquePaths(intm,intn){if(m==1||n==1)return1; //dp[i][j]:到达(i,j)的不同路径数vector<vector<int>>dp(m+1,vec......
  • LeetCode Hot 100:技巧
    LeetCodeHot100:技巧136.只出现一次的数字思路1:哈希表classSolution{public:intsingleNumber(vector<int>&nums){unordered_map<int,int>hashMap;for(int&num:nums)hashMap[num]++;for(auto&[x,......
  • 0x02 Leetcode Hot100 哈希
    前置知识掌握每种语言的基本数据类型及其时间复杂度。Python:list、tuple、set、dictC++:STL中的vector、set、mapJava:集合类中的List、Set、Map为什么是哈希?在不同语言中,对于字典(dict)类的数据都会先将其键(key)进行哈希(Hash)运算,这个Hash值决定了键值对在内存中的存储位置,因此......
  • Setting up a mobile hotspot on your Samsung Galaxy phone is straightforward
    SettingupamobilehotspotonyourSamsungGalaxyphoneisstraightforward.Herearethesteps:OpenSettings:Swipedownfromthetopofthescreentoopenthenotificationshade,thentapthegearicontoaccessSettings.Connections:TaponConnec......
  • position embedding和position encoding是什么有什么区别
    PositionEmbedding是指在预训练的词向量中嵌入位置信息的过程,PositionEncoding是用于注意力机制中的一种技术,用于为序列中的每个位置提供一个位置向量。二者的区别:1、作用方式不同;2、实现方法不同等。作用方式不同是指,前者是将位置信息嵌入到词嵌入向量中,后者是在Transformer等......
  • 独热编码Python实现
    test_dataseasonmonth1112132425263738394104114121-4代表4个季节;1-12代表12个月。importpandasaspddata_path='test_dada.csv'#读取数据到内存data=pd.read_csv(data_path)dummy_fields=['season','month']#所有类型编码变量的名称foreach......
  • KeyShot操作的一些补充
    --本篇导航--材质图中一些节点的补充(色度键屏蔽、要计数的颜色、色彩复合、曲线淡出、颜色淡出)用曲线淡出制作了几个复杂点的动画场景打光(场景环境贴图、植物投影、遮挡的平面板)动画的补充(关键帧、相机动画)模拟重力系统、塑料模拟金属、问立体图的三平面渲染线稿、导出高清......
  • Autohotkey脚本bug.n(窗口管理器)怎样使用
    使用AutoHotkey脚本bug.n(窗口管理器)的步骤:一、安装AutoHotkey;二、下载并安装bug.n;三、创建bug.n配置文件;四、编写bug.n脚本;五、运行bug.n脚本等。安装AutoHotkey是指,首先要在计算机上安装AutoHotkey软件,它是一个免费且强大的自动化脚本语言,用于创建自定义的快捷键和脚本。一、......
  • systemd oneshot服务配置例子
     服务这样写:[Unit]Description=nginx-highperformancewebserverAfter=network-online.targetremote-fs.targetnss-lookup.targetWants=network-online.target[Service]Type=oneshot//类型选oneshotRemainAfterExit=y......
  • Cinemachine系列——最佳视野(一)&CinemachineClearShot
    这里介绍一下,自动切换到场景中最佳视野的摄像机的第一种方式。首先介绍一下CinemachineClearShot组件,它是自动完成这项工作的核心。通过PackageManager导入Cinemachine插件,在导入CinemachineSample后,我们可以在Assets文件夹下Cinemachine/2.6.17(这个是你下载的cinemachine版本......