calculate precision and recall in a confusion matrix

calculate precision and recall from confusion matrix python
precision-recall curve
f1 score formula
precision vs recall vs accuracy
calculate precision and recall python
why precision and recall is important
precision, recall, sensitivity, specificity
precision and recall example

Suppose I have a confusion matrix as like as below. How can I calculate precision and recall?

first, your matrix is arranged upside down. You want to arrange your labels so that true positives are set on the diagonal [(0,0),(1,1),(2,2)] this is the arrangement that you're going to find with confusion matrices generated from sklearn and other packages.

Once we have things sorted in the right direction, we can take a page from this answer and say that:

  1. True Positives are on the diagonal position
  2. False positives are column-wise sums. Without the diagonal
  3. False negatives are row-wise sums. Without the diagonal.

\ Then we take some formulas from sklearn docs for precision and recall. And put it all into code:

import numpy as np
cm = np.array([[2,1,0], [3,4,5], [6,7,8]])
true_pos = np.diag(cm)
false_pos = np.sum(cm, axis=0) - true_pos
false_neg = np.sum(cm, axis=1) - true_pos

precision = np.sum(true_pos / (true_pos + false_pos))
recall = np.sum(true_pos / (true_pos + false_neg))

Since we remove the true positives to define false_positives/negatives only to add them back... we can simplify further by skipping a couple of steps:

 true_pos = np.diag(cm) 
 precision = np.sum(true_pos / np.sum(cm, axis=0))
 recall = np.sum(true_pos / np.sum(cm, axis=1))

Beyond Accuracy: Precision and Recall | by Will Koehrsen, First up is the confusion matrix which is useful for quickly calculating precision and recall given the predicted labels from a model. A confusion� Confusion Matrix, Accuracy, Precision, Recall, F1 Score. Binary Classification Metric. F1 score is the harmonic mean of precision and recall and is a better measure than accuracy.

I don't think you need summation at last. Without summation, your method is correct; it gives precision and recall for each class.

If you intend to calculate average precision and recall, then you have two options: micro and macro-average.

Read more here http://scikit-learn.org/stable/auto_examples/model_selection/plot_precision_recall.html

Accuracy, Precision, Recall or F1? | by Koo Ping Shung, Firstly, let us look at the following confusion matrix. What is you will see that the the formula for calculating Precision and Recall is as follows:. First up is the confusion matrix which is useful for quickly calculating precision and recall given the predicted labels from a model. A confusion matrix for binary classification shows the four different outcomes: true positive, false positive, true negative, and false negative.

For the sake of completeness for future reference, given a list of grounth (gt) and prediction (pd). The following code snippet computes confusion matrix and then calculates precision and recall.

from sklearn.metrics import confusion_matrix

gt = [1,1,2,2,1,0]
pd = [1,1,1,1,2,0]

cm = confusion_matrix(gt, pd)

#rows = gt, col = pred

#compute tp, tp_and_fn and tp_and_fp w.r.t all classes
tp_and_fn = cm.sum(1)
tp_and_fp = cm.sum(0)
tp = cm.diagonal()

precision = tp / tp_and_fp
recall = tp / tp_and_fn

How do you calculate precision and recall for multiclass , In a 2-hypothesis case, the confusion matrix is usually: | Declare H1 | Declare H0 | |Is H1 | TP | FN | |Is H0 | FP | TN |. where I've used something similar to your� The following code snippet computes confusion matrix and then calculates precision and recall. from sklearn.metrics import confusion_matrix gt = [1,1,2,2,1,0] pd = [1,1,1,1,2,0] cm = confusion_matrix(gt, pd) #rows = gt, col = pred #compute tp, tp_and_fn and tp_and_fp w.r.t all classes tp_and_fn = cm.sum(1) tp_and_fp = cm.sum(0) tp = cm.diagonal

Given:

hypothetical confusion matrix (cm)

cm = 
[[ 970    1    2    1    1    6   10    0    5    0]
 [   0 1105    7    3    1    6    0    3   16    0]
 [   9   14  924   19   18    3   13   12   24    4]
 [   3   10   35  875    2   34    2   14   19   19]
 [   0    3    6    0  903    0    9    5    4   32]
 [   9    6    4   28   10  751   17    5   24    9]
 [   7    2    6    0    9   13  944    1    7    0]
 [   3   11   17    3   16    3    0  975    2   34]
 [   5   38   10   16    7   28    5    4  830   20]
 [   5    3    5   13   39   10    2   34    5  853]]
Goal:

precision and recall for each class using map() to calculate list division.

from operator import truediv
import numpy as np

tp = np.diag(cm)
prec = list(map(truediv, tp, np.sum(cm, axis=0)))
rec = list(map(truediv, tp, np.sum(cm, axis=1)))
print ('Precision: {}\nRecall: {}'.format(prec, rec))
Result:
Precision: [0.959, 0.926, 0.909, 0.913, 0.896, 0.880, 0.941, 0.925, 0.886, 0.877]
Recall:    [0.972, 0.968, 0.888, 0.863, 0.937, 0.870, 0.954, 0.916, 0.861, 0.880]

please note: 10 classes, 10 precisions and 10 recalls.

Idiot's Guide to Precision, Recall, and Confusion Matrix, Idiot's Guide to Precision, Recall, and Confusion Matrix RMSE is a good measure to evaluate how a machine learning model is performing. If RMSE is� Fmeasure = (2 * Recall * Precision) / (Recall + Presision) = (2 * 0.95 * 0.91) / (0.91 + 0.95) = 0.92. Here is a python script which demonstrates how to create a confusion matrix on a predicted model. For this, we have to import the confusion matrix module from sklearn library which helps us to generate the confusion matrix.

How Are Precision and Recall Calculated?, Tilmann Bruckhaus answers: Calculating precision and recall is actually quite easy. Imagine there are 100 positive cases among 10000 cases. You want to� I first created a list with the true classes of the images (y_true), and the predicted classes (y_pred). Usually y_pred will be generated using the classifier — here I set its values manually to match the confusion matrix. In line 14, the confusion matrix is printed, and then in line 17 the precision and recall is printed for the three classes.

Precision and recall, In pattern recognition, information retrieval and classification (machine learning), precision is Precision can be seen as a measure of quality, and recall as a measure of quantity. Higher precision means for some condition. The four outcomes can be formulated in a 2�2 contingency table or confusion matrix, as follows:� A Confusion Matrix is a popular representation of the performance of classification models. The matrix (table) shows us the number of correctly and incorrectly classified examples, compared to the actual outcomes (target value) in the test data.

Confusion Matrix, A Confusion Matrix is a popular representation of the performance of than simple proportion of correctly classified examples (accuracy) which can give� In pattern recognition, information retrieval and classification (machine learning), precision (also called positive predictive value) is the fraction of relevant instances among the retrieved instances, while recall (also known as sensitivity) is the fraction of the total amount of relevant instances that were actually retrieved.

Comments
  • for future reference: the summation at the end is incorrect (last two lines), it should be mean (average) to calculate the average precision and average recall. without the summation, you would get an individual precision and recall for each class.