アイリスデータセット上の SVM 分類器

Machine LearningMachine LearningBeginner
今すぐ練習

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

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

はじめに

アイリスデータセットは、分類問題に使用される古典的なデータセットです。この実験では、Pythonのscikit - learnを使ってアイリスデータセットにおけるさまざまなSVM分類器をプロットする方法を学びます。アイリスデータセットの2次元投影上でさまざまな線形SVM分類器を比較します。

VMのヒント

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

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/inspection("Inspection") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/inspection -.-> lab-49170{{"アイリスデータセット上の SVM 分類器"}} ml/sklearn -.-> lab-49170{{"アイリスデータセット上の SVM 分類器"}} end

必要なライブラリをインポートしてデータセットを読み込む

import matplotlib.pyplot as plt
from sklearn import svm, datasets
from sklearn.inspection import DecisionBoundaryDisplay

## import some data to play with
iris = datasets.load_iris()
## Take the first two features. We could avoid this by using a two-dim dataset
X = iris.data[:, :2]
y = iris.target

SVM分類器を作成してデータに適合させる

C = 1.0  ## SVM正則化パラメータ
models = (
    svm.SVC(kernel="linear", C=C),
    svm.LinearSVC(C=C, max_iter=10000, dual="auto"),
    svm.SVC(kernel="rbf", gamma=0.7, C=C),
    svm.SVC(kernel="poly", degree=3, gamma="auto", C=C),
)
models = (clf.fit(X, y) for clf in models)

分類器の決定領域を描画する

## 描画用の2x2グリッドを設定する。
fig, sub = plt.subplots(2, 2)
plt.subplots_adjust(wspace=0.4, hspace=0.4)

X0, X1 = X[:, 0], X[:, 1]

## 各分類器に対してDecisionBoundaryDisplayを作成する
for clf, title, ax in zip(models, titles, sub.flatten()):
    disp = DecisionBoundaryDisplay.from_estimator(
        clf,
        X,
        response_method="predict",
        cmap=plt.cm.coolwarm,
        alpha=0.8,
        ax=ax,
        xlabel=iris.feature_names[0],
        ylabel=iris.feature_names[1],
    )
    ## データポイントを描画する
    ax.scatter(X0, X1, c=y, cmap=plt.cm.coolwarm, s=20, edgecolors="k")
    ax.set_xticks(())
    ax.set_yticks(())
    ax.set_title(title)

plt.show()

結果を解釈する

上記のコードは、4つのサブプロット付きのプロットを生成します。各サブプロットは、異なるSVM分類器の決定領域を示しています。各サブプロットのタイトルは、その分類器で使用されるSVMカーネルの種類を示しています。データポイントは、そのターゲットクラスに基づいて色分けされています。

まとめ

この実験では、Pythonのscikit - learnを使ってアイリスデータセットにおける異なるSVM分類器を描画する方法を学びました。アイリスデータセットの2次元投影上で異なる線形SVM分類器を比較し、結果を解釈しました。SVM分類器は分類問題に対する強力なツールであり、幅広いデータセットに対して使用できます。