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를 사용한다.
'인공지능' 카테고리의 다른 글
모두의 딥러닝 - 13장(과적합 피하기) (0) | 2025.03.21 |
---|---|
모두의 딥러닝 - 12장(다중 분류 문제 해결하기) (0) | 2025.03.18 |
모두의 딥러닝 - 10장(모델 설계하기) (0) | 2025.03.17 |
모두의 딥러닝 - 6장 ~ 9장(신경망) (0) | 2025.03.17 |
모두의 딥러닝 - 5장(로지스틱 회귀) (0) | 2025.03.05 |