独热编码(one-hot encoding)

刚开始学习深度学习的时候,会遇到“独热编码”这个概念。英文名:one-hot encoding。
在网上查了好多资料,写的比较模糊,或者难以理解。下面,我将尽可能的对one-hot encoding做个通俗的解释。
从以下三个方面来说。
1.什么是one-hot encoding
2.为什么要用one-hot encoding
3.基于Keras的one-hot encoding案例

1.什么是one-hot encoding
就是将分类数据,转换成二进制向量表示,以便用于机器学习算法的处理。

什么是分类数据?
答:比如宠物有猫/狗/虎。那么,猫/狗/虎就是宠物这一类别的具体分类数据。需要将其转换为二进制向量表示。

什么是二进制向量?
答:假设宠物有三种。
猫 狗 虎
1 0 0
0 1 0
0 0 1
100表示猫,100就是猫的二进制向量
010表示狗,010就是狗的二进制向量

2.为什么要用one-hot encoding
算法无法直接处理分类的数据。

3.基于Keras的one-hot encoding案例

from numpy import array
from numpy import argmax
from keras.utils import to_categorical
data = [1,3,2,0,3,2,2,1,0,1]
data = array(data)
print(data)
[1 3 2 0 3 2 2 1 0 1]
#one-hot encoding
encoded = to_categorical(data)
#这里就将上面的数字用二进制向量表示出来
print(encoded)
[[0. 1. 0. 0.]
 [0. 0. 0. 1.]
 [0. 0. 1. 0.]
 [1. 0. 0. 0.]
 [0. 0. 0. 1.]
 [0. 0. 1. 0.]
 [0. 0. 1. 0.]
 [0. 1. 0. 0.]
 [1. 0. 0. 0.]
 [0. 1. 0. 0.]]
#invert encoding 反转编码,得到二进制向量的整数值
inverted = argmax(encoded[0])
print(inverted)
1

附:
以下这两篇文章解释的更为通透,这是我见过全网解释最为通透的文章
https://machinelearningmastery.com/how-to-one-hot-encode-sequence-data-in-python/
https://machinelearningmastery.com/why-one-hot-encode-data-in-machine-learning/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • # Awesome Python [![Awesome](https://cdn.rawgit.com/sindr...
    emily_007阅读 2,227评论 0 3
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,449评论 0 10
  • **2014真题Directions:Read the following text. Choose the be...
    又是夜半惊坐起阅读 9,921评论 0 23
  • 一根白发无所谓,那么十根呢?百根呢?光影的作用,一时间恍若看到鬓边花白,一瞬间想到白头,苍老,想到年迈,想到离去,...
    自由和安阅读 315评论 1 1
  • 日记星球269号星宝宝,我正在参加日记星球第十二期蜕变之旅,这是我的第0415篇原创日记。我相信日积月累的力量! ...
    cf302fb8f796阅读 5,602评论 0 0