ランダムフォレストのグリッドサーチをランダムサーチに変更したコード

2024年6月17日

了解しました。以下に、ランダムフォレストのグリッドサーチをランダムサーチに変更したコードを示します。

python
from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import randint

# パラメータグリッドの定義
param_dist = {
    'n_estimators': randint(100, 1000),  # 100から1000の間でランダムに選択
    'max_features': ['auto', 'sqrt'],
    'max_depth': randint(10, 100),  # 10から100の間でランダムに選択
    'min_samples_split': randint(2, 20),  # 2から20の間でランダムに選択
    'min_samples_leaf': randint(1, 20),  # 1から20の間でランダムに選択
    'bootstrap': [True, False]
}

# ランダムサーチを用いて探索
random_search = RandomizedSearchCV(rf_classifier, param_distributions=param_dist, n_iter=100, cv=5, random_state=42)
random_search.fit(X_rf_train, y_train)

# 最適なモデルを取得
best_rf_model = random_search.best_estimator_

# テストデータでの予測と評価
y_pred_rf = best_rf_model.predict(X_rf_test)
accuracy_rf = accuracy_score(y_test, y_pred_rf)
print("Random Forest Accuracy:", accuracy_rf)
print("Random Forest Classification Report:")
print(classification_report(y_test, y_pred_rf))

# テストデータでの予測確率を取得
y_proba_rf = best_rf_model.predict_proba(X_rf_test)

# AUCの計算
auc_rf = roc_auc_score(y_test, y_proba_rf, multi_class='ovr')  # 多クラスの場合は'multi_class'を指定
print("Random Forest AUC:", auc_rf)

このコードでは、RandomizedSearchCVを使ってランダムサーチを実行し、ランダムにパラメータ値を選択して最適なモデルを探索します。n_iterパラメータで探索する回数を設定します。

未分類

Posted by ぼっち