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

(딥러닝 with 파이썬) 폐암 수술 환자의 생존율 예측 모델

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

폐암 수술환자의 생존율을 예측하는 모델

 

데이터 : github "taehojo" 님이 업로드하신 폐암 수술환자 파일 사용

*16개의 독립변수(X)와 1개의 종속변수(y / 생존여부(Binary))

 

파이썬 코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#텐서플로 라이브러리 안에 있는 케라스 API에서 필요한 함수들을 호출
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
 
#numpy 라이브러리 호출
import numpy as np
 
#폐암 수술환자 관련 데이터 호출 : github taehojo님의 data
#텍스트(txt)로 저장된 데이터
!git clone https://github.com/taehojo/data.git
 
 
#numpy 라이브러리에서 txt로 저장된 csv 파일을 호출하는 모듈을 사용
#delimiter(:구분기호)는 , 임 / txt 파일에 저장된 csv 파일은 , 기호를 바탕으로 열(Column)이 구분되어 있음
Data = np.loadtxt("./data/ThoraricSurgery3.csv", delimiter=",")
 
 
X=Data[:,0:16# 환자의 진찰기록
y=Data[:,16# 수술 1년 후 사망/생존 여부
 
#딥러닝의 모델의 구조를 결정
model = Sequential() # 순차로 Layer 더해주는 모델을 활용
model.add(Dense(30,input_dim=16, activation = 'relu')) 
# 해당 순차모델에 뉴런의 수를 입력(은닉층 뉴런 : 30 / 출력 뉴런 : 16)
# 활성화함수(activatin function)은 ReLU(Rectified Linear Unit) 활용
 
model.add(Dense(1, activation = 'sigmoid'))
#출력층을 더해주는 작업. 출력층의 노드는 1개
#은닉층 30개의 뉴런에서 출력층 1개의 노드로 전파되는 함수에 sigmoid선택
 
 
#모델 실행(Compile)
 
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
#이진분류(사망 또는 생존)문제이기에 로지스틱회귀에 사용된 바이너리 크로스엔트로피를 손실함수로 지정
#옵티마이저(경사하강법을 적용하는 방식) : adam(momentum + rmsprop)
#metrics(모델 수행의 결과를 나타내는 척도) : accuracy(혼동행렬에서 구해지는 정확도)
 
history = model.fit(X, y, epochs=10, batch_size=16#모델에 데이터를 적용
#epochs(반복횟수) : 10 / 10번 반복
#batch_size(한번에 처리할 샘플의 갯수) : 16 / adam이 확률적 경사하강법을 기반으로 했기에 활용 
cs

 

 

2.코딩 결과

10번의 반복을 설정했으며, 반복을 할 수록 loss 값이 점차 감소하고 있으며 아직 수렴하지 않았기에 추가적인 반복(Iteration)이 필요함.

728x90
반응형

댓글