Skip to content

Latest commit

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

LocalFarm - Transformer-Based Price Prediction

Using Transformer neural networks to predict local farm produce prices.

Features

  • Data Collection: Synthetic data generator / CSV upload / FAO data
  • Data Preparation: Automated cleaning, normalization, and sequence creation
  • Transformer Model: Multi-head self-attention for time series forecasting
  • Evaluation: MAE, RMSE, MAPE, R² with interactive visualizations
  • Web Dashboard: Streamlit app with data explorer, trends, training, and predictions

Quick Start

# Install dependencies
pip install -r requirements.txt
# Run the full pipeline (command line)
python main.py
# Run the web dashboard
streamlit run app.py

This opens a browser with 5 pages:

  • 📊 Data Explorer — View and analyze the price dataset
  • 📈 Price Trends — Interactive historical price charts
  • 🤖 Train Model — Configure and train the Transformer with live progress
  • 🔮 Predictions — Generate future price forecasts with charts
  • 📋 Evaluation — View MAE, RMSE, scatter plots, error distributions

Project Structure

localfarm/
├── data/ # Price data (CSV)
├── src/
│ ├── __init__.py # Package init
│ ├── data_collection.py # Data loading & generation
│ ├── data_preparation.py # Cleaning, normalization, sequences
│ ├── model.py # Transformer architecture
│ ├── train.py # Training loop
│ ├── evaluate.py # Metrics & visualization
│ └── predict.py # Inference & forecasting
├── app.py # Streamlit web application
├── main.py # CLI pipeline runner
├── requirements.txt
└── README.md

Model Architecture

Input (batch, 30, 11 features)
→ Linear Projection → (batch, 30, 64)
→ Positional Encoding
→ 3× Transformer Encoder (4-head attention, d_ff=256)
→ Flatten → FC layers
→ Output (batch, 1) [next day price]

Input Features (11 total)

FeatureDescription
PriceNormalized daily price
day_of_weekDay of week (0-1)
day_of_monthDay of month (0-1)
monthMonth of year (0-1)
week_of_yearWeek of year (0-1)
price_lag_1Price 1 day ago
price_lag_7Price 7 days ago
price_lag_14Price 14 days ago
rolling_mean_77-day rolling average
rolling_std_77-day rolling std deviation
rolling_mean_3030-day rolling average

Evaluation Metrics

MetricDescription
MAEMean Absolute Error
RMSERoot Mean Square Error
MAPEMean Absolute Percentage Error
Coefficient of Determination

Technologies

  • PyTorch — Deep learning framework
  • Streamlit — Web dashboard
  • Plotly — Interactive charts
  • scikit-learn — Data preprocessing
  • pandas/numpy — Data manipulation

How it works

Transformer-Based Time Series Forecasting for Local Farm Produce Price Prediction Step 1 — Data Collection Use datasets such as: -FAO food price data -Kaggle agricultural commodity price datasets -Local market price records (if available) Data format example:

Date Produce Market Price Step 2 — Data Preparation Sort prices by date Handle missing values Normalize price values Convert data into sequences (e.g., last 30 days → next day price)

The above is the requirement for a Final Year University project, How do we implement this project?

Step 3 — Model Development Implement a Transformer-based forecasting model. Train the model on historical price sequences. The model learns relationships between past and future prices.

Step 4 — Evaluation Compare predicted price with real price using: MAE (Mean Absolute Error) RMSE (Root Mean Square Error)

Step 5 — System Development Build a system that: Stores price data Shows price trends Displays predicted future prices Visualizes prediction vs actual price

About

Transformer-Based Time Series Forecasting for Local Farm Produce Price Prediction

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages