首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >One-hot在keras中编码标签

One-hot在keras中编码标签
EN

Stack Overflow用户
提问于 2021-05-15 19:37:55
回答 1查看 449关注 0票数 1

我在CSV文件中有一组来自label列的整数- [1,2,4,3,5,2,..]。类的数量是从16的范围。我想用下面的代码对它们进行一次热编码。

代码语言:javascript
复制
y = df.iloc[:,10].values
y = tf.keras.utils.to_categorical(y, num_classes = 5)
y

但是这段代码给了我一个错误

代码语言:javascript
复制
IndexError: index 5 is out of bounds for axis 1 with size 5

我该如何解决这个问题呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-15 19:47:07

如果使用tf.keras.utils.to_categorical对标签向量进行一次加热,则整数应从0num_classessource开始。在您的情况下,您应该执行以下操作

代码语言:javascript
复制
import tensorflow as tf 
import numpy as np 

a = np.array([1,2,4,3,5,2,4,2,1])
y_tf = tf.keras.utils.to_categorical(a-1, num_classes = 5)
y_tf

array([[1., 0., 0., 0., 0.],
       [0., 1., 0., 0., 0.],
       [0., 0., 0., 1., 0.],
       [0., 0., 1., 0., 0.],
       [0., 0., 0., 0., 1.],
       [0., 1., 0., 0., 0.],
       [0., 0., 0., 1., 0.],
       [0., 1., 0., 0., 0.],
       [1., 0., 0., 0., 0.]], dtype=float32)

或者,您可以使用pd.get_dummies

代码语言:javascript
复制
import pandas as pd 
import numpy as np 

a = np.array([1,2,4,3,5,2,4,2,1])
a_pd = pd.get_dummies(a).astype('float32').values 
a_pd

array([[1., 0., 0., 0., 0.],
       [0., 1., 0., 0., 0.],
       [0., 0., 0., 1., 0.],
       [0., 0., 1., 0., 0.],
       [0., 0., 0., 0., 1.],
       [0., 1., 0., 0., 0.],
       [0., 0., 0., 1., 0.],
       [0., 1., 0., 0., 0.],
       [1., 0., 0., 0., 0.]], dtype=float32)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67546315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档