5번째 강의 슬라이드 입니다.
5번째 강의 자료
주제 발표 2 (Naïve Bayes Classification)
오늘 주제 발표 2 (Naïve Bayes Classification)에 사용된 슬라이드와 예제 소스코드 입니다.
발표자: 윤빛나리
20181012_Naive Bayes Classifier_YUN.pdf
Load_model 실습 예제
1. 하드에 있는 모델을 로딩하자
2. 로딩된 모델에 새로운 테스트 데이터를 입력하여 예측값을 얻어보자.
3. 이 소스에서는 학습을 수행하지 않고 이미 학습된 모델을 로딩하여 이용하는 것을 확인하자.
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from keras.utils import np_utils
np.random.seed(5)
dataset = np.loadtxt("diabetes.csv", delimiter=",", skiprows = 1)
data_test = dataset[700:, 0:8]
label_test = dataset[700:, 8]
#data_test = data_test(768,8).astype('float32')
label_test = np_utils.to_categorical(label_test)
# load model
from keras.models import load_model
model = load_model('diabetes_mlp_model.h5')
# use the model
label_pred = model.predict_classes(data_test)
for i in range(30):
print("Input: ",data_test[i,:]," Predict:"+str(label_pred[i]))
모델 저장 실습, diabetes with tracking graph and dropout
1. 아래 코드를 입력하여 epoch 별 학습 상태를 그래프로 확인하자.
2. 저장된 모델 파일의 존재를 확인하고 모델 파일을 loading하여 새로운 테스트 데이터를 입력하여 prediction을 수행하자.
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
np.random.seed(5)
dataset = np.loadtxt("diabetes.csv", delimiter=",", skiprows = 1)
# split
data_val = dataset[500:, 0:8]
label_val = dataset[500:, 8]
data_train = dataset[:700, 0:8]
label_train = dataset[:700, 8]
data_test = dataset[700:, 0:8]
label_test = dataset[700:, 8]
# shuffle
train_rand_idxs = np.random.choice(700, 600)
val_rand_idxs = np.random.choice(268, 260)
data_train = data_train[train_rand_idxs]
label_train = label_train[train_rand_idxs]
data_val = data_val[val_rand_idxs]
label_val = label_val[val_rand_idxs]
# convert labels to one-hot representation
model = Sequential()
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(8, activation = 'relu'))
model.add(Dropout(0.3))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
hist = model.fit(data_train, label_train, epochs = 150, batch_size = 64, validation_data=(data_val, label_val))
scores = model.evaluate(data_test, label_test)
print("%s: %.2f%%" %(model.metrics_names[1], scores[1]*100))
# save the trained model into file
#from keras.models import load_model
#model.save('diabetes_mlp_model.h5')
# show the learning process
%matplotlib inline
import matplotlib.pyplot as plt
fig, loss_ax = plt.subplots()
acc_ax = loss_ax.twinx()
loss_ax.plot(hist.history['loss'], 'y', label='train loss')
loss_ax.plot(hist.history['val_loss'], 'r', label='val loss')
acc_ax.plot(hist.history['acc'], 'b', label='train acc')
acc_ax.plot(hist.history['val_acc'], 'g', label='val acc')
loss_ax.set_xlabel('epoch')
loss_ax.set_ylabel('loss')
acc_ax.set_ylabel('accuracy')
loss_ax.legend(loc='upper left')
acc_ax.legend(loc='lower left')
plt.show()
MLP 실습 diabetes (missing part)
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
np.random.seed(5)
dataset = np.loadtxt("diabetes.csv", delimiter=",", skiprows = 1)
data_train = dataset[:700, 0:8]
label_train = dataset[:700, 8]
data_test = dataset[700:, 0:8]
label_test = dataset[700:, 8]
model = Sequential()
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dense(8, activation = 'relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(data_train, label_train, epochs = 150, batch_size = 64)
scores = model.evaluate(data_test, label_test)
print("%s: %.2f%%" %(model.metrics_names[1], scores[1]*100))