Module: tf.keras | TensorFlow v2.16.1
DO NOT EDIT.
www.tensorflow.org
! 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
grid.best_params_ # 파라미터 정보
{'batch_size': 10, 'epochs': 30, 'optimizer': 'rmsprop'}
grid.best_score_ # 정확도
0.862125
best_model = grid.best_estimator_
best_model.predict(X_test)
array([0, 0, 0, ..., 0, 0, 0])
best_model.predict_proba(X_test) # 확률로 보기
array([[0.7514862 , 0.24851382],
[0.6307688 , 0.36923125],
[0.8103051 , 0.18969488],
...,
[0.8100885 , 0.1899115 ],
[0.81499493, 0.1850051 ],
[0.85258085, 0.14741915]], dtype=float32)
결과 보기
model = build_model()
model.summary()
model.fit(X_train, y_train, epochs=500, validation_split=0.2)
# 80%는 학습시키고 20%는 시험시킨다
# validation이란 검증데이터를 말한다.
- 테스트? 인공지능 학습이 완전히 다 끝났을 때 평가하는 것 ex)수능
- validation? 에포크가 한번 끝날때마다 학습에 사용하지 않은 데이터로 시험을 보는 것을 말한다. ex)모의고사
-에포크를 500번 했을 때, 어느 순간부터 머신러닝 학습에서 loss(오차가) 더 늘어나는 현상이 발생하는데, 이를 overfitting(과적합)현상이라고 한다. overfitting(과적합)현상이란 과거데이터를 지나치게 많이 학습하여 과거데이터에 대한 오차는 줄어들지만 미래에 대한 예측에는 더 큰 오차를 가져오는 것을 말한다.
최적의 에포크를 사용하려면?
model.fit 메서드를 수정하여 검증 점수가 향상되지 않으면 자동으로 훈련을 멈추도록 만들어 본다. 에포크마다 훈련 상태를 점검하기 위해 EarlyStopping 콜백(callback)을 사용한다. 지정된 에포크 횟수 동안 성능 향상이 없으면 자동으로 훈련이 멈춘다
model = build_model() # def를 빈 깡통 상태로 만들어줌
early_stop = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=10)
# patience를 5로 설정하면, 5번의 에포크동안 성능향상이 없으면 학습을 멈추라는 의미이다.
from keras.callbacks import EarlyStopping
epoch_history = model.fit(X_train, y_train, epochs = 100000, validation_split=0.2, callbacks=[early_stop])
최종 시험보기
model.evaluate(X_test, y_test)
[==============================] - 0s 6ms/step - loss: 0.1021 - mae: 0.2288
[0.10210247337818146, 0.22881145775318146]
'ML (MachineLearning)' 카테고리의 다른 글
tensorflow(텐서플로우)에서 def를 저장하고 불러오는 방법 (0) | 2024.04.18 |
---|---|
흑백 이미지 데이터셋을 AI에게 판별시켜, 카테고리의 정답을 맞추는 머신러닝 기법 (0) | 2024.04.18 |
딥러닝 : Neural Networks 으로 Classification(분류) 하기 (2) | 2024.04.16 |
머신러닝 알고리즘 개념 요약 (0) | 2024.04.16 |
하이라키 클러스터링(Hierarchical Clustering) : 계층적 군집 (0) | 2024.04.16 |