表示オブジェクトを使った視覚化の作成

Machine LearningMachine LearningBeginner
今すぐ練習

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

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

はじめに

この実験では、scikit-learnを使って表示オブジェクトを使ってビジュアライゼーションを作成する方法を学びます。表示オブジェクトは、それぞれのメトリックから直接ビジュアライゼーションを作成できるクラスです。この実験では、2値分類問題のビジュアライゼーションを作成するために、ConfusionMatrixDisplayRocCurveDisplay、およびPrecisionRecallDisplay表示オブジェクトを使用します。

VMのヒント

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

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/DataPreprocessingandFeatureEngineeringGroup(["Data Preprocessing and Feature Engineering"]) sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/linear_model("Linear Models") sklearn/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/preprocessing("Preprocessing and Normalization") sklearn/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/pipeline("Pipeline") sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/model_selection("Model Selection") sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/metrics("Metrics") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/linear_model -.-> lab-49116{{"表示オブジェクトを使った視覚化の作成"}} sklearn/preprocessing -.-> lab-49116{{"表示オブジェクトを使った視覚化の作成"}} sklearn/pipeline -.-> lab-49116{{"表示オブジェクトを使った視覚化の作成"}} sklearn/model_selection -.-> lab-49116{{"表示オブジェクトを使った視覚化の作成"}} sklearn/metrics -.-> lab-49116{{"表示オブジェクトを使った視覚化の作成"}} sklearn/datasets -.-> lab-49116{{"表示オブジェクトを使った視覚化の作成"}} ml/sklearn -.-> lab-49116{{"表示オブジェクトを使った視覚化の作成"}} end

データの読み込みとモデルの学習

この例では、OpenMLからの輸血サービスセンターのデータセットを使用します。目的は、個人が献血したかどうかです。まず、データを学習用とテスト用のデータセットに分割し、その後、ロジスティック回帰モデルを学習用データセットでフィットさせます。

from sklearn.datasets import fetch_openml
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split

X, y = fetch_openml(data_id=1464, return_X_y=True, parser="pandas")
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y)

clf = make_pipeline(StandardScaler(), LogisticRegression(random_state=0))
clf.fit(X_train, y_train)

ConfusionMatrixDisplay の作成

フィットさせたモデルを使って、テスト用データセットに対するモデルの予測を計算します。これらの予測値を使って混同行列を計算し、ConfusionMatrixDisplay でプロットします。

from sklearn.metrics import confusion_matrix
from sklearn.metrics import ConfusionMatrixDisplay

y_pred = clf.predict(X_test)
cm = confusion_matrix(y_test, y_pred)

cm_display = ConfusionMatrixDisplay(cm).plot()

RocCurveDisplay の作成

ROC曲線には、推定器からの確率または閾値なしの判定値が必要です。ロジスティック回帰は判定関数を提供するため、ROC曲線を描画するためにそれを使用します。

from sklearn.metrics import roc_curve
from sklearn.metrics import RocCurveDisplay

y_score = clf.decision_function(X_test)

fpr, tpr, _ = roc_curve(y_test, y_score, pos_label=clf.classes_[1])
roc_display = RocCurveDisplay(fpr=fpr, tpr=tpr).plot()

PrecisionRecallDisplay の作成

同様に、前節の y_score を使用して適合率再現率曲線を描画することができます。

from sklearn.metrics import precision_recall_curve
from sklearn.metrics import PrecisionRecallDisplay

prec, recall, _ = precision_recall_curve(y_test, y_score, pos_label=clf.classes_[1])
pr_display = PrecisionRecallDisplay(precision=prec, recall=recall).plot()

表示オブジェクトを単一のプロットに結合する

表示オブジェクトは、引数として渡された計算済みの値を格納します。これにより、MatplotlibのAPIを使用して視覚化を簡単に結合できます。次の例では、表示を1行に並べて配置します。

import matplotlib.pyplot as plt

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 8))

roc_display.plot(ax=ax1)
pr_display.plot(ax=ax2)
plt.show()

まとめ

この実験では、scikit-learnを使って表示オブジェクトを用いた視覚化の作成方法を学びました。2値分類問題の視覚化を作成するために、ConfusionMatrixDisplayRocCurveDisplay、およびPrecisionRecallDisplayの表示オブジェクトを使用しました。まず、データを読み込み、ロジスティック回帰モデルを学習させました。次に、表示オブジェクトを使用して混同行列、ROC曲線、および適合率再現率曲線を作成しました。最後に、MatplotlibのAPIを使用して表示オブジェクトを単一のプロットに結合しました。