DeseoDeSeo
[Machine Learning] 하이퍼 파라미터 튜닝(타이타닉 실습) 본문
⛧ 하이퍼 파라미터( Hyperparameter )
: 최적의 훈련모델을 구현하기 위해 모델에 설정하는 변수
( 학습률, 훈련 반복횟수, 가중치 초기화 등을 결정함.) ➜ 하이퍼파라미터 튜닝 기법을 적용하여 훈련 모델의 최적값들을 찾을 수 있음.
하이퍼 파라미터 튜닝
: n_estimators를 50 ~ 81까지 바꿔가면서 평과 결과를 확인
for i in range(50,81):
forest_model1 = RandomForestClassifier(n_estimators=i)
# 교차 검증으로 평가
result = cross_val_score(forest_model1,x_train, y_train, cv=5).mean()
print(f'n_estimators:{i}.score: {result}')
1. n_estimators를 제한 ➜ for
for i in range(50,81): # 30
# 2. max_depth를 제한 --> for
for j in range(5,10): # 5 - 5,6,7,8,9
# 30번 * 5번 = 총 150번의 반복 과정을 돔.
✔ 최적의 하이퍼파라미터 조합을 찾기 위해서는 여러개의 for문이 필요 (➜ 복잡해지고 작업이 번거로워진다.)
➜ 이 문제를 한번에 해결하는 방법
↓
한번에 여러개의 하이퍼파라미터를 튜닝해주는 함수 있음 --> GridSearchCV() 기술임. (cv =교차 검증)
GridSearchCV()
1. 하이퍼 파라미터 튜닝
: gridearchCV(모델, 딕셔너리 형태로 저장했고 사용할 하이퍼 파라미터, cv)
(1) 관심있는 하이퍼파라미터를 지정해야한다.
n_estimators =[50,70,90,110,130,150]
max_depth= [3,4,5,6,7,8] # 트리 깊이
max_features =[0.3, 0.4, 0.5, 0.6, 0.7]
(2) 파라미터를 딕셔너리 형태로 저장해야한다.
param={ 'n_estimators' :[50,70,90,110,130,150],
'max_depth': [3,4,5,6,7,8], # 트리 깊이
'max_features' : [0.3, 0.4, 0.5, 0.6, 0.7] }
from sklearn.model_selection import GridSearchCV
grid = GridSearchCV(RandomForestClassifier(),param,cv=5)
2. 학습
grid.fit(x_train, y_train)
3. 최적의 파라미터 조합 찾기
grid.best_params_
4. 최적의 파라미터일 때 best_score_ 찾기
grid.best_score_
< 자세하게 찾아보기 >
param ={'n_estimators':[48,49,50,51,52],
'max_depth':[6,7,8,9,10],
'max_features':[0.6, 0.7, 0.8] }
grid1=GridSearchCV(RandomForestClassifier(), param, cv=5)
grid1.fit(x_train, y_train)
print(grid1.best_params_)
print(grid1.best_score_)
'max_depth': 8, 'max_features': 0.7, 'n_estimators': 130
➜ 베스트 모델 생성
forest_mode1 = RandomForestClassifier(max_depth = 8, max_features = 0.7, n_estimators = 130)
forest_model1.fit(x_train, y_train)
# 학습한 모델로 예측
pred = forest_model.predict(x_test)
# 평가 결과 답안지 불러오기.
sub =pd.read_csv('./data/titanic/gender_submission.csv')
# 평가 결과를 답안지에 예측한 값 넣기
sub['Survived'] = pred
# 예측한 값 내보내기 -> kaggle
sub.to_csv('sbg_submission04.csv',index=False)
'Python' 카테고리의 다른 글
[Machine Learning] 회귀, 선형 회귀 모델 (0) | 2023.09.07 |
---|---|
[Machine Learning] 하이퍼 파라미터 튜닝(유방암 분류 실습) (1) | 2023.09.06 |
[Machine learning] 앙상블 (0) | 2023.09.05 |
[ Machine Learning ] ex06_타이타닉실습_앙상블모델 (0) | 2023.09.05 |
[ Machine Learning ] Ex05_titanic 실습_part.03 (0) | 2023.09.04 |