Menambal metode .score()
dan .fit()
pipeline menyebabkan pesan berikut dalam pengujian AutoMLSearch:
Repro
checkout utama
pytest -s evalml/tests/automl_tests/test_automl.py::test_automl_rerun
@bchen1116 Jika Anda menambahkan return_value
ke skor tiruan itu akan hilang:
@patch('evalml.pipelines.BinaryClassificationPipeline.score', return_value={"Log Loss Binary": 0.2})
@freddyaboulton apakah ini sesuatu yang perlu kita tambahkan ke semua .score()
? Dan apakah ini akan menjadi solusi terbaik untuk bug ini?
Saya kira saya ragu untuk menyebut ini bug karena tidak mengubah perilaku automl sedemikian rupa sehingga menyebabkan tes lulus ketika seharusnya gagal atau sebaliknya.
Masalah mendasarnya adalah jika Anda tidak memberikan nilai_pengembalian, MagicMock
akan dikembalikan. Akhirnya kita masuk ke log skor dengan f-string:
logger.info(f"Best pipeline {self.objective.name}: {best_pipeline['score']:3f}")
Yang menggunakan metode __format__
untuk MagicMock, yang menurut saya tidak ditentukan.
Mungkin jika kita mengubah cara logging dipanggil, kita bisa menghindari log jelek tapi saya khawatir itu akan memperumit kode untuk sedikit manfaat.
Bagaimana menurut anda?
Ah aku mengerti, itu masuk akal. Aku tidak yakin dari mana pesan itu berasal. Saya pikir perilaku itu baik-baik saja, karena tampaknya tidak merusak perilaku AutoML. Terima kasih atas bantuannya, saya akan menutup ini!