Justin

Quantic ML Project

🍎 fruited Repo Link

What

Classifies Windows PE (executable) metadata as malware or clearware. A Flask API serves a tuned XGBoost model (batch JSON + CSV-upload endpoints); a small React frontend handles manual row entry and CSV upload with per-row verdicts.

Screenshot demonstrating the frontend view of the rag chatbot in use

Why

Quantic coursework, taken as an excuse to run the full ML lifecycle properly: dataset → feature engineering → model selection → tuning → deployed, test-covered inference API.

How

  • Brazilian Malware Dataset (47,701 rows) → sklearn ColumnTransformer pipelines (median imputation, date decomposition, missingness flags, DLL token counts) — all feature engineering inside the pipeline, so no leakage.
  • 7-model CV leaderboard (incl. a torch MLP); XGBoost won at test AUC 0.9996 / 99.55% accuracy, then RandomizedSearchCV (n_iter=100, 5-fold).
  • marshmallow-validated API (5,000-row cap); CI runs pytest then fires a Render deploy hook. Frontend (Vercel) built against a written API contract (.opencode/api_contract.md) that mirrors the backend schema exactly.

Status / Learnings

Complete and deployed. Learnings: an explicit written contract keeps decoupled repos in sync; keeping transforms inside sklearn Pipelines is the cleanest leakage defense; the committed dist/ bundle has localhost:5000 baked in — env config must happen at Vercel build time.

Justin