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 학습+시각화