多クラスおよび多出力アルゴリズム

Machine LearningMachine LearningBeginner
今すぐ練習

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

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、scikit-learn における多クラスおよび多出力アルゴリズムの機能と使用方法を探ります。多クラス分類は、サンプルが 2 クラス以上に割り当てられる分類タスクです。一方、多出力分類では、各サンプルに対して複数の特性を予測します。以下のトピックを扱います。

  1. 多クラス分類
  2. マルチラベル分類
  3. 多クラス多出力分類
  4. 多出力回帰

VM のヒント

VM の起動が完了したら、左上隅をクリックして ノートブック タブに切り替え、Jupyter Notebook を使って練習しましょう。

Jupyter Notebook の読み込みには数秒かかる場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。

学習中に問題がある場合は、Labby にお問い合わせください。セッション終了後にフィードバックを提供してください。すぐに問題を解決いたします。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL 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"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) 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

多クラス分類

問題の説明

多クラス分類は、2 クラス以上の分類タスクです。各サンプルはただ 1 つのクラスに割り当てられます。

ターゲット形式

多クラスターゲットの有効な表現は、2 つ以上の離散値を含む 1 次元または列ベクトルです。

多クラス分類を示すために、Iris データセットを使いましょう。

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

## Load the Iris dataset
X, y = datasets.load_iris(return_X_y=True)

## Fit a logistic regression model using OneVsRestClassifier
model = OneVsRestClassifier(LogisticRegression())
model.fit(X, y)

## Make predictions
predictions = model.predict(X)
print(predictions)

マルチラベル分類

問題の説明

マルチラベル分類は、各サンプルに複数のラベルを割り当てることができる分類タスクです。各サンプルが持ち得るラベルの数は 2 を超えます。

ターゲット形式

マルチラベルターゲットの有効な表現は、2 次元行列で、各行がサンプルを表し、各列がクラスを表します。値が 1 はサンプルにラベルが存在することを示し、0 または -1 は存在しないことを示します。

make_classification 関数を使ってマルチラベル分類問題を作成しましょう。

from sklearn.datasets import make_classification
from sklearn.multioutput import MultiOutputClassifier
from sklearn.ensemble import RandomForestClassifier

## Generate a multilabel classification problem
X, y = make_classification(n_samples=100, n_features=10, n_informative=5, random_state=0)
y = y.reshape(-1, 1)

## Fit a multioutput random forest classifier
model = MultiOutputClassifier(RandomForestClassifier())
model.fit(X, y)

## Make predictions
predictions = model.predict(X)
print(predictions)

多クラス多出力分類

問題の説明

多クラス多出力分類は、マルチタスク分類とも呼ばれ、各サンプルに対して複数の非二値特性を予測します。各特性は 2 クラス以上を持つことができます。

ターゲット形式

多クラス多出力ターゲットの有効な表現は、密度行列で、各行がサンプルを表し、各列が異なる特性またはクラスを表します。

make_classification 関数を使って多クラス多出力分類問題を作成しましょう。

from sklearn.datasets import make_classification
from sklearn.multioutput import MultiOutputClassifier
from sklearn.svm import SVC

## Generate a multiclass-multioutput classification problem
X, y = make_classification(n_samples=100, n_features=10, n_informative=5, n_classes=3, random_state=0)

## Fit a multioutput support vector classifier
model = MultiOutputClassifier(SVC())
model.fit(X, y)

## Make predictions
predictions = model.predict(X)
print(predictions)

多出力回帰

問題の説明

多出力回帰は、各サンプルに対して複数の数値特性を予測します。各特性は数値変数であり、特性の数は 2 以上であることができます。

ターゲット形式

多出力回帰ターゲットの有効な表現は、密度行列で、各行がサンプルを表し、各列が異なる特性を表します。

make_regression 関数を使って多出力回帰問題を作成しましょう。

from sklearn.datasets import make_regression
from sklearn.multioutput import MultiOutputRegressor
from sklearn.linear_model import LinearRegression

## Generate a multioutput regression problem
X, y = make_regression(n_samples=100, n_features=10, n_targets=3, random_state=0)

## Fit a multioutput linear regression model
model = MultiOutputRegressor(LinearRegression())
model.fit(X, y)

## Make predictions
predictions = model.predict(X)
print(predictions)

まとめ

この実験では、scikit-learn の多クラスおよび多出力アルゴリズムを検討しました。多クラス分類、マルチラベル分類、多クラス多出力分類、および多出力回帰について説明しました。これらのアルゴリズムを使うことで、複数のターゲットまたはクラスを持つ複雑な分類および回帰タスクを解くことができます。