Deep Learning

[딥러닝] keras 맛보기 (폐암 환자 생존 예측)

숭어싸만코 2022. 10. 5. 09:18

 

# 목표

폐암환자의 생존을 예측하는 모델을 만들어보자~!

신경망을 활용하여 2진분류 문제를 해결해보자~!

 

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt


# None = 인덱스 번호로 출력 

data = pd.read_csv('/content/drive/MyDrive/Colab Notebooks/딥러닝(SpringB)/data/ThoraricSurgery.csv',header=None)

data

# 문제, 정답 분리하기
X= data.iloc[:,:-1]
y= data.iloc[:,-1]



X.shape,y.shape

# 학습, 평가 데이터로 분리

from sklearn.model_selection import train_test_split

# 기본값은 0.75 / 0.25 비율로 나눠짐
X_train,X_test,y_train ,y_test =  train_test_split(X,y,random_state=11)

print(X_train.shape)
print(X_test.shape)
print(y_train.shape)
print(y_test.shape)

#  딥러닝 신경망 모델링

1.신경망 구조 설계

2.학습/평가 방법 설정
 
3 학습+시각화

4.모델 평가

 


1.신경망 구조 설계

 

# 1.신경망 구조설계


model =  Sequential()

# 입력층(input_dim) + 중간층 1개(Dense)

# input_dim : 입력되는 데이터의 특성 수
# activation : 활성화 함수 설정(들어온 자극(data)에 대한 응답 여부를 결정 하는 함수)
model.add(Dense(10,input_dim=17, activation = 'sigmoid'))
 

#중간층 

model.add(Dense(6, activation='sigmoid')) # 하나의 층
model.add(Dense(4, activation='sigmoid'))
 
 
 

#출력층 

#출력층은 회귀(linear, 디폴트), 2진분류(sigmoid), 다중분류에 따라 사용하는 활성화 함수가 달라진다!
model.add(Dense(1,activation='sigmoid'))

model.summary()

 

from tensorflow.keras import Sequential    # 신경망의뼈대를 설정해주는 함수
from tensorflow.keras.layers import Dense  # 뉴런의 묶음을 만들어주는 함수
from sklearn.metrics impor

from pandas.core.strings.accessor import StringMethods
from os import access
# 1.신경망 구조설계

model =  Sequential()

# 입력층(input_dim) + 중간층 1개(Dense)
# input_dim : 입력되는 데이터의 특성 수
# activation : 활성화 함수 설정(들어온 자극(data)에 대한 응답 여부를 결정 하는 함수)
model.add(Dense(10,input_dim=17, activation = 'sigmoid'))


#중간층 
model.add(Dense(6, activation='sigmoid')) # 하나의 층
model.add(Dense(4, activation='sigmoid'))


#출력층 
#출력층은 회귀(linear, 디폴트), 2진분류(sigmoid), 다중분류에 따라 사용하는 활성화 함수가 달라진다!
model.add(Dense(1,activation='sigmoid'))

model.summary()

 

2.학습/평가 방법 설정

 

optimizer (최적화 함수) : 경사강법의 방식을 설정해주는 함수
# 2.학습/평가 방법 설정

model.compile(loss="binary_crossentropy",
              optimizer="SGD",    # 최적화 함수 : 경사강법의 방식을 설정해주는 함수
              metrics=['acc']
              )

h= model.fit(X_train,y_train, epochs=100)

plt.figure(figsize=(15,5))

plt.plot(h.history['acc'], label='acc')

plt.legend()
plt.show()

model.evaluate(X_test,y_test)

 

3 학습+시각화

 

 

4.모델 평가