Totul laolaltă
Ai două îngrijorări legate de pipeline-ul tău la startup-ul de detectare a aritmiei:
- Aplicația a fost antrenată pe pacienți de toate vârstele, însă este folosită în principal de utilizatori de fitness, care tind să fie tineri. Suspectezi că ar putea fi un caz de schimbare de domeniu (domain shift) și, prin urmare, vrei să ignori toate exemplele de la pacienți cu vârsta peste 50 de ani.
- Ești în continuare îngrijorat de supraajustare (overfitting), așa că vrei să verifici dacă reducerea complexității clasificatorului de tip pădure aleatorie și selectarea unor caracteristici ar putea ajuta.
Vei crea un pipeline cu un pas de selecție a caracteristicilor SelectKBest() și un RandomForestClassifier, ambele deja importate. Ai acces și la GridSearchCV(), Pipeline, numpy ca np și pickle. Datele sunt disponibile ca arrh.
Acest exercițiu face parte din cursul
Proiectarea fluxurilor de lucru pentru Machine Learning în Python
Instrucțiuni pentru exercițiu
- Creează un pipeline cu
SelectKBest()ca pasftșiRandomForestClassifier()ca pasclf. - Creează o grilă de parametri pentru a ajusta
kînSelectKBest()șimax_depthînRandomForestClassifier(). - Folosește
GridSearchCV()pentru a optimiza pipeline-ul față de acea grilă și față de datele care conțin doar pacienți cu vârsta sub 50 de ani. - Salvează pipeline-ul optimizat într-un fișier pickle pentru utilizare în producție.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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)