이번에는 텐서플로우를 이용한 그리드 서치를 해보겠습니다.
데이터는 그 전 포스트의 자료를 그대로 사용하겠습니다.
이번에는 입력을 받으면 자동으로 모델링을 해주기 위해서 함수를 만들겠습니다.
먼저 다음을 임포트해주세요.
from keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import GridSearchCV
from keras.models import Sequential
from keras.layers import Dense
1. build_model 함수
def build_model(optimizer) :
# 모델링
model = Sequential()
# 데이터의 컬럼 수가 11개 이기때문에 첫 시작을 11개 잡는다.
model.add( Dense(units = 6 , activation = 'relu' , input_shape = (11,) ) )
model.add(Dense(units = 8, activation = 'relu'))
model.add( Dense(units = 1, activation = 'sigmoid' ) )
# 컴파일
model.compile(optimizer=optimizer , loss='binary_crossentropy', metrics=['accuracy'])
return model
위 함수는 optimizer를 입력받으면 입력 레이어는 11개 , 히든 레이어가 6,8 개 , 출력레이어는 1개인 분류 모델의 optimizer를 설정한 모델을 리턴 하는 함수입니다.
2. grid 서치
# 빈 클래스 파이어 모델을 만드는데 이용할 함수로 만들어준 build_model 을 이용합니다.
model = KerasClassifier(build_fn=build_model)
# 파라미터 들을 설정합니다.
my_param = { 'batch_size': [10,20,32] , 'epochs' : [20,30,50 ] , 'optimizer' : ['adam','rmsprop'] }
# 그리드서치를 생성합니다.
grid = GridSearchCV(estimator = model , param_grid = my_param , scoring='accuracy' )
3. 학습한 grid 서치 최고값
#최고의 값
grid.best_params_
#학습중최고적중률
grid.best_score_
#학습한 최고의 인공지능
grid.best_estimator_
4. 최고의 인공지능을 통한 테스트
# 베스트 모델을 저장
best_model = grid.best_estimator_
# 예측하기
best_model.predict(X_test)
# % 로 표시 best_model.predict_proba(X_test)
y_pred = best_model.predict(X_test)
# 예측한값 성능측정
confusion_matrix(y_test,y_pred)
accuracy_score(y_test,y_pred)
'개발 > 머신러닝' 카테고리의 다른 글
파이썬 머신러닝 - epochs history 로 차트 만들어 확인 (0) | 2022.12.28 |
---|---|
파이썬 머신러닝 - 텐서플로우를 이용한 regression 문제 모델링 (0) | 2022.12.28 |
파이썬 머신러닝 - 텐서플로우를 이용한 ANN , Dummy variable trap,batch_size , epochs (0) | 2022.12.27 |
파이썬 머신러닝 - Neural Networks (0) | 2022.12.27 |
파이썬. 머신러닝 - Hierarchical_clusterning (0) | 2022.12.05 |