그리드 서치를 이용해 최적의 하이퍼 파라미터 찾는다.
# ! pip install scikeras
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
그리드 서치용 클래서 파이어를 만들어 사용
# 클래서 파이어 build_fn= 파라미터에 모델링 함수 입력하고 변수로 저장
>>> model = KerasClassifier(build_fn= build_model)
# 사용할 batch_size, epochs, optimizer 지정한 딕트 만들기
>>> my_param = {'batch_size':[10, 20], 'epochs':[10, 20, 30], 'optimizer':['adam', 'rmsprop']}
# 그리드서치 파라미터 안에 입력
>>> grid = GridSearchCV(estimator=model, param_grid=my_param, scoring='accuracy')
# 학습
>>> grid.fit(X_train, y_train)
학습 완료 후 결과 확인
>>> grid.best_params_
{'batch_size': 10, 'epochs': 30, 'optimizer': 'adam'}
>>> grid.best_score_ # accuracy
0.8608750000000001
# 변수에 저장해서 사용
>>> best_model = grid.best_estimator_
# 1과 0으로 나온다
>>> best_model.predict(X_test)
200/200 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step
array([0, 0, 0, ..., 0, 0, 0])
# 1과 0사이의 숫자로 나온다
>>> best_model.predict_proba(X_test)
200/200 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step
array([[0.6787239 , 0.32127613],
[0.6978644 , 0.30213562],
[0.91990066, 0.08009937],
...,
[0.76263183, 0.23736817],
[0.7858741 , 0.2141259 ],
[0.8655914 , 0.13440862]], dtype=float32)
# 나온 결과값을 y_pred 변수로 저장해서 사용
y_pred = best_model.predict(X_test)
# 정확도 확인
confusion_matrix(y_test, y_pred)
accuracy_score(y_test, y_pred)
'인공지능 > Deep Learning' 카테고리의 다른 글
[Deep Learning] epochs history 차트 시각화 (0) | 2024.04.17 |
---|---|
[Deep Learning] DNN TensorFlow Regression 수치 예측 문제 모델링 (0) | 2024.04.17 |
[Deep Learning] Optimizer (0) | 2024.04.16 |
[Deep Learning] batch_size, epoch (0) | 2024.04.16 |
[Deep Learning] ANN TensorFlow 분류 문제 모델링 (0) | 2024.04.16 |