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)



#

#

# missing part

#

#

#




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





UCI Pima indians diabetes dataset



1. Pregnancies

2. Glucose

3. BloodPressrue

4. SkinThickness

5. Insulin

6. BMI

7. DiabetesPredigreeFunction

8. Age

9. Label



diabetes.csv


 

 

3~4번째 클래스 강의 내용입니다.

 

주로 실습이라 슬라이드 내용은 많지 않네요.

 

 

class03-04.pdf

 

 

 

iris data

 

iris.csv

 

 

예제 2의 소스 코드를 수정하여 로컬 하드 디스크에 있는 csv 데이터 파일을 로딩하고 분석해 보자.

 

multi-class classification

 

 

Epoch 별 train loss, val loss, accuracy 등을 차트로 보여 주는 기능은 계속 유지 하자.

 

raw 데이터에서 train data와 validation data를 분리하는 코드를 이해하고 label을 one hot코드로 수정하여 이용하는 부분을 주목하자.

 

 




import numpy

import pandas


from keras.utils import np_utils

from keras.datasets import mnist

from keras.models import Sequential

from keras.layers import Dense, Activation

from sklearn.model_selection import train_test_split

from sklearn.preprocessing import LabelEncoder



import numpy as np

seed = 3

np.random.seed(seed)


# generating data set


# load dataset

dataframe = pandas.read_csv("iris.csv", header=None)

dataset = dataframe.values

alldata = dataset[:,0:4].astype(float)

alllabel =dataset[:,4]

# X_train = data_train, X_test=data_val, y_train=label_train, y_test=label_val

data_train, data_val, label_train, label_val = train_test_split( alldata, alllabel, test_size=0.5, random_state=seed)



# below parts are done automatically by the previous line. ========

#train_rand_idxs = np.random.choice(len(list(data_train)),100) # c.f. total 150 raws

#val_rand_idxs = np.random.choice(len(list(data_val)),30)

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



# encode class labels as integers

encoder = LabelEncoder()

encoder.fit(label_train)

encoded_label_train = encoder.transform(label_train)

# convert integers to one hot representation

onehot_label_train = np_utils.to_categorical(encoded_label_train)



encoder2 = LabelEncoder()

encoder2.fit(label_val)

encoded_label_val = encoder2.transform(label_val)

# convert integers to one hot representation

onehot_label_val = np_utils.to_categorical(encoded_label_val)


model = Sequential()

model.add(Dense(units=8, input_dim=4, activation='relu'))

model.add(Dense(units=3, activation='softmax'))

# units = dimensionality of the output space

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

# see https://keras.io/losses/, https://keras.io/optimizers/


# conduct learn

hist = model.fit(data_train, onehot_label_train, epochs=100, batch_size=10, validation_data=(data_val, onehot_label_val))



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



from keras.utils import np_utils

from keras.datasets import mnist

from keras.models import Sequential

from keras.layers import Dense, Activation


import numpy as np


np.random.seed(3)


# generating data set


# load training set and test set

(data_train, label_train), (data_test, label_test) = mnist.load_data()

# data_train, data_test are RGB image with shape (num_samples, 3, width, height) 


# split training set and test set

data_val = data_train[50000:]

label_val = label_train[50000:]

data_train = data_train[:50000]

label_train = label_train[:50000]


# dataset pre processing

data_train = data_train.reshape(50000,784).astype('float32')/255.0

data_val = data_val.reshape(10000, 784).astype('float32')/255.0

data_test = data_test.reshape(10000, 784).astype('float32')/255.0


# select training, validation set

train_rand_idxs = np.random.choice(50000, 700)

val_rand_idxs = np.random.choice(10000, 300)

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 to 'one-hot' encoding for label data

label_train = np_utils.to_categorical(label_train)

label_val = np_utils.to_categorical(label_val)

label_test = np_utils.to_categorical(label_test)


# Build model

model = Sequential()

model.add(Dense(units=2, input_dim=28*28, activation='relu'))

model.add(Dense(units=10, activation='softmax'))

# units = dimensionality of the output space


model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])

# see https://keras.io/losses/, https://keras.io/optimizers/


# conduct learn

from keras.callbacks import EarlyStopping

early_stopping = EarlyStopping(patience = 20)

hist = model.fit(data_train, label_train, epochs=1000, batch_size=10, validation_data=(data_val, label_val), callbacks=[early_stopping])


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



 

첫번째 주제 발표 (SVM) 슬라이드와 예제 소스 파일입니다.

 

 

[이장우]딥러닝기술응용_주제발표_SVM.pdf

svm_ex_with_sklearn.py

 

 

 

 

# select training, validation set

train_rand_idxs = np.random.choice(50000, 700)

val_rand_idxs = np.random.choice(10000, 300)

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 to 'one-hot' encoding for label data

label_train = np_utils.to_categorical(label_train)

label_val = np_utils.to_categorical(label_val)

label_test = np_utils.to_categorical(label_test)


# Build model

model = Sequential()

model.add(Dense(units=2, input_dim=28*28, activation='relu'))

model.add(Dense(units=10, activation='softmax'))

# units = dimensionality of the output space


model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])

# see https://keras.io/losses/, https://keras.io/optimizers/


# conduct learn

hist = model.fit(data_train, label_train, epochs=1000, batch_size=10, validation_data=(data_val, label_val))






from keras.utils import np_utils

from keras.datasets import mnist

from keras.models import Sequential

from keras.layers import Dense, Activation


import numpy as np


np.random.seed(3)


# generating data set


# load training set and test set

(data_train, label_train), (data_test, label_test) = mnist.load_data()

# data_train, data_test are RGB image with shape (num_samples, 3, width, height) 


# split training set and test set

data_val = data_train[50000:]

label_val = label_train[50000:]

data_train = data_train[:50000]

label_train = label_train[:50000]


# dataset pre processing

data_train = data_train.reshape(50000,784).astype('float32')/255.0

data_val = data_val.reshape(10000, 784).astype('float32')/255.0

data_test = data_test.reshape(10000, 784).astype('float32')/255.0




#

#

#

# missing part

#

#





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

 

 

주제 토론 (머신러닝 분류기) 발표 일정입니다.

 

첨부한 파일을 참고하세요.

 

일정 조정이 필요하신 분은 상담바랍니다.

 

 

 

 

주제토론-일정.pdf

 

 

 

+ Recent posts