如何使用keras Predict_proba输出2列概率?

我用这段代码来预测 中 0 和 1 的概率x_test,但结果只有一列概率。我真不知道这一列的概率是0的概率还是1的概率。


import numpy as np

from keras.models import Sequential

from keras.layers import Dense


data_train = np.array([

[0, 0, 0],

[0, 1, 0],

[0, 2, 0],

[0, 3, 0],

[1, 0, 0],

[2, 0, 0],

[3, 0, 0],

[1, 1, 1],

[2, 1, 1],

[1, 2, 1],

[3, 1, 1],

])


data_test = np.array([

[1, 3],

[0, 4],

[5, 0]

])


x_train = data_train[:, :-1]

y_train = data_train[:, -1]

x_test = data_test


model = Sequential()

model.add(Dense(512, activation='relu', input_dim=2))

model.add(Dense(200, activation='relu'))

model.add(Dense(200, activation='relu'))

model.add(Dense(128, activation='relu'))

model.add(Dense(1, activation='sigmoid'))

model.compile(optimizer='rmsprop',

              loss='binary_crossentropy',

              metrics=['binary_accuracy'])


model.fit(x_train, y_train, epochs=5, batch_size=1, verbose=1)

predict = model.predict_proba(x_test, batch_size=1)

print(predict)

结果只有 1 列:


[[0.9431795]

 [0.47065434]

 [0.08615088]]

我想要2列概率,第一列是0的概率,第二列是1的概率,比如这样:


 [[0.23334,0.76267]

    ……

 [0.84984,0.15685]

 [0.16663,0.83291]]

如何修复它?


四季花海
浏览 40回答 1
1回答

潇潇雨雨

首先,您需要y_train通过以下方式转换为 one-hot 编码from sklearn.preprocessing import LabelEncoderfrom keras.utils import np_utilsencoder = LabelEncoder()encoder.fit(y_train)encoded_y = encoder.transform(y_train)y_train = np_utils.to_categorical(encoded_y)运行这段代码,y_train将变成array([[1., 0.],       [1., 0.],       [1., 0.],       [1., 0.],       [1., 0.],       [1., 0.],       [1., 0.],       [0., 1.],       [0., 1.],       [0., 1.],       [0., 1.]], dtype=float32)其次,您需要将输出层更改为model.add(Dense(2, activation='softmax'))通过这两个修改,您将获得所需的输出。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python