При исправлении конвейеров методы .score()
и .fit()
вызывают следующие сообщения в тестах AutoMLSearch:
Репро
касса главная
pytest -s evalml/tests/automl_tests/test_automl.py::test_automl_rerun
@ bchen1116 Если вы добавите return_value
в макет счета, он должен исчезнуть:
@patch('evalml.pipelines.BinaryClassificationPipeline.score', return_value={"Log Loss Binary": 0.2})
@freddyaboulton , это то, что нам нужно добавить ко всем .score()
? И будет ли это лучшим решением для этой ошибки?
Полагаю, я не решаюсь называть это ошибкой, потому что она не меняет поведение automl таким образом, чтобы тест прошел, когда он должен завершиться неудачно, или наоборот.
Основная проблема заключается в том, что если вы не предоставите return_value, возвращается MagicMock
. В конце концов, мы переходим к записи счета с помощью f-строки:
logger.info(f"Best pipeline {self.objective.name}: {best_pipeline['score']:3f}")
Которая использует метод __format__
для MagicMock, который, я думаю, не определен.
Возможно, если мы изменим способ вызова журнала, мы сможем избежать уродливого журнала, но я боюсь, что это усложнит код с небольшой пользой.
Как вы думаете?
Ах, я понимаю, в этом есть смысл. Я не был уверен, откуда пришло это сообщение. Я думаю, что с таким поведением все в порядке, поскольку оно не наносит ущерба поведению AutoML. Спасибо за помощь, закрою!