본문 바로가기

인공지능

모두의 딥러닝 - 11장(데이터 다루기)

11장에서는 피마 인디언 당뇨병 데이터를 분석하는 실습을 한다.

데이터는 kaggle에서 가져올 수 있다.

 

.head(5)를 이용해 데이터의 첫 5줄을 출력했다.

.info() 함수는 데이터에 대한 정보를 알려준다. 

768개의 데이터가 있고, 9개의 열에 대해 각각 768개의 데이터가 전부 있다는 걸 확인할 수 있다.

 

.describe() 함수는 각 열의 데이터에 대한 백분위, min, max 등 구체적인 정보를 준다.

matplotlib과 seaborn 라이브러리를 이용해 각 열의 데이터들 사이의 상관관계도 볼 수 있다.

발병여부를 나타내는 outcome과 가장 상관관계가 높은 항목이 glucose이다.

 

glucose와 outcome을 따로 떼어서 보면, outcome이 1일 때는 glucose가 큰 경우가 더 많은 것을 볼 수 있다.

 

from keras.models import Sequential
from keras.layers import Dense
import numpy as np
import tensorflow.compat.v1 as tf

tf.disable_v2_behavior()

seed = 0
numpy.random.seed(seed)
tf.set_random_seed(seed)

dataset = numpy.loadtxt("../diabetes.csv", delimiter=",", skiprows=1)
X = dataset[:,0:8]
Y = dataset[:,8]
Y = Y.reshape(-1, 1)

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(X, Y, epochs=200, batch_size=10)


print("\n Accuracy: %.4f" %(model.evaluate(X,Y)[1]))

tensorflow를 이용해 발병 여부 outcome을 예측하는 모델을 설계하는 코드이다.

최종 결과값이 0, 1 두가지이기 때문에 오차 함수는 binary_crossentropy를 사용한다.