정구리의 우주정복

인공지능 (1) - 딥러닝 준비운동 본문

PYTHON/A.I

인공지능 (1) - 딥러닝 준비운동

Jungry_ 2020. 10. 30. 15:16
반응형

*환경은 주피터 노트북을 사용했습니다.

 

'기존 데이터를 이용애 새로운 데이터의 결과를 예측하는 것'

머신러닝은 데이터 안에서 규칙을 발견하고 새로운 데이터에 적용해서 새로운 결과를 도출하는 것이다.

ex) 수술 환자의 수술 전 상태 , 생존률을 정리해놓은 데이터를 머신러닝에 넣어서 생존률을 구하는 방식

 

학습 : 데이터가 입력되고 패턴이 분석되는 과정

 

생존자와 사망자 데이터
새로운 데이터가 들어왔을때 예측

따라서 얼마나 정확한 경계선(빨간색) 을 긋느냐에 달려있다 !

 

폐암 수술 환자의 생존율 예측하기


실제 딥러닝 코드를 이용해 한번 살펴보자 (code 1-1)

#딥러닝을 구동하는데 필요한 케라스 함수 호출
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

#필요한 라이브러리 불러오기
import numpy as np
import tensorflow as tf

#실행할때마다 같은 결과를 출력하기 위해 설정하는 부분
np.random.seed(3)
tf.random.set_seed(3)

#준비된 수술 환자 데이터 불러오기
Data_set = np.loadtxt("DataSets/ThoraricSurgery.csv",delimiter = ',')

#환자의 기록과 수술 결과를 X 와 Y 로 구분하여 저장
X = Data_set[:,0:17] #환자의 기록
Y = Data_set[:,17] #수술결과

#딥러닝 구조를 결정 (모델을 설정하고 실행)
model = Sequential()
model.add(Dense(30, input_dim = 17,activation = 'relu'))
model.add(Dense(1,activation='sigmoid'))

#딥러닝 실행
model.compile(loss = 'binary_crossentropy',optimizer = 'adam', metrics=['accuracy'])
model.fit(X,Y,epochs=100,batch_size = 10)

code 1-1 은 '데이터를 다루는 부분' 과 '딥러닝을 실행하는 부분' 으로 구성되어 있다

결과값

lose 는 빗나간 정도 accuracy 는 정확도


코드 대략적으로 살펴보기

  • 첫번째 : 데이터 분석과 입력 (데이터를 불러와서 사용할 수 있게 만들어주는 부분)
#딥러닝을 구동하는데 필요한 케라스 함수 호출
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

#필요한 라이브러리 불러오기
import numpy as np #수치계산을 위해 만들어진 라이브러리
import tensorflow as tf

#실행할때마다 같은 결과를 출력하기 위해 설정하는 부분
np.random.seed(3)
tf.random.set_seed(3)

#준비된 수술 환자 데이터 불러오기
Data_set = np.loadtxt("DataSets/ThoraricSurgery.csv",delimiter = ',')
#외부 csv 파일 불러오기

#환자의 기록과 수술 결과를 X 와 Y 로 구분하여 저장
X = Data_set[:,0:17] #환자의 기록 (속성)
Y = Data_set[:,17] #수술결과 (클래스)

csv 파일은 총 470 개의 라인과 18개의 항목으로 구성되어있다.

앞에 17가지는 환자의 상태 , 18번째는 생존여부

맨 마지막이 1은 생존 0은 사망했음을 의미한다

=> 1-17의 항목을 분석해 18번째 생존률을 맞히는 것이다.

 

1-17까지를 속성 18번째를 클래스 라고한다 .

딥러닝에서는 '속성' 을 뽑아 데이터셋을 만들고 '클래스'를 담는 데이터셋을 또 따로 만들어 줘야한다

여기선 X 가 속성 데이터셋 Y가 클래스 데이터셋이 된다

 

  • 두번째 : 딥러닝 실행 (실제로 딥러닝을 실행하는 부분)
#딥러닝을 구동하는데 필요한 케라스 함수 호출
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

(중략)


#딥러닝 구조를 결정 (모델을 설정하고 실행)
model = Sequential()
model.add(Dense(30, input_dim = 17,activation = 'relu'))
model.add(Dense(1,activation='sigmoid'))

#딥러닝 실행
model.compile(loss = 'binary_crossentropy',optimizer = 'adam', metrics=['accuracy'])
model.fit(X,Y,epochs=100,batch_size = 10)

케라스를 사용해 딥러닝을 실행시키는 방법을 사용한다 . (최근에는 텐서플로와 케라스를 주로 사용한다)

Sequential() 을 사용하면 딥러닝 구조를 한 층 한 층 쌓아올릴 수 있게 해준다 (model.add() 를 사용해 필요한 층을 추가하면 됨)

model.add를 통해 쌓아올리면 됨

층을 몇개 쌓을지는 그때 그때 결정 여기서는 두개의 층을 쌓아 올렸다.

Dense() 를 통해 각 층이 어떤 특성을 가질지 옵션을 설정한다 (구체적인건 이후에 나올 예정)

층별 옵션을 정하고 나면 compile() 함수를 사용해 실행한다

 

activation : 다음 층으로 어떻게 값을 넘길지

loss : 한번 실행될 때 마다 오차값을 추적하는 함수

optimizer : 오차를 어떻게 줄여나갈지 정하는 함수

반응형
Comments