황규진 2024. 7. 17. 15:34

 

실습) 폐암 수술 환자의 생존율 예측하기 코드

data-master.zip
0.44MB

 

 

 

# 1. 환경 준비
from tensorflow.keras.models import Sequential  
from tensorflow.keras.layers import Dense       
import numpy as np

# 2. 데이터 준비
!git clone <https://github.com/taehojo/data.git>
Data_set = np.loadtxt("./data/ThoraricSurgery3.csv", delimiter=",")
X = Data_set[:,0:16]                                              
y = Data_set[:,16]    

# 3. 모델 구조 결정
model = Sequential()                                                  
model.add(Dense(30, input_dim=16, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

# 4. 모델 생성
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

# 5. 모델 실행
history = model.fit(X, y, epochs=5, batch_size=16)

 

 

 

활성화 함수

Linear (선형 함수)

  • 가장 기본적인 활성화 함수로, 입려과 동일한 값을 출력
  • 주로 회귀 문제에서 출력층의 활성화 함수로 사용됨
  • 입력과 출력 사이의 선형 관계를 표현하기 위해 사용됨

ReLU(Rectified Linear Unit)

  • 입력이 0보다 작을 경우 0을 출력, 0보다 큰 경우 입력 값을 그대로 출력
  • 비선형 함수로 신경망 은닉층에서 주로 사용
  • 입력에 대해 강한 비선형성을 제공, 그레디언트 소실 문제를 완화

Sigmoid

  • 입력을 0과 1사의 값으로 압축해서 출력
  • 이진 분류 문제에서 출력층의 활성화 함수로 사용
  • 출력 값이 확률로 해석될 수 있으며, 입력이 클래스에 속할 확률을 표현하는데 사용
  • 그러나 그레디언드 소실 문제와 출력 값의 제한된 범위가 단점으로 해석될 수 있음

Sofwmax

  • 다중 클래스 분류 문제에서 출력층의 활성화 함수로 사용됨
  • 입력 값들을 정규화 하여 클래스에 대한 확률 분포를 생성
  • 출력값의 합이 1이되며, 각 클래스에 속할 확률로 해석됨