728x90
반응형
문제 이커머스(온라인 쇼핑몰) 상품 일간 판매량 예측
- 시나리오이커머스에서는 마케팅 예산, 프로모션 여부, 계절, 경쟁사 가격 정책 등이 판매량에 영향을 줄 수 있습니다.
- 한 온라인 쇼핑몰에서 특정 상품(예: 여름 티셔츠)의 일간 판매량을 예측하려고 합니다.
- 피처(입력변수) 예시
- DayOfWeek: 요일(0=월, 6=일)
- IsHoliday: 공휴일 여부 (0 또는 1)
- MarketingSpend: 당일 마케팅 지출액(만원 단위)
- CompetitorPrice: 경쟁사 판매가(원)
- Price: 우리 상품 판매가(원)
- Month: 달(1~12)
- 타깃(출력변수)
- Sales: 판매량(당일 몇 개 팔렸는지)
LinearRegression 과 RandomForest 를 이용해서 더 성능이 좋은것으로 합니다.
다음을 조건에서 판매량을 예측하시오.
DayOfWeek=3(목요일 가정), IsHoliday=0, MarketingSpend=80, CompetitorPrice=21000, Price=25000, Month=7(7월 가정)
문제. MSE와 R2 Square 를 구하시오.
- 파일 이름: ecommerce.csv
- 데이터 구성:
- Feature:
- Product_Price: 상품 가격
- Advertising_Expense: 광고비
- Customer_Reviews: 고객 리뷰 점수
- Target:
- Daily_Sales: 일간 판매량
- Feature:
풀이
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv('ecommerce.csv',index_col = 0)
df
- pd.read_csv를 사용해 데이터를 불러옵니다.
- head, info, describe로 데이터 샘플, 구조, 통계 정보를 확인합니다.
1. 데이터 전처리
1-1. 결측치 처리
# 결측치 확인
df.isna().sum()
# 있을 경우 제거
# 결측치 제거
data.dropna()
1-2. Feature와 Target 분리(X와 y와 구분 )
# Feature와 Target 분리
X = data[['Product_Price', 'Advertising_Expense', 'Customer_Reviews']]
y = data['Daily_Sales']
- 데이터 스케일링
- from sklearn.preprocessing import StandardScaler scaler = StandardScaler() X_scaled = scaler.fit_transform(X)
출력
: X , y
2. 데이터 분할(training 용과 Test용)
인코딩 진행은 패스 : 인코딩(변환) 할 문자열이 없어
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 27 )
설명:
- 데이터를 학습용(X_train, y_train)과 테스트용(X_test, y_test)으로 분리합니다.
- 테스트 데이터 비율: 20%.
3. 모델 학습
추가확인
LinearRegression 과 RandomForest 를 이용해서 더 성능이 좋은것으로 합니다.
3-1. LinearRegression
from sklearn.linear_model import LinearRegression
# 모델 생성
regressor1 = LinearRegression()
regressor1.fit(X_train, y_train)
3-2. RandomForest
from sklearn.ensemble import RandomForestRegressor
regressor2 = RandomForestRegressor (random_state = 27)
# 모델 생성
regressor2.fit(X_train, y_train)
4. 모델 예측
4-1. LinearRegression
# 모델 학습
regressor1.fit(X_train, y_train)
y_pred1
4-2. RandomForest
# 모델 학습
y_pred2 = regressor2.predict(X_test)
y_pred2
5. 모델 평가
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
# 평가 지표 계산(regressor1)
error = y_test - y_pred1
(error **2).mean()
#390.4502145454608
mean_absolute_error(y_test, y_pred1)
#16.536814878989148
r2_score(y_test, y_pred1)
#0.9277801251271309
# 평가 지표 계산(regressor2)
error1 = y_test - y_pred2
(error1 **2).mean()
#447.1433630136985
mean_absolute_error(y_test, y_pred2)
#17.331095890410957
r2_score(y_test, y_pred2)
#0.9172938404844357
설명:
- MSE (Mean Squared Error): 평균 제곱 오차.
- MAE (Mean Absolute Error): 평균 절대 오차.
- R² (R-Squared): 결정 계수, 모델 성능을 측정.
추가문제
다음을 조건에서 판매량을 예측하시오.
DayOfWeek=3(목요일 가정), IsHoliday=0, MarketingSpend=80, CompetitorPrice=21000, Price=25000, Month=7(7월 가정)
np.array([ 3, 0, 80, 21000, 25000, 7])
new_data = np.array([ 3, 0, 80, 21000, 25000, 7])
new_data.shape
# 1차원이라면 shape
regressor1 = regressor1.predict(new_data)
regressor1
출력
: regressor1
array([257.47140747])
728x90
반응형
'AI > 실습' 카테고리의 다른 글
158. [AI] [NLP] Gemma 모델 사용 시 transformers를 활용하는 이유 (0) | 2025.02.24 |
---|---|
127. [Python] [Multiple Linear Regression] : 병원 진료비 예측 (Regression) (1) | 2025.01.28 |
123. [Python] [Machine Learning] : 지도 학습 (Supervised Learning) (0) | 2025.01.25 |
121. [Python] [Pandas] 프로그래밍 실습 : 범죄현장 (1) | 2025.01.25 |
120. [Python] [Pandas] 프로그래밍 실습 : 구글맵API 연동 (0) | 2025.01.24 |