Introdução
Neste projeto, você aprenderá como implementar uma matriz de confusão (confusion matrix), que é uma ferramenta fundamental para avaliar o desempenho de um modelo de classificação. A matriz de confusão fornece uma análise detalhada das previsões do modelo, permitindo que você identifique áreas para melhoria e obtenha informações valiosas sobre os pontos fortes e fracos do modelo.
🎯 Tarefas
Neste projeto, você aprenderá:
- Como implementar a função
confusion_matrixpara calcular a matriz de confusão para um problema de classificação - Como testar e refinar a função
confusion_matrixpara lidar com casos extremos (edge cases) e melhorar sua robustez - Como documentar a função
confusion_matrixpara torná-la mais amigável ao usuário e mais fácil de entender - Como integrar a função
confusion_matrixem um projeto de machine learning maior e usá-la para avaliar o desempenho de um modelo de classificação
🏆 Conquistas
Após concluir este projeto, você será capaz de:
- Calcular e interpretar a matriz de confusão para um problema de classificação
- Aplicar técnicas para lidar com casos extremos (edge cases) e melhorar a robustez de uma função
- Implementar as melhores práticas para documentar e tornar o código mais amigável ao usuário
- Aplicar a matriz de confusão no contexto de um projeto de machine learning maior
Implementar a Função da Matriz de Confusão
Nesta etapa, você implementará a função confusion_matrix no arquivo confusion_matrix.py. Esta função calculará a matriz de confusão para um problema de classificação.
A função confusion_matrix recebe três entradas:
labels: Uma lista de rótulos representando as diferentes classes.preds: Uma lista de previsões, onde cada previsão é uma lista de probabilidades correspondentes às classes na listalabels.ground_truth: Uma lista de rótulos de verdade fundamental (ground truth).
A função deve retornar a matriz de confusão como uma lista de listas, onde cada lista interna representa uma linha na matriz.
Aqui está o código inicial para a função confusion_matrix:
def confusion_matrix(
labels: List, preds: List[List[float]], ground_truth: List
) -> List[List[int]]:
"""
Calcular a matriz de confusão para um problema de classificação.
A função recebe uma lista de rótulos, uma lista de previsões (cada uma como uma lista de probabilidades
para cada classe) e uma lista de rótulos de verdade fundamental, e retorna uma matriz de confusão.
A matriz de confusão é uma matriz quadrada onde a entrada (i, j) é o número de vezes que a classe i
foi prevista quando a classe verdadeira era j.
Parâmetros:
labels (List): Uma lista de rótulos representando as diferentes classes.
preds (List[List[float]]): Uma lista de previsões onde cada previsão é uma lista de
probabilidades correspondentes às classes na lista de rótulos.
ground_truth (List): Uma lista de rótulos de verdade fundamental.
Retorna:
List[List[int]]: A matriz de confusão representada como uma lista de listas onde cada lista
representa uma linha na matriz.
"""
## Isso cria uma matriz quadrada com dimensões iguais ao número de classes, inicializando todos os elementos com zero. Cada linha e coluna corresponde a um rótulo de classe.
matrix = [[0 for _ in range(len(labels))] for _ in range(len(labels))]
## Este loop associa cada previsão com seu rótulo de verdade fundamental correspondente e os processa um por um.
for pred, truth in zip(preds, ground_truth):
## Usa NumPy para encontrar o índice da maior probabilidade na lista de previsão, que corresponde à classe prevista.
pred_index = np.argmax(pred)
## Encontra o índice do rótulo da classe verdadeira na lista `labels`.
truth_index = labels.index(truth)
## Esta linha incrementa a célula na interseção da linha da classe prevista e da coluna da classe verdadeira na matriz de confusão, efetivamente contando a ocorrência deste par específico previsão-verdade.
matrix[pred_index][truth_index] += 1
## Após processar todas as previsões, a função retorna a matriz de confusão calculada.
return matrix
Na função confusion_matrix, você implementa a lógica para calcular a matriz de confusão para um problema de classificação.
Testar a Função da Matriz de Confusão
Nesta etapa, você testará a função confusion_matrix usando o exemplo fornecido.
Adicione o seguinte código no arquivo confusion_matrix.py:
if __name__ == "__main__":
labels = ["Python", "Java", "C++"]
preds = [
[0.66528198, 0.21971853, 0.11499949],
[0.34275858, 0.05847305, 0.59876836],
[0.47650585, 0.26353373, 0.25996042],
[0.76153846, 0.15384615, 0.08461538],
[0.04691943, 0.9478673, 0.00521327],
]
ground_truth = ["Python", "C++", "Java", "C++", "Java"]
matrix = confusion_matrix(labels, preds, ground_truth)
print(matrix)
Execute o arquivo confusion_matrix.py para executar o exemplo:
python confusion_matrix.py
A saída deve ser:
[[1, 1, 1],
[0, 1, 0],
[0, 0, 1]]
Verifique se a saída corresponde à matriz de confusão esperada.
Se a saída não for a esperada, revise a implementação da função confusion_matrix e faça as correções necessárias.
Resumo
Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.



