Scikit-learn API предоставляет класс MulitOutputClassifier, который помогает классифицировать данные с несколькими выходами. В этом руководстве мы узнаем, как классифицировать данные с несколькими выходами (с несколькими метками) с помощью этого метода в Python. Данные с несколькими выходами содержат более одной метки y для заданных входных данных X. Учебник охватывает:
- Подготовка данных
- Определение модели
- Прогнозирование и проверка точности
- Листинг исходного кода
Начнем с загрузки необходимых библиотек для этого руководства.
Подготовка данных
Мы можем сгенерировать данные с несколькими выходами с помощью функции make_multilabel_classification. Целевой набор данных содержит 20 объектов (x), 5 классов (y) и 10000 выборок.
Мы определим их в параметрах функции.
x, y = make_multilabel_classification(n_samples=10000, n_features=20, n_classes=5, random_state=88)
Сгенерированные данные выглядят следующим образом. В этом наборе данных 20 объектов и 5 меток.
Затем мы разделим данные на обучающую и тестовую части.
xtrain, xtest, ytrain, ytest=train_test_split(x, y, train_size=0.8, random_state=88)
Определение модели
Мы определим модель с помощью класса Sklearn MultiOutputClassifier. В качестве оценщика мы воспользуемся XGBClassifier, а затем включим оценщик в класс MultiOutputClassifier.
Мы можем проверить параметры модели командой печати.
Подгоним модель к обучающим данным и проверим точность обучения.
clf.fit(xtrain, ytrain) print(clf.score(xtrain, ytrain))
Мы проверим количество показателей точности этого прогноза. Помните, что у нас есть пять меток вывода в данных ytest и yhat, поэтому нам нужно использовать их соответственно.
Сначала мы проверим область под ROC с помощью функции roc_auc_score.
Второй метод - проверить матрицу путаницы.
Наконец, мы проверим отчет о классификации с помощью функции classification_report.
В этом руководстве мы вкратце узнали, как классифицировать данные с несколькими метками с помощью MultiOutputClassifier и XGBoost в Python.