정구리의 우주정복
인공지능 (1) - 딥러닝 준비운동 본문
*환경은 주피터 노트북을 사용했습니다.
'기존 데이터를 이용애 새로운 데이터의 결과를 예측하는 것'
머신러닝은 데이터 안에서 규칙을 발견하고 새로운 데이터에 적용해서 새로운 결과를 도출하는 것이다.
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개의 항목으로 구성되어있다.
맨 마지막이 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() 를 사용해 필요한 층을 추가하면 됨)
층을 몇개 쌓을지는 그때 그때 결정 여기서는 두개의 층을 쌓아 올렸다.
Dense() 를 통해 각 층이 어떤 특성을 가질지 옵션을 설정한다 (구체적인건 이후에 나올 예정)
층별 옵션을 정하고 나면 compile() 함수를 사용해 실행한다
activation : 다음 층으로 어떻게 값을 넘길지
loss : 한번 실행될 때 마다 오차값을 추적하는 함수
optimizer : 오차를 어떻게 줄여나갈지 정하는 함수
'PYTHON > A.I' 카테고리의 다른 글
인공지능(3) - 폐암 생존률 분석해보기 (0) | 2020.11.12 |
---|---|
인공지능 (2) - 딥러닝을 위한 기초 수학 (0) | 2020.10.30 |
[tensorflow] 텐서의 형 변환 (cast) , 슬라이싱 , concat , stack (0) | 2020.09.23 |
[tensorflow] 여러가지 자료형과 행렬 초기화 , 행렬의 연산 (0) | 2020.09.22 |
[tensorflow] 텐서와 그래프 실행 , AttributeError: module 'tensorflow' has no attribute 'Session' 에러 (0) | 2020.09.21 |