多类和多输出算法

Machine LearningMachine LearningBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将探索 scikit-learn 中多类和多输出算法的功能及用法。多类分类是一种将样本分配到两个以上类别的分类任务。另一方面,多输出分类为每个样本预测多个属性。我们将涵盖以下主题:

  1. 多类分类
  2. 多标签分类
  3. 多类-多输出分类
  4. 多输出回归

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到“笔记本”标签页,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们会及时为你解决问题。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/AdvancedDataAnalysisandDimensionalityReductionGroup(["Advanced Data Analysis and Dimensionality Reduction"]) sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/linear_model("Linear Models") sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/ensemble("Ensemble Methods") sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/svm("Support Vector Machines") sklearn/AdvancedDataAnalysisandDimensionalityReductionGroup -.-> sklearn/multiclass("Multiclass Classification") sklearn/AdvancedDataAnalysisandDimensionalityReductionGroup -.-> sklearn/multioutput("Multioutput Regression and Classification") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/linear_model -.-> lab-71109{{"多类和多输出算法"}} sklearn/ensemble -.-> lab-71109{{"多类和多输出算法"}} sklearn/svm -.-> lab-71109{{"多类和多输出算法"}} sklearn/multiclass -.-> lab-71109{{"多类和多输出算法"}} sklearn/multioutput -.-> lab-71109{{"多类和多输出算法"}} sklearn/datasets -.-> lab-71109{{"多类和多输出算法"}} ml/sklearn -.-> lab-71109{{"多类和多输出算法"}} end

多类分类

问题描述

多类分类是一种具有两个以上类别的分类任务。每个样本仅被分配到一个类别。

目标格式

多类目标的有效表示形式是一个一维或列向量,其中包含两个以上的离散值。

示例

让我们使用鸢尾花数据集来演示多类分类:

from sklearn import datasets
from sklearn.linear_model import LogisticRegression
from sklearn.multiclass import OneVsRestClassifier

## 加载鸢尾花数据集
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 中的多类和多输出算法。我们涵盖了多类分类、多标签分类、多类-多输出分类和多输出回归。这些算法使我们能够解决具有多个目标或类别的复杂分类和回归任务。