ComeçarComece de graça

Transformers com funções personalizadas em pipelines

Em determinado momento, informaram que os sensores podem ter um desempenho ruim para pessoas obesas. Antes, você lidou com isso usando pesos, mas agora acha que essa informação também pode ser útil para engenharia de atributos. Por isso, você decide substituir o peso registrado de uma pessoa por um indicador de obesidade. Você quer fazer isso usando pipelines. Você tem numpy disponível como np, RandomForestClassifier(), FunctionTransformer() e GridSearchCV().

Este exercício faz parte do curso

Projetando Workflows de Machine Learning em Python

Ver curso

Instruções do exercício

  • Defina um extrator de atributos personalizado. Ele deve retornar uma cópia modificada da sua entrada.
  • Substitua cada valor da primeira coluna por um indicador de se esse valor está acima de um limiar dado por um múltiplo da média da coluna.
  • Converta o extrator de atributos acima em um transformer e coloque-o em um pipeline junto com um classificador random forest.
  • Use grid search com validação cruzada para testar os valores 1, 2 e 3 para a constante de multiplicação multiplier no seu extrator de atributos.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# 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)
Editar e executar o código