! pip install scikeras
sci keras 인스톨을 먼저 해준뒤
from scikeras.wrappers import KerasClassifier
from sklearn.model_selection import GridSearchCV
from keras.models import Sequential
from keras.layers import Dense
필요한 모듈들을 모두 임포트 해주자
def build_model(optimizer = 'adam'):
model = Sequential()
model.add(Dense(8, 'relu', input_shape = (11, )))
model.add(Dense(6, 'relu'))
model.add(Dense(1,'sigmoid'))
model.compile(optimizer = optimizer, loss= 'binary_crossentropy', metrics = ['accuracy'])
return model
첫 줄의 옵티마이저 는 최적화를 뜻하며
최적화를 하기 위해 보편적으로 가장 일을 잘 하는'adam' 을 써주자 는 의미이다
시퀀셜= 순차적으로 진행하라 를 model이라는 이름의 변수로 저장을 한뒤에
앞서 배웠던 히든레이어의 계층을 만들고
컴파일을 한다
이제 함수를 호출 할때마다 딥러닝을 반복하게 된다
model = KerasClassifier(build_fn = build_model)
위의 함수를 사용하기 위해 Keras 라이브러리의 build_fn 함수를 사용하도록 하자
my_param = { 'batch_size' : [10, 20], 'epochs' : [ 10, 20, 30 ], 'optimizer' : [ 'adam', 'rmsprop' ] }
우선 최적화하고자 하는 하이퍼파라미터의 각각의 조건들을 지정 하자
배치사이즈는 10개씩, 20개씩
에폭스는 10번씩, 20번씩, 30번씩
옵티마이저는 adam으로 rmsprop으로
즉, 2 (batch_size) × 3 (epochs) × 2 (optimizer) = 12
총 12번의 각기 다른 조건으로 진행하게 된다
grid = GridSearchCV(estimator = model, param_grid = my_param, scoring = 'accuracy' )
그리드서치CV 모델의 하이퍼파라미터를 최적화하는 도구이며
estimator 는 최적화하고자 하는 모델을 지정,
param_grid 는 미리 지정한 파라미터의 변수를 지정,
scoring 는 그리드서치에서 모델을 평가할 때 사용할 평가 기준을 지정하는 것이며
여기서 'accuracy'는 정확도 점수를 기준으로 모델을 평가하는 것
grid.fit(X_train, y_train)
그리고 이걸 변수로 지정한 그리드에 fit 하자
각각 다른 조건으로 진행되기 때문에
시간이 많이 걸린다
그렇게 해선 나온 결과물에
grid.best_params_
그리드서치를 통해 찾은 최적의 파라미터 조합 을 알 수있으며,
grid.best_score_
그리드서치를 통해 찾은 최고 정확도를 알 수 있으며
best_model = grid.best_estimator_
다시 최적의 파라미터 조합을 입력시켜 학습시킬 필요 없이 위에서 찾은
최적의 하이퍼파라미터 조합을 사용하여 학습된 최적의 모델을
베스트모델 이라는 이름의 변수로 저장하자
best_model.predict(X_test)
최적의 모델로 테스트한 값이며
best_model.predict_proba(X_test)
퍼센테이지로 보고싶다면
predict에
_proba를 더해준다
'Python > DeepLearning' 카테고리의 다른 글
딥러닝 - 이미지 분류 2) 모델 생성 및 확인 (0) | 2024.04.18 |
---|---|
딥러닝 - 이미지 분류 1) Data Preprocessing (0) | 2024.04.18 |
딥러닝 - 조건 성립 정지법 callbacks.EarlyStopping (0) | 2024.04.17 |
딥러닝 - New 데이터의 예측법 (1) | 2024.04.17 |
ANN - 개념정리 (0) | 2024.04.16 |