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


相关推荐

  • Windows配置Java环境变量(下载、安装、配置环境)[通俗易懂]

    Windows配置Java环境变量(下载、安装、配置环境)[通俗易懂]本人以博客专家担保,本篇文章可以解决你的问题,若未解决,将为你远程操作,但希望你为我点一个关注!!!推荐文章MySql5.7安装教程(超详细)https://myhub.blog.csdn.net/article/details/103532734(JavaSE)目录下载、安装配置环境变量下载、安装进入官网下载https://www.oracle.com/…

    2022年6月7日
    39
  • 不错的BLOG和论坛[通俗易懂]

    不错的BLOG和论坛[通俗易懂]高手的博客阿虚的电子小屋http://hi.baidu.com/aokikyon(从单片机到嵌入式linux都有研究)XY嵌入式Linux  http://blog.chinaunix.net/group/group_1488.html(嵌入式内核研究)嵌入式系统开发Linux+ARMhttp://blog.chinaunix.net/u2/79779/index.html(

    2022年10月2日
    5
  • Ubuntu18.04的网络配置

    Ubuntu18.04的网络配置1、网络配置1首先打开虚拟网络编辑器进行配置,会加载几秒钟2点击更改设置1.3选择添加网络,添加一个Vment0,并设置为桥接模式,桥接到处设置为自动即可,如下图所示注意:这里有可能会出现问题:无法将网络更改为桥接状态,没有未桥接的主机网络适配器,解决办法请查看我的另外一章博客:https://blog.csdn.net/weixin_42108484/arti…

    2022年6月4日
    34
  • 为什么谷歌插件添加显示程序包无效(谷歌浏览器怎么不能安装插件)

    今天在添加谷歌插件的时候,却发现谷歌浏览器显示程序包无效:”CRX_HEADER_INVALID”,现整理解决方法如下:1、把你需要添加谷歌插件的后缀名由.crx更改为.rar,更改时会弹出提示框,提示“如果改变文件扩展名,可能会导致文件不可用,确实要更改吗?”,点击“是(Y)”按钮即可2、解压你刚刚更改后缀名为.rar的谷歌插件压缩包(解压时,选择解压到你插件名的…

    2022年4月18日
    132
  • Neokylin-Server离线环境、跨主机、使用Docker部署PXC集群

    Neokylin-Server离线环境、跨主机、使用Docker部署PXC集群Neokylin-Server离线环境、跨主机、使用Docker部署PXC集群Neokylin-Server离线环境、跨主机、使用Docker部署PXC集群一、说明二、部署过程:1.切换root账号或所有语句加sudo;2.关闭6个节点防火墙(或打开端口);3.6个节点导入rpm包后安装基础环境:4.设置所有节点;5.启动docker并导入images;6.时间同步;7.etcd集群配置;8.部署flannel网络;9.n1-n3部署pxc;10.m1-m3部署Haproxy+Keepa

    2022年8月10日
    9
  • System.Data.SqlClient.SqlException_sqlserver substring截取字符串

    System.Data.SqlClient.SqlException_sqlserver substring截取字符串“System.Data.SqlClient.SqlException”类型的未经处理的异常在System.Data.dll中发生。其他信息:将截断字符串或二进制数据

    2022年10月7日
    5

发表回复

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

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