Juntándolo todo
Tienes dos preocupaciones sobre tu pipeline en la startup de detección de arritmias:
- La app se entrenó con pacientes de todas las edades, pero la usan sobre todo personas aficionadas al fitness, que suelen ser jóvenes. Sospechas que puede haber un cambio de dominio, así que quieres descartar todos los ejemplos de mayores de 50 años.
- Aún te preocupa el sobreajuste, por lo que quieres ver si hacer que el clasificador random forest sea menos complejo y seleccionar algunas características puede ayudar.
Vas a crear una pipeline con un paso de selección de características SelectKBest() y un RandomForestClassifier, ambos ya importados. También tienes acceso a GridSearchCV(), Pipeline, numpy como np y pickle. Los datos están disponibles como arrh.
Este ejercicio forma parte del curso
Diseño de flujos de trabajo de Machine Learning en Python
Instrucciones del ejercicio
- Crea una pipeline con
SelectKBest()como pasoftyRandomForestClassifier()como pasoclf. - Crea una rejilla de parámetros para ajustar
kenSelectKBest()ymax_depthenRandomForestClassifier(). - Usa
GridSearchCV()para optimizar tu pipeline con esa rejilla y los datos que contengan solo a quienes tienen menos de 50 años. - Guarda la pipeline optimizada en un pickle para producción.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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)