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
반응형
'파이썬(Python), 머신러닝, 딥러닝' 카테고리의 다른 글
(딥러닝 with 파이썬) 당뇨병 예측(피마 인디언의 당뇨병 예측) - 2) 딥러닝 실행 (0) | 2022.08.03 |
---|---|
(딥러닝 with 파이썬) 당뇨병 예측 (피마 인디언의 당뇨병 예측) - 1) 데이터 시각화 (0) | 2022.08.02 |
(딥러닝 with 파이썬) 오차역전파 / 활성화 함수 (0) | 2022.08.02 |
딥러닝에서 중간층을 은닉층이라 부르는 이유? (0) | 2022.08.02 |
(파이썬 코드)다중퍼셉트론으로 XOR문제 해결하기 (0) | 2022.08.02 |
댓글