keras:keras.model.evaluate和sklearn.accuracy_score之间的准确度得分不同

时间:2018-03-15 13:49:01

标签: python-3.x scikit-learn keras

我有keras模型(称为model)。

    model.compile(loss='binary_crossentropy',
                  optimizer='adam',
                  metrics=['accuracy'])
    model.fit(X_train, Y_train, batch_size=batch_size, epochs=nb_epoch,
                  validation_data=(X_test, Y_test))
    score, acc = model.evaluate(X_test, Y_test,
                                    batch_size=batch_size)

from sklearn.metrics import accuracy_score
preds = model.predict_classes(X_test, verbose=0)
print('prediction  accuracy: ', accuracy_score(y_test, preds))

这里的问题是两个准确度分数不同。我不知道它是如何可能的,因为它们是基于相同的数据计算的。

你能给我一些提示吗?

更新

此外,我在培训时val_acc和最后一步accuracy看到了巨大差异。即使我使用相同的测试集进行培训和评估。

model.fit(X_train, Y_train, batch_size=batch_size, epochs=nb_epoch, validation_data=(X_test, Y_test))

这是我的培训过程:

Epoch 16/20 16256/16256 [==============================] - 3s - loss: 0.1011 - acc: 0.9604 - val_loss: 0.1191 - val_acc: 0.9545 Epoch 17/20 16256/16256 [==============================] - 4s - loss: 0.0986 - acc: 0.9615 - val_loss: 0.1224 - val_acc: 0.9536 Epoch 18/20 16256/16256 [==============================] - 3s - loss: 0.0965 - acc: 0.9622 - val_loss: 0.1197 - val_acc: 0.9550 Epoch 19/20 16256/16256 [==============================] - 3s - loss: 0.0946 - acc: 0.9631 - val_loss: 0.1213 - val_acc: 0.9542 Epoch 20/20 16256/16256 [==============================] - 3s - loss: 0.0929 - acc: 0.9634 - val_loss: 0.1288 - val_acc: 0.9519

val_acc达到0.95。

但是当我这样做时:

preds = model.predict_classes(X_test, verbose=0) print('prediction 8 accuracy: ', accuracy_score(test['Rating'], preds+1))

准确度分数仅为0.68

我注意到Y_testy_test是相同的 Y_test = np_utils.to_categorical(y_test, nb_classes)

0 个答案:

没有答案