--- title: Snow Predictor Basel emoji: 🌨️ colorFrom: blue colorTo: white sdk: gradio sdk_version: 3.50.2 app_file: app.py pinned: false --- # 🌨️ 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** ```python 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** ```bash # 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](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:** cisco@periospot.com - **Personal Portfolio:** [https://franciscodds.framer.ai/](https://franciscodds.framer.ai/) - **GitHub:** [https://github.com/Tuminha](https://github.com/Tuminha) - **Twitter/X:** [@Cisco_research](https://x.com/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*