我在CSV文件中有一组来自label列的整数- [1,2,4,3,5,2,..]。类的数量是从1到6的范围。我想用下面的代码对它们进行一次热编码。
y = df.iloc[:,10].values
y = tf.keras.utils.to_categorical(y, num_classes = 5)
y但是这段代码给了我一个错误
IndexError: index 5 is out of bounds for axis 1 with size 5我该如何解决这个问题呢?
发布于 2021-05-15 19:47:07
如果使用tf.keras.utils.to_categorical对标签向量进行一次加热,则整数应从0到num_classes、source开始。在您的情况下,您应该执行以下操作
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,
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)https://stackoverflow.com/questions/67546315
复制相似问题