Deep Learning 실습 - 유방암 데이터
(2020.08.02)
유방암데이터를 가지고 간단한 딥러닝을 해보고자 한다.
먼저 관련 딥러닝을 수행하기 위해 필요한 라이브러리를 import한다.
from tensorflow.keras.models import Sequential
from tensorflow.keras.layer import Dense
import numpy as np
import tensorflow as tf
그 후 매번 할 때마다 값이 변하지 않도록 random seed값을 고정해준다.
np.random.seed(3)
tf.random.set_seed(3)
그 후 우리가 사용할 데이터를 Data_set에 불러와둔다.
Data_set = np.loadtxt("파일 위치 경로", delimiter=",")
예측할 값인 y와 특성들을 구분해준다.
X = Data_set[:,:17]
y = Data_set[:,17]
그 후 모델을 만들어주는데 이 때 Sequntial함수를 사용하게 된다.
Sequential 모델은 레이어를 선형으로 연결하여 구성한다.
또한 레이어 인스턴스를 생성자에게 넘겨줌으로써 sequence 모델을 구성할 수 있다.
model = Sequential()
그 후 add 메소드를 통해 쉽게 레이어를 추가할 수 있다.
케라스는 첫번째 레이어에 입력 모양을 지정해야하지만 다른 나머지 모든 레이어는 모양을 자동으로
추론하여 생성하여준다.
따라서 첫번째 레이어(input layer)에 입력 데이터(input_dim)의 크기를 명시해주어야 한다.
그리고 Dense함수를 살펴보면 다음과 같다.
▶ Dense 클래스를 이용하여 레이어의 노드를 만드는데 사용된다.
▶ Sequential 모델에 추가하면 다른 노드들과 연결된다.
▶ 입출력 레이어를 모두 연결해주는것이 Dense layer
→ model.add(Dense(2, input_dim = 2))
: 레이어 수를 2개로 두고 그 노드의 입력값을 2개로 사용하겠다.
→ model.add(Dense(5, input_dim = 2))
: 레이어 수를 5개로 두고 그 노드의 입력값을 3개로 사용하겠다.
→ model.add(dense(2))
: 레이어 수를 2개로 두는데, 입력값으로는 이전층의 결과들을 사용하겠다.
model.add(Dense(30, input_dim = 17, activation="relu"))
이제 새로운 퍼셉트론을 생성한다.
1개의 노드를 생성하고 시그모이드 활성화 함수를 사용한다.
model.add(Dense(1, activation="sigmoid"))
모델 구성후 compile()메서드를 사용하여 모델 학습과정을 결정한다.
모델을 설계하고 컴파일 하기 전에 모델을 생성하는 과정이다.
여기서 매개변수로 넘어가는 것은 다음과 같다.
→ loss : 최적화 과정에서 오차를 최적화 할 손실 함수를 설정하는것으로 MSE(평균제곱오차)
와 binary_crossentropy가 자주 사용된다.
→ optimizer : 훈련과정을 설정하는 것으로 adam, SGD등이 있다.
→ metrics : 훈련을 모니터링 하기위해 사용된다.
model.compile(loss = "mean_squared_error", optimizer="adam", metrics = ["accuracy"])
그리고 나서 모델을 학습시켜주는데 이때 매개변수는 다음과 같다.
→ epochs : 주어진 에펙 수만큼 모델을 학습시킴
→ batch_size : 한번에 사용해야하는 트레이닝 데이터의 크기를 지정
→ verbose : 학습진행 상황의 피드백 여부를 지정
( 0: slient, 1: progress bar, 2: one line per epochs )
model.fit(X, y, epochs = 100, batch_size=10, verbose=2)
마지막으로 예측한다.
model.predict(X)