5번째 강의 슬라이드 입니다.



}주제 토론: Bayes Classifier (윤빛나리)
}MLP
}MLP 실습 (diabetes data)
}Dropout
}모델 호출 / serialization / loading
}평가 방법
}Precision
}Recall
}Accuracy
}F1 score
}동영상 시청





class05.pdf





오늘 주제 발표 2 (Naïve Bayes Classification)에 사용된 슬라이드와 예제 소스코드 입니다.

발표자: 윤빛나리


Example_NBC.ipynb 

20181012_Naive Bayes Classifier_YUN.pdf

 

NBC.py

 







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]))




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()

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))


+ Recent posts