Введение
Матрица неточностей - это инструмент для оценки производительности алгоритма классификации. Это таблица, которая суммирует производительность классификационной модели, сравнивая предсказанные метки классов с фактическими метками классов. В этом руководстве показано, как использовать библиотеку 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) и сгенерировали и визуализировали матрицу ошибок. Матрица ошибок показывала количество правильных и неправильных предсказаний для каждого класса, а визуализация помогла нам интерпретировать результаты.