Scikit-learn API provides a MulitOutputClassifier class that helps to classify multi-output data. In this tutorial, we’ll learn how to classify multi-output (multi-label) data with this method in Python. Multi-output data contains more than one y label data for a given X input data. The tutorial covers:
Scikit-learn API提供了MulitOutputClassifier类,该类有助于对多输出数据进行分类。 在本教程中,我们将学习如何在Python中使用此方法对多输出(多标签)数据进行分类。 对于给定的X输入数据,多输出数据包含多个y标签数据。 本教程涵盖:
- Preparing the data 准备数据
- Defining the model定义模型
- Predicting and accuracy check预测和准确性检查
- Source code listing源代码清单
我们将从加载本教程所需的库开始。(We’ll start by loading the required libraries for this tutorial.)
import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix
from sklearn.metrics import roc_auc_score
from sklearn.metrics import classification_report
from sklearn.datasets import make_multilabel_classification
from xgboost import XGBClassifier
from sklearn.model_selection import KFold
from sklearn.multioutput import MultiOutputClassifier
from sklearn.pipeline import Pipeline
准备数据(Preparing the data)
We can generate a multi-output data with a make_multilabel_classification function. The target dataset contains 20 features (x), 5 classes (y), and 10000 samples.
我们可以使用make_multilabel_classification函数生成多输出数据。 目标数据集包含20个要素(x),5个类(y)和10000个样本。
We’ll define them in the parameters of the function.
我们将在函数的参数中定义它们。
x, y = make_multilabel_classification(n_samples=10000, n_features=20, n_classes=5, random_state=88)
The generated data looks as below. There are 20 features and 5 labels in this dataset.
生成的数据如下。 该数据集中有20个要素和5个标签。