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
Instruções do exercício
- Crie um pipeline com
SelectKBest()como etapafteRandomForestClassifier()como etapaclf. - Crie uma grade de parâmetros para ajustar
kemSelectKBest()emax_depthemRandomForestClassifier(). - 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)