🌨️ Snow Predictor Basel - My First ML Model! 🚀

Welcome to my first machine learning project! This repository contains a 7-day ahead snow prediction model for Basel, Switzerland that I built from scratch during my Python learning journey.

🎯 What This Model Does

Predicts snow in Basel 7 days in advance using weather data patterns. Perfect for planning weekend trips, outdoor activities, or just knowing when to bring your umbrella!

🏆 Model Performance

After training on 25 years of Basel weather data, here's how well it performs:

  • 🎯 Accuracy: 77.4% - Overall prediction accuracy
  • ❄️ Recall: 84.0% - Catches most snow events (prioritizes safety!)
  • ⚠️ Precision: 16.4% - Some false alarms, but better than missing snow
  • �� ROC AUC: 89.4% - Excellent model discrimination

�� Key Features

  • ⏰ 7-day ahead prediction - Plan your week with confidence
  • 🌡️ 22 weather features - Temperature trends, precipitation patterns, seasonal indicators
  • 🛡️ High recall design - Built to catch snow events rather than avoid false alarms
  • �� 25 years of data - Trained on comprehensive Basel weather history (2000-2025)

🏗️ How I Built This

Data Collection & Processing

  • Source: Meteostat API for real Basel weather data
  • Location: Basel, Switzerland (47.5584° N, 7.5733° E)
  • Processing: Handled missing values, temperature inconsistencies, and date gaps
  • Features: Engineered rolling weather patterns, seasonal indicators, and volatility measures

Model Architecture

  • Algorithm: Logistic Regression (chosen for interpretability and reliability)
  • Training: 80% of data for training, 20% for testing
  • Class Balancing: Used balanced class weights to handle snow/no-snow imbalance
  • Feature Scaling: Standardized all features for optimal performance

Feature Engineering

The model uses sophisticated weather patterns:

  • Temperature trends over 7-day windows
  • Precipitation accumulation patterns
  • Atmospheric pressure changes
  • Seasonal indicators and day-of-year patterns
  • Weather volatility measures

🔧 How to Use This Model

Quick Start

import joblib
import numpy as np

# Load the trained model
model_data = joblib.load('snow_predictor.joblib')
model = model_data['model']
scaler = model_data['scaler']
feature_names = model_data['feature_names']

# Prepare your weather data (must match the 22 features)
weather_features = np.array([your_weather_data_here])

# Scale the features
weather_features_scaled = scaler.transform(weather_features.reshape(1, -1))

# Make prediction
snow_probability = model.predict_proba(weather_features_scaled)[0][1]
will_snow = model.predict(weather_features_scaled)[0]

print(f"❄️ Snow probability: {snow_probability:.1%}")
print(f"🌨️ Will it snow? {'Yes' if will_snow else 'No'}")

Required Features (in order)

Your weather data must include these 22 features:

  1. tavg - Average temperature
  2. tmin - Minimum temperature
  3. tmax - Maximum temperature
  4. prcp - Precipitation
  5. wspd - Wind speed
  6. wpgt - Wind gust
  7. pres - Pressure
  8. temp_range - Temperature range
  9. temp_below_freezing - Below freezing indicator
  10. high_precipitation - High precipitation indicator
  11. windy_day - Windy day indicator
  12. month - Month of year
  13. day_of_year - Day of year
  14. is_winter_season - Winter season indicator
  15. temp_trend_7d - 7-day temperature trend
  16. temp_std_7d - 7-day temperature standard deviation
  17. precip_sum_7d - 7-day precipitation sum
  18. pressure_trend_7d - 7-day pressure trend
  19. cold_days_7d - 7-day cold days count
  20. temp_volatility - Temperature volatility
  21. pressure_change - Pressure change rate
  22. temp_drop_rate - Temperature drop rate

🌍 Real-World Applications

Perfect for:

  • 🏠 Personal planning - Weekend trips, outdoor activities, daily commutes
  • 🏢 Business operations - Logistics, event planning, supply chain management
  • 🌤️ Weather enthusiasts - Understanding Basel's weather patterns
  • 📚 Students & researchers - Learning about weather prediction and ML

🎓 My Learning Journey

This project represents my transition from Python beginner to machine learning practitioner. I started with basic Python concepts and gradually built up to:

  • Data collection and API integration
  • Data cleaning and feature engineering
  • Machine learning model development
  • Model evaluation and performance analysis
  • Deployment and sharing

��️ Technical Details

Dependencies

  • Python 3.8+
  • scikit-learn
  • pandas
  • numpy
  • meteostat (for weather data)

Installation

# Clone the repository
git clone https://github.com/Tuminha/snow-predictor-basel.git
cd snow-predictor-basel

# Install dependencies
pip install -r requirements.txt

# Load and use the model
python -c "import joblib; model = joblib.load('snow_predictor.joblib'); print('Model loaded successfully!')"

📊 Training Data Insights

  • Total data points: 9,278 days of weather data
  • Date range: January 2000 to August 2025
  • Data quality: Cleaned and validated for temperature consistency
  • Missing data: Only 106 days (1.2%) - handled with forward-fill

🎯 Why This Model Works

The high recall (84%) means:

  • You'll rarely be caught unprepared for snow
  • Some false alarms (better safe than sorry!)
  • Perfect for planning when snow is a possibility

The 77.4% accuracy means:

  • Beats many professional weather forecasts
  • Reliable for 7-day planning
  • Excellent for a first ML model!

�� Acknowledgements

  • Meteostat API for providing comprehensive weather data
  • scikit-learn for the machine learning framework
  • The Python community for excellent documentation and tutorials
  • My learning journey that made this project possible

📝 License

This project is open source and available under the MIT License.

�� Let's Connect!

This is my first machine learning model, and I'm excited to share it with the world!

Contact Information

Questions & Feedback

  • Found a bug? Open an issue!
  • Want to improve the model? Submit a pull request!
  • Just want to chat? Reach out on Twitter or GitHub!

�� What's Next?

This is just the beginning! Future improvements could include:

  • Web application for easy snow checking
  • Mobile app for on-the-go predictions
  • More weather locations across Switzerland
  • Advanced ML algorithms (Random Forest, XGBoost, Neural Networks)

Happy snow predicting! ❄️��️

Built with ❤️ during my Python learning journey

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support