본문 바로가기
Python

VSCode] Titanic dataset 분석하기 - 3. 신경망 neural network

by Fastlane 2023. 4. 10.
728x90
반응형

neural network는 사람 뉴런의 모델링 관점에서 제공된 inputs을 기반으로 outcome을 결정하는데, weights와 activation functions을 사용하는 모델이다.

 

머신러닝 알고리즘과 다르게, 신경망은 problem set의 이상적인 알고리즘을 모른다는 관점에서 deep learning의 형태이다. 여러가지 다양한 시나리오를 사용할 수 있으며 분류는 그 중 하나이다.

 

여기서는 Keras library와 TensorFlow를 사용하여 신경망을 구성하고 타이타닉 데이터셋을 다루어보자. 

 

1. 첫번째 step은 필요한 라이브러리를 import하고 model을 만드는 것이다. Sequential 신경망을 사용할 것이다. 순차적으로 층을 쌓은 신경망이다. 

from keras.models import Sequential
from keras.layers import Dense

model = Sequential()

2. 모델을 만든 다음, 신경망 층을 추가한다. 여기서는 간단하게 3개의 층을 추가한다. 

model.add(Dense(5, kernel_initializer = 'uniform', activation = 'relu', input_dim = 5))
model.add(Dense(5, kernel_initializer = 'uniform', activation = 'relu'))
model.add(Dense(1, kernel_initializer = 'uniform', activation = 'sigmoid'))
  • 첫번째 층은 5 dimension이고, 5개의 inputs을 갖는다. 
  • 두번째 층은 단순성을 위해서 5를 유지한다. 
  • 세번째 층은 승객의 생존여부인 1-dimensional output이 필요하기 때문에, output이 1이다. 

rectified linear unit (relu) activation function은 처음 2층에 대해 good general activation function으로 사용되고, 마지막 층은 sigmoid activation function을 사용한다. 

model에 대해 간략하게 살펴볼 수 있다. 

728x90

3. 모델이 생성 되었으면 컴파일해야 한다. 손실을 어느정도 계산할 지, 어떤 metric이 optimized되어야 할지 어떤 optimizer를 사용할지 결정해야 한다. 

model.compile(optimizer="adam", loss='binary_crossentropy', metrics=['accuracy'])
model.fit(X_train, y_train, batch_size=32, epochs=50)

4. 모델이 만들어지고 훈련되었으므로 test data에 대한 결과를 보자 

y_pred = np.rint(model.predict(X_test).flatten())
print(metrics.accuracy_score(y_test, y_pred))

81%의 정확도를 가진다. 간단한 신경망을 사용하여 앞에서 했던 Naive Bayes Classifier 의 75%의 정확도보다 결과가 나아졌다. 

728x90
반응형

댓글