Dal Google Summer of Code alla libreria di riferimento
Nel 2007 David Cournapeau avvia un progetto nel contesto del Google Summer of Code con l’obiettivo di creare una libreria di machine learning per Python. Il progetto si chiama scikit-learn — dove “scikit” indica un pacchetto satellite del progetto SciPy — e nel 2010 raggiunge la versione 0.1, il primo rilascio stabile coordinato da Fabian Pedregosa, Gaël Varoquaux e Alexandre Gramfort presso l’INRIA, l’istituto francese di ricerca in informatica.
L’obiettivo è rendere il machine learning accessibile a chiunque sappia programmare in Python, senza richiedere framework enterprise complessi o conoscenze matematiche avanzate per iniziare.
Un’API uniforme
La scelta architetturale più influente di scikit-learn è l’API uniforme che attraversa tutti gli algoritmi. Ogni modello — che si tratti di classificazione, regressione o clustering — espone tre metodi fondamentali: fit per addestrare il modello sui dati, predict per generare previsioni su dati nuovi, e transform per trasformare i dati (normalizzazione, riduzione dimensionale, encoding).
Questa uniformità significa che cambiare algoritmo richiede spesso una sola riga di codice. Un albero decisionale è una Support Vector Machine si addestrano e si interrogano allo stesso modo. Lo stesso vale per i metodi di preprocessing e di feature extraction: ogni trasformazione si compone con le altre in una pipeline sequenziale, dove l’output di uno step diventa l’input del successivo.
Algoritmi e fondamenta
La versione 0.1 include algoritmi di classificazione (SVM, k-nearest neighbors, alberi decisionali), regressione (lineare, Ridge, Lasso), clustering (k-means, clustering gerarchico) e metodi di riduzione dimensionale come la PCA. Ogni algoritmo è implementato in Python con estensioni in C e Cython per le parti critiche in termini di prestazioni.
La libreria è costruita su NumPy per la gestione degli array multidimensionali e su SciPy per le routine di algebra lineare e ottimizzazione. Non reinventa queste fondamenta ma le compone, concentrandosi sugli algoritmi di apprendimento e sulla loro usabilità.
La documentazione include esempi eseguibili per ogni algoritmo, con dataset di riferimento inclusi nella libreria. Scikit-learn è rilasciato sotto licenza BSD, compatibile con l’uso commerciale e l’integrazione in prodotti proprietari.
Link: scikit-learn.org
