one-hot是比较常用的文本特征特征提取的方法。

one-hot编码,又称“独热编码”。其实就是用N位状态寄存器编码N个状态,每个状态都有独立的寄存器位,且这些寄存器位中只有一位有效,说白了就是只能有一个状态

下面举例说明:

有四个样本,每个样本有三种特征:

  feature1 feature2 feature3
sample1 1 4 3
sample2 2 3 2
sample3 1 2 2
sample4 2 1 1

上图用十进制数对每种特征进行了编码,feature1有两种可能的取值,feature2有4种可能的取值,feature3有3种可能的取值。比如说feature3有3种取值,或者说有3种状态,那么就用3个状态位来表示,以保证每个样本中的每个特征只有1位处于状态1,其他都是0

1->001

2->010

3->100

其他的特征也都这么表示:

  feature1 feature2 feature3
sample1 01 1000 100
sample2 10 0100 010
sample3 01 0010 010
sample4 10 0001 001

这样,4个样本的特征向量就可以这么表示:

sample1 -> [0,1,1,0,0,0,1,0,0]

sample2 -> [1,0,0,1,0,0,0,1,0]

sample3 -> [0,1,0,0,1,0,0,1,0]

sample4 -> [1,0,0,0,0,1,0,0,1]

接下来看看怎么应用one-hot

one-hot在特征提取上属于词袋模型(bag of words),假设语料库中有三句话:

  • 我爱中国
  • 爸爸妈妈爱我
  • 爸爸妈妈爱中国

首先,将语料库中的每句话分成单词,并编号:

1:我      2:爱      3:爸爸      4:妈妈      5:中国

然后,用one-hot对每句话提取特征向量:(图来源于网络)

所以最终得到的每句话的特征向量就是:

  • 我爱中国 -> 1,1,0,0,1
  • 爸爸妈妈爱我 -> 1,1,1,1,0
  • 爸爸妈妈爱中国 -> 0,1,1,1,1

那么这样做的优点和缺点都有什么?

优点:

  1. 解决了分类器处理离散数据困难的问题
  2. 一定程度上起到了扩展特征的作用(上例中从3扩展到了9)

缺点:

  1. one-hot是一个词袋模型,不考虑词与词之间的顺序问题,而在文本中,次的顺序是一个很重要的问题
  2. one-hot是基于词与词之间相互独立的情况下的,然而在多数情况中,词与词之间应该是相互影响的
  3. one-hot得到的特征是离散的,稀疏的

one-hot编码的理解相关推荐

  1. 有关swin transformer相对位置编码的理解:

    有关swin transformer相对位置编码的理解: 假设window_size是7*7 那么窗口中共有49个patch,共有49*49个相对位置,每个相对位置有两个索引对应x和y两个方向,每个索 ...

  2. Unicode编码的理解

    1.Unicode 这个单词可以拆解为两部分,一个是Uni ,即英文单词unique的意思,也就是唯一的意思.code就是编码的意思. GBK编码的理解_sgmcy的博客-CSDN博客 在上节博客里面 ...

  3. 哈夫曼编码的理解以及简单实现

    哈夫曼树 在介绍哈夫曼编码前,我们先来了解一下哈夫曼树. 美国科学家哈夫曼在1952年发现了哈夫曼编码,为了纪念他的成就,于是把他在编码中用到的特殊二叉树称之为哈夫曼树,这种编码方法称之为哈夫曼编码. ...

  4. Python学习-字符编码的理解

    Unicode编码和ASCII码两者都是机器能够理解的编码,你就是说出现一个码,计算机知道它对应哪种符号.因为这种编码形式将不同的字符全都和电平的高低电位联系在一起. Unicode,这种编码是全球通 ...

  5. 对于 Shift-JIS 编码的理解 (win10中 查看 Shift-JIS 编码 コード)

    ■简介 Shift_JIS-2004 is the JIS X 0213 version of Shift_JIS encoding. It is a superset of Shift_JIS. I ...

  6. java unicode是什么意思_(转)谈谈对Java中Unicode、编码的理解

    我们经常会遇到编码问题.Java号称国际化的语言,是因为它的class文件采用UTF-8,而JVM运行时使用UTF-16(至于为什么JVM中要采用UTF-16,我没看过 相关的资料,但我猜可能是因为J ...

  7. 操作系统、输入法和编码的理解

    操作系统和输入法 操作系统有一个输入法管理器,叫做IMM,管理系统内的所有输入法,或者说一个输入法想要使用操作系统提供的输入法API,就必须在IMM进行注册. 应用程序和输入法 应用程序一般都会使用输 ...

  8. 【obs-studio开源项目从入门到放弃】video_thread 视频编码线程理解

    文章目录 前言 1.视频编码线程的创建时机 video_output_open函数创建视频编码线程 2.视频编码线程的工作内容 video_output_cur_frame 线程真正的工作函数 详细解 ...

  9. 谈谈对中文乱码,编码的理解 java python

    中文乱码问题研究结论 java python 字库表?编码字符集?字符编码? 编码,解码 数据读,写 中文乱码 分析一个java代码输出乱码的实例 这些问题一直困扰我很久,其实也不是什么大问题,每次遇 ...

  10. ASCII,Unicode,UTF-8,GB2312一些关于编码的理解

    2019独角兽企业重金招聘Python工程师标准>>> 字符编码:ASCII,Unicode,UTF-8,GB2312 从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件 ...

最新文章

  1. 【怎样写代码】小技巧 -- 关于方法中修饰形参的关键词
  2. [Google Guava] 1.3-常见Object方法
  3. LNMT部署详细步骤并实现动静分离和负载均衡
  4. Netty专题-(3)NIO网络编程
  5. Android PermissionUtils:运行时权限工具类及申请权限的正确姿势
  6. java.lang 源码剖析_java.lang.Void类源码解析
  7. ffmpeg音视频基础知识
  8. IOS 打包后安装崩溃,debug正常运行
  9. xgboost算法_Xgboost调参小结
  10. VC++中视频采集系统(摄像头的制作,串口通信的应用)
  11. DC-DC电路设计要点 及 计算 全解析
  12. 我是如何获得微信内置表情的
  13. MAC系统中快速切换输入法的方法
  14. 如何提升固定资产盘点效率
  15. Jenkins 打包项目出错汇总(持续)
  16. 贼有趣:朱茵变杨幂,人工智能换脸让明星不再担心自己演技?
  17. 科学计数法如何转换成普通的计数方式??
  18. IasS,CasS,PasS,SasS的区别
  19. WIFI WPS 种类
  20. 免费影像数据下载网站汇总——2010年7月28[转自ESRI中国]

热门文章

  1. ArcGIS学习网站
  2. 机器学习(一):模型的参数估计方法
  3. cocos creater 2.4 Error Bundle resources doesn‘t contain
  4. 常用限流方案的设计和实现
  5. 室内导航--机器视觉、ROS、Goseek(三)ROS Noetic Ninjemys 准备
  6. 2022图灵奖出炉!以太网之父鲍勃·梅特卡夫获奖,76岁进入新领域再出发
  7. jsp四大作用域和九大内置对象
  8. java 关于Scanner类中hasNextXxx()方法
  9. 【svn】如何批量忽略文件和文件夹
  10. 【pytorch】model.train()和model.evel()的用法