Machine learning service predicting rain in 7 days (binary classification) and cumulative precipitation in 3 days (regression) for Sydney, using Open-Meteo historical data. Deployed as a containerised REST API on Render with Docker.

An ML-as-a-Service project built as part of the Advanced Machine Learning Applications subject at UTS, delivering two weather prediction models for Sydney as a production REST API. The classification model (Rain or Not in 7 days) uses a custom Stacking Classifier combining Logistic Regression, MLPClassifier, and DecisionTreeClassifier. The regression model (total precipitation over 3 days) uses ElasticNet after evaluating Ridge, Lasso, tree-based models, and neural approaches. Both models are trained on 12,784 records of daily and hourly data from the Open-Meteo API spanning 1990 to 2024. Feature engineering includes weather code categorisation, temporal lag features (1, 2, 3, 7, 14 days), rolling precipitation sums, and atmospheric interaction terms. All transformations are implemented as custom scikit-learn transformers integrated into the ML pipeline for consistent train/inference behaviour. The API is built with FastAPI, containerised with Docker, and deployed on Render. I also published a reusable Python package (dskit_uts25609227) encapsulating shared preprocessing utilities.