기존에 있는 데이터를 가지고 예측하는 것을 진행해봅시다.

이러한 형태로 예측을 보통 진행하게 됩니다. (아주 간단한 예제)
여러가지(ex 강화학습,지도학습,비지도학습 등)방법을 통해 예측할 수있만 너무 깊은 지식이 필요하여 이 강의에서는 간단한 숫자로 예측하는 "레모네이드 판매예측"실습을 통해 알아보겠습니다.
1. 데이터 준비
Pandas(표 형태를 가진 데이터(ex : 엑셀)을 다루기 위한 라이브러리) 예제
import pandas as pd #관례적으로 pd로 축약하여 사용 import numpy as np # 랜덤 값을 얻기 위해 넘파이 라이브러리 추가 series = pd.Series([1,20,5,2,10,11]) print(series) dataFrame = pd.DataFrame(np.random.randn(5,5)) print(dataFrame)
Pandas에서 사용되는 표 형태로써 시리즈(Series) , 데이터프레임(DataFrame)이 있습니다.
시리즈(Series)는 1차원 배열의 형태를 가진 표입니다. 왼쪽에 인덱스 또한 표현됩니다.
데이터프레임(DataFrame)은 2차원 배열의 형태를 가진 표입니다. 각 행과 열에 인덱스가 표현됩니다.

레모네이드 데이터를 가져오기
레모네이드데이터 = 'https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/lemonade.csv' 레모네이드 = pd.read_csv(레모네이드데이터) print(레모네이드)

위와 같이 데이터 프레임( 행렬) 형태로 나오는것을 알 수 있습니다.
레모네이드.head(2) # 데이터 최상단위치로 부터 입력받은 갯수만큼 내려가며 보여줍니다. 레모네이드.tail(3) # 데이터 최하단위치로 부터 입력받은 갯수만큼 올라가며 보여줍니다. 레모네이드[0:3] # 파이썬 리스트 슬라이싱 처럼 행 값으로 데이터를 다룰 수 있습니다. 레모네이드["판매량"] # 열 값의 이름으로 해당하는 데이터를 보여 줍니다.

2. Tensorflow를 사용한 예측 모델 만들기
x = 레모네이드[['온도']] y = 레모네이드[['판매량']] print(x.shape, y.shape)
x(온도)로 부터 y(판매량)를 예측하기 위해 각 변수에 각 열의 데이터를 저장합니다.
x를 독립, y를 종속이라고 부르기도 합니다.

import tensorflow as tf # 관례적으로 tf로 축약하여 사용합니다. X= tf.keras.layers.Input(shape=[1]) Y = tf.keras.layers.Dense(1)(X) model = tf.keras.models.Model(X, Y) model.compile(loss='mse')
X = tf.keras.layers.Input(shape=[1]) : shape=[1]은 x데이터는 1개 열을 가지기 때문에 이 층(Layer)에 들어갈 열의 갯수를 지정해줍니다.
Y = tf.keras.layers.Dense(1)(X) : Dense는 중간층 즉,입력과 출력을 연결해주는 층입니다.
여기서 1도 마찬가지로 예측할 열의 갯수가 1개 이기 때문입니다.
model = tf.keras.models.Model(X, Y) : 모델을 직접 설계 합니다.
model.compile(loss='mse') : MSE공식을 활용한 손실 함수를 통해 모델을 만듭니다.
MSE(Mean Squared Error) :평균 제곱 오차로서 간단히 말하면 오차의 제곱에 대해 평균을 나타낸것입니다. 이 때 값이 작을 수록 정확성이 높은것 입니다.
3. 모델 학습하기
model.fit(x, y, epochs=10)
모델을 학습합니다. 10번 반복합니다.

10번 반복한 결과 : loss값이 높아 1000번 다시 한번 학습시켜보도록 하겠습니다.
model.fit(x, y, epochs=1000)


loss 값이 확실히 줄었다는 것을 알 수 있습니다.
4. 예측 하기
print(model.predict(x))
model.predict(x) : x를 매개체로 y값을 예측 합니다.

print(model.predict([[30]]))
온도x값이 30도일 때 판매량을 예측 합니다.


정답과 예측 한 값이랑 많이 차이가 나는 것을 볼 수 있습니다.
→ 해결방법은 loss를 줄여 예측 값을 높이는 것입니다. 그래서 loss가 최대한 0에 수렴할 때 까지 학습시키면 예측률이 높아집니다.