Como criar uma matriz de confusão em python
A regressão logística é um tipo de regressão que podemos usar quando a variável de resposta é binária.
Uma forma comum de avaliar a qualidade de um modelo de regressão logística é criar uma matriz de confusão , que é uma tabela 2×2 que mostra os valores previstos do modelo versus os valores reais do conjunto de dados de teste.
Para criar uma matriz de confusão para um modelo de regressão logística em Python, podemos usar a função confusão_matrix() do pacote sklearn :
from sklearn import metrics metrics.metrics. confusion_matrix (y_actual, y_predicted)
O exemplo a seguir mostra como usar esta função para criar uma matriz de confusão para um modelo de regressão logística em Python.
Exemplo: Criando uma Matriz de Confusão em Python
Suponha que temos as duas tabelas a seguir contendo os valores reais de uma variável de resposta, bem como os valores previstos por um modelo de regressão logística:
#define array of actual values y_actual = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] #define array of predicted values y_predicted = [0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1]
Podemos usar a função confusão_matrix() do sklearn para criar uma matriz de confusão para estes dados:
from sklearn import metrics #create confusion matrix c_matrix = metrics. confusion_matrix (y_actual, y_predicted) #print confusion matrix print (c_matrix) [[6 4] [2 8]]
Se quisermos, podemos usar a função crosstab() do pandas para criar uma matriz de confusão mais visualmente atraente:
import pandas as pd y_actual = pd. Series (y_actual, name=' Actual ') y_predicted = pd. Series (y_predicted, name=' Predicted ') #create confusion matrix print (pd. crosstab (y_actual, y_predicted)) Predicted 0 1 Current 0 6 4 1 2 8
As colunas mostram os valores previstos para a variável resposta e as linhas mostram os valores reais.
Também podemos calcular exatidão, precisão e recall usando funções do pacote sklearn:
#print accuracy of model print ( metrics.accuracy_score (y_actual, y_predicted)) 0.7 #print precision value of model print ( metrics.precision_score (y_actual, y_predicted)) 0.667 #print recall value of model print (metrics. recall_score (y_actual, y_predicted)) 0.8
Aqui está uma rápida atualização sobre exatidão, precisão e recall:
- Precisão : porcentagem de previsões corretas
- Precisão : Previsões positivas corretas em relação ao total de previsões positivas
- Lembrete : corrigindo previsões positivas em relação ao total de positivos reais
E aqui está como cada uma dessas métricas foi calculada em nosso exemplo:
- Precisão : (6+8) / (6+4+2+8) = 0,7
- Precisão : 8 / (8+4) = 0,667
- Lembrete : 8 / (2+8) = 0,8
Recursos adicionais
Introdução à regressão logística
Os 3 tipos de regressão logística
Regressão logística vs regressão linear