Создание матрицы ошибок

PythonPythonBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом проекте вы научитесь реализовывать матрицу ошибок, которая является фундаментальным инструментом для оценки производительности классификационного модели. Матрица ошибок предоставляет детальное разбиение предсказаний модели, позволяя вам определить области для улучшения и получить ценные инсайты о сильных и слабых сторонах модели.

🎯 Задачи

В этом проекте вы научитесь:

  • Как реализовать функцию confusion_matrix для вычисления матрицы ошибок для классификационной задачи
  • Как протестировать и усовершенствовать функцию confusion_matrix для обработки крайних случаев и повышения ее надежности
  • Как документировать функцию confusion_matrix, чтобы сделать ее более пользователь-friendly и легче понять
  • Как интегрировать функцию confusion_matrix в более крупный проект машинного обучения и использовать ее для оценки производительности классификационной модели

🏆 Достижения

После завершения этого проекта вы сможете:

  • Вычислять и интерпретировать матрицу ошибок для классификационной задачи
  • Применять методы обработки крайних случаев и повышения надежности функции
  • Реализовывать лучшие практики по документированию и повышению пользователь-friendliness кода
  • Применять матрицу ошибок в контексте более крупного проекта машинного обучения

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/DataScienceandMachineLearningGroup(["Data Science and Machine Learning"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/DataStructuresGroup -.-> python/lists("Lists") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/DataScienceandMachineLearningGroup -.-> python/data_analysis("Data Analysis") subgraph Lab Skills python/conditional_statements -.-> lab-300201{{"Создание матрицы ошибок"}} python/lists -.-> lab-300201{{"Создание матрицы ошибок"}} python/function_definition -.-> lab-300201{{"Создание матрицы ошибок"}} python/data_analysis -.-> lab-300201{{"Создание матрицы ошибок"}} end

Реализация функции матрицы ошибок

В этом шаге вы реализуете функцию confusion_matrix в файле confusion_matrix.py. Эта функция будет вычислять матрицу ошибок для классификационной задачи.

Функция confusion_matrix принимает три входных параметра:

  1. labels: Список меток, представляющих разные классы.
  2. preds: Список предсказаний, где каждое предсказание - это список вероятностей, соответствующих классам в списке labels.
  3. 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, чтобы улучшить свои навыки.