4

I have the following NN model using Keras:

import numpy as np
from keras import Sequential
from keras.layers import Dense

path = 'pima-indians-diabetes.data.csv'
dataset = np.loadtxt(path, delimiter=",")
X = dataset[:,0:8]
Y = dataset[:,8]
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.2)

model = Sequential()
model.add(Dense(16, input_dim=8, activation='relu'))
model.add(Dense(32, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X_train, y_train, epochs=100, batch_size=16, validation_data=(X_test, y_test))

Kindly, is it possible to extract the confusion matrix? How?

Kristofer
  • 1,457
  • 2
  • 19
  • 27

2 Answers2

15

You can use scikit-learn:

y_pred = model.predict(X_test)
confusion_matrix = sklearn.metrics.confusion_matrix(y_test, np.rint(y_pred))
marco romelli
  • 1,143
  • 8
  • 19
2

It can be done using TensorFlow (which is almost Keras =)).

You start by making predictions on your test set with your trained model:

predictions = model.predict(x_test)

Then you can import TensorFlow and use its confusion_matrix method as follows.

import tensorflow as tf
conf_matrix = tf.math.confusion_matrix(labels=y_test,
                                       predictions=predictions)

More information in the TensorFlow documentation.

Jakob
  • 663
  • 7
  • 25