생활코딩/머신러닝야학
Tensorflow - 지도학습 순서(레모네이드 판매 예측)
hayjo
2020. 8. 14. 16:59
[강의 출처] opentutorials.org/module/4966/28974
첫번째 딥러닝 - 레모네이드 판매 예측 - Tensorflow 1
수업소개 레모네이드 판매량을 예측하는 딥러닝 모델을 텐서플로우를 이용하여 만들어 봅니다. 강의 손실의 의미 실습 소스코드 colab | backend.ai ########################### # 라이브러리 사용 i
opentutorials.org
지도학습 순서
데이터 준비 -> 모델 구조 생성 -> 모델 학습(FIT) -> 적용
# 라이브러리 사용
import tensorflow as tf
import pandas as pd
# 데이터를 준비합니다.
파일경로 = 'https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/lemonade.csv'
레모네이드 = pd.read_csv(파일경로)
레모네이드.head()
# 종속변수, 독립변수 - 분리해서 준비
독립 = 레모네이드[['온도']]
종속 = 레모네이드[['판매량']]
print(독립.shape, 종속.shape) # 이후 모델 구조 생성시 필요
# 모델을 만듭니다.
X = tf.keras.layers.Input(shape=[1]) # 독립변수의 개수가 1이어서 shape=[1]
Y = tf.keras.layers.Dense(1)(X) # 종속변수의 개수가 1이어서 Dense(1)(X)
model = tf.keras.models.Model(X, Y)
model.compile(loss='mse') # 모델 학습 방법 설정
# 모델을 학습시킵니다.
model.fit(독립, 종속, epochs=10) # epochs: 데이터를 몇 번 반복학습할 지 결정하는 변수
"""
Epoch 1/10 # 몇 번째 학습인지 알려주는 부분
1/1 [==============================] - 0s 2ms/step - loss: 57.7534
# os 2ms/step: 학습에 소요된 시간
# loss: 학습이 얼마나 진행되었는지, 정답에 가까워졌는지를 평가하는 지표
(예측-결과)^2의 평균값
loss가 0에 가까워질수록 학습이 잘 된 모델이므로 loss가 원하는 수준으로 떨어질 때까지 반복학습
"""
model.fit(독립, 종속, epochs=1000, verbose=0) # verbose: 진행 현황 출력, 0이 출력 삭제
# 모델을 이용합니다.
print(model.predict(독립))
"""
[[33.58464 ]
[35.213554]
[36.84247 ]
[38.47138 ]
[40.100292]
[41.729206]]
"""
# epochs: 1000, loss: 54.6606 정도에서 학습을 멈췄기 때문에 위와 같은 값이 나옴.
# epochs을 10000 정도로 늘리면 종속 정답값과 비슷한 값을 얻을 수 있음.
print(model.predict([[15]])) # [[25.44008]]
model.fit(독립, 종속, epochs=10000, verbose=0) # 다시 epochs 10000 학습시킨 후 결과를 확인해보면
print(model.predict([[15]])) # [[30.014782]]
*파이썬에서의 소수점 표기 중 2.2443e-04 = 2.2443 * 10^(-4) = 0.00022443