Transformateurs de fonctions personnalisées dans des pipelines
On vous a signalé que les capteurs pourraient mal fonctionner pour les personnes obèses. Auparavant, vous aviez géré cela avec des pondérations, mais vous pensez désormais que cette information peut aussi être utile pour le feature engineering. Vous décidez donc de remplacer le poids enregistré d’un individu par un indicateur de son obésité. Vous souhaitez le faire avec des pipelines. Vous avez numpy disponible sous np, RandomForestClassifier(), FunctionTransformer() et GridSearchCV().
Cet exercice fait partie du cours
Concevoir des workflows de Machine Learning en Python
Instructions
- Définissez un extracteur de caractéristiques personnalisé. Il s’agit d’une fonction qui renverra une copie modifiée de son entrée.
- Remplacez chaque valeur de la première colonne par un indicateur précisant si cette valeur est au‑dessus d’un seuil donné par un multiple de la moyenne de la colonne.
- Convertissez l’extracteur de caractéristiques ci‑dessus en transformateur et placez‑le dans une pipeline avec un classificateur random forest.
- Utilisez une recherche par grille avec validation croisée pour essayer les valeurs 1, 2 et 3 pour la constante de multiplication
multiplierdans votre extracteur de caractéristiques.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# Define a feature extractor to flag very large values
def more_than_average(X, multiplier=1.0):
Z = ____
Z[:,1] = ____ > multiplier*np.mean(Z[:,1])
return Z
# Convert your function so that it can be used in a pipeline
pipe = Pipeline([
('ft', ____(____)),
('clf', RandomForestClassifier(random_state=2))])
# Optimize the parameter multiplier using GridSearchCV
params = ____
grid_search = GridSearchCV(pipe, param_grid=params)