Os métodos de patching de pipelines .score()
e .fit()
estão causando as seguintes mensagens nos testes do AutoMLSearch:
Repro
checkout main
pytest -s evalml/tests/automl_tests/test_automl.py::test_automl_rerun
@ bchen1116 Se você adicionar return_value
à simulação de pontuação, ele deve desaparecer:
@patch('evalml.pipelines.BinaryClassificationPipeline.score', return_value={"Log Loss Binary": 0.2})
@freddyaboulton isso é algo que precisamos adicionar a todas as simulações de .score()
? E essa seria a melhor solução para esse bug?
Acho que hesito em chamar isso de bug porque não altera o comportamento do automl de forma que faça com que o teste seja aprovado quando deveria falhar ou vice-versa.
O problema subjacente é que, se você não fornecer um return_value, um MagicMock
será retornado. Eventualmente, vamos registrar a pontuação com uma string F:
logger.info(f"Best pipeline {self.objective.name}: {best_pipeline['score']:3f}")
Que usa o método __format__
para o MagicMock, que eu acho que não está definido.
Talvez se mudarmos a forma como o log é chamado, possamos evitar o log feio, mas eu me preocupo que isso complicaria o código e traria poucos benefícios.
O que você acha?
Ah, entendo, isso faz sentido. Eu não tinha certeza de onde essa mensagem estava vindo. Acho que o comportamento está bom, pois não parece ser prejudicial ao comportamento do AutoML. Obrigado pela ajuda, vou encerrar isso!