Mettre toutes les pièces ensemble
Vous avez deux préoccupations au sujet de votre pipeline dans la start-up de détection d’arythmies :
- L’application a été entraînée sur des patient·e·s de tous âges, mais elle est principalement utilisée par des personnes adeptes de fitness, qui ont tendance à être jeunes. Vous soupçonnez un cas de « domain shift » et souhaitez donc écarter tous les exemples de plus de 50 ans.
- Vous craignez toujours l’overfitting, et vous voulez vérifier si rendre le classifieur random forest moins complexe et sélectionner certaines caractéristiques peut aider.
Vous allez créer un pipeline avec une étape de sélection de caractéristiques SelectKBest() et un RandomForestClassifier, tous deux déjà importés. Vous avez également accès à GridSearchCV(), Pipeline, numpy sous le nom np et pickle. Les données sont disponibles sous arrh.
Cet exercice fait partie du cours
Concevoir des workflows de Machine Learning en Python
Instructions
- Créez un pipeline avec
SelectKBest()sous le nom d’étapeftetRandomForestClassifier()sous le nom d’étapeclf. - Créez une grille de paramètres pour ajuster
kdansSelectKBest()etmax_depthdansRandomForestClassifier(). - Utilisez
GridSearchCV()pour optimiser votre pipeline selon cette grille sur les données contenant uniquement les personnes de moins de 50 ans. - Enregistrez le pipeline optimisé dans un fichier pickle pour la production.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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)