딥러닝 - ex01_Keras맛보기(학생성적데이터_회귀)
### 목표
- 학생 성적 데이터를 인공신경망모델로 학습시켜보자!
- Keras 활용법을 숙지한다
! ls #현재 작업 폴더의 내부(폴더,파일) 살펴보기
!pwd # 현재 작업폴더 경로 확인
%cd /content/drive/MyDrive/Colab Notebooks
! ls
!pwd
ls 명령어는 현재 디렉토리 내부의 파일과 디렉토리를 출력하는 명령어입니다.
pwd 명령어는 현재 작업 디렉토리 경로를 출력합니다.
%cd 명령어는 현재 작업 디렉토리를 변경하는 명령어입니다.
코드에서는 Google Colab의 작업 디렉토리를 변경하여 해당 디렉토리 내부의 파일들을 읽어오기 위한 작업을 수행합니다.
### 데이터로딩
import pandas as pd
# 구분자 - 데이터가 ; 로 저장되어있음
studentData = pd.read_csv('./data/student-mat.csv', delimiter=';')
studentData.head()
pd.read_csv() 함수는 csv 파일을 불러오는 함수입니다.
delimiter 파라미터는 csv 파일 내의 데이터 구분자를 지정하는 파라미터입니다.
여기서는 ';'을 구분자로 사용하여 데이터를 불러왔습니다.
### 문제와 답을 분리
from sklearn.model_selection import train_test_split
X = studentData['studytime']
y = studentData['G3']
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
X_train.shape, y_train.shape
X_test.shape, y_test.shape
train_test_split() 함수는 데이터를 학습 데이터와 테스트 데이터로 분리하는 함수입니다.
여기서는 X와 y 데이터를 분리하여 학습 데이터와 테스트 데이터를 생성하였습니다.
random_state 파라미터는 분리를 할 때 데이터를 섞어주는데, 이때 섞는 방법을 지정하는 파라미터입니다.
### 신경망 모델 만들기
1. 신경망 구조 설계
2. 신경망 모델 학습(loss, optimizer) / 평가(metrics) 방법 설정
3. 학습 및 학습과정 시각화
4. 모델 평가
from tensorflow.keras import Sequential
from tensorflow.keras.layers import InputLayer, Dense
Sequential 클래스는 keras에서 사용하는 모델을 생성하기 위한 클래스입니다.
InputLayer 클래스는 모델의 첫 번째 층인 입력층을 생성하기 위한 클래스입니다.
Dense 클래스는 keras에서 제공하는 fully connected layer(완전 연결 층)을 생성하기 위한 클래스입니다.
모델의 구조를 만드는 작업입니다.
# 1. 신경망 구조 설계
model = Sequential() # 딥러닝 모델을 구성하는 뼈대
model.add(InputLayer(input_shape=(1,))) # 입력되는 크기는 하나, 입력층 설정
model.add(Dense(units=5))
model.add(Dense(units=9))
model.add(Dense(units=4))
model.add(Dense(units=1)) # 마지막은 반드시 하나로 설정해주어야한다. 출력층
# 2. 신경망 모델 학습(loss, optimizer) / 평가(metrics)방법 설정
model.compile(loss='mean_squared_error',optimizer='SGD') #최적화
compile 메서드는 모델을 학습하기 위한 손실 함수와 최적화 알고리즘을 지정하는 함수입니다.
# 3. 학습 및 학습과정 시각화
studentHistory = model.fit(X_train, y_train, epochs=100)
import matplotlib.pyplot as plt
plt.figure(figsize=(15,5))
plt.plot(range(1,101),
studentHistory.history['loss'],
label='loss')
plt.show
plt.plot() 함수는 그래프를 그리는 함수입니다. range() 함수는 숫자의 리스트를 생성하는 함수입니다. label 파라미터는 그래프에 라벨을 붙여주는 파라미터입니다. plt.show() 함수는 그래프를 출력하는 함수입니다.
# 4. 모델 평가
model.evaluate(X_test,y_test)
evaluate() 메서드는 모델의 성능을 평가하는 함수입니다. 이 함수를 통해 학습한 모델의 손실을 확인할 수 있습니다.
https://github.com/yoonhyochang/Deep_learning 파일링크