랜덤 포레스트 알고리즘은 앙상블 알고리즘 중에 빠른 수행 속도를 가지고 있다. 장점은 결정 트리의 직관적인 모습을 가지고 있는데 랜덤 포레스트는 여러 개의 결정 트리 분류기가 각각의 데이터를 부트스트랩핑(샘플링)하여 개별적으로 학습을 수행하고 최종적으로 보팅을 통해 예측 결정을 한다.
Pipeline 과 GridSearchCV 를 통해서 랜덤포레스트의 하이퍼 파라미터를 튜닝하여서 학습시켜 보겠다.
www.kaggle.com/teejmahal20/airline-passenger-satisfaction
데이터는 캐글에서 위의 것을 갖고와서 이용하였다.
from sklearn.compose import ColumnTransformer
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
num_pipeline = Pipeline(steps=[
('imputer', SimpleImputer(strategy='mean'))
])
rfc = RandomForestClassifier()
parameters = {
'classifier__max_depth':[None, 1, 2],
'classifier__min_samples_split':[1, 2]
}
tree_pipeline = Pipeline(steps=[('num_pipeline', num_pipeline),
('classifier', rfc)])
grid_tree2 = GridSearchCV(estimator=tree_pipeline, param_grid=parameters, cv=2, refit=True)
grid_tree2.fit(X_train, y_train)
print('최적 파라미터', grid_tree2.best_estimator_)
print('최적 스코어', grid_tree2.best_score_)
최적 스코어 0.958601440906341로 나왔다. 밑에 결정트리로 학습한 것과 0.1이 높게 나왔다.
'머신러닝' 카테고리의 다른 글
Conda 가상환경 설치 (0) | 2021.03.04 |
---|---|
[파이썬 머신러닝] 머신러닝의 분류-앙상블 학습 (0) | 2021.02.24 |
머신러닝 분류 Classification 중 Decision Tree(결정 트리) (0) | 2021.02.24 |
GridSearchCV의 Check the list of available parameters with `estimator.get_params().keys()` 에러 발생시 해결법 (0) | 2021.02.24 |
[파이썬 머신러닝]Pipeline 파이프라인 구축하기 (1) | 2021.02.24 |