2025 Contest Days

🏺 Antique

500 rows, 5 features, some labels unknown β€” classical sklearn beats deep learning here.

Classical MLscikit-learnSemi-supervisedβ˜…β˜…β˜†β˜† your Week-2 checkpoint

πŸ“œThe task, in plain English

A tiny tabular dataset: 500 samples, 5 features. Labels are 1, βˆ’1, or 0 β€” where 0 means unknown. Classify the unknowns. That's it. No images, no GPUs, no transformers.

Input500 Γ— 5 numeric table
OutputLabels for the unlabeled rows
Really testsscikit-learn fluency, semi-supervised thinking, and not overfitting 500 rows

πŸ”§The baseline you're given

Train a basic classifier on the labeled rows only, predict the rest. Limitations: throws away the structure in the unlabeled data; tiny data makes validation noisy; feature scales may be uncalibrated.

πŸš€Baseline vs. solution

⚠️ The baseline (what you are given)
  • Fits only on labeled rows
  • Single model, single train/val split
  • No use of unlabeled structure
βœ… The winning approach
  • Cross-validation, not one split β€” with 500 rows, a single split lies to you
  • Semi-supervised tricks: sklearn.semi_supervised label propagation / self-training (predict unknowns, add confident ones to training, repeat)
  • Compare several cheap models (logistic regression, random forest, gradient boosting, SVM) β€” 5 minutes each
  • Scale features; plot them β€” with 5 features you can literally LOOK at the data

πŸ§’Explain it like I'm brand new

Why this task exists: to catch people who reach for deep learning on 500 rows. Small tabular data is classical-ML territory: fit/predict in scikit-learn, cross-validate honestly, and exploit the unlabeled rows (their positions in feature space are information even without labels β€” points in the same cluster probably share a label; that intuition is "label propagation").

The muscle: the sklearn workflow β€” fit β†’ predict β†’ cross_val_score β€” which you can run in your head. This is the Week-2 checkpoint of your 30-day plan for a reason.

πŸ’¬The Gemma 4 playthrough (2000-token limit)

Chat 1 Β· Fast model bake-off
YOU
sklearn: X (labeled rows, shape (n,5)), y in {-1,1}. Write ONLY code to compare LogisticRegression, RandomForest, GradientBoosting, and SVC with 5-fold cross_val_score (accuracy), with StandardScaler in a Pipeline, printing meanΒ±std per model. Max 25 lines.
Chat 2 Β· Self-training
YOU
Now ONLY code for sklearn SelfTrainingClassifier wrapping the best model, using X_all where unknown labels are -1... wait, my unknowns are 0 and real labels are 1/-1. Handle relabeling so sklearn's convention (-1 = unlabeled) is respected. Max 20 lines.
That mid-prompt correction is realistic β€” you caught a convention clash (sklearn uses -1 for 'unlabeled', the task uses 0). Noticing such traps is exactly the code-literacy the contest tests.

🎯Takeaways & what Day 1 might do with this

  • Pattern family: classical ML on tiny data. Deep learning is a hammer; not everything is a nail.
  • Trust only cross-validation on small data β€” single-split scores swing wildly.