IniziaInizia gratis

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

Visualizza il corso

Istruzioni dell'esercizio

  • Crea una pipeline con SelectKBest() come step ft e RandomForestClassifier() come step clf.
  • Crea una griglia di parametri per ottimizzare k in SelectKBest() e max_depth in RandomForestClassifier().
  • 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)
Modifica ed esegui il codice