Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

공hannah부

자동 아이스크림 주문 냉장고 구현 - 학습하기 본문

공부/인공지능

자동 아이스크림 주문 냉장고 구현 - 학습하기

Hannah0226 2023. 2. 23. 03:18
EBS - 수학과 함께하는 AI기초 공부하기 프로젝트!

 

학습단계

- 예측함수: 아이스크림 쇼핑 클릭량이 어떻게 변할지 예측하는 회귀모델을 만들어야 함 선형 회귀 모델 사용

- 비용함수: 만든 예측함수가 좋은지 아닌지를 판단 최소제곱법 알고리즘 사용

 

선형회귀 모델

- 선형회귀: 데이터의 개수가 많아지면 모든 점을 동시에 지나는 직선을 하나로 정하기 어려워진다 데이터 간의 관계를 가장 잘 대표하는 직선을 찾아야 한다! 

- 선형회귀 모델: 입력변수와 출력 변수 사이의 관계를 직선으로 나타낸 함수

- 좋은 선형 회귀 모델이란? 입력 변수에 따른 출력 변수의 예측값이 실제 출력값에 가장 가까운 값이 되도록 하는 모델 즉, 평균제곱근오차최소가 되는 두 수(선형 회귀 모델의 y절편과 기울기)를 구해야 한다!

- 평균제곱근 오차가 최소려면 ((오차)2들의 합)이 최소가 되어야한다.

 

학습과정 알고리즘

코드

- 학습, 평가 데이터 분리

import pandas as pd      
df= pd.read_csv('temp_ice.csv',encoding='euc-kr')

# 학습 데이터를 입력 변수와 출력 변수로 나누기
import numpy as np
data = np.array(df)
X= data[:,1]    #평균기온
Y= data[:,-1]   #아이스크림/빙수

- 비용 계산 및 업데이트

    1. 기울기는 최소제곱법으로 구한다

최소제곱법(기울기) 구하는 식

    2. y절편은 아래 식으로 구한다

y절편 구하는 식

# 입력 변수와 출력 변수의 평균 구하기
mean_x = np.mean(X)
mean_y = np.mean(Y)
 
# X변수의 개수 구하기
n = len(X)

# 최소제곱법을 이용하여 beta0과 beta1 구하기
temp1 = 0
temp2 = 0
for i in range(n):
  temp1 += (X[i] - mean_x) * (Y[i] - mean_y)
  temp2 += (X[i] - mean_x) ** 2
beta1 = temp1 / temp2
beta0 = mean_y - (beta1 * mean_x)

print("기울기(beta1): {0}, y절편(beta0): {1}".format(beta1,beta0))

출력결과

- 평가하기

    위에서 구한 기울기와 y절편을 사용해 평균제곱근오차를 구해 손실값이 얼마인지 확인하기

평균제곱근오차 구하는 식

def RMSE(beta0,beta1,x,y):
  RMSE = np.sqrt(((y-(beta0+beta1*x))**2).mean())
  return RMSE
  
results = RMSE(beta0,beta1,X,Y)
print("손실값 결과는? {0}".format(results))

출력 결과

문제 해결하기 (완성)

- 오늘의 평균 기온에 따라 아이스크림 쇼핑 클릭량을 예측해 주자

def Regression(beta0,beta1,X):
    y_pred = beta0+beta1*X
    return y_pred

my_temp=float(input("오늘의 기온: "))

predicted_value = Regression(beta0,beta1,my_temp)
print("오늘의 아이스크림 쇼핑 클릭량은 100점을 기준으로 {0} 만큼 예상됩니다.".format(predicted_value))

출력결과

- 해당 온도의 아이스크림 쇼핑 클릭량이 70점을 넘으면 아이스크림을 주문하도록 해보자

if(predicted_value >= 70):
   print("아이스크림을 주문합니다.")
else:
   print("아이스크림을 주문하지 않습니다.")

70점을 넘었을 때 출력 결과
70점을 넘지 못했을 때 출력 결과

 

- 끝 -

 

 

 

 

EBS 수학과 함께하는 AI 기초 : 네이버 도서

네이버 도서 상세정보를 제공합니다.

search.shopping.naver.com