🥗 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
- Dataset: Food Demand Forecasting - Kaggle
- Tutorial: Food Order Forecast Tutorial - MareArts
Â
Main Picture by Rachel Park 🎉
Â
Â