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.