Se sei un programmatore Python o stai cercando una libreria robusta che puoi usare per portare l'apprendimento automatico in un sistema di produzione, allora una libreria che vorrai considerare seriamente è scikit-learn.
In questo post avrai una panoramica della libreria scikit-learn e utili riferimenti su dove puoi saperne di più.
Dove nasce Scikit-Learn ?
Scikit-learn è stato inizialmente sviluppato da David Cournapeau come progetto di Google Summer of Code nel 2007.
Successivamente Matthieu Brucher si è unito al progetto e ha iniziato a usarlo come parte del suo lavoro di tesi. Nel 2010 è stata coinvolta INRIA e la prima versione pubblica (v0.1 beta) è stata pubblicata a fine gennaio 2010.
Il progetto ha ora più di 30 contributori attivi e ha ricevuto sponsorizzazioni da INRIA , Google, Tinyclues e Python Software Foundation .
Cos'è scikit-learn?
Scikit-learn è una libreria che fornisce una gamma di algoritmi di apprendimento supervisionati e non supervisionati tramite un'interfaccia python.
È concesso in licenza con una licenza BSD semplificata permissiva ed è distribuito sotto molte distribuzioni Linux, incoraggiando l'uso accademico e commerciale.
La libreria è basata su SciPy (Scientific Python) che deve essere installata prima di poter usare scikit-learn. Questa librerie si appoggia anche su:
NumPy : pacchetto di matrice n-dimensionale di base
SciPy : Libreria fondamentale per il calcolo scientifico
Matplotlib : grafica 2D/3D completa
IPython : Console interattiva migliorata
Sympy : matematica simbolica
Pandas : Strutture e analisi dei dati
Estensioni o moduli per SciPy sono convenzionalmente denominati SciKits . In quanto tale, il modulo fornisce algoritmi di apprendimento ed è denominato scikit-learn.
La visione per la libreria è un livello di robustezza e supporto richiesto per l'uso nei sistemi di produzione. Ciò significa una profonda attenzione a questioni quali facilità d'uso, qualità del codice, collaborazione, documentazione e prestazioni.
Sebbene l'interfaccia sia Python, le librerie C fanno leva per prestazioni come numpy per operazioni di array e matrici, LAPACK , LibSVM e l'uso attento di cython.
Quali sono le caratteristiche di scikit-learn?
La libreria è focalizzata sulla modellazione dei dati. Non si concentra sul caricamento, la manipolazione e il riepilogo dei dati. Per queste funzionalità, fare riferimento a NumPy e Pandas.
Alcuni gruppi popolari di modelli forniti da scikit-learn includono:
Clustering : per raggruppare dati senza etichetta come KMeans.
Cross Validation : per stimare la performance di modelli supervisionati su dati invisibili.
Set di dati : per testare set di dati e per generare set di dati con proprietà specifiche per l'analisi del comportamento del modello.
Riduzione dimensionale : per ridurre il numero di attributi nei dati per il riepilogo, la visualizzazione e la selezione di funzionalità come l'analisi dei componenti principali.
Metodi di insieme : per combinare le previsioni di più modelli supervisionati.
Estrazione delle caratteristiche : per definire gli attributi in immagini e dati di testo.
Selezione delle funzioni : per identificare attributi significativi da cui creare modelli supervisionati.
Regolazione dei parametri : per ottenere il massimo dai modelli supervisionati.
Apprendimento multidimensionale: per riassumere e rappresentare dati multidimensionali complessi.
Modelli supervisionati : una vasta gamma non limitata a modelli lineari generalizzati, analisi discriminate, baye ingenue, metodi pigri, reti neurali, macchine vettoriali di supporto e alberi decisionali.
Esempio: Classificazione e alberi di regressione
Vogliamo farti un esempio per mostrarti quanto sia facile usare la libreria.
In questo esempio, utilizziamo l'algoritmo dell'albero decisionale Classification and Regression Trees (CART) per modellare il set di dati dei fiori Iris.
Questo set di dati viene fornito come set di dati di esempio con la libreria e viene caricato. Il classificatore si adatta ai dati e quindi vengono effettuate previsioni sui dati di addestramento.
Infine, viene stampata l'accuratezza della classificazione e una matrice di confusione .
# Semplice esempio di Decision Tree Classifier
from sklearn import datasets
from sklearn import metrics
from sklearn.tree import DecisionTreeClassifier
# Carichiamo il dataset iris
dataset = datasets.load_iris()
# creiamo e alleniamo il modello
model = DecisionTreeClassifier()
model.fit(dataset.data, dataset.target)
print(model)
# Facciamo le nostre previsioni
expected = dataset.target
predicted = model.predict(dataset.data)
# Riassumiamo le performance del modello
print(metrics.classification_report(expected, predicted))
print(metrics.confusion_matrix(expected, predicted))
#Ti consigliamo di provarlo è molto divertente
L'esecuzione di questo esempio produce l'output seguente, che mostra i dettagli del modello addestrato, l'abilità del modello in base ad alcune metriche comuni e una matrice di confusione.
DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None,
max_features=None, max_leaf_nodes=None, min_samples_leaf=1,
min_samples_split=2, min_weight_fraction_leaf=0.0,
presort=False, random_state=None, splitter='best')
precision recall f1-score support
0 1.00 1.00 1.00 50
1 1.00 1.00 1.00 50
2 1.00 1.00 1.00 50
avg / total 1.00 1.00 1.00 150
[[50 0 0]
[ 0 50 0]
[ 0 0 50]]
Chi usa scikit-learn?
La pagina delle testimonianze di scikit-learn elenca Inria, Mendeley, wise.io, Evernote, Telecom ParisTech e AWeber come utenti della libreria.
Se questa è una piccola indicazione delle aziende che hanno presentato informazioni sul loro utilizzo, è molto probabile che ci siano decine o centinaia di organizzazioni più grandi che utilizzano la libreria.
Ha una buona copertura di test e versioni gestite ed è adatto sia per prototipi che per progetti di produzione.
Risorse utili per scikit-learn
Se sei interessato a saperne di più, controlla la homepage di Scikit-Learn che include documentazione e risorse correlate.
Puoi ottenere il codice dal repository github e le versioni sono storicamente disponibili sul progetto Sourceforge .
Documentazione
Ti consiglio di iniziare con il tutorial di avvio rapido e di sfogliare la guida per l'utente e la galleria di esempi per gli algoritmi che ti interessano.
In definitiva, scikit-learn è una libreria e il riferimento API sarà la migliore documentazione per portare a termine le cose.
Tutorial di installazione-> http://scikit-learn.org/stable/tutorial/basic/tutorial.html
Guida per l'utente-> http://scikit-learn.org/stable/user_guide.html
Riferimento API-> http://scikit-learn.org/stable/modules/classes.html
Galleria di esempi-> http://scikit-learn.org/stable/auto_examples/index.html
Comments