gpt4 book ai didi

python - Keras 单热编码器

转载 作者:太空宇宙 更新时间:2023-11-04 09:36:49 25 4
gpt4 key购买 nike

我有一个数组,并在 keras 中使用 to_categorical 函数:

labels = np.array([1,7,7,1,7])
keras.utils.to_categorical(labels)

我收到这样的回复:

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

我怎样才能只得到两列?一个给 1 岁,一个给 7 岁。

这是一种可能的方式,但不是很好的方式:

labels = np.delete(labels, np.s_[0:1], axis=1)
np.delete(labels, np.s_[1:6], axis=1)

给出:

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

有没有更好的方法来实现这一点?最好通过 Keras utils 或类似的一些“隐藏”功能?

最佳答案

IIUC,您可以通过任何具有值的列索引您的数组:

cat = keras.utils.to_categorical(labels)
>>> cat
array([[0., 1., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 1.],
[0., 0., 0., 0., 0., 0., 0., 1.],
[0., 1., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 1.]])

# Select column if it has at least one value:
>>> cat[:,cat.any(0)]
array([[1., 0.],
[0., 1.],
[0., 1.],
[1., 0.],
[0., 1.]])

你也可以使用 pandas:

import pandas as pd
cat = pd.get_dummies(labels).values
>>> cat
array([[1, 0],
[0, 1],
[0, 1],
[1, 0],
[0, 1]], dtype=uint8)

关于python - Keras 单热编码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53363204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com