LoginSignup
0
1

VotingClassifierを使ったアンサンブル学習と、Soft Votingについて

Last updated at Posted at 2023-05-23

アンサンブル学習は、複数の学習モデルを組み合わせて、予測精度を向上させる手法の一つです。sklearn.ensembleモジュールのVotingClassifierは、それぞれ異なる学習アルゴリズムを持つ複数のモデルの予測を組み合わせることで、より確度の高い予測を目指します。

VotingClassifierではvotingパラメータを'soft'に設定することで、各クラスの確率を平均して最終的な予測を行うことができます。これをSoft Votingと呼びます。対照的に、各分類器の多数決でクラスを決定する方法をHard Votingと呼びます。

次に、VotingClassifierを使ったアンサンブル学習と、voting='soft'による予測のPythonでの実装を見てみましょう。

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import VotingClassifier
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier
from sklearn.linear_model import LogisticRegression

# データの読み込みと準備
iris = load_iris()
X, y = iris.data[:, [1, 2]], iris.target

# データの標準化
scaler = StandardScaler()
X = scaler.fit_transform(X)

# データの分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 各種モデルの準備
clf1 = LogisticRegression(random_state=1)
clf2 = DecisionTreeClassifier(random_state=1)
clf3 = SVC(probability=True, random_state=1)

# VotingClassifierの作成
eclf = VotingClassifier(
    estimators=[('lr', clf1), ('dt', clf2), ('svc', clf3)],
    voting='soft')

# モデルの訓練
eclf.fit(X_train, y_train)

# テストデータでの予測
y_pred = eclf.predict(X_test)

上記のコードでは、まずirisデータセットをロードし、必要な特徴量を選択し、標準化しました。次に、データを訓練データとテストデータに分割しました。

その後、Logistic Regression、Decision Tree、SVCの3つの分類モデルを作成し、それらをVotingClassifierに渡しています。voting='soft'により、各分類器が出力する確率を平均化して最終的な予測を行います。

最後に、作成したVoting Classifierモデルを訓練データで訓練し、テストデータで予測を行いました。

VotingClassifierは複数の学習モデルの予測を組み合わせることで、各モデルが持っている弱点を補い、より高精度な予測を可能にします。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1