مشخصات پروژه
-
15
-
0.0
-
755
-
0
-
0
پروژه پیش بینی فروش با یادگیری ماشین
استفاده از رگرسیون خطی برای پیشبینی فروش
چگونه میتوانیم مقدار فروش فردا را امروز بدانیم؟
چکیده:
در دنیای پر تلاطم کسبوکار، دانستن اینکه فردا چه میزان فروش خواهیم داشت، میتواند یک مزیت رقابتی باشد. ما از قدرت یک مدل ریاضی ساده به نام رگرسیون خطی استفاده میکنیم تا نگاهی به آینده بیندازیم و فروش را پیشبینی کنیم. نتایج ما نشان میدهد که این روش میتواند به شرکتها کمک کند تا با آمادگی بیشتری برای تغییرات بازار روبرو شوند.
مقدمه:
آیا تا به حال فکر کردهاید که اگر میتوانستید فروش فردا، هفته آینده یا ماه آینده خود را پیشبینی کنید، چه کارهایی میتوانستید انجام دهید؟ ما در این پروژه به این سوال پاسخ میدهیم. با استفاده از دادههای فروش گذشته، قیمتها و میزان تبلیغات، ما یک مدل ساختیم که میتواند به ما بگوید در آینده چه انتظاری از بازار داشته باشیم.
مرحله ۱: جمعآوری دادهها
ابتدا نیاز دارید که دادههایی که میخواهید برای پیشبینی استفاده کنید را جمعآوری کنید. در این مثال، دادههایی شامل تاریخ، فروش، قیمت و سطح تبلیغات را بررسی میکنیم.
- تاریخ: نشاندهنده زمان فروش است.
- فروش: مقدار فروش انجام شده در آن تاریخ.
- قیمت: قیمت محصول در آن تاریخ.
- تبلیغات: سطح تبلیغات انجام شده در آن تاریخ.
مرحله ۲: پاکسازی دادهها
پاکسازی دادهها شامل حذف یا تصحیح دادههای نادرست یا گمشده است. ممکن است برخی دادهها گمشده باشند یا اشتباه وارد شده باشند. این مرحله بسیار مهم است زیرا دادههای نادرست میتوانند به نتایج پیشبینی آسیب بزنند.
مرحله ۳: تبدیل دادهها
برای استفاده از دادههای تاریخی در مدل رگرسیون، باید تاریخها را به اعداد تبدیل کنید. این کار معمولاً با تبدیل تاریخ به سال، ماه و روز انجام میشود. همچنین، دادههای کتگوریکال مثل سطح تبلیغات را باید به صورت عددی (معمولاً از طریق روشی به نام one-hot encoding) تبدیل کنید.
مرحله ۴: تقسیم دادهها
دادهها را به دو بخش تقسیم کنید: آموزش و تست. دادههای آموزش برای ساخت مدل استفاده میشوند و دادههای تست برای ارزیابی دقت مدل.
مرحله ۵: ساخت مدل
از الگوریتم رگرسیون خطی برای ساخت مدل استفاده کنید. این الگوریتم سعی میکند خطی را پیدا کند که بهترین برازش را با دادههای آموزش داشته باشد.
مرحله ۶: آموزش مدل
مدل را با استفاده از دادههای آموزش آموزش دهید. این کار با تنظیم وزنها (یا پارامترها) مدل بر اساس دادههای ورودی و خروجی انجام میشود.
مرحله ۷: ارزیابی مدل
پس از آموزش مدل، باید عملکرد آن را بر روی دادههای تست ارزیابی کنید. این کار با محاسبه معیارهایی مانند MSE و RMSE انجام میشود که نشاندهنده دقت مدل در پیشبینی دادههای تست است.
import pandas as pd import numpy as np from datetime import datetime, timedelta from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error import math def load_and_preprocess_data(filepath): try: # Attempt to read the file with UTF-8 encoding data = pd.read_csv(filepath, encoding='utf-8') except UnicodeDecodeError: # If UTF-8 fails, try reading with ISO-8859-1 data = pd.read_csv(filepath, encoding='ISO-8859-1') except FileNotFoundError: print(f"Error: The file {filepath} was not found.") return None except Exception as e: print(f"An error occurred: {e}") return None # Fill missing values and convert dates data.fillna(method='ffill', inplace=True) data['Date'] = pd.to_datetime(data['Date']) data['Year'] = data['Date'].dt.year data['Month'] = data['Date'].dt.month data['Day'] = data['Date'].dt.day # Convert categorical data to numerical using one-hot encoding data = pd.get_dummies(data, columns=['Advertising']) return data def prepare_features(data): if data is None: return None, None # Select features and target variable X = data[['Year', 'Month', 'Day', 'Price', 'Advertising_High', 'Advertising_Low', 'Advertising_Medium']] y = data['Sales'] return X, y def train_model(X_train, y_train): scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) model = LinearRegression() model.fit(X_train_scaled, y_train) return model, scaler def evaluate_model(model, scaler, X_test, y_test): X_test_scaled = scaler.transform(X_test) y_pred = model.predict(X_test_scaled) mse = mean_squared_error(y_test, y_pred) rmse = math.sqrt(mse) print(f'Mean Squared Error: {mse}') print(f'Root Mean Squared Error: {rmse}') if __name__ == "__main__": filepath = 'C:/path/to/your/sales_data.csv' # Update with the correct path to your CSV file data = load_and_preprocess_data(filepath) if data is not None: X, y = prepare_features(data) if X is not None and y is not None: X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) model, scaler = train_model(X_train, y_train) evaluate_model(model, scaler, X_test, y_test) else: print("Feature preparation failed.") else: print("Data loading failed, script will terminate.")
نکات مهم:
- مسیر فایل: طمینان حاصل کنید که مسیر filepath به درستی به مکان فایل دادههای شما اشاره دارد.
- کدگذاری فایل: اگر با خطاهای کدگذاری مواجه شدید، کدگذاریهای مختلف را امتحان کنید.
- نتیجه گیری: RMSE به شما ایده بهتری از مقیاس خطا نسبت به MSE میدهد زیرا در همان واحد با مقادیر واقعی Sales است.
خروجی پروژه
Mean Squared Error: 889.4588460431028 Root Mean Squared Error: 29.823796640319
با توجه به مقادیر Mean Squared Error (MSE) و Root Mean Squared Error (RMSE) که به ترتیب 889.4588460431028 و 29.823796640319 هستند، میتوانیم ارزیابی کنیم که مدل شما چگونه عمل کرده است:
- MSE (Mean Squared Error): فرض کنید شما در پایان هر روز میتوانید اختلاف بین تعدادی که مدل پیشبینی کرده و تعداد واقعی فروخته شده را محاسبه کنید. MSE این اختلافها را به توان دو میرساند، میانگین میگیرد و به شما نشان میدهد به طور متوسط چقدر از پیشبینیهایتان دور بودهاید.
- RMSE (Root Mean Squared Error): ریشه دوم MSE است، که واحد آن را به واحد اصلی فروش برمیگرداند. این شماره به شما میگوید که به طور میانگین، پیشبینیهای شما چقدر از فروش واقعی دور هستند.
بهبود مدل:
- کشف دادهها: نگاهی دقیقتر به دادههایتان بیندازید. شاید برخی از روزها که تبلیغات خاصی داشتید، فروش شما بیشتر شده است. این نوع اطلاعات میتوانند به مدل کمک کنند تا دقیقتر عمل کند.
- افزودن اطلاعات: شاید افزودن اطلاعاتی درباره آب و هوا یا تعطیلات میتواند به مدل کمک کند تا درک بهتری از تغییرات فروش داشته باشد.
- تنظیم مدل: شاید لازم باشد پارامترهای مدل را تغییر دهید یا حتی یک مدل کاملاً جدید امتحان کنید تا ببینید آیا نتایج بهتری حاصل میشود یا خیر.
- استفاده از کراس ولیدیشن: این روش به شما کمک میکند تا اطمینان حاصل کنید مدل شما نه تنها روی دادههای فعلی خوب کار میکند بلکه قادر است به خوبی عملکرد خود را در شرایط و دادههای جدید نیز حفظ کند.
با پیادهسازی این راهکارها، شما میتوانید به مدلی دست یابید که پیشبینیهای دقیقتری ارائه دهد و به شما کمک کند تا برنامهریزی بهتری برای کسبوکار خود داشته باشید.
نظرات شما