Estou usando a matriz de confusão para verificar o desempenho do meu classificador.
Estou usando o Scikit-Learn, estou um pouco confuso. Como posso interpretar o resultado de
from sklearn.metrics import confusion_matrix
>>> y_true = [2, 0, 2, 2, 0, 1]
>>> y_pred = [0, 0, 2, 2, 0, 2]
>>> confusion_matrix(y_true, y_pred)
array([[2, 0, 0],
[0, 0, 1],
[1, 0, 2]])
Como posso decidir se esses valores previstos são bons ou não.
predictive-models
prediction
confusion-matrix
user3378649
fonte
fonte
Respostas:
A matriz de confusão é uma maneira de tabular o número de erros de classificação, ou seja, o número de classes previstas que terminaram em uma posição errada na classificação com base nas classes verdadeiras.
Enquanto sklearn.metrics.confusion_matrix fornece uma matriz numérica, acho mais útil gerar um 'relatório' usando o seguinte:
o que resulta em:
Isso nos permite ver que:
y_true
ey_pred
, dos subtotais "Todos"Esse método também funciona para rótulos de texto e, para um grande número de amostras no conjunto de dados, pode ser estendido para fornecer relatórios de porcentagem.
A saída é então:
onde os números agora representam a porcentagem (e não o número de casos) dos resultados que foram classificados.
Embora observe que a
sklearn.metrics.confusion_matrix
saída pode ser visualizada diretamente usando:fonte
AssertionError: arrays and names must have the same length
y_pred = pd.Series(...)
. Isso deve funcionar agora.No eixo y, a matriz de confusão possui os valores reais e, no eixo x, os valores fornecidos pelo preditor. Portanto, as contagens na diagonal são o número de previsões corretas. E os elementos da diagonal são previsões incorretas.
No seu caso:
fonte
Gostaria de especificar graficamente a necessidade de entender isso. É uma matriz simples que precisa ser bem compreendida antes de se chegar a conclusões. Então, aqui está uma versão explicável simplificada das respostas acima.
fonte