У меня проблема с керасом sequential().predict(x_test)
.
Кстати, получаю тот же вывод, используя sequential().predict_proba(x_test)
, поскольку я обнаружил, что эти два безразличны в последовательном порядке.
Мои данные имеютдва класса: 0 или 1, я считаю, predict(x_test)
должно давать два столбца, где первый столбец - это вероятность получения 0, а второй - вероятность получения 1. Однако у меня есть только один столбец с этим.
In [85]:y_train.value_counts()
Out[85]:
0 616751
1 11140
Name: _merge, dtype: int64
Не должно быть проблем с моими данными, поскольку я использовал один и тот же x_train, y_train, x_test, y_test как для модели LogisticRegression, так и для модели нейронной сети, она отлично работает в LogisticRegression.
In [87]:y_pred_LR
Out[87]:
array([[ 9.96117151e-01, 3.88284921e-03],
[ 9.99767583e-01, 2.32417329e-04],
[ 9.87375774e-01, 1.26242258e-02],
...,
[ 9.72159138e-01, 2.78408623e-02],
[ 9.97232916e-01, 2.76708432e-03],
[ 9.98146985e-01, 1.85301489e-03]])
, но яполучить только 1 столбец в модели нейронной сети.
Итак, я думаю, что есть какая-то проблема с настройкой модели NN?Вот мои коды
NN = Sequential()
NN.add(Dense(40, input_dim = 65, kernel_initializer = 'uniform', activation = 'relu'))
NN.add(Dense(20, kernel_initializer = 'uniform', activation = 'relu'))
NN.add(Dense(1, kernel_initializer = 'uniform', activation = 'sigmoid'))
NN.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])
NN.fit(x_train, y_train, batch_size = 50, epochs=5)
y_pred_NN = NN.predict(x_test)
print(y_pred_NN)
In [86]: print(y_pred_NN)
[[ 0.00157279]
[ 0.0010451 ]
[ 0.03178826]
...,
[ 0.01030775]
[ 0.00584918]
[ 0.00186538]]
На самом деле похоже, что это вероятность получения 1?Любая помощь приветствуется!
Кстати, мои прогнозы в обеих моделях следующие:
In [91]:y_pred_LR.shape
Out[91]: (300000, 2)
In [90]:y_pred_NN.shape
Out[90]: (300000, 1)