Scikit-learn API предоставляет класс MulitOutputClassifier, который помогает классифицировать данные с несколькими выходами. В этом руководстве мы узнаем, как классифицировать данные с несколькими выходами (с несколькими метками) с помощью этого метода в Python. Данные с несколькими выходами содержат более одной метки y для заданных входных данных X. Учебник охватывает:

  1. Подготовка данных
  2. Определение модели
  3. Прогнозирование и проверка точности
  4. Листинг исходного кода

Начнем с загрузки необходимых библиотек для этого руководства.

Подготовка данных

Мы можем сгенерировать данные с несколькими выходами с помощью функции 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.

Список исходного кода