آموزش منطق و مقدمات برنامه نویسی به همراه الگوریتم و فلوچارت آموزش منطق و مقدمات برنامه نویسی به همراه الگوریتم و فلوچارت
021-88146330
021-88146323
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 هستند، می‌توانیم ارزیابی کنیم که مدل شما چگونه عمل کرده است:

  1. MSE (Mean Squared Error): فرض کنید شما در پایان هر روز می‌توانید اختلاف بین تعدادی که مدل پیش‌بینی کرده و تعداد واقعی فروخته شده را محاسبه کنید. MSE این اختلاف‌ها را به توان دو می‌رساند، میانگین می‌گیرد و به شما نشان می‌دهد به طور متوسط چقدر از پیش‌بینی‌هایتان دور بوده‌اید.
  2. RMSE (Root Mean Squared Error): ریشه دوم MSE است، که واحد آن را به واحد اصلی فروش برمی‌گرداند. این شماره به شما می‌گوید که به طور میانگین، پیش‌بینی‌های شما چقدر از فروش واقعی دور هستند.

بهبود مدل:

  1. کشف داده‌ها: نگاهی دقیق‌تر به داده‌هایتان بیندازید. شاید برخی از روزها که تبلیغات خاصی داشتید، فروش شما بیشتر شده است. این نوع اطلاعات می‌توانند به مدل کمک کنند تا دقیق‌تر عمل کند.
  2. افزودن اطلاعات: شاید افزودن اطلاعاتی درباره آب و هوا یا تعطیلات می‌تواند به مدل کمک کند تا درک بهتری از تغییرات فروش داشته باشد.
  3. تنظیم مدل: شاید لازم باشد پارامترهای مدل را تغییر دهید یا حتی یک مدل کاملاً جدید امتحان کنید تا ببینید آیا نتایج بهتری حاصل می‌شود یا خیر.
  4. استفاده از کراس ولیدیشن: این روش به شما کمک می‌کند تا اطمینان حاصل کنید مدل شما نه تنها روی داده‌های فعلی خوب کار می‌کند بلکه قادر است به خوبی عملکرد خود را در شرایط و داده‌های جدید نیز حفظ کند.

با پیاده‌سازی این راهکارها، شما می‌توانید به مدلی دست یابید که پیش‌بینی‌های دقیق‌تری ارائه دهد و به شما کمک کند تا برنامه‌ریزی بهتری برای کسب‌وکار خود داشته باشید.

1403/02/20 295 3
رمز عبور : tahlildadeh.com یا www.tahlildade.com

نظرات شما

برای ارسال سوال لازم است، ابتدا وارد سایت شوید.