본문 바로가기
파이썬(Python), 머신러닝, 딥러닝

(딥러닝 with 파이썬) 당뇨병 예측(피마 인디언의 당뇨병 예측) - 2) 딥러닝 실행

by 굳세라(goodsarah) 2022. 8. 3.
728x90
반응형

 지난 포스팅에서 피마 인디언의 당뇨병 데이터(diabetes)에 대해 시각화해보며, 데이터에 대해 알아보았다.

2022.08.02 - [파이썬(Python), 머신러닝, 딥러닝] - (딥러닝 with 파이썬) 당뇨병 예측 (피마 인디언의 당뇨병 예측) - 1) 데이터 시각화

 

(딥러닝 with 파이썬) 당뇨병 예측 (피마 인디언의 당뇨병 예측) - 1) 데이터 시각화

 "당뇨병(diabete) 데이터"로 유명한 데이터셋인, "피마 인디언의 당뇨병" 데이터를 통해서,  1. 탐색적 데이터 분석(시각화)  2. 딥러닝을 통한 당뇨병 여부 예측 을 진행하겠습니다. 1. 탐색적 데

goodsarah.tistory.com

 

이번에는 딥러닝을 통해 해당 데이터를 학습한 뒤,  변수들 값 만으로 얼마나 정확하게 당뇨병 여부를 예측할 수 있는지 알아보겠다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
#피마 인디언 당뇨병 예측
 
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
 
#pandas 라이브러리 호출
import pandas as pd
 
#피마 인디언 당뇨병 관련 데이터 호출 : github taehojo님의 data
!git clone https://github.com/taehojo/data.git
 
df = pd.read_csv('./data/pima-indians-diabetes3.csv')
 
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
= df.iloc[:,0:8#파라미터 정보를 X라는 데이터로 저장
= df.iloc[:,8#종속변수 정보를 y라는 데이터로 저장
 
#모델 구성
model=Sequential()
 
model.add(Dense(12, input_dim=8, activation='relu', name='Dense_1')) 
#Input layer의 노드는 8개(파라미터 개수와 동일)
#Input layer 다음 첫번째 Hidden layer의 노드 : 12
#활성화 함수(Input -> hidden layer1) : Rectified Linear Unit
#해당 Dense의 이름을 Dense_1 으로 명명
 
model.add(Dense(8, activation ='relu', name='Dense_2'))
#두번째 Hiddenlayer의 노드 갯수 : 8
#활성화 함수(hidden layer1 -> hidden layer2) : Rectified Linear Unit
#해당 Dense의 이름을 Dense_2 으로 명명
 
model.add(Dense(1, activation='sigmoid', name='Dense_3'))
#출력층(Output layer)의 노드 갯수 : 1
#활성화 함수(hidden layer2 -> Output layer2) : sigmoid
#해당 Dense의 이름을 Dense_3 으로 명명
 
model.summary()
 
cs

 

 

1
2
3
4
5
6
7
8
9
#모델 컴파일
model.compile(loss='binary_crossentropy', optimizer = 'adam', metrics=['accuracy'])
#이진분류(당뇨 또는 정상)문제이기에 로지스틱회귀에 사용된 바이너리 크로스엔트로피를 손실함수로 지정
#옵티마이저(경사하강법을 적용하는 방식) : adam(momentum + rmsprop)
#metrics(모델 수행의 결과를 나타내는 척도) : accuracy(혼동행렬에서 구해지는 정확도)
 
 
#모델 실행
history = model.fit(X, y, epochs=100, batch_size=5)
cs

.

.

.

 

 

결과를 해석해보면, 100번의 반복 시행을 하였으며,

- 손실함수의 값(loss)은  0.5 값 일대에서 수렴하는 듯 보이며

- 정확도(accuracy)는 0.75 일대에서 수렴하는 것 처럼 보인다.

 

 학습률 및 레이어의 구성들을 조금 더 튜닝하게 되면 최적의 값을 찾을 수 있겠지만, 현재로서는 위와 같은 해석이 최선으로 보이며

 

 결론적으로는,  우리가 구성한 모델은 주어진 데이터를 바탕으로 버마 인디언의 당뇨병을 75%의 정확도를 가지고 예측할 수 있다고 해석할 수 있다.

728x90
반응형

댓글