Scienza dei dati

Tutorial sull'apprendimento automatico con Scikit-learn

Tutorial sull'apprendimento automatico con Scikit-learn

In questa lezione sull'apprendimento automatico con scikit-learn, impareremo vari aspetti di questo eccellente pacchetto Python che ci consente di applicare funzionalità di apprendimento automatico semplici e complesse su un insieme diversificato di dati insieme a funzionalità per testare l'ipotesi che stabiliamo.

Il pacchetto scikit-learn contiene strumenti semplici ed efficienti per applicare il data mining e l'analisi dei dati su set di dati e questi algoritmi sono disponibili per essere applicati in diversi contesti. È un pacchetto open source disponibile con una licenza BSD, il che significa che possiamo usare questa libreria anche commercialmente. È costruito su matplotlib, NumPy e SciPy, quindi è di natura versatile. Utilizzeremo Anaconda con il taccuino Jupyter per presentare esempi in questa lezione.

Cosa offre scikit-learn?

La libreria scikit-learn si concentra completamente sulla modellazione dei dati. Si prega di notare che non ci sono funzionalità importanti presenti in scikit-learn quando si tratta di caricare, manipolare e riassumere i dati. Ecco alcuni dei modelli popolari che ci fornisce scikit-learn:

Installa Python scikit-learn

Solo una nota prima di iniziare il processo di installazione, utilizziamo un ambiente virtuale per questa lezione che abbiamo creato con il seguente comando:

python -m virtualenv scikit
sorgente scikit/bin/activate

Una volta che l'ambiente virtuale è attivo, possiamo installare la libreria pandas all'interno dell'ambiente virtuale in modo che gli esempi che creeremo in seguito possano essere eseguiti:

pip install scikit-learn

Oppure, possiamo usare Conda per installare questo pacchetto con il seguente comando:

conda install scikit-learn

Vediamo qualcosa di simile quando eseguiamo il comando precedente:

Una volta completata l'installazione con Conda, saremo in grado di utilizzare il pacchetto nei nostri script Python come:

importare sklearn

Iniziamo a utilizzare scikit-learn nei nostri script per sviluppare fantastici algoritmi di Machine Learning.

Importazione di set di dati

Una delle cose interessanti di scikit-learn è che viene precaricato con set di dati di esempio con cui è facile iniziare rapidamente. I set di dati sono i iris e cifre set di dati per la classificazione e la prezzi delle case di Boston set di dati per tecniche di regressione. In questa sezione, vedremo come caricare e iniziare a utilizzare il set di dati dell'iride.

Per importare un set di dati, dobbiamo prima importare il modulo corretto, quindi ottenere il blocco del set di dati:

da set di dati di importazione sklearn
iris = set di dati.carico_iride()
cifre = set di dati.carica_cifre()
cifre.dati

Una volta eseguito il frammento di codice sopra, vedremo il seguente output:

Tutto l'output viene rimosso per brevità. Questoèil set di dati che useremo maggiormente in questa lezione ma la maggior parte dei concetti può essere applicata generalmente a tutti i set di dati.

Solo un fatto divertente sapere che ci sono più moduli presenti nel scikit ecosistema, uno dei quali è imparare utilizzato per algoritmi di Machine Learning. Vedi questa pagina per molti altri moduli presenti.

Esplorare il set di dati

Ora che abbiamo importato il set di dati di cifre fornito nel nostro script, dovremmo iniziare a raccogliere informazioni di base sul set di dati ed è quello che faremo qui. Ecco le cose di base che dovresti esplorare mentre cerchi informazioni su un set di dati:

Scriviamo un breve frammento di codice per estrarre le tre informazioni precedenti dal nostro set di dati:

print('Target:       ', cifre.bersaglio)
print('Chiavi:         ', cifre.chiavi())
print('Descrizione: ', cifre.DESCR)

Una volta eseguito il frammento di codice sopra, vedremo il seguente output:

Si prega di notare che le cifre variabili non sono semplici. Quando abbiamo stampato il set di dati di cifre, in realtà conteneva array numpy. Vedremo come possiamo accedere a questi array. Per questo, prendi nota delle chiavi disponibili nell'istanza delle cifre che abbiamo stampato nell'ultimo frammento di codice.

Inizieremo ottenendo la forma dei dati dell'array, ovvero le righe e le colonne che l'array ha. Per questo, prima dobbiamo ottenere i dati effettivi e quindi ottenere la sua forma:

digits_set = cifre.dati
print(set_digits.forma)

Una volta eseguito il frammento di codice sopra, vedremo il seguente output:

Ciò significa che abbiamo 1797 campioni presenti nel nostro set di dati insieme a 64 caratteristiche dei dati (o colonne). Inoltre, abbiamo anche alcune etichette di destinazione che visualizzeremo qui con l'aiuto di matplotlib. Ecco uno snippet di codice che ci aiuta a farlo:

import matplotlib.pyplot come plt
# Unisci le immagini e le etichette di destinazione come un elenco
immagini_e_etichette = list(zip(cifre.immagini, cifre.bersaglio))
for index, (image, label) in enumerate(images_and_labels[:8]):
# inizializza una sottotrama di 2X4 alla i+1-esima posizione
per favore.sottotrama(2, 4, indice + 1)
# Non è necessario tracciare alcun asse
per favore.asse('spento')
# Mostra le immagini in tutte le sottotrame
per favore.imshow(immagine, cmap=plt.cm.gray_r,interpolazione='più vicino')
# Aggiungi un titolo a ogni sottotrama
per favore.title('Allenamento: ' + str(etichetta))
per favore.mostrare()

Una volta eseguito il frammento di codice sopra, vedremo il seguente output:

Nota come abbiamo compresso i due array NumPy insieme prima di tracciarli su una griglia 4 per 2 senza alcuna informazione sugli assi. Ora, siamo sicuri delle informazioni che abbiamo sul set di dati con cui stiamo lavorando.

Ora che sappiamo di avere 64 funzionalità di dati (che sono molte funzionalità tra l'altro), è difficile visualizzare i dati effettivi. Abbiamo una soluzione per questo però.

Analisi dei componenti principali (PCA)

Questo non è un tutorial sulla PCA, ma diamo una piccola idea di cosa sia. Poiché sappiamo che per ridurre il numero di funzionalità di un set di dati, abbiamo due tecniche:

  1. Eliminazione delle funzionalità
  2. Estrazione delle caratteristiche

Mentre la prima tecnica affronta il problema delle funzionalità dei dati persi anche quando potrebbero essere state importanti, la seconda tecnica non soffre del problema poiché con l'aiuto della PCA, costruiamo nuove funzionalità dei dati (in numero inferiore) in cui combiniamo le inserire le variabili in modo tale da poter tralasciare le variabili "meno importanti" pur conservando le parti più preziose di tutte le variabili.

Come anticipato, PCA ci aiuta a ridurre l'elevata dimensionalità dei dati che è un risultato diretto della descrizione di un oggetto usando molte caratteristiche dei dati. Non solo le cifre, ma molti altri set di dati pratici hanno un numero elevato di funzionalità che includono dati istituzionali finanziari, dati meteorologici ed economici per una regione ecc. Quando eseguiamo PCA sul set di dati di cifre, il nostro obiettivo sarà quello di trovare solo 2 caratteristiche in modo che abbiano la maggior parte delle caratteristiche del set di dati.

Scriviamo un semplice frammento di codice per applicare PCA al set di dati di cifre per ottenere il nostro modello lineare di sole 2 caratteristiche:

da sklearn.decomposizione importazione PCA
feature_pca = PCA(n_components=2)
reduction_data_random = feature_pca.fit_transform(cifre.dati)
model_pca = PCA(n_components=2)
reduction_data_pca = model_pca.fit_transform(cifre.dati)
Reduce_data_pca.forma
print(dati_ridotti_casuale)
print(reduced_data_pca)

Una volta eseguito il frammento di codice sopra, vedremo il seguente output:

[[ -1.2594655   21.27488324]
[  7.95762224 -20.76873116]
[ 6.99192123  -9.95598191]

[ 10.8012644   -6.96019661]
[ -4.87210598  12.42397516]
[ -0.34441647   6.36562581]]
[[ -1.25946526 21.27487934]
[  7.95761543 -20.76870705]
[ 6.99191947  -9.9559785 ]

[ 10.80128422  -6.96025542]
[ -4.87210144  12.42396098]
[ -0.3443928    6.36555416]]

Nel codice sopra, menzioniamo che abbiamo solo bisogno di 2 funzionalità per il set di dati.

Ora che abbiamo una buona conoscenza del nostro set di dati, possiamo decidere che tipo di algoritmi di apprendimento automatico possiamo applicare su di esso. Conoscere un dataset è importante perché è così che possiamo decidere quali informazioni possono essere estratte da esso e con quali algoritmi. Ci aiuta anche a testare l'ipotesi che stabiliamo durante la previsione dei valori futuri.

L'applicazione di k significa clustering

L'algoritmo di clustering k-means è uno degli algoritmi di clustering più semplici per l'apprendimento non supervisionato. In questo clustering, abbiamo un numero casuale di cluster e classifichiamo i nostri punti dati in uno di questi cluster. L'algoritmo k-means troverà il cluster più vicino per ogni dato punto dati e assegnerà quel punto dati a quel cluster.

Una volta eseguito il clustering, viene ricalcolato il centro del cluster, ai punti dati vengono assegnati nuovi cluster in caso di modifiche. Questo processo viene ripetuto fino a quando i punti dati smettono di cambiare i cluster per raggiungere la stabilità.

Applichiamo semplicemente questo algoritmo senza alcuna preelaborazione dei dati. Per questa strategia, lo snippet di codice sarà abbastanza semplice:

da sklearn import cluster
k = 3
k_means = cluster.KMezzi(k)
# dati adatti
k_mezzi.misura (cifre.dati)
# risultati di stampa
print(k_means.etichette_[::10])
stampa (cifre.obiettivo[::10])

Una volta eseguito il frammento di codice sopra, vedremo il seguente output:

Nell'output sopra, possiamo vedere diversi cluster forniti a ciascuno dei punti dati.

Conclusione

In questa lezione abbiamo esaminato un'eccellente libreria di Machine Learning, scikit-learn. Abbiamo appreso che ci sono molti altri moduli disponibili nella famiglia scikit e abbiamo applicato un semplice algoritmo k-means sul set di dati fornito. Esistono molti altri algoritmi che possono essere applicati al set di dati oltre al clustering k-means che abbiamo applicato in questa lezione, ti invitiamo a farlo e a condividere i tuoi risultati.

Per favore condividi il tuo feedback sulla lezione su Twitter con @sbmaggarwal e @LinuxHint.

Come modificare le impostazioni del mouse e del touchpad utilizzando Xinput in Linux
La maggior parte delle distribuzioni Linux viene fornita con la libreria "libinput" per impostazione predefinita per gestire gli eventi di input su un...
Rimappa i pulsanti del mouse in modo diverso per software diversi con X-Mouse Button Control
Forse hai bisogno di uno strumento che possa cambiare il controllo del tuo mouse con ogni applicazione che utilizzi. In questo caso, puoi provare un'a...
Recensione del mouse wireless Microsoft Sculpt Touch
Ho letto di recente del Microsoft Scolpisci il tocco mouse wireless e ho deciso di acquistarlo. Dopo averlo usato per un po', ho deciso di condividere...