Rainfall Prediction
Predicting daily rainfall from weather features. Feature engineering and K-Folds cross-validation showed a well-tuned KNN model consistently beating heavier ensembles - complexity wasn't the answer here.
Currently working as a Data Engineer at Rabobank
Interacting with Databricks, Azure, and financial data.
Working on
Projects
Predicting daily rainfall from weather features. Feature engineering and K-Folds cross-validation showed a well-tuned KNN model consistently beating heavier ensembles - complexity wasn't the answer here.
Regression on housing sale prices, using SHAP to see which features actually drove predictions. Iterating across versions surfaced a data leakage issue in the target that explained an otherwise-suspicious accuracy jump.
Binary classification for loan default risk, combining credit metrics, debt-to-income ratios, and payment history. An XGBoost/LightGBM/CatBoost ensemble stayed accurate while SHAP kept the predictions explainable.
Predicting a track's tempo from raw audio. Combined standard signal-processing features with music-theory-informed engineering, then handed them to a gradient boosting model.
Modeling accident risk with interaction features capturing how time and weather conditions compound. Training ran inside a Dockerized pipeline, tuned with Optuna, for reproducible results.
Predicting whether a customer responds to a campaign within a 7-day window. Built around a YAML-driven config so feature sets, models, and hyperparameters stayed fast to swap and test.
Estimating how long a listener sticks with an episode. Temporal features and a stacked ensemble of models squeezed out signal that any single model missed.
Recommending fertilizer types per field as a multi-label problem, optimized directly for MAP@3 rather than plain accuracy - closer to how the ranking is actually judged.
The classic starting point - binary survival classification. Used it to get comfortable with feature engineering fundamentals and XGBoost before taking on messier datasets.
A trickier follow-up to Titanic. Mostly a lesson in overfitting - chasing validation score too hard hurt generalization until feature correlation was taken more seriously.
Fraud detection on a heavily imbalanced dataset. The real lesson wasn't SMOTE itself but applying it inside each K-Fold split rather than before - otherwise validation scores lie to you.
Classifying personality type from a small, noisy dataset. Oversampling and Bayesian hyperparameter optimization did most of the heavy lifting where there wasn't much data to work with.
Estimating calories burned from workout and physiological features - duration, heart rate, body metrics - engineered into a feature set for gradient boosting.
Predicting exam performance from study habits and demographic features, blending CatBoost and LightGBM rather than betting on a single model.
Predicting customer churn by stacking CatBoost and XGBoost, weighting their outputs to trade off the two models' different failure modes.
Multi-class classification of irrigation need from soil composition and weather data - a change of domain from the usual finance and health datasets.
Predicting the probability a buyer purchases an electric vehicle, treated as a proper probability estimation problem rather than a hard yes/no classification.
A different kind of competition: instead of fitting a model to a static dataset, an agent competes head-to-head in a simulated farm economy - plant, water, harvest, sell - and wins by out-optimizing the opponent's strategy in real time.
Classifying heart disease risk from patient data using a support vector machine, with feature scaling and kernel tuning to get the decision boundary right.
Modeling Solana's price movement with a recurrent neural network over historical market data - an experiment in how much signal a sequence model can pull from noisy crypto prices.
Exploratory analysis and classification on a thyroid cancer risk dataset, digging into which clinical features actually separate the classes.
Solving variants of the classic knapsack problem - a break from ML to work through combinatorial optimization by hand.
Independent exploration of credit card transaction data, done ahead of (and separate from) the Kaggle fraud-detection write-up.
A working notebook of reusable data science helper functions that grew alongside other projects, later folded into a proper utilities library.
A small collection of reusable ML components and helper functions pulled out of repeated project work, so common preprocessing and evaluation code isn't rewritten from scratch each time.
Code behind an MSc thesis investigating cross-modal sound symbolism in vision-language models - whether these models pick up on the same sound-meaning associations humans do.