HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
📟
PyQt 5 Lecture
/
🎆
006 머신러닝을 이용한 무인 상점 만들기 - 1
/
🔍
레모네이드 판매 예측을 통한 DeepLeaning예제 실습
🔍

레모네이드 판매 예측을 통한 DeepLeaning예제 실습

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

 
notion image
이러한 형태로 예측을 보통 진행하게 됩니다. (아주 간단한 예제)
여러가지(ex 강화학습,지도학습,비지도학습 등)방법을 통해 예측할 수있만 너무 깊은 지식이 필요하여 이 강의에서는 간단한 숫자로 예측하는 "레모네이드 판매예측"실습을 통해 알아보겠습니다.

1. 데이터 준비

Pandas(표 형태를 가진 데이터(ex : 엑셀)을 다루기 위한 라이브러리) 예제

Pandas에서 사용되는 표 형태로써 시리즈(Series) , 데이터프레임(DataFrame)이 있습니다.
시리즈(Series)는 1차원 배열의 형태를 가진 표입니다. 왼쪽에 인덱스 또한 표현됩니다.
데이터프레임(DataFrame)은 2차원 배열의 형태를 가진 표입니다. 각 행과 열에 인덱스가 표현됩니다.
notion image

레모네이드 데이터를 가져오기

notion image
위와 같이 데이터 프레임( 행렬) 형태로 나오는것을 알 수 있습니다.
notion image
첫번째 딥러닝 - 레모네이드 판매 예측 - 생활코딩
첫번째 딥러닝 - 레모네이드 판매 예측 - 생활코딩
https://opentutorials.org/course/4570/28974
첫번째 딥러닝 - 레모네이드 판매 예측 - 생활코딩

2. Tensorflow를 사용한 예측 모델 만들기

x(온도)로 부터 y(판매량)를 예측하기 위해 각 변수에 각 열의 데이터를 저장합니다.
x를 독립, y를 종속이라고 부르기도 합니다.
각 6행 1열의 데이터를 가지고 있습니다.
각 6행 1열의 데이터를 가지고 있습니다.
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. 모델 학습하기

모델을 학습합니다. 10번 반복합니다.
notion image
10번 반복한 결과 : loss값이 높아 1000번 다시 한번 학습시켜보도록 하겠습니다.
 
notion image
 
notion image
loss 값이 확실히 줄었다는 것을 알 수 있습니다.

4. 예측 하기

model.predict(x) : x를 매개체로 y값을 예측 합니다.
notion image
온도x값이 30도일 때 판매량을 예측 합니다.
notion image
 
notion image
정답과 예측 한 값이랑 많이 차이가 나는 것을 볼 수 있습니다.
→ 해결방법은 loss를 줄여 예측 값을 높이는 것입니다. 그래서 loss가 최대한 0에 수렴할 때 까지 학습시키면 예측률이 높아집니다.
 
첫번째 딥러닝 - 레모네이드 판매 예측 - 생활코딩
첫번째 딥러닝 - 레모네이드 판매 예측 - 생활코딩
https://opentutorials.org/course/4570/28974
첫번째 딥러닝 - 레모네이드 판매 예측 - 생활코딩
3. TensorFlow - 제주 머신러닝 스터디 그룹 & 머신러닝 야학
제주에서 머신러닝 스터디 그룹을 만들어 머신러닝 야학에 참여합니다! 해당 게시물은 머신러닝 스터디 그룹의 과제인 강의 요약 블로깅입니다. 대부분의 멘트는 머신러닝 야학에서 가져온 것임을 밝힙니다. 생활코딩은 동의 없이 수정, 배포를 허락하고 있습니다. 해당 강의는 생활코딩 유튜브에서도 무료로 시청하실 수 있습니다. 이중 생활코딩의 머신러닝 야학에서...
3. TensorFlow - 제주 머신러닝 스터디 그룹 & 머신러닝 야학
https://medium.com/@paullabkorea/3-tensorflow-%EC%A0%9C%EC%A3%BC-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EC%8A%A4%ED%84%B0%EB%94%94-%EA%B7%B8%EB%A3%B9-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EC%95%BC%ED%95%99-59098d87516e
3. TensorFlow - 제주 머신러닝 스터디 그룹 & 머신러닝 야학
 
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)
레모네이드데이터 = 'https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/lemonade.csv' 레모네이드 = pd.read_csv(레모네이드데이터) print(레모네이드)
레모네이드.head(2) # 데이터 최상단위치로 부터 입력받은 갯수만큼 내려가며 보여줍니다. 레모네이드.tail(3) # 데이터 최하단위치로 부터 입력받은 갯수만큼 올라가며 보여줍니다. 레모네이드[0:3] # 파이썬 리스트 슬라이싱 처럼 행 값으로 데이터를 다룰 수 있습니다. 레모네이드["판매량"] # 열 값의 이름으로 해당하는 데이터를 보여 줍니다.
x = 레모네이드[['온도']] y = 레모네이드[['판매량']] print(x.shape, y.shape)
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')
model.fit(x, y, epochs=10)
model.fit(x, y, epochs=1000)
print(model.predict(x))
print(model.predict([[30]]))