Scikit-learn è una libreria Python open source che semplifica il processo di creazione di modelli di machine learning. Offre un'interfaccia pulita e coerente che aiuta sia i principianti che gli utenti esperti a lavorare in modo efficiente.
- Supporta attività come il clustering di regressione di classificazione e la preelaborazione
- Rende la costruzione del modello veloce e affidabile
- Fornisce strumenti pronti all'uso per la formazione e la valutazione
- Riduce la complessità evitando l'implementazione manuale degli algoritmi
Installazione e utilizzo di Scikit-learn
Prima di iniziare a costruire modelli, dobbiamo installare Scikit-impara. Richiede Python 3.8 o successivo e dipende da due importanti librerie: NumPy E SciPy. Assicurati che questi siano installati prima.
Per installare Scikit-learn eseguire il seguente comando:
pip install -U scikit-learn
convertire la stringa fino ad oggi
Questo scaricherà e installerà l'ultima versione di Scikit-learn insieme alle sue dipendenze. Vediamo i vari passaggi coinvolti nel processo di creazione del modello utilizzando la libreria Scikit-learn.
Passaggio 1: caricamento di un set di dati
Un set di dati è costituito da:
- Caratteristiche (X): Variabili di input che descrivono i dati
- Obiettivo (y): Il valore che vogliamo prevedere
Scikit-learn fornisce set di dati integrati come Iris Digits e Boston Housing. Utilizzando il set di dati Iris:
punto Java
- load_iris() carica i dati
- X memorizza i dati delle funzionalità
- y memorizza le etichette di destinazione
- feature_names e target_names forniscono nomi descrittivi
Possiamo ispezionare le prime righe per comprendere la struttura. Per i set di dati personalizzati, Pandas viene comunemente utilizzato per caricare file esterni come CSV.
Pythonfrom sklearn.datasets import load_iris iris = load_iris() X = iris.data y = iris.target feature_names = iris.feature_names target_names = iris.target_names print('Feature names:' feature_names) print('Target names:' target_names) print('nType of X is:' type(X)) print('nFirst 5 rows of X:n' X[:5])
Produzione:
Caricamento set di datiA volte dobbiamo lavorare sui nostri dati personalizzati, quindi carichiamo un set di dati esterno. Per questo possiamo usare il file libreria dei panda per caricare e manipolare facilmente i set di dati.
Per questo potete fare riferimento al nostro articolo su Come importare file CSV in Panda ?
Passaggio 2: suddivisione del set di dati
Per valutare equamente un modello, dividiamo i dati in:
- Set di addestramento: utilizzato per addestrare il modello
- Set di test: utilizzato per valutare quanto bene si generalizza il modello
Usando train_test_split dividiamo il set di dati Iris in modo che il 60% sia destinato all'addestramento e il 40% al test (test_size=0.4). random_state=1 garantisce la riproducibilità.
Dopo la suddivisione otteniamo:
- X_treno y_treno -> Dati allenamento
- X_test y_test -> Dati di test
Il controllo delle forme garantisce che i dati siano suddivisi correttamente.
Pythonfrom sklearn.model_selection import train_test_split X_train X_test y_train y_test = train_test_split(X y test_size=0.4 random_state=1)
Ora controlliamo il Forme dei dati suddivisi per garantire che entrambi i set abbiano proporzioni corrette di dati evitando potenziali errori nella valutazione o nell'addestramento del modello.
Pythonprint('X_train Shape:' X_train.shape) print('X_test Shape:' X_test.shape) print('Y_train Shape:' y_train.shape) print('Y_test Shape:' y_test.shape)
Produzione:
rendere eseguibile lo script
Forma dei dati suddivisiPassaggio 3: gestione dei dati categoriali
Gli algoritmi di apprendimento automatico funzionano con input numerici, pertanto i dati categorici (testo) devono essere convertiti in numeri. Se non codificati correttamente, i modelli possono interpretare erroneamente le categorie. Scikit-learn fornisce più metodi di codifica:
1. Codifica delle etichette : Converte ciascuna categoria in un numero intero univoco. Ad esempio, in una colonna con categorie come "gatto", "cane" e "uccello", le convertirebbe rispettivamente in 0 1 e 2. Questo metodo funziona bene quando le categorie hanno un ordine significativo come Basso, Medio e Alto.
- Codificatoreetichetta(): Viene inizializzato per creare un oggetto codificatore che convertirà i valori categoriali in etichette numeriche.
- fit_transform(): Questo metodo adatta innanzitutto il codificatore ai dati categorici e quindi trasforma le categorie nelle corrispondenti etichette numeriche.
from sklearn.preprocessing import LabelEncoder categorical_feature = ['cat' 'dog' 'dog' 'cat' 'bird'] encoder = LabelEncoder() encoded_feature = encoder.fit_transform(categorical_feature) print('Encoded feature:' encoded_feature)
Produzione:
Caratteristica codificata: [1 2 2 1 0]
Java condizione while
2. Codifica One-Hot : La codifica One-Hot crea colonne binarie separate per ciascuna categoria. Ciò è utile quando le categorie non hanno alcun ordinamento naturale. Esempio: gatto cane uccello -> 3 nuove colonne (gatto/cane/uccello) con 1 e 0.
- L'input deve essere rimodellato in un array 2D
- OneHotEncoder(sparse_output=False) genera colonne binarie
from sklearn.preprocessing import OneHotEncoder import numpy as np categorical_feature = ['cat' 'dog' 'dog' 'cat' 'bird'] categorical_feature = np.array(categorical_feature).reshape(-1 1) encoder = OneHotEncoder(sparse_output=False) encoded_feature = encoder.fit_transform(categorical_feature) print('OneHotEncoded feature:n' encoded_feature)
Produzione:
Oltre alla codifica delle etichette e alla codifica One-Hot, esistono altre tecniche come Codifica media .
Passaggio 4: formazione del modello
Ora che i nostri dati sono pronti, è il momento di addestrare un modello di machine learning. Scikit-learn dispone di numerosi algoritmi con un'interfaccia coerente per la previsione e la valutazione dell'addestramento. Qui useremo Regressione logistica come esempio.
Nota : Non entreremo nei dettagli di come funziona l'algoritmo poiché a noi interessa comprenderne solo l'implementazione.
- log_reg = Regressione logistica(max_iter=200): Creazione di un oggetto classificatore di regressione logistica.
- log_reg.fit(X_treno y_treno): Usando questo il modello di regressione logistica regola i parametri del modello per adattarli al meglio ai dati.
from sklearn.linear_model import LogisticRegression log_reg = LogisticRegression(max_iter=200) log_reg.fit(X_train y_train)
Formazione utilizzando la regressione logistica.Passaggio 5: fare previsioni
Una volta addestrato utilizziamo il modello per fare previsioni sui dati del test X_test chiamando il metodo predittivo. Ciò restituisce le etichette previste y_pred.
- log_reg.predict: Utilizza un modello di regressione logistica addestrato per prevedere le etichette per i dati di test X_test.
y_pred = log_reg.predict(X_test)
Passaggio 6: valutazione dell'accuratezza del modello
Controlla le prestazioni del nostro modello confrontando y_test e y_pred. Qui stiamo utilizzando il metodo Precision_score del modulo Metrics.
array di ordinamento JavaPython
from sklearn import metrics print('Logistic Regression model accuracy:' metrics.accuracy_score(y_test y_pred))
Produzione:
Precisione del modello di regressione logistica: 0,9666666666666667
Ora vogliamo che il nostro modello faccia previsioni su nuovi dati campione. Quindi l'input del campione può essere semplicemente passato nello stesso modo in cui passiamo qualsiasi matrice di caratteristiche. Qui lo abbiamo usato come campione = [[3 5 4 2] [2 3 5 4]]
Pythonsample = [[3 5 4 2] [2 3 5 4]] preds = log_reg.predict(sample) pred_species = [iris.target_names[p] for p in preds] print('Predictions:' pred_species)
Produzione:
Pronostici: [np.str_('virginica') np.str_('virginica')]
Caratteristiche di Scikit-learn
Scikit-learn viene utilizzato perché rende la creazione di modelli di machine learning semplice ed efficiente. Ecco alcuni motivi importanti:
- Strumenti pronti all'uso : Fornisce funzioni integrate per attività comuni come modelli di training di preelaborazione dei dati e creazione di previsioni. Ciò consente di risparmiare tempo evitando la necessità di codificare gli algoritmi da zero.
- Facile valutazione del modello : Con strumenti come la convalida incrociata e le metriche delle prestazioni aiuta a misurare quanto bene funziona il nostro modello e identificare le aree di miglioramento.
- Ampio supporto per algoritmi : Offre molti algoritmi di apprendimento automatico popolari tra cui la regressione di classificazione e il clustering che ci danno la flessibilità di scegliere il modello giusto per il nostro problema.
- Integrazione fluida : Costruito sulla base di importanti librerie Python come NumPy e SciPy, quindi si adatta al nostro flusso di lavoro di analisi dei dati esistente.
- Interfaccia semplice e coerente : La stessa sintassi semplice funziona su diversi modelli aiuta a semplificare l'apprendimento e il passaggio da un algoritmo all'altro.
- Ottimizzazione del modello resa semplice : Strumenti come la ricerca a griglia ci aiutano a mettere a punto le impostazioni del nostro modello per migliorare la precisione senza ulteriori problemi.
Vantaggi dell'utilizzo di Scikit-learn
- Facile da usare : L'interfaccia coerente e semplice di Scikit-learn lo rende accessibile ai principianti e ideale per gli esperti.
- Risparmio di tempo: Strumenti e algoritmi predefiniti riducono i tempi di sviluppo, consentendoci di concentrarci maggiormente sulla risoluzione dei problemi piuttosto che sulla codifica dei dettagli.
- Migliori prestazioni del modello : Strumenti di ottimizzazione e valutazione di facile utilizzo aiutano a migliorare l'accuratezza e l'affidabilità del modello.
- Flessibile e scalabile : Supporta un'ampia gamma di algoritmi e si integra perfettamente con altre librerie Python aiuta a renderlo adatto a progetti di qualsiasi dimensione.
- Forte sostegno della comunità : Una vasta comunità attiva garantisce aggiornamenti regolari, ampia documentazione e numerose risorse per aiutarci quando rimaniamo bloccati.