博主原创文章,转载请注明出处

https://www.cnblogs.com/shuaishuaidefeizhu/p/11269257.html

一、什么是one-hot编码?

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

One-Hot编码是分类变量作为二进制向量的表示。这首先要求将分类值映射到整数值。然后,每个整数值被表示为二进制向量,除了整数的索引之外,它都是零值,它被标记为1。

二、one-hot编码过程详解

比如我们要对 “hello world” 进行one-hot编码,怎么做呢?

1.确定要编码的对象--hello world,

2.确定分类变量--h  e  l  l  o  空格  w  o  r  l  d,共27种类别(26个小写字母 + 空格,);

3.以上问题就相当于,有11个样本,每个样本有27个特征,将其转化为二进制向量表示,

这里有一个前提,特征排列的顺序不同,对应的二进制向量亦不同(比如我把空格放在第一列和a放第一列,one-hot编码结果肯定是不同的)

因此我们必须要事先约定特征排列的顺序:

1.、27种特征首先进行整数编码:a--0,b--1,c--2,......,z--25,空格--26

2、27种特征按照整数编码的大小从前往后排列

得到的one-hot编码如下:

再比如:我们要对["中国", "美国", "日本"]进行one-hot编码,

怎么做呢?

1.确定要编码的对象--["中国", "美国", "日本", "美国"],

2.确定分类变量--中国    美国    日本,共3种类别;

3.以上问题就相当于,有3个样本,每个样本有3个特征,将其转化为二进制向量表示,

我们首先进行特征的整数编码:中国--0,美国--1,日本--2,并将特征按照从小到大排列

得到one-hot编码如下:

["中国", "美国", "日本", "美国"]  --->   [[1,0,0], [0,1,0], [0,0,1], [0,1,0]]

三、为什么需要one-hot编码?

one hot编码是将类别变量转换为机器学习算法易于利用的一种形式的过程。

上面的 hello world 相当于多分类的问题(27分类),每个样本只对应于一个类别(即只在对应的特征处值为1,其余地方值为0),而我们的分类结果,得到的往往是隶属于某个类别的概率,这样在进行损失函数(例如交叉熵损失)或准确率计算时,变得非常方便

四、one-hot编码的缺陷

one-hot编码要求每个类别之间相互独立,如果之间存在某种连续型的关系,或许使用distributed respresentation(分布式)更加合适。

最新文章

  1. 【转】}目前比较全的CSS重设(reset)方法总结
  2. FPGA 设计技巧
  3. Mac OS X 上的安装haskell开发环境
  4. 让IIS识别PUT和DELETE请求
  5. GDB命令行最基本操作
  6. vmware无法链接U盘:vm-->removeable devices.
  7. 转]python 结巴分词(jieba)学习
  8. UltraEdit MAC破解方法
  9. python替换脚本
  10. SQL数据库开发中的一些经典代码
  11. linux文件查找find命令
  12. Quartz.Net 定时服务
  13. dig常用命令
  14. Go语言为何说它优雅?-- Golang中的几个常用初始化设计
  15. cf 700e(sam好题,线段树维护right)
  16. cqrs案例
  17. Android学习之——GridView
  18. 如何将数组中的后面m个数移动为前面m个数
  19. pictureBox控件获得图片路径的三种方法及自适应大小属性
  20. 年薪30W的软件测试“老司机”工作经验

热门文章

  1. Java基础(五)
  2. celery 调用scrapy
  3. ubuntu 18.04 配置notebook远程连接的坑
  4. jinja2介绍
  5. 四、redis学习(案例)
  6. 12 Python之函数进阶
  7. JS常用自定义函数总结
  8. 【Java】 Java网络编程总结
  9. 1.device-manage 优化
  10. dedecms 调用内容页分页