Matriz de Confusão com Scikit-Learn

Beginner

This tutorial is from open-source community. Access the source code

Introdução

A matriz de confusão é uma ferramenta para avaliar o desempenho de um algoritmo de classificação. É uma tabela que resume o desempenho de um modelo de classificação comparando as etiquetas de classe previstas com as etiquetas de classe reais. Este tutorial demonstra como usar a biblioteca scikit-learn para gerar uma matriz de confusão e visualizar seus resultados.

Dicas da Máquina Virtual

Após o arranque da máquina virtual, clique no canto superior esquerdo para mudar para a aba Notebook para aceder ao Jupyter Notebook para praticar.

Por vezes, pode ser necessário esperar alguns segundos para o Jupyter Notebook terminar de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se tiver problemas durante a aprendizagem, não hesite em contactar o Labby. Forneça feedback após a sessão e resolveremos prontamente o problema para si.

Importar Bibliotecas

Primeiro, precisamos importar as bibliotecas necessárias. Usaremos scikit-learn, matplotlib, numpy e datasets.

import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import ConfusionMatrixDisplay

Carregar Dados

Usaremos o conjunto de dados iris do scikit-learn. O conjunto de dados contém 150 amostras, cada uma com quatro características e uma etiqueta de destino.

iris = datasets.load_iris()
X = iris.data
y = iris.target
class_names = iris.target_names

Dividir Dados

Dividiremos o conjunto de dados em um conjunto de treinamento e um conjunto de teste. O conjunto de treinamento será usado para treinar o modelo, e o conjunto de teste será usado para avaliar o desempenho do modelo.

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

Treinar Modelo

Treinaremos um classificador de máquina de vetores de suporte (SVM) usando um kernel linear. Usaremos um parâmetro de regularização C que é muito baixo para observar o impacto nos resultados.

classifier = svm.SVC(kernel="linear", C=0.01).fit(X_train, y_train)

Gerar Matriz de Confusão

Geraremos uma matriz de confusão usando a classe ConfusionMatrixDisplay do scikit-learn. A matriz de confusão mostrará o número de previsões corretas e incorretas para cada classe.

np.set_printoptions(precision=2)
disp = ConfusionMatrixDisplay.from_estimator(
    classifier,
    X_test,
    y_test,
    display_labels=class_names,
    cmap=plt.cm.Blues,
    normalize=None,
)

Visualizar Matriz de Confusão

Visualizaremos a matriz de confusão usando matplotlib. Plotaremos tanto uma matriz de confusão não normalizada quanto uma matriz de confusão normalizada.

titles_options = [
    ("Matriz de confusão, sem normalização", None),
    ("Matriz de confusão normalizada", "true"),
]
for title, normalize in titles_options:
    disp = ConfusionMatrixDisplay.from_estimator(
        classifier,
        X_test,
        y_test,
        display_labels=class_names,
        cmap=plt.cm.Blues,
        normalize=normalize,
    )
    disp.ax_.set_title(title)
    print(title)
    print(disp.confusion_matrix)
plt.show()

Resumo

Neste tutorial, aprendemos como usar a biblioteca scikit-learn para gerar uma matriz de confusão e visualizar seus resultados. Carregamos o conjunto de dados iris, dividimos-o em conjuntos de treinamento e teste, treinamos um classificador de máquina de vetores de suporte e geramos e visualizamos uma matriz de confusão. A matriz de confusão mostrou o número de previsões corretas e incorretas para cada classe, e a visualização nos ajudou a interpretar os resultados.