Введение
В этом лабораторном занятии мы исследуем функциональность и применение алгоритмов мультиклассовой и мультивыходной классификации в scikit-learn. Мультиклассовая классификация - это задача классификации, в которой объекты классифицируются на более двух классов. Мультивыходная классификация, с другой стороны, предсказывает несколько свойств для каждого объекта. Мы рассмотрим следующие темы:
- Мультиклассовая классификация
- Мультиметкажная классификация
- Мультиклассовая-мультивыходная классификация
- Мультивыходная регрессия
Советы по работе с ВМ
После запуска ВМ кликните в левом верхнем углу, чтобы переключиться на вкладку Ноутбук и приступить к практике в Jupyter Notebook.
Иногда может потребоваться подождать несколько секунд, пока Jupyter Notebook полностью загрузится. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Мультиклассовая классификация
Описание задачи
Мультиклассовая классификация - это задача классификации с более чем двумя классами. Каждый образец принадлежит только одному классу.
Формат целевых переменных
Допустимым представлением целевых переменных для мультиклассовой классификации является одномерный или столбцовый вектор, содержащий более двух дискретных значений.
Пример
Рассмотрим датасет Iris для демонстрации мультиклассовой классификации:
from sklearn import datasets
from sklearn.linear_model import LogisticRegression
from sklearn.multiclass import OneVsRestClassifier
## Загрузка датасета Iris
X, y = datasets.load_iris(return_X_y=True)
## Обучение логистической регрессии с использованием OneVsRestClassifier
model = OneVsRestClassifier(LogisticRegression())
model.fit(X, y)
## Предсказание классов
predictions = model.predict(X)
print(predictions)
Мультиметкажная классификация
Описание задачи
Мультиметкажная классификация - это задача классификации, в которой каждый образец может быть присвоен нескольким меткам. Количество меток, которое может иметь каждый образец, больше двух.
Формат целевых переменных
Допустимым представлением целевых переменных для мультиметкажной классификации является бинарная матрица, где каждая строка представляет собой образец, а каждый столбец - класс. Значение 1 указывает на присутствие метки в образце, а 0 или -1 - на ее отсутствие.
Пример
Создадим задачу мультиметкажной классификации с использованием функции make_classification:
from sklearn.datasets import make_classification
from sklearn.multioutput import MultiOutputClassifier
from sklearn.ensemble import RandomForestClassifier
## Сгенерируем задачу мультиметкажной классификации
X, y = make_classification(n_samples=100, n_features=10, n_informative=5, random_state=0)
y = y.reshape(-1, 1)
## Обучим мультивыходный классификатор на основе случайного леса
model = MultiOutputClassifier(RandomForestClassifier())
model.fit(X, y)
## Предскажем метки
predictions = model.predict(X)
print(predictions)
Мультиклассовая-мультивыходная классификация
Описание задачи
Мультиклассовая-мультивыходная классификация, также известная как многозадачная классификация, предсказывает несколько небинарных свойств для каждого образца. Каждое свойство может иметь более двух классов.
Формат целевых переменных
Допустимым представлением целевых переменных для мультиклассовой-мультивыходной классификации является плотная матрица, где каждая строка представляет собой образец, а каждый столбец - отдельное свойство или класс.
Пример
Создадим задачу мультиклассовой-мультивыходной классификации с использованием функции make_classification:
from sklearn.datasets import make_classification
from sklearn.multioutput import MultiOutputClassifier
from sklearn.svm import SVC
## Сгенерируем задачу мультиклассовой-мультивыходной классификации
X, y = make_classification(n_samples=100, n_features=10, n_informative=5, n_classes=3, random_state=0)
## Обучим мультивыходной классификатор на основе методов опорных векторов
model = MultiOutputClassifier(SVC())
model.fit(X, y)
## Предскажем значения свойств
predictions = model.predict(X)
print(predictions)
Мультивыходная регрессия
Описание задачи
Мультивыходная регрессия предсказывает несколько числовых свойств для каждого образца. Каждое свойство является числовой переменной, и количество свойств может быть больше или равно двум.
Формат целевых переменных
Допустимым представлением целевых переменных для мультивыходной регрессии является плотная матрица, где каждая строка представляет собой образец, а каждый столбец - отдельное свойство.
Пример
Создадим задачу мультивыходной регрессии с использованием функции make_regression:
from sklearn.datasets import make_regression
from sklearn.multioutput import MultiOutputRegressor
from sklearn.linear_model import LinearRegression
## Сгенерируем задачу мультивыходной регрессии
X, y = make_regression(n_samples=100, n_features=10, n_targets=3, random_state=0)
## Обучим мультивыходную линейную регрессию
model = MultiOutputRegressor(LinearRegression())
model.fit(X, y)
## Предскажем значения свойств
predictions = model.predict(X)
print(predictions)
Резюме
В этом практическом занятии мы изучили алгоритмы мультиклассовой и мультивыходной классификации в scikit-learn. Мы рассмотрели мультиклассовую классификацию, мультиметкажную классификацию, мультиклассовую-мультивыходную классификацию и мультивыходную регрессию. Эти алгоритмы позволяют нам решать сложные задачи классификации и регрессии с несколькими целевыми переменными или классами.