En Scikit-Learn tenemos acceso a esta función en sklearn.metrics.recall_score:
from sklearn.metrics import recall_score
y_real = [0, 1, 1, 0, 1]
y_pred = [0, 1, 0, 1, 0]
recall_score(y_real, y_pred)
0.3333333333333333
En este ejemplo hemos detectado correctamente un valor de los tres que había en la variable objetivo, por lo que la exhaustividad ha sido de 1/3 = 0.333.
Otro ejemplo: si de 100 transacciones hay una fraudulenta, y hemos marcado las 100 como fraudulentas, nuestra precisión (ratio entre positivos verdaderos, 1, y positivos totales predichos, 100) sería de 1 / 100 = 0.01 y la exhaustividad sería el ratio entre los positivos verdaderos, 1, y los positivos reales, 1: 1/1 = 1
y_real = [1] + [0] * 99
y_pred = [1] * 100
np.flip(confusion_matrix(y_real, y_pred).T)
precision_score(y_real, y_pred, labels = [0, 1], pos_label = 1)
0.01
recall_score(y_real, y_pred, labels = [0, 1], pos_label = 1)
1.0