Saltar al contenido

Scikit-learn: Cómo obtener Verdadero Positivo, Verdadero Negativo, Falso Positivo y Falso Negativo

Te doy la bienvenida a nuestra comunidad, en este sitio encontrarás la solucíon que estás buscando.

Para el caso de clases múltiples, todo lo que necesita se puede encontrar en la matriz de confusión. Por ejemplo, si su matriz de confusión se ve así:

matriz de confusión

Entonces, lo que está buscando, por clase, se puede encontrar así:

cubrir

Usando pandas/numpy, puedes hacer esto para todas las clases a la vez así:

FP = confusion_matrix.sum(axis=0) - np.diag(confusion_matrix)  
FN = confusion_matrix.sum(axis=1) - np.diag(confusion_matrix)
TP = np.diag(confusion_matrix)
TN = confusion_matrix.values.sum() - (FP + FN + TP)

# Sensitivity, hit rate, recall, or true positive rate
TPR = TP/(TP+FN)
# Specificity or true negative rate
TNR = TN/(TN+FP) 
# Precision or positive predictive value
PPV = TP/(TP+FP)
# Negative predictive value
NPV = TN/(TN+FN)
# Fall out or false positive rate
FPR = FP/(FP+TN)
# False negative rate
FNR = FN/(TP+FN)
# False discovery rate
FDR = FP/(TP+FP)

# Overall accuracy
ACC = (TP+TN)/(TP+FP+FN+TN)

Si tiene dos listas que tienen los valores pronosticados y reales; como parece que lo hace, puede pasarlos a una función que calculará TP, FP, TN, FN con algo como esto:

def perf_measure(y_actual, y_hat):
    TP = 0
    FP = 0
    TN = 0
    FN = 0

    for i in range(len(y_hat)): 
        if y_actual[i]==y_hat[i]==1:
           TP += 1
        if y_hat[i]==1 and y_actual[i]!=y_hat[i]:
           FP += 1
        if y_actual[i]==y_hat[i]==0:
           TN += 1
        if y_hat[i]==0 and y_actual[i]!=y_hat[i]:
           FN += 1

    return(TP, FP, TN, FN)

Desde aquí, creo que podrá calcular las tasas de interés para usted y otras medidas de rendimiento como la especificidad y la sensibilidad.

Según la documentación de scikit-learn,

http://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html#sklearn.metrics.confusion_matrix

Por definición, una matriz de confusión C es tal que C[i, j] es igual al número de observaciones que se sabe que están en el grupo i pero se predijo que estaría en grupo j.

Así, en la clasificación binaria, el recuento de true negativos es C[0,0], false negativos es C[1,0], true positivo es C[1,1] y false positivo es C[0,1].

CM = confusion_matrix(y_true, y_pred)

TN = CM[0][0]
FN = CM[1][0]
TP = CM[1][1]
FP = CM[0][1]

Sección de Reseñas y Valoraciones

Al final de la página puedes encontrar las explicaciones de otros programadores, tú aún tienes la libertad de mostrar el tuyo si lo deseas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *