大神手把手教你:(Python)序列数据的One Hot编码

摘要:不懂One Hot编码?让大神手把手教你(文中代码可以直接运行),用小例子清晰明了的带你进入One hot 编码!

更多深度文章,请关注:https://yq.aliyun.com/cloud

机器学习算法无法直接用于数据分类。数据分类必须转换为数字才能进一步进行。

在本教程中,你将发现如何将输入或输出的序列数据转换为一种热编码,以便于你在Python中深度学习的序列分类问题中使用。

看完本教程后,你将会了解:

·   1.什么是整数编码和One-Hot编码,以及为什么它们在机器学习中是必需的。

·   2.如何在Python中手工计算一个整数编码和One-Hot编码。

·   3.如何使用scikit-learn和Keras库来自动对Python中的序列数据进行编码。

本教程分为4部分:

1.什么是One-Hot编码?

2.手动编写One-Hot编码

3.One-Hot Encode with scikit-learn.

4.One-Hot Encode with Keras.

1.什么是One-Hot编码?

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

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

2.One-Hot编码的工作示例

让我们用一个小例子来说明一下到底什么是One-Hot编码。假设我们有一个带有'red'和'green'值的标签序列。我们可以将'red'的整数值分配为0,'green'的整数值为1。只要我们总是将这些数字分配给这些标签,这称为整数编码。一致性是重要的,所以我们可以稍后反转编码,并从整数值获取标签。

接下来,我们可以创建一个二进制向量来表示每个整数值。对于2个可能的整数值,向量的长度为2。

编码为0的“红色”标签将用二进制向量[1,0]表示,其中第0个索引被标记为值1。然后,编码为1的“绿色”标签将用一个二进制向量[0,1],其中第一个索引被标记为1。

如果我们有序列:

‘red’,‘red’,‘green’。

我们可以用整数编码来表示它:

0,0,1

而One-Hot编码就为:

1

2

3

[1, 0]

[1, 0]

[0, 1]

1.为什么要使用One-Hot编码?

One hot 编码进行数据的分类更准确,许多机器学习算法无法直接用于数据分类。数据的类别必须转换成数字,对于分类的输入和输出变量都是一样的。

我们可以直接使用整数编码,需要时重新调整。这可能适用于在类别之间存在自然关系的问题,例如温度“冷”(0)和”热“(1)的标签。

当没有关系时,可能会出现问题,一个例子可能是标签的“狗”和“猫”。

在这些情况下,我们想让网络更具表现力,为每个可能的标签值提供概率式数字。这有助于进行问题网络建模。当输出变量使用one-hot编码时,它可以提供比单个标签更准确的一组预测。

2.手动One Hot编码:

在这个例子中,我们将假设我们有一个字符串的例子,但是示例序列并不涵盖所有可能的例子。

我们将使用以下字符的输入序列:

Hello world。

我们将假设所有可能输入是小写字母和空格的完整字母表。因此,我们将以此展示如何滚动我们自己的one hot编码。

完整的示例如下所示。

from numpy import argmax

# define input string

data = 'hello world'

print(data)

# define universe of possible input values

alphabet = 'abcdefghijklmnopqrstuvwxyz '

# define a mapping of chars to integers

char_to_int = dict((c, i) for i, c in enumerate(alphabet))

int_to_char = dict((i, c) for i, c in enumerate(alphabet))

# integer encode input data

integer_encoded = [char_to_int[char] for char in data]

print(integer_encoded)

# one hot encode

onehot_encoded = list()

for value in integer_encoded:

letter = [0 for _ in range(len(alphabet))]

letter[value] = 1

onehot_encoded.append(letter)

print(onehot_encoded)

# invert encoding

inverted = int_to_char[argmax(onehot_encoded[0])]

print(inverted)

运行示例首先打印输入字符串。

所有可能的输入的映射都是从char值创建为整数值。然后使用该映射对输入字符串进行编码。我们可以看到输入'h'中的第一个字母被编码为7。然后将整数编码转换为one hot编码。一次完成一个整数编码的字符。创建0个值的列表,以便字母表的长度可以表示任何预期的字符的长度。

接下来,特定字符的索引标记为1。我们可以看到,编码为7的第一个字母“h”整数由二进制向量表示,长度为27,第七个索引标记为1。

最后,我们反转第一个字母的编码并打印结果。我们通过使用NumPy argmax()函数定位具有最大值的二进制向量中的索引,然后使用字符值的反向查找表中的整数进行整数。

注意:输出格式化为可读性(我们将空格默认设置为z)。

原文链接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容