About this project
A 2021 assignment, cooked again
COMP30027 Machine Learning at the University of Melbourne, 2021 Semester 1. Project 2 asked pairs to predict how long a recipe takes and, more importantly, to explain why their models behave the way they do.
Credits
Who made it
Coursework
The 2021 team
- Sunchuangyu (Rin) Huang · co-author of the models and the report
- Project partner · co-author of the models and the report
The report was submitted anonymously for peer review, so neither author is named in it.
This site
The 2026 revival
Rebuilt by Rin from the submitted report with help from an AI coding assistant: the data pipeline, the experiments, the TypeScript ports and this site.
Private GitHub repository (available on request)
Provenance
What survived and what was rebuilt
- Report
- 2021Six-page anonymous PDF2026Kept unchanged in the repository's coursework folder; every number here is transcribed from it
- Code
- 2021Python notebooks with scikit-learn2026Lost. Rewritten as six uv scripts: four follow the report step by step, two add the uncertainty layer
- Data
- 2021Staff sample of Majumder et al.'s Food.com crawl2026Public-domain Food.com crawl, sampled to the same class counts
- Features
- 2021Staff Doc2Vec and CountVectorizer files2026Regenerated with gensim and scikit-learn
- Results
- 2021Report tables and a Kaggle submission2026JSON artefacts behind the Models, Evaluation, LLM eval, Stacking and Data pages
- Interactive
- 2021None2026Browser predictor and stacking judge, ported to TypeScript with parity tests
- Evaluation
- 2021One accuracy per model from one five-fold split2026Intervals, paired tests and calibration on the Evaluation page, with the 2021 rerun kept as it was
- AI
- 2021None2026Optional bring-your-own-key LLM evaluation and second opinion, audit-logged in the visitor's browser
| Part | 2021 | 2026 |
|---|---|---|
| Report | Six-page anonymous PDF | Kept unchanged in the repository's coursework folder; every number here is transcribed from it |
| Code | Python notebooks with scikit-learn | Lost. Rewritten as six uv scripts: four follow the report step by step, two add the uncertainty layer |
| Data | Staff sample of Majumder et al.'s Food.com crawl | Public-domain Food.com crawl, sampled to the same class counts |
| Features | Staff Doc2Vec and CountVectorizer files | Regenerated with gensim and scikit-learn |
| Results | Report tables and a Kaggle submission | JSON artefacts behind the Models, Evaluation, LLM eval, Stacking and Data pages |
| Interactive | None | Browser predictor and stacking judge, ported to TypeScript with parity tests |
| Evaluation | One accuracy per model from one five-fold split | Intervals, paired tests and calibration on the Evaluation page, with the 2021 rerun kept as it was |
| AI | None | Optional bring-your-own-key LLM evaluation and second opinion, audit-logged in the visitor's browser |
Stack
Then and now
2021
Original stack
- Python and Jupyter
- scikit-learn: GaussianNB, LogisticRegression, SVC (one-vs-rest), RandomForestClassifier
- Staff-supplied Doc2Vec (50 and 100 dimensions) and CountVectorizer features
- Kaggle in-class competition for test predictions
2026
Revived stack
- Python 3.12 scripts run with uv: pandas, scikit-learn, gensim
- Next.js App Router, TypeScript, Tailwind CSS, shadcn/ui primitives
- Hand-drawn SVG and HTML charts, light and dark themes
- Vitest parity tests against scikit-learn output
- Statistics checked against SciPy, statsmodels and R
Fine print
Data, citation and academic integrity
Recipe data originates from Food.com. As the assignment required, the dataset paper is cited: Majumder, B. P., Li, S., Ni, J. and McAuley, J. (2019). Generating Personalized Recipes from Historical User Preferences. Proceedings of EMNLP-IJCNLP 2019.
The assignment specification and the staff data bundle belong to the University of Melbourne and are not reproduced here; the task is described in our own words. The site serves only derived artefacts such as counts, model weights and scores.
The original report is kept in the repository for reference. If you are taking COMP30027, please do your own work: copying it would breach the University's academic integrity policy.
The MIT licence covers the revival's code (the pipeline scripts and this site). The 2021 report remains © its two authors, all rights reserved, and is included for reference only.
Ready to cook? Try the predictor.