🥗 Food order forecast using Regression model

🥗 Food order forecast using Regression model

Food Order Demand Forecasting

To forecast number of orders in future weeks using machine learning regression models.

Dataset

Features Dataset:

Download: features.csv from Kaggle

Label Dataset:

Download: label.csv from Kaggle

Python Code

from sklearn.metrics import r2_score, mean_squared_error
from sklearn.ensemble import RandomForestRegressor
from sklearn.tree import DecisionTreeRegressor
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
import seaborn as sns
from math import sqrt
import numpy as np
import pandas as pd
import warnings
warnings.filterwarnings('ignore')

# Load datasets
features = pd.read_csv('./features.csv')
label = pd.read_csv('./label.csv')

# Display first few rows
features.head()
label.head()

# ------------------------------------ Data Split ---------------------------------------------
X_train, X_test, y_train, y_test = train_test_split(
    features, label, test_size=0.20, random_state=33
)

# ------------------------------------ RandomForestRegressor ---------------------------------------------
RFRmodel = RandomForestRegressor(max_depth=3, random_state=0)
RFRmodel.fit(X_train, y_train)
y_pred = RFRmodel.predict(X_test)

print('RandomForestRegressor')
print("R2 score   :", r2_score(y_test, y_pred))
print("MSE score  :", mean_squared_error(y_test, y_pred))
print("RMSE       :", sqrt(mean_squared_error(y_test, y_pred)))
print('')

# ------------------------------------ DecisionTreeRegressor ---------------------------------------------
DTRmodel = DecisionTreeRegressor(max_depth=3, random_state=0)
DTRmodel.fit(X_train, y_train)
y_pred = DTRmodel.predict(X_test)

print('DecisionTreeRegressor')
print("R2 score   :", r2_score(y_test, y_pred))
print("MSE score  :", mean_squared_error(y_test, y_pred))
print("RMSE       :", sqrt(mean_squared_error(y_test, y_pred)))
print('')

# ------------------------------------ LinearRegression ---------------------------------------------
model = LinearRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)

print('LinearRegression')
print("R2 score   :", r2_score(y_test, y_pred))
print("MSE score  :", mean_squared_error(y_test, y_pred))
print("RMSE       :", sqrt(mean_squared_error(y_test, y_pred)))
print('')

Results

Model Performance Comparison:

Model R² Score MSE RMSE
RandomForestRegressor Best performance Lowest error Lowest error
DecisionTreeRegressor Good performance Moderate error Moderate error
LinearRegression Baseline Higher error Higher error

Note: Run the code to see exact numerical results for your dataset.

Key Insights

  • RandomForestRegressor typically provides the best prediction accuracy for demand forecasting
  • R² Score: Measures how well the model fits the data (closer to 1 is better)
  • RMSE: Root Mean Square Error shows average prediction error in same units as target variable
  • Model comparison helps identify the most suitable algorithm for your specific dataset

Reference

 

Main Picture by Rachel Park 🎉

 

 

Back to blog

Leave a comment

Please note, comments need to be approved before they are published.