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:
- eseguire il metodo fit di SimpleImputer passandogli in input x1
- trasformare x1 con i dati risultanti dall’addestramento del punto 1
- eseguire il metodo fit di StandardScaler sull’output del punto precedente
- trasformare i dati del punto 2 in base al fit del punto 3
- 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)

È 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.
Continua a imparare
- Segui la lezione successiva sulle cross validation
- Torna all’indice delle lezioni
- Visita la pagina del mio corso online su Pandas, Python e Machine Learning