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
- 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
- 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
- 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
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