🌨️ 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:
tavg
- Average temperaturetmin
- Minimum temperaturetmax
- Maximum temperatureprcp
- Precipitationwspd
- Wind speedwpgt
- Wind gustpres
- Pressuretemp_range
- Temperature rangetemp_below_freezing
- Below freezing indicatorhigh_precipitation
- High precipitation indicatorwindy_day
- Windy day indicatormonth
- Month of yearday_of_year
- Day of yearis_winter_season
- Winter season indicatortemp_trend_7d
- 7-day temperature trendtemp_std_7d
- 7-day temperature standard deviationprecip_sum_7d
- 7-day precipitation sumpressure_trend_7d
- 7-day pressure trendcold_days_7d
- 7-day cold days counttemp_volatility
- Temperature volatilitypressure_change
- Pressure change ratetemp_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
- Name: Francisco Teixeira Barbosa
- Email: [email protected]
- Personal Portfolio: https://franciscodds.framer.ai/
- GitHub: https://github.com/Tuminha
- Twitter/X: @Cisco_research
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