独热编码(One-Hot Encoding)介绍及实现

独热编码(One-Hot Encoding)介绍及实现一、介绍One-Hot编码,又称为一位有效编码,主要是采用位状态寄存器来对个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效。独热编码是利用0和1表示一些参数,使用N位状态寄存器来对N个状态进行编码。例如:参考数字手写体识别中:如数字字体识别0~9中,6的独热编码为0000001000自然状态码为:000,001,010,011,100,101…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

一、介绍

 One-Hot编码,又称为一位有效编码,主要是采用独热编码(One-Hot Encoding)介绍及实现位状态寄存器来对独热编码(One-Hot Encoding)介绍及实现个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效。

独热编码 是利用0和1表示一些参数,使用N位状态寄存器来对N个状态进行编码。

例如:参考数字手写体识别中:

如数字字体识别0~9中,6的独热编码为

0000001000

自然状态码为:000,001,010,011,100,101

独热编码为:000001,000010,000100,001000,010000,100000

Jetbrains全家桶1年46,售后保障稳定

有如下三个特征属性:
性别:[“male”,”female”] ======》[1,0] 表示男,[0,1]表示女
地区:[“Europe”,”US”,”Asia”]
浏览器:[“Firefox”,”Chrome”,”Safari”,”Internet Explorer”]
对于某一个样本,如[“male”,”US”,”Internet Explorer”],我们需要将这个分类值的特征数字化,最直接的方法,我们可以采用序列化的方式:[0,1,3]。但是这样的特征处理并不能直接放入机器学习算法中。

 对于上述的问题,性别的属性是二维的,同理,地区是三维的,浏览器则是思维的,这样,我们可以采用One-Hot编码的方式对上述的样本“[“male”,”US”,”Internet Explorer”]”编码,“male”则对应着[1,0],同理“US”对应着[0,1,0],“Internet Explorer”对应着[0,0,0,1]。则完整的特征数字化的结果为:[1,0,0,1,0,0,0,0,1]。这样导致的一个结果就是数据会变得非常的稀疏。
 

二、优点

独热编码的优点为:

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

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

三、实现 

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.]]

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/200862.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 代理重加密_代理重加密BBS方案

    代理重加密_代理重加密BBS方案云计算中的数据机密性风险极大地阻碍了云计算的应用,而在用户端加密的模式对于数据共享来说非常不便,用户频繁的获取和释放授权将使得用户增效据加解密工作繁重。因此代理重加密技术在云端进行数据的密文转换,减轻了用户端的负担,同时加强了云端数据的保密性。一、代理重加密代理重加密是密文间的一种密钥转换机制,是由Blaze等人在1998年的欧洲密码学年会上提出的,并由Ateniese等人在2005年的网络和分布式系统安全研讨会议和2007年的美国计算机学会计算机与通信安全会议上给出了规范的形式化定义。在代理重加密中

    2022年9月9日
    1
  • 验证市场可行性(PMF)的5个步骤[通俗易懂]

    验证市场可行性(PMF)的5个步骤[通俗易懂]在增长黑客的理念中,一切的“猜想”和“创意”都是需要经过验证的,用事实来证明猜想和创意是否可行,这其实也是增长黑客的特质之一,将所有不可量化的东西转化为可量化的评估标准。比如如何证明你的创意能够成功呢?验证PMF的其中一个标准是调研你的用户,如果40%的核心用户认为缺了你的产品会很遗憾,而不是可有可无,那么这就说明找到了P/MF;PMF到底是什么呢?你可以理解为一个指标,例如40%的用户认为没…

    2022年5月23日
    47
  • Google Chrome Frame「建议收藏」

    Google Chrome Frame「建议收藏」GoogleChromeFrame,官方的正式中文名称为“谷歌浏览器内嵌框架”。GoogleChromeFrame是Google推出的一款免费的InternetExplorer专用插件。使

    2022年7月1日
    41
  • 如何用matlab编写分段函数_matlab 分段函数

    如何用matlab编写分段函数_matlab 分段函数f(x)的定义如下:2226,04()56,010,231,xxxxfxxxxxxxx且且其它1、写一个函数文件f(x)实现该函数,要求参数x可以是向量;2、作出该函数的图形;3、求出f(x)的零点与最值。解:(1)、编写M函数文件functiony=f(x)n=length(x);ifx<0&x~=-4y=x.^2+x-6;elseif…

    2022年6月14日
    127
  • UML学习入门就这一篇文章

    1.1UML基础知识扫盲UML这三个字母的全称是UnifiedModelingLanguage,直接翻译就是统一建模语言,简单地说就是一种有特殊用途的语言。你可能会问:这明明是一种图形,为什么说是语言呢?伟大的汉字还不是从图形(象形文字)开始的吗?语言是包括文字和图形的!其实有很多内容文字是无法表达的,你见过建筑设计图纸吗?里面还不是很多图形,光用文字能表达清楚建筑设计吗?在建筑界,…

    2022年4月13日
    80
  • J1939TP「建议收藏」

    J1939TP「建议收藏」J1939TP给上层、下层提供的服务,和它本身内部的行为。1939协议定义了一些参数组,每个参数组包含确定的内容和信号。并提供以下PG:负载的长度类型:最大字节数、可变或固定大小参数组号:18位包含以下信息:2bit数据页信息8bitPDU格式8bitPDU细节PF小于240的为PDU1格式,用于点对点通信;大于等于240的为PDU2格式,用于广播通信。PDU细节仅与PDU2格式有关。在PDU1格式下的点对点通信,PS总为0。J1939使用29位CANid作为消…

    2022年5月5日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号