パイプライン.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}")
これはMagicMockに__format__
メソッドを使用しますが、これは定義されていないと思います。
ロギングの呼び出し方法を変更すれば、醜いログを回避できるかもしれませんが、コードが複雑になってほとんどメリットがないのではないかと心配しています。
どう思いますか?
ああ、なるほど、それは理にかなっています。 そのメッセージがどこから来ているのかわかりませんでした。 AutoMLの動作に悪影響を与えないように見えるので、動作は問題ないと思います。 助けてくれてありがとう、これを締めくくります!