投票法:ハードとソフト
メニューを表示するにはスワイプしてください
アンサンブル学習の投票法は、複数のベースモデルの予測を組み合わせて最終的な判断を行う手法。主に2種類が存在する:ハード投票とソフト投票。
- ハード投票は、ベースモデルが予測したクラスラベルの多数決を採用。
- ソフト投票は、予測確率の平均を計算し、最も平均確率が高いクラスを選択。
ハード投票は、ベースモデルがクラスラベルを出力する場合に一般的に使用される。一方、ソフト投票はベースモデルがクラス確率を出力できる場合に利用される。ソフト投票では、各モデルの予測信頼度を活用可能。
さらに学ぶ
アンサンブル手法の比較: 投票法は予測を並列に組み合わせ、バギングは異なるデータサンプルで学習したモデルの予測を平均化し、ブースティングは誤差を修正するためにモデルを逐次的に組み合わせる。
12345678910111213141516171819202122232425262728293031323334353637383940414243from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression from sklearn.tree import DecisionTreeClassifier from sklearn.svm import SVC from sklearn.ensemble import VotingClassifier from sklearn.metrics import accuracy_score # Load dataset iris = load_iris() X, y = iris.data, iris.target # Split data X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42, stratify=y) # Standardize features for SVC and Logistic Regression scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test) # Define base models clf1 = LogisticRegression(random_state=42, max_iter=200) clf2 = DecisionTreeClassifier(random_state=42) clf3 = SVC(probability=True, random_state=42) # Hard voting ensemble (majority vote) hard_voting = VotingClassifier( estimators=[('lr', clf1), ('dt', clf2), ('svc', clf3)], voting='hard' ) hard_voting.fit(X_train_scaled, y_train) y_pred_hard = hard_voting.predict(X_test_scaled) print("Hard Voting Accuracy:", accuracy_score(y_test, y_pred_hard)) # Soft voting ensemble (average probabilities) soft_voting = VotingClassifier( estimators=[('lr', clf1), ('dt', clf2), ('svc', clf3)], voting='soft' ) soft_voting.fit(X_train_scaled, y_train) y_pred_soft = soft_voting.predict(X_test_scaled) print("Soft Voting Accuracy:", accuracy_score(y_test, y_pred_soft))
すべて明確でしたか?
フィードバックありがとうございます!
セクション 1. 章 12
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 1. 章 12