Come creare una pipeline per il Machine Learning con scikit-learn

Creazione di pipeline per gli algoritmi di Machine Learning

In questo articolo studieremo come creare un unico processo (pipeline) che esegua tutte le operazioni necessarie per implementare un algoritmo di Machine Learning. Se nelle lezioni precedenti abbiamo eseguito i vari step uno alla volta, ora vogliamo configurare ed eseguire un’unica pipeline che abbia al suo interno tutto il necessario.

Creiamo la nostra prima pipeline con scikit-learn

Eseguiamo preliminarmente le usuali operazioni di import e di divisione dei dati in training e test, come già spiegato nelle lezioni precedenti

import pandas as pd
f = "https://raw.githubusercontent.com/iantomasinicola/Machine-Learning-con-SQL/main/IrisDataset.csv"
iris = pd.read_csv(filepath_or_buffer = f, 
                             sep = ";", 
                             skiprows = 4)
X=iris.drop(["class","Rownumber"], axis=1)
y=iris["class"]
from sklearn.model_selection import train_test_split
x1,x2,y1,y2 = train_test_split(X, 
                                               y, 
                                               test_size = 0.3, 
                                               random_state = 1)

A questo punto creiamo una pipeline che contenga le operazioni di

  • valorizzazione dei null;
  • standardizzazione delle variabili;
  • addestramento di un algoritmo di regressione logistica.

Importiamo allora i moduli necessari dalla libreria scikit-learn di Python

from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

E creiamo la nostra prima pipeline!

my_first_pipeline = Pipeline ([("vn", SimpleImputer(strategy="mean")),
                                                ("sc", StandardScaler()),
                                                ("lr", LogisticRegression(random_state = 0  ))
                                                ])

Eseguiamo il metodo fit della pipeline

A questo punto possiamo eseguire il metodo fit associato alla nostra pipeline

my_first_pipeline.fit(x1,y1)

Otterremo in un solo colpo l’esecuzione di queste cinque operazioni:

  1. eseguire il metodo fit di SimpleImputer passandogli in input x1
  2. trasformare x1 con i dati risultanti dall’addestramento del punto 1
  3. eseguire il metodo fit di StandardScaler sull’output del punto precedente
  4. trasformare i dati del punto 2 in base al fit del punto 3
  5. eseguire il metodo fit dell’algoritmo di regressione logistica sull’output del punto 4

Ecco l’immagine esplicativa mostrata in output da Jupyter per l’istruzione my_first_pipeline.fit(x1,y1)

Output del metodo fit di una pipeline create su scikit-learn

È importante osservare che dopo l’esecuzione della pipeline i dati all’interno di x1 non saranno modificati, di conseguenza potrò continuare ad utilizzare le stesse variabili per rieseguire questa o delle nuove pipeline.

Eseguiamo i metodi predict e score della pipeline

A questo punto potremo ottenere le predizioni sui dati di test e l’accuratezza. In particolare, per ottenere le predizioni scriveremo

my_first_pipeline.predict(x2)

mentre per il calcolo dell’accuratezza

my_first_pipeline.score(x2,y2)

Il risultato ovviamente sarà uguale a quello ottenuto lanciando i vari metodi singolarmente, a patto ovviamente di aver configurato tutto nello stesso modo, compresi i valori del parametro random_state.

corso di analisi dei dati
Visita la mia piattaforma didattica realizzata con l’obiettivo di creare un percorso unico e completo nella formazione per Data Analyst.

Continua a imparare

Torna in alto
Torna su