A machine learning portfolio project that forecasts laptop/phone storage usage over the next 30, 60, and 90 days.
Predict how end-user device storage fills over time, then compare forecasting approaches such as:
- Baseline trend models
- Prophet
- XGBoost with lag features
- Optional LSTM (stretch goal)
storage_forecaster_v2/
├── configs/ # Config files
├── dashboard/ # Streamlit app
├── data/
│ ├── raw/ # Real raw device logs (future)
│ ├── processed/ # Cleaned/model-ready datasets
│ └── synthetic/ # Synthetic training data
├── models/ # Saved trained models
├── notebooks/ # EDA and experimentation notebooks
├── reports/
│ └── figures/ # Exported plots for README/report
├── scripts/ # CLI scripts for data generation/training
├── src/
│ ├── data/ # Data loading and preprocessing
│ ├── evaluation/ # Metrics and backtesting
│ ├── features/ # Feature engineering
│ ├── models/ # Model training/inference code
│ └── visualization/ # Plotting utilities
└── tests/ # Unit tests
Use Command Prompt or the VS Code terminal.
python -m venv .venv.venv\Scripts\activatepip install --upgrade pip
pip install -r requirements.txtpython scripts\generate_synthetic_data.pypython scripts\visualize_data.pystreamlit run dashboard\app.pyThe dashboard comes with synthetic sample data - just run it and explore!
New in the dashboard: Data Builder tab makes it super easy!
-
Open the dashboard
-
Click the "Data Builder" tab
-
Choose one of three methods:
- 📊 See Example Data - View a real example (no download)
- 🔨 Generate Template - Create a blank CSV template in 30 seconds
- 📥 Download Real Example - Get sample data to test immediately
-
For your own data:
- Use "Generate Template" to create a pre-formatted CSV
- Fill in your device's storage data (7-30 days minimum)
- Upload to Forecast Lab tab
- Get predictions! 🎉
See DATA_BUILDER_GUIDE.md for detailed instructions.
Install these extensions:
- Python
- Pylance
- Jupyter
Then in VS Code:
- Open the folder
- Press
Ctrl+Shift+P - Select Python: Select Interpreter
- Choose the interpreter inside
.venv
- Create synthetic dataset
- Visualize storage behavior by profile
- Build EDA notebook
- Train baseline forecasting model
- Train Prophet model
- Train XGBoost model
- Evaluate 30/60/90-day forecasts
- Build upgraded Streamlit dashboard
- Media-heavy: steady photo/video growth
- Gamer: occasional large app/game installs
- Office user: slow, linear document-heavy growth
- Cleaner: periodic cleanup cycles
python scripts\train_baseline.pypython scripts\train_baseline_v2.pypython scripts\train_prophet.pypython scripts\train_xgboost.pypython scripts\init_review_store.pypython scripts\export_reviews.pypython scripts\compare_model_metrics.pystreamlit run dashboard\app.py- The synthetic dataset is intended for prototyping and portfolio work.
- You can later add a real device logging script for Windows to collect actual usage data.
- Use time-based validation instead of random train/test splits.
- Reviews can use local SQLite in development or managed PostgreSQL in deployment via
DATABASE_URL. - See
DEPLOYMENT.md,PRODUCTION_ARCHITECTURE.md, and.env.examplebefore public launch.
- Train or refresh models.
- Configure a managed PostgreSQL database.
- Set
DATABASE_URLin your deployment secrets. - Deploy the Streamlit app via Community Cloud or Docker.
- Collect real user reviews and forecast logs for iteration.