ComeçarComece de graça

Juntando tudo

Você tem duas preocupações sobre seu pipeline na startup de detecção de arritmia:

  • O app foi treinado com pacientes de todas as idades, mas está sendo usado principalmente por pessoas focadas em fitness, que tendem a ser jovens. Você suspeita de um caso de mudança de domínio (domain shift) e, por isso, quer desconsiderar todos os exemplos acima de 50 anos.
  • Você ainda está preocupado com overfitting, então quer verificar se reduzir a complexidade do classificador random forest e selecionar algumas features pode ajudar.

Você vai criar um pipeline com uma etapa de seleção de features SelectKBest() e um RandomForestClassifier, ambos já importados. Você também tem acesso a GridSearchCV(), Pipeline, numpy como np e pickle. Os dados estão disponíveis como arrh.

Este exercício faz parte do curso

Projetando Workflows de Machine Learning em Python

Ver curso

Instruções do exercício

  • Crie um pipeline com SelectKBest() como etapa ft e RandomForestClassifier() como etapa clf.
  • Crie uma grade de parâmetros para ajustar k em SelectKBest() e max_depth em RandomForestClassifier().
  • Use GridSearchCV() para otimizar seu pipeline com essa grade e com os dados contendo apenas pessoas com menos de 50 anos.
  • Salve o pipeline otimizado em um arquivo pickle para produção.

Exercício interativo prático

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

# Create a pipeline 
pipe = Pipeline([
  ('ft', ____), ('clf', ____(random_state=2))])

# Create a parameter grid
grid = {'ft__k':[5, 10], '____':[10, 20]}

# Execute grid search CV on a dataset containing under 50s
grid_search = ____(pipe, param_grid=grid)
arrh = arrh.____[____(arrh['age'] < 50)]
____.____(arrh.drop('class', 1), arrh['class'])

# Push the fitted pipeline to production
with ____('pipe.pkl', ____) as file:
    pickle.dump(____, file)
Editar e executar o código