Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Matriz de Confusión | Comparación de Modelos
Clasificación con Python

Matriz de Confusión

Desliza para mostrar el menú

Al realizar una predicción para un problema de clasificación binaria, solo existen cuatro posibles resultados:

ConfusionMatrix

En la imagen anterior, los valores reales (etiquetas verdaderas) están ordenados de arriba hacia abajo en orden descendente, mientras que los valores predichos están ordenados de izquierda a derecha en orden ascendente. Este es el diseño predeterminado utilizado por scikit-learn al mostrar matrices de confusión.

Note
Nota

Diferentes bibliotecas o visualizaciones pueden utilizar una disposición diferente; por ejemplo, colocar los valores reales en el eje x y los valores predichos en el eje y. Sin embargo, la única diferencia es la disposición; los valores en la matriz permanecen iguales.

Estos resultados se denominan verdadero positivo (TP), verdadero negativo (TN), falso positivo (FP) y falso negativo (FN). "verdadero" o "falso" indica si la predicción es correcta, mientras que "positivo" o "negativo" se refiere a si la clase predicha es 1 o 0.

Esto significa que existen dos tipos de errores que se pueden cometer: falsos positivos y falsos negativos. Una predicción de falso positivo también se conoce como error de tipo 1, mientras que una predicción de falso negativo se denomina error de tipo 2.

embarazada

Matriz de confusión

La primera forma de analizar el rendimiento del modelo es organizar las predicciones en una matriz de confusión como esta:

ConfusionMatrix1

Puedes construir una matriz de confusión en Python utilizando la función confusion_matrix() de sklearn:

from sklearn.metrics import confusion_matrix

conf_matrix = confusion_matrix(y_true, y_pred)

Para una mejor visualización, puedes usar la función heatmap() de seaborn:

sns.heatmap(conf_matrix)

Ejemplo de cálculo de la matriz de confusión para una predicción de Random Forest en el conjunto de datos Titanic:

12345678910111213141516
import pandas as pd import seaborn as sns from sklearn.metrics import confusion_matrix from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split # Read the data and assign the variables df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/titanic.csv') X, y = df.drop('Survived', axis=1), df['Survived'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) # Build and train a Random Forest and predict target for a test set random_forest = RandomForestClassifier().fit(X_train, y_train) y_pred = random_forest.predict(X_test) # Build a confusion matrix conf_matrix = confusion_matrix(y_test, y_pred) sns.heatmap(conf_matrix, annot=True);

También es posible graficar los porcentajes en lugar del recuento de instancias utilizando el parámetro normalize:

conf_matrix = confusion_matrix(y_true, y_pred, normalize='all')
12345678910111213141516
import pandas as pd import seaborn as sns from sklearn.metrics import confusion_matrix from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split # Read the data and assign the variables df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/titanic.csv') X, y = df.drop('Survived', axis=1), df['Survived'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) # Build and train a Random Forest and predict target for a test set random_forest = RandomForestClassifier().fit(X_train, y_train) y_pred = random_forest.predict(X_test) # Build a confusion matrix conf_matrix = confusion_matrix(y_test, y_pred, normalize='all') sns.heatmap(conf_matrix, annot=True);
question mark

¿Cuál es el propósito de la matriz de confusión?

Selecciona la respuesta correcta

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 5. Capítulo 1

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Sección 5. Capítulo 1
some-alt