Alles samenbrengen
Je hebt twee zorgen over je pipeline bij de startup voor hartritmestoornis-detectie:
- De app is getraind op patiënten van alle leeftijden, maar wordt vooral gebruikt door fitnessgebruikers die meestal jong zijn. Je vermoedt dat dit een geval van domeinverschuiving is en wilt daarom alle voorbeelden boven de 50 jaar negeren.
- Je bent nog steeds bezorgd over overfitting, dus je wilt kijken of het minder complex maken van de random forest-classifier en het selecteren van enkele features daarbij kan helpen.
Je maakt een pipeline met een featureselectiestap SelectKBest() en een RandomForestClassifier, die beide al zijn geïmporteerd. Je hebt ook toegang tot GridSearchCV(), Pipeline, numpy als np en pickle. De data is beschikbaar als arrh.
Deze oefening maakt deel uit van de cursus
Machine Learning-workflows ontwerpen in Python
Oefeninstructies
- Maak een pipeline met
SelectKBest()als stapftenRandomForestClassifier()als stapclf. - Maak een parameterrooster om
kinSelectKBest()enmax_depthinRandomForestClassifier()af te stemmen. - Gebruik
GridSearchCV()om je pipeline te optimaliseren tegen dat rooster en data die alleen personen onder de 50 jaar bevat. - Sla de geoptimaliseerde pipeline op naar een pickle voor productie.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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)