Scikit-Learn を用いたアンサンブル法の探索

Beginner

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

はじめに

この実験では、scikit-learn を使用してアンサンブル法を探索します。アンサンブル法は、複数のモデルを組み合わせて、単一のモデルよりも優れたパフォーマンスを達成する機械学習技術です。具体的には、2 つの人気のあるアンサンブル法、バギング (Bagging) とランダムフォレスト (Random Forests) に焦点を当てます。

VM のヒント

VM の起動が完了したら、左上隅をクリックして Notebook タブに切り替え、Jupyter Notebook を開いて練習を行ってください。

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

学習中に問題が発生した場合は、Labby に質問してください。セッション終了後にフィードバックを提供していただければ、迅速に問題を解決します。

必要なライブラリをインポートする

まずは、必要な依存関係(ライブラリ)をインポートしましょう。

import numpy as np
from sklearn.ensemble import BaggingClassifier, RandomForestClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, cross_val_score

データの読み込み

次に、load_iris 関数を使用して scikit-learn からアヤメのデータセット (iris dataset) を読み込みます。

data = load_iris()
X, y = data.data, data.target

データの分割

scikit-learn の train_test_split 関数を使用して、データを訓練データセットとテストデータセットに分割します。

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

バギング分類器 (Bagging Classifier) の適合

ここでは、訓練データにバギング分類器 (Bagging Classifier) を適合させます。バギング分類器は、ブートストラップサンプリングを使用して複数のベースモデル(多くの場合、決定木)を作成し、多数決によってそれらの予測を集約するアンサンブル法です。

bagging = BaggingClassifier(DecisionTreeClassifier(), n_estimators=10)
bagging.fit(X_train, y_train)

バギング分類器 (Bagging Classifier) の評価

score メソッドを使用してテストデータの正解率 (accuracy score) を計算することで、バギング分類器 (Bagging Classifier) を評価しましょう。

accuracy = bagging.score(X_test, y_test)
print(f"Bagging Classifier Accuracy: {accuracy}")

ランダムフォレスト分類器 (Random Forest Classifier) の適合

次に、訓練データにランダムフォレスト分類器 (Random Forest Classifier) を適合させます。ランダムフォレスト分類器もアンサンブル法の一種で、ブートストラップサンプリングを用いて複数の決定木を作成します。ただし、各分割では特徴量の一部のみを考慮することで、さらにランダム性を加えています。

random_forest = RandomForestClassifier(n_estimators=10)
random_forest.fit(X_train, y_train)

ランダムフォレスト分類器 (Random Forest Classifier) の評価

テストデータの正解率 (accuracy score) を計算することで、ランダムフォレスト分類器 (Random Forest Classifier) を評価しましょう。

accuracy = random_forest.score(X_test, y_test)
print(f"Random Forest Classifier Accuracy: {accuracy}")

まとめ

この実験では、scikit-learn を用いてアンサンブル法を探索しました。アヤメのデータセットにバギング分類器 (Bagging Classifier) とランダムフォレスト分類器 (Random Forest Classifier) を適合させ、それらの性能を評価しました。バギングやランダムフォレストなどのアンサンブル法は、機械学習モデルの予測性能を向上させる強力なツールとなり得ます。