딥러닝

[딥러닝] keras 맛보기

퓨어맨 2022. 7. 12. 14:11
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 데이터 프레임에서 모든 컬럼 표시(None : 모든 컬럼을 전부 표시함)
pd.set_option("display.max_columns", None)

# delimiter : 데이터 파일에서 구분자를 설정해주는 명령
data = pd.read_csv("/content/drive/MyDrive/Colab Notebooks/빅데이터 13차(딥러닝)/data/student-mat.csv", delimiter = ";")
data

 

 

# 문제, 정답 분리
X = data['studytime'] # 문제
y = data['G3']        # 정답

X.shape, y.shape
((395,), (395,))
 

 

 

# 학습, 평가 데이터 분리
from sklearn.model_selection import train_test_split 

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state = 5)
                                                    
print(X_train.shape)
print(y_train.shape)
print(X_test.shape)
print(y_test.shape)
(276,)
(276,)
(119,)
(119,)

 

 

 

# Sequential : 신경망의 뼈대를 구축하기 위한 모듈
from tensorflow.keras import Sequential
# InputLayer : 신경망의 입력층을 생성(데이터가 들어오는 입구 부분)
# Dense : 신경망에서 뉴런들의 묶음을 생성(층을 쌓아주는 역할)
from tensorflow.keras.layers import InputLayer, Dense

# 1. 신경망 구조 설계

# 신경망 뼈대 설정
model = Sequential()

# 입력층 설정
# input_shape : 입력 데이터의 특성 형태를 설정(특성이 1개면 1)
model.add(InputLayer(input_shape=(1,)))

# 출력층 설정
# Dense 안의 숫자는 하나의 층에 생성해줄 뉴런의 수
model.add(Dense(1))

# 설계된 신경망의 정보를 요약해서 출력
model.summary()
Model: "sequential"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 dense (Dense)               (None, 1)                 2         
                                                                 
=================================================================
Total params: 2
Trainable params: 2
Non-trainable params: 0
_________________________________________________________________

 

# 2.신경망 학습 및 평가방법 설정
model.compile(loss='mse',         # 손실함수(=비용함수) : MSE(평균제곱오차), 회귀문제이기 때문에 MSE를 사용
              optimizer='SGD'     # 최적화함수 : 경사하강법의 방법을 설정(SGD : 확률적 경사하강법), 딥러닝에서는 최소 SGD이상 사용
              )
              
# 3.학습
h = model.fit(X_train, y_train,
              epochs=100           # epochs : 학습 횟수 설정
              )

# 3. 시각화
plt.figure(figsize=(15,5))

# 라인 차트 생성
plt.plot(h.history['loss'],
         label='loss'
         )
plt.legend()
plt.show

 

# 4.모델평가
model.evaluate(X_test, y_test)
4/4 [==============================] - 2s 7ms/step - loss: 21.9250
21.924957275390625