title: How to extract False Positive, False Negative from a confusion matrix of multiclass classification
body: <p>I am classifying mnist data using following Keras code. From <code>confusion_matrix</code> command of <code>sklearn.metrics</code> i got confusion matrix and from <code>TruePositive= sum(numpy.diag(cm1))</code> command i am able to get True Positive. But i am confuse how to get True Negative , False Positive, False Negative. I read solution from <a href="https://stats.stackexchange.com/questions/21551/how-to-compute-precision-recall-for-multiclass-multilabel-classification">here</a> but user comments confuse me. please help to code to get parameters. </p>
  
  <pre><code>from sklearn.metrics import confusion_matrix
  import keras
  from keras.datasets import mnist
  from keras.models import Sequential
  from keras.layers import Dense, Dropout, Flatten
  from keras.layers import Conv2D, MaxPooling2D
  from keras import backend as K
  import numpy as np
  (x_train, y_train), (x_test, y_test) = mnist.load_data()
  batch_size = 128
  num_classes = 10
  epochs = 1
  img_rows, img_cols = 28, 28
  y_test1=y_test
  
  if K.image_data_format() == 'channels_first':
      x_train = x_train.reshape(x_train.shape[0], 1, img_rows, img_cols)
      x_test = x_test.reshape(x_test.shape[0], 1, img_rows, img_cols)
      input_shape = (1, img_rows, img_cols)
  else:
      x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1)
      x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1)
      input_shape = (img_rows, img_cols, 1)
  
  x_train = x_train.astype('float32')
  x_test = x_test.astype('float32')
  x_train /= 255
  x_test /= 255
  
  y_train = keras.utils.to_categorical(y_train, num_classes)
  y_test = keras.utils.to_categorical(y_test, num_classes)
  
  model = Sequential()
  model.add(Conv2D(32, kernel_size=(3, 3),
                   activation='relu',
                   input_shape=input_shape))
  model.add(Conv2D(64, (3, 3), activation='relu'))
  model.add(MaxPooling2D(pool_size=(2, 2)))
  model.add(Dropout(0.25))
  model.add(Flatten())
  #model.add(GlobalAveragePooling2D())
  #model.add(GlobalMaxPooling2D())
  model.add(Dense(128, activation='relu'))
  model.add(Dropout(0.5))
  model.add(Dense(num_classes, activation='softmax'))
  
  model.compile(loss=keras.losses.binary_crossentropy,
                optimizer=keras.optimizers.Adadelta(),
                metrics=['accuracy'])
  
  
  
  model.fit(x_train, y_train,
            batch_size=batch_size,
            epochs=epochs,
            verbose=1,
            validation_data=(x_test, y_test))
  
  pre_cls=model.predict_classes(x_test)
  
  cm1 = confusion_matrix(y_test1,pre_cls)
  print('Confusion Matrix : \n', cm1)
  
  TruePositive= sum(np.diag(cm1))
  </code></pre>