我的用例是关于机器学习在物理层无线通信中的应用。 我的输入要素具有复杂的价值,我将其转换为等效的实际价值要素,如下所示。
Y = np.concatenate((np.real(S_bar), np.imag(S_bar)))
Y = array([[-1., 1., 3., 1., -3., 1., -3., -3., 1., -1.],
[-1., 3., 3., -1., 1., 3., -3., 1., -1., 3.],
[ 1., -1., 3., 3., 3., -3., -1., -1., -1., -1.],
[ 3., 1., -3., 3., -3., 1., 1., 3., 3., -1.]])
Y是一个4 x 10的训练矩阵,其中4行是特征,而10列是样本或训练示例。
我想将其表示为10 x 4的one_hot编码训练标签,以使其适合于keras环境,如下所示:
model.fit(X_train, Y_labels, epochs=5, batch_size=100)
我以以下方式尝试了它,但是它不起作用。
i。标签编码:
le = preprocessing.LabelEncoder()
y = []
for i in range(0,Y.shape[0]):
le.fit(Y[i,:])
temp = le.transform(Y[i,:])
y.append(temp)
y = np.array(y)
Y被标记为:
array([[1, 2, 3, 2, 0, 2, 0, 0, 2, 1],
[1, 3, 3, 1, 2, 3, 0, 2, 1, 3],
[2, 1, 3, 3, 3, 0, 1, 1, 1, 1],
[3, 2, 0, 3, 0, 2, 2, 3, 3, 1]], dtype=int64)
ii。 one_hot编码:
encoder=OneHotEncoder(sparse=False)
encoder.fit(y.T)
labels = encoder.transform( y.T)
*我的问题是,当模型预期为(10,4)时,“标签”的形状为(10,16)。请问如何将one_hot编码器的大小调整为Y_train和Y_test的真实形状?还是有其他比上述示例更好的方法呢?我对此表示感谢。
答案 0 :(得分:0)
我会用keras.utils.to_categorical
来获得您想要的东西:
from keras.utils import to_categorical
labels = to_categorical(y[0])
# labels.shape == (10, 4)
基本上可以一键编码为您的目标标签。