728x90
반응형
GBM(Gradient Boosting Machine)
weak learner를 -순차-적으로 학습, 예측 하면서 잘못 예측한 데이터에 가중치 부여해서 오류개선하는 방식, adaboost & gbm(adaboost+경사하강법★)
from sklearn.ensemble import GradientBoostingClassifier
import time
import warnings
warnings.filterwarnings('ignore')
X_train, X_test, y_train, y_test = get_human_dataset()
# GBM 수행 시간 측정을 위함. 시작 시간 설정.
start_time = time.time()
gb_clf = GradientBoostingClassifier(random_state=0) # 기본값은 100
gb_clf.fit(X_train , y_train)
gb_pred = gb_clf.predict(X_test)
gb_accuracy = accuracy_score(y_test, gb_pred)
print('GBM 정확도: {0:.4f}'.format(gb_accuracy))
print("GBM 수행 시간: {0:.1f} 초 ".format(time.time() - start_time))
# GBM 정확도: 0.9389
GBM 수행 시간: 709.5 초
from sklearn.model_selection import GridSearchCV
params = {
'n_estimators':[100, 500],
'learning_rate' : [ 0.05, 0.1]
}
grid_cv = GridSearchCV(gb_clf , param_grid=params , cv=2 ,verbose=1)
grid_cv.fit(X_train , y_train)
print('최적 하이퍼 파라미터:\n', grid_cv.best_params_)
print('최고 예측 정확도: {0:.4f}'.format(grid_cv.best_score_))
scores_df = pd.DataFrame(grid_cv.cv_results_)
scores_df[['params', 'mean_test_score', 'rank_test_score',
'split0_test_score', 'split1_test_score']]
# GridSearchCV를 이용하여 최적으로 학습된 estimator로 predict 수행.
gb_pred = grid_cv.best_estimator_.predict(X_test)
gb_accuracy = accuracy_score(y_test, gb_pred)
print('GBM 정확도: {0:.4f}'.format(gb_accuracy))
# GBM 정확도: 0.9406
반응형
'Data_Science > ML_Perfect_Guide' 카테고리의 다른 글
4.6 LightGBM || 유방암 예측 (0) | 2021.12.23 |
---|---|
4-5. XGBoost(eXtra Gradient Boost) (0) | 2021.12.23 |
4-3. Random Forest (0) | 2021.12.23 |
4-2. Ensemble Classifier (0) | 2021.12.23 |
4-1. iris || Decision Tree, GridSearchCV, feature importance, visualize_boundary (0) | 2021.12.22 |