IniziaInizia gratis

Transformer personalizzati basati su funzioni nelle pipeline

A un certo punto ti è stato detto che i sensori potrebbero funzionare peggio per le persone obese. In passato avevi gestito la cosa usando dei pesi, ma ora pensi che questa informazione possa essere utile anche per il feature engineering, quindi decidi di sostituire il peso registrato di un individuo con un indicatore che segnali se è obeso. Vuoi farlo usando le pipeline. Hai numpy disponibile come np, RandomForestClassifier(), FunctionTransformer() e GridSearchCV().

Questo esercizio fa parte del corso

Progettare workflow di Machine Learning in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Definisci un estrattore di feature personalizzato: una funzione che restituisca una copia modificata del suo input.
  • Sostituisci ciascun valore della prima colonna con un indicatore che valga 1 se il valore supera una soglia data da un multiplo della media della colonna, altrimenti 0.
  • Converti l’estrattore di feature in un transformer e inseriscilo in una pipeline insieme a un classificatore Random Forest.
  • Usa una grid search con CV per provare i valori 1, 2 e 3 per la costante di moltiplicazione multiplier nel tuo estrattore di feature.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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)
Modifica ed esegui il codice