Poniendo otro ejemplo numérico, si las clases son [0, 1, 1, 0, 1], y la predicción ha sido [0, 1, 0, 1, 0], suponiendo que la clase relevante sea la clase 1, la precisión será 1 / 2 = 0.5 (hay un positivo verdadero, es decir, un valor 1 que ha sido predicho como tal, y se han predicho dos positivos en total, es decir, hay dos valores 1 en la predicción). Por supuesto, si la clase relevante es la clase 0, la precisión será de 1/3 = 0.33333 (1 positivo verdadero y tres positivos detectados).
En Scikit-Learn se ofrece esta función en sklearn.metrics.precision_score:
from sklearn.metrics import precision_score
y_real = [0, 1, 1, 0, 1]
y_pred = [0, 1, 0, 1, 0]
precision_score(y_real, y_pred)
0.5
Esta función permite especificar cuál es la clase relevante. Así, si la clase relevante es la 0:
y_real = [0, 1, 1, 0, 1]
y_pred = [0, 1, 0, 1, 0]
precision_score(y_real, y_pred, labels = [0, 1], pos_label = 0)
0.3333333333333333
Y si fuese la 1 y quisiéramos asegurarnos de que se considera así:
y_real = [0, 1, 1, 0, 1]
y_pred = [0, 1, 0, 1, 0]
precision_score(y_real, y_pred, labels = [0, 1], pos_label = 1)
0.5