Salta al contenuto principale
WIP MITDidattici

ML From Scratch

Implementa regression, classification, clustering e reti neurali in NumPy puro

Stato
WIP
Licenza
MIT
Categoria
Didattici
Aggiornato

Stato del progetto

Descrizione

ML From Scratch è il percorso più impegnativo della serie didattica: 10 settimane di implementazione algoritmi machine learning in NumPy puro, senza dipendenze high-level (no TensorFlow, no PyTorch, no scikit-learn per gli algoritmi core—solo per dataset loading e baseline comparison). La filosofia è 'understand by building': se sai implementare backpropagation a mano con loop e gradient manuali, hai capito davvero come funziona; se hai solo chiamato `model.fit()`, hai capito come usare un'API. Il percorso copre: regression lineare e polinomiale con normal equation e gradient descent, regression logistica binaria e multinomiale (softmax), validazione (k-fold cross-validation, train/val/test split, learning curve), regolarizzazione (L1 Lasso, L2 Ridge, ElasticNet, early stopping), classification con k-NN e Naive Bayes (Gaussian + Multinomial), decision tree (Gini, entropy, pruning, random forest opzionale), clustering (k-means, k-means++, DBSCAN, hierarchical), dimensionality reduction (PCA con SVD, t-SNE concettuale), reti neurali multi-layer perceptron con backpropagation manuale (forward pass, gradient computation, weight update, mini-batch SGD, Adam optimizer da zero), interpretability (feature importance, SHAP concettuale, confusion matrix). Ogni notebook Jupyter è 'live': l'utente esegue celle e vede ogni step (formula matematica → codice NumPy → visualizzazione Matplotlib del fit). Il dataset principale è Boston Housing (regression) e Iris (classification) per gli step base, MNIST (classificazione cifre) per la rete neurale finale. License MIT, codice didattico pulito (no over-engineering), commenti pedagogici densi.

Funzionalità chiave

  • Regression: lineare, polinomiale, regolarizzata

    Normal equation, gradient descent, batch/mini-batch/SGD, regolarizzazione L1/L2/ElasticNet, validazione k-fold cross-validation.

  • Classification: logistic, k-NN, Naive Bayes

    Logistic regression binaria e softmax multinomiale, k-NN con KD-tree, Naive Bayes Gaussiano e Multinomiale, metric (precision, recall, F1, ROC-AUC).

  • Decision tree + random forest

    Tree induction con Gini e entropy, pruning post-hoc, feature importance, random forest con bagging, OOB error estimation.

  • Clustering unsupervised

    k-means con k-means++ init, elbow method, silhouette score, DBSCAN density-based, hierarchical agglomerative clustering con dendrogram.

  • Dimensionality reduction

    PCA con SVD decomposition, scree plot, varianza spiegata, t-SNE concettuale (visualizzazione), confronto con scikit-learn baseline.

  • Reti neurali MLP da zero

    Forward pass manuale, backpropagation con chain rule, gradient check, mini-batch SGD, Adam optimizer implementato da zero, MNIST baseline.

  • Notebook Jupyter pedagogici

    10 notebook progressivi, ogni step include formula matematica + codice NumPy + plot Matplotlib + esercizi opzionali, no markdown vuoto.

Tech stack

  • NumPy
  • Python 3.12
  • Jupyter Lab
  • Matplotlib
  • pandas
  • scikit-learn (only for baseline comparison)

Casi d'uso

  • Studenti universitari (informatica, statistica, fisica) che vogliono capire ML dietro le API
  • Sviluppatori mid-senior che usano scikit-learn ma vogliono interiorizzare la matematica
  • Bootcamp data science che cercano materiale didattico open-source rigoroso (no black-box)
  • Self-learner che vogliono preparare colloqui ML (domande tipo 'implementa k-means da zero')

Roadmap

  1. v0.1.0 Pianificata

    Regression + Classification base

    • Notebook 1: Linear regression con normal equation
    • Notebook 2: Gradient descent + variants
    • Notebook 3: Logistic regression binaria e multinomiale
    • Notebook 4: k-NN + Naive Bayes
    • Dataset Boston Housing + Iris baseline
  2. v0.5.0 Pianificata

    Trees + Clustering + Dim reduction

    • Notebook 5: Decision tree + random forest
    • Notebook 6: k-means + DBSCAN + hierarchical
    • Notebook 7: PCA + t-SNE concettuale
    • Esercizi feature importance + interpretability
  3. v1.0.0 Pianificata

    Neural networks + MNIST

    • Notebook 8: MLP forward + backprop manuale
    • Notebook 9: Adam optimizer da zero
    • Notebook 10: MNIST classification end-to-end
    • Documentazione MkDocs con derivazioni matematiche complete

A chi è rivolto

  • Pro Dev junior-mid
  • Pro Dev senior

Quick Start

Avvia il progetto localmente in pochi comandi.

# Quick start (work-in-progress, repo non ancora pubblicato)
# git clone https://github.com/<tba>/ml-from-scratch.git
# cd ml-from-scratch
# python -m venv venv && source venv/bin/activate
# pip install -r requirements.txt
# jupyter lab notebooks/

Contribuisci al progetto

ML From Scratch è open source. Apri una issue, proponi una pull request o lascia una stella su GitHub: ogni contributo, anche piccolo, è benvenuto.

  • ⭐ Lascia una stella se ti è utile
  • 🐛 Segnala bug o proponi feature via issue
  • 🔧 Invia pull request con fix o miglioramenti
  • 📣 Condividi il progetto se lo trovi interessante