label:one-hot 与 标量转化
一、标量 转化为 one-hot 向量
from keras.utils import to_categorical
data = [1, 3, 2, 0, 3, 2, 2, 1, 0, 1]
encoded = to_categorical(data)
print("encoded:", encoded)
输出:
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.]]
二、one-hot向量 转化为 标量
因为一个热向量是一个包含0和1的向量,所以可以这样做:
encoded = np.array([[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]])
data = [np.where(r == 1)[0][0] for r in encoded]
print("data:", data)
输出:
data: [1, 3, 2, 0, 3, 2, 2, 1, 0, 1]