Матрица ошибок в Scikit-Learn

Beginner

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

Введение

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

Советы по работе с ВМ

После запуска ВМ щелкните в левом верхнем углу, чтобы переключиться на вкладку Ноутбук и получить доступ к Jupyter Notebook для практики.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.

Импорт библиотек

Сначала нам нужно импортировать необходимые библиотеки. Мы будем использовать scikit-learn, matplotlib, numpy и 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

Загрузка данных

Мы будем использовать датасет iris из scikit-learn. Датасет содержит 150 образцов, каждый из которых имеет четыре признака и метку целевого класса.

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

Разделение данных

Мы разделим датасет на обучающий набор и тестовый набор. Обучающий набор будет использоваться для обучения модели, а тестовый набор - для оценки производительности модели.

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

Обучение модели

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

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

Генерация матрицы ошибок

Мы сгенерируем матрицу ошибок с использованием класса ConfusionMatrixDisplay из scikit-learn. Матрица ошибок покажет количество правильных и неправильных предсказаний для каждого класса.

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

Визуализация матрицы ошибок

Мы визуализируем матрицу ошибок с использованием matplotlib. Мы построим как не нормализованную, так и нормализованную матрицу ошибок.

titles_options = [
    ("Confusion matrix, without normalization", None),
    ("Normalized confusion matrix", "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()

Резюме

В этом уроке мы узнали, как использовать библиотеку scikit-learn для генерации матрицы ошибок и визуализации ее результатов. Мы загрузили датасет iris, разделили его на обучающий и тестовый наборы, обучили классификатор на основе методов опорных векторов (SVM) и сгенерировали и визуализировали матрицу ошибок. Матрица ошибок показывала количество правильных и неправильных предсказаний для каждого класса, а визуализация помогла нам интерпретировать результаты.