sklearnグリッドナビゲーション基本コード

7589 ワード

  • メッシュスキャン:GridSearchCV
  • ランダム調査:ランダムSearchCV
  • # 1. 그리드 서치
    from sklearn.model_selection import GridSearchCV
    
    rf = RandomForestRegressor(random_state=1217)
    
    # 탐색할 하이퍼파라미터 값 지정
    params = {'n_estimators' : [200, 300, 500],
              'max_features': [5, 6, 8],
              'min_samples_leaf' : [1, 3, 5]}
    
    # GridSearchCV를 이용해 최적의 하이퍼파라미터 탐색
    grid_cv = GridSearchCV(rf, param_grid = params, cv = 3, n_jobs=-1)
    grid_cv.fit(X_train[input_var1], y_train)
    
    # 최적의 하이퍼파라미터 값과 성능 출력
    print('최적 하이퍼파라미터: ', grid_cv.best_params_)
    print('최적 하이퍼파라미터의 성능(RMSE): {:.4f}'.format(
        np.sqrt(grid_cv.best_score_)))
    
    # 2. 랜덤 서치
    import scipy.stats as stats
    from sklearn.model_selection import RandomizedSearchCV
    
    rf = RandomForestRegressor(random_state=1217)
    
    # 탐색할 하이퍼파라미터 구간 지정
    params = {'n_estimators': stats.randint(200, 500),
              'max_features': stats.randint(4, 8),
              'min_samples_leaf': stats.randint(1, 5)}
    
    # RandomizedSearchCV를 이용해 최적의 하이퍼파라미터 탐색
    rand_cv = RandomizedSearchCV(rf, param_distributions = params, n_iter=10, 
                                 cv = 3, random_state = 1217, n_jobs=-1)
    rand_cv.fit(X_train[input_var1], y_train)
    
    # 최적의 하이퍼파라미터 값과 성능 출력
    print('최적 하이퍼파라미터: ', rand_cv.best_params_)
    print('최적 하이퍼파라미터의 성능(RMSE): {:.4f}'.format(np.sqrt(rand_cv.best_score_)))