オーバーサンプリングのみしたい。

オーバーサンプリングを行うことで、少数クラスのサンプルを増やすことができます。これにより、モデルが少数クラスをより効果的に学習することができ、モデルの性能を向上させることが期待されます。

具体的な手順は次の通りです:

  1. 少数クラスのサンプルを特定する: データセット内の各クラスのサンプル数を確認し、少数クラスを特定します。

  2. オーバーサンプリング手法を選択する: 一般的なオーバーサンプリング手法には、SMOTE(Synthetic Minority Over-sampling Technique)やADASYN(Adaptive Synthetic Sampling)があります。これらの手法は、少数クラスのサンプルを増やすために合成サンプルを生成します。

  3. オーバーサンプリングを適用する: 選択したオーバーサンプリング手法を使用して、少数クラスのサンプルを増やします。

  4. モデルのトレーニング: オーバーサンプリングされたデータセットを使用してモデルをトレーニングします。

以下に、Pythonのコード例を示します。

python
from imblearn.over_sampling import SMOTE from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, roc_auc_score # オーバーサンプリング手法を選択 smote = SMOTE(random_state=42) # オーバーサンプリングを適用 X_train_resampled, y_train_resampled = smote.fit_resample(X_train_scaled, y_train) # ランダムフォレストモデルの作成とトレーニング rf_model_resampled = RandomForestClassifier(n_estimators=100, random_state=100) rf_model_resampled.fit(X_train_resampled, y_train_resampled) # テストセットでの予測 y_pred_resampled = rf_model_resampled.predict(X_test_scaled) # モデルの評価 accuracy_resampled = accuracy_score(y_test, y_pred_resampled) precision_resampled = precision_score(y_test, y_pred_resampled, average='weighted') recall_resampled = recall_score(y_test, y_pred_resampled, average='weighted') f1_resampled = f1_score(y_test, y_pred_resampled, average='weighted') roc_auc_resampled = roc_auc_score(y_test, rf_model_resampled.predict_proba(X_test_scaled), multi_class='ovr') print("Resampled Accuracy:", accuracy_resampled) print("Resampled Precision:", precision_resampled) print("Resampled Recall:", recall_resampled) print("Resampled F1 Score:", f1_resampled) print("Resampled ROC AUC Score:", roc_auc_resampled)

このコードは、SMOTEを使用してオーバーサンプリングを行い、その後ランダムフォレストモデルをトレーニングし、性能指標を評価します。

未分類

Posted by ぼっち