공hannah부
자동 아이스크림 주문 냉장고 구현 - 학습하기 본문
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절편은 아래 식으로 구한다
# 입력 변수와 출력 변수의 평균 구하기
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("아이스크림을 주문하지 않습니다.")
- 끝 -
'공부 > 인공지능' 카테고리의 다른 글
EV3 - 유전 알고리즘 구현하기(파이썬) (1) | 2023.02.24 |
---|---|
자동 아이스크림 주문 냉장고 구현 - 데이터 다루기 (0) | 2023.02.23 |
자동 아이스크림 주문 냉장고 구현 - 데이터 수집 (0) | 2023.02.22 |
EV3 - 인공지능 도어락 미니 프로젝트(파이썬) (0) | 2023.02.22 |
인공지능과 엔트로피의 관계 (0) | 2023.02.22 |