CommencerCommencer gratuitement

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

Afficher le cours

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 multiplier dans 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)
Modifier et exécuter le code