Введение
В этом проекте вы научитесь реализовывать матрицу ошибок, которая является фундаментальным инструментом для оценки производительности классификационного модели. Матрица ошибок предоставляет детальное разбиение предсказаний модели, позволяя вам определить области для улучшения и получить ценные инсайты о сильных и слабых сторонах модели.
🎯 Задачи
В этом проекте вы научитесь:
- Как реализовать функцию
confusion_matrixдля вычисления матрицы ошибок для классификационной задачи - Как протестировать и усовершенствовать функцию
confusion_matrixдля обработки крайних случаев и повышения ее надежности - Как документировать функцию
confusion_matrix, чтобы сделать ее более пользователь-friendly и легче понять - Как интегрировать функцию
confusion_matrixв более крупный проект машинного обучения и использовать ее для оценки производительности классификационной модели
🏆 Достижения
После завершения этого проекта вы сможете:
- Вычислять и интерпретировать матрицу ошибок для классификационной задачи
- Применять методы обработки крайних случаев и повышения надежности функции
- Реализовывать лучшие практики по документированию и повышению пользователь-friendliness кода
- Применять матрицу ошибок в контексте более крупного проекта машинного обучения
Реализовать функцию матрицы ошибок
В этом шаге вы реализуете функцию confusion_matrix в файле confusion_matrix.py. Эта функция будет вычислять матрицу ошибок для классификационной задачи.
Функция confusion_matrix принимает три входных параметра:
labels: Список меток, представляющих разные классы.preds: Список предсказаний, где каждое предсказание - это список вероятностей, соответствующих классам в спискеlabels.ground_truth: Список истинных меток.
Функция должна возвращать матрицу ошибок в виде списка списков, где каждый внутренний список представляет строку в матрице.
Вот начальный код для функции confusion_matrix:
def confusion_matrix(
labels: List, preds: List[List[float]], ground_truth: List
) -> List[List[int]]:
"""
Compute the confusion matrix for a classification problem.
The function takes a list of labels, a list of predictions (each as a list of probabilities
for each class), and a list of ground truth labels, and returns a confusion matrix.
The confusion matrix is a square matrix where entry (i, j) is the number of times class i
was predicted when the true class was j.
Parameters:
labels (List): A list of labels representing the different classes.
preds (List[List[float]]): A list of predictions where each prediction is a list of
probabilities corresponding to the classes in the labels list.
ground_truth (List): A list of ground truth labels.
Returns:
List[List[int]]: The confusion matrix represented as a list of lists where each list
represents a row in the matrix.
"""
## This creates a square matrix with dimensions equal to the number of classes, initializing all elements to zero. Each row and column corresponds to a class label.
matrix = [[0 for _ in range(len(labels))] for _ in range(len(labels))]
## This loop pairs each prediction with its corresponding ground truth label and processes them one by one.
for pred, truth in zip(preds, ground_truth):
## Uses NumPy to find the index of the highest probability in the prediction list, which corresponds to the predicted class.
pred_index = np.argmax(pred)
## Finds the index of the true class label in the `labels` list.
truth_index = labels.index(truth)
## This line increments the cell at the intersection of the predicted class row and the true class column in the confusion matrix, effectively counting the occurrence of this specific prediction-truth pair.
matrix[pred_index][truth_index] += 1
## After processing all predictions, the function returns the computed confusion matrix.
return matrix
В функции confusion_matrix вы реализуете логику для вычисления матрицы ошибок для классификационной задачи.
Тестировать функцию матрицы ошибок
В этом шаге вы будете тестировать функцию confusion_matrix с использованием предоставленного примера.
Добавьте следующий код в файл 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)
Запустите файл confusion_matrix.py, чтобы выполнить пример:
python confusion_matrix.py
Вывод должен быть таким:
[[1, 1, 1],
[0, 1, 0],
[0, 0, 1]]
Проверьте, совпадает ли вывод с ожидаемой матрицей ошибок.
Если вывод не соответствует ожиданиям, проверьте реализацию функции confusion_matrix и внесите необходимые исправления.
Резюме
Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.



