Mettiamo tutto insieme
Hai due preoccupazioni sulla tua pipeline nella startup per il rilevamento dell’aritmia:
- L’app è stata addestrata su pazienti di tutte le età, ma viene usata soprattutto da utenti fitness che tendono a essere giovani. Sospetti un possibile domain shift e vuoi quindi ignorare tutti gli esempi sopra i 50 anni.
- Sei ancora preoccupato per l’overfitting, quindi vuoi verificare se rendere il classificatore random forest meno complesso e selezionare alcune feature possa aiutare.
Creerai una pipeline con uno step di selezione delle feature SelectKBest() e un RandomForestClassifier, entrambi già importati. Hai anche accesso a GridSearchCV(), Pipeline, numpy come np e pickle. I dati sono disponibili come arrh.
Questo esercizio fa parte del corso
Progettare workflow di Machine Learning in Python
Istruzioni dell'esercizio
- Crea una pipeline con
SelectKBest()come stepfteRandomForestClassifier()come stepclf. - Crea una griglia di parametri per ottimizzare
kinSelectKBest()emax_depthinRandomForestClassifier(). - Usa
GridSearchCV()per ottimizzare la pipeline rispetto a quella griglia e ai dati contenenti solo persone sotto i 50 anni. - Salva la pipeline ottimizzata in un file pickle per la produzione.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Create a pipeline
pipe = Pipeline([
('ft', ____), ('clf', ____(random_state=2))])
# Create a parameter grid
grid = {'ft__k':[5, 10], '____':[10, 20]}
# Execute grid search CV on a dataset containing under 50s
grid_search = ____(pipe, param_grid=grid)
arrh = arrh.____[____(arrh['age'] < 50)]
____.____(arrh.drop('class', 1), arrh['class'])
# Push the fitted pipeline to production
with ____('pipe.pkl', ____) as file:
pickle.dump(____, file)