独热编码(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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • yuv422转rgb(422sp转420p)

    YUV420转RGB888yuv420的数据存储方式是planar,就是在一帧中先存y分量,存完y存u,接着v分量。而在yuv420中有y分量widthheightbyte,uv分量各是widthheight1/4,一帧中总的数据是widthheight3/2(widthheight12/8).所以当时认为,yuv分量代入转换公式的话,uv分量是不是少了。其实不然,因为是每四个y分量共用一个u分量一个v分量,但也不是[YiYi+1Yi+2Yi+3]共用[Ui],[Vi],因为是一个22的窗口内的Y分量

    2022年4月10日
    55
  • idea激活码2022.01.13[最新免费获取]2022.01.19

    (idea激活码2022.01.13)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~0…

    2022年3月31日
    85
  • Python学习笔记(15)-Python代码转换为exe可执行程序详解

    Python学习笔记(15)-Python代码转换为exe可执行程序详解一,简介Python写完程序,要靠命令执行那么行,太低调了,还不华丽了。再说别人的电脑,都没有Python库,怎么执行,还能不能愉快的一起玩耍了。所以哪怕只会写一个HelloWorld,也要弄成exe程序,方便伟大的代码传播事业。其实很简单,有一个现成的pyInstaller工具,直接用就是了。二,pyInstaller安装配置1,打开网址:pyInstalller下载网址如图:因为我的Pyth

    2022年6月1日
    49
  • Mac虚拟机联网(vmware虚拟机怎么联网)

    下载VMwareFusion安装,下载centOS7镜像并安装虚拟机查看本机的vmnet1和vmnet8MAC系统下通过终端的ifconfig命令可以得知当前主机的vmnet1(192.168.118.1)和vmnet8(192.168.2.1) 仅主机模式下通过vmnet1使得主机和虚拟机可以通信 NAT模式下通过vmnet8使得主机和虚拟机可以通信Mac终端cd/Libr…

    2022年4月12日
    137
  • Springboot Mybatis使用pageHelper实现分页查询[通俗易懂]

    Springboot Mybatis使用pageHelper实现分页查询[通俗易懂]以下介绍实战中数据库框架使用的是mybatis,对整合mybatis此处不做介绍。使用pageHelper实现分页查询其实非常简单,共两步:一、导入依赖;二、添加配置;三、应用;那么开始,第一步:pom.xml添加依赖:<!–分页插件pagehelper–><dependency><groupId>com…

    2022年6月2日
    43
  • Js判断数组中是否存在某个元素「建议收藏」

    Js判断数组中是否存在某个元素「建议收藏」方法一:indexOf(item,start);Item:要查找的值;start:可选的整数参数,缺省则从起始位子开始查找。indexOf();返回元素在数组中的位置,如果没有则返回-1;例子:vararr=[‘aaa’,’bbb’,’ccc’,’ddd’,’eee’];  vara=arr.indexOf(‘ddd’);  console.log(a);  //3  varb=arr.indexOf(‘d’);  console.log(b);  //-1  我通常的用法:if(

    2022年10月19日
    3

发表回复

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

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