Transformateurs de fonctions personnalisées dans les pipelines
À un moment, on vous a indiqué que les capteurs pourraient donner de mauvais résultats pour les personnes obèses. Vous aviez déjà géré cela à l'aide de pondérations, mais vous pensez maintenant que cette information pourrait aussi être utile pour l'ingénierie des caractéristiques. Vous décidez donc de remplacer le poids mesuré d'une personne par un indicateur signalant si elle est obèse. Vous voulez le faire à l'aide de pipelines. Vous avez numpy disponible sous np, RandomForestClassifier(), FunctionTransformer() et GridSearchCV().
Cette activité fait partie du cours
Concevoir des flux de travail Machine Learning en Python
Instructions de l’exercice
- Définissez un extracteur de caractéristiques personnalisé. Il s'agit d'une fonction qui retournera une copie modifiée de son entrée.
- Remplacez chaque valeur de la première colonne par un indicateur précisant si cette valeur dépasse 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 un 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 ce code d’exemple.
# 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)