본문 바로가기

머신러닝/입문

케라스를 이용해보기

from keras.models import Sequential
from keras.layers import Dense
import pandas as pd
from sklearn.model_selection import train_test_split

 

import os
os.chdir("데이터를 불러올 폴더경로")
os.getcwd() # 현재위치 확인

 

iris_data = pd.read_csv("iris.csv", encoding = 'utf-8', names=['a','b','c','d','y'])

데이터를 불러와보자

y = iris_data.loc[:,'y']
x = iris_data.loc[:,["a","b","c","d"]]

데이터와 레이블을 구분하였다.

 

from sklearn.preprocessing import LabelEncoder
from keras.utils import np_utils
e = LabelEncoder()
e.fit(y)
y1 = e.transform(y)

y의 출력값

왼쪽의 문자로된 레이블을 오른쪽 숫자로 바꿔주는 작업이다. 아직 학습시키기위해서는 one-hot 인코딩이라는 작업이 남아있다.

 

y_encoded = np_utils.to_categorical(y1)

y_encoded의 출력값

이렇게 데이터의 모양을 바꿔주면 학습이 가능해진다.

 

x_train, x_test, y_train, y_test = train_test_split(x,y_encoded, test_size=0.3,
                                                   train_size=0.7, shuffle=True)

학습데이터와 테스트 데이터로 나누어보자.

 

model = Sequential()
model.add(Dense(128, input_dim=4, activation='relu'))
model.add(Dense(64, activation='relu'))
model.add(Dense(3, activation='softmax'))

간단하게 모델을 만들어보자

여기서 input_dim은 학습할 데이터의 컬럼갯수라고 생각하면된다.(레이블열 제외)

 

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

모델을 만들고 컴파일도 반드시 잊지말자.

 

model.fit(x_train, y_train, epochs = 200, batch_size=10)

트레이닝데이터와 라벨을 넣고 학습을 시키자.

 

모델평가

평가해보니 SVC모델을 썼을때보다 0.02가 올라갔다