Evalml: Pipa: kesalahan standar saat memanggil transformasi/prediksi sebelum fit

Dibuat pada 28 Jul 2020  ·  6Komentar  ·  Sumber: alteryx/evalml

Di #969 (edisi #851) kami menambahkan kesalahan universal untuk memprediksi/mengubah sebelum memasang komponen menggunakan metaclass untuk membungkus prediksi/mengubah untuk memeriksa apakah komponen telah dipasang. Kita harus menambahkan perlakuan yang sama untuk pipeline sehingga apa pun yang diwarisi dari PipelineBase menerima validasi yang sama.

enhancement

Komentar yang paling membantu

@angela97lin tl;dr: ok, kedengarannya bagus!

Kami menggunakan strategi metaclass untuk memeriksa hal-hal ini di komponen karena komponen kami dimaksudkan untuk diperluas dengan metode kustom fit , transform dan predict , dan satu-satunya cara yang pasti untuk memasukkan kode validasi kami ke dalam definisi tersebut adalah dengan menyuntikkannya pada waktu definisi kelas melalui metaclass.

Kami sekarang berada di tempat di mana kelas pipa kami dimaksudkan sebagai templat untuk membungkus grafik komponen, daripada secara langsung memegang implementasi kustom fit / predict , meskipun itu masih didukung dan harus tetap didukung untuk saat ini. Saya pikir itu bagus. Implikasi dari ini adalah strategi metaclass tidak diperlukan untuk memenuhi tujuan masalah ini, memunculkan pesan kesalahan yang jelas ketika pipeline predict dipanggil sebelum fit .

Namun, mengimplementasikan metaclass pipeline sekarang adalah investasi yang bagus untuk dilakukan. Kami memiliki setidaknya beberapa masalah validasi waktu definisi kelas pelacakan yang luar biasa dari berbagai bidang pada jalur pipa dan komponen. Dan metaclass hampir pasti merupakan pilihan yang tepat untuk menyelesaikannya. Jadi, kecepatan penuh di depan! ️😁

Semua 6 komentar

Ya. Pikiran saya adalah bahwa kita harus menggeneralisasi pola metaclass yang ditambahkan @jeremyliweishih untuk komponen, dan kemudian menggunakannya pada komponen dan saluran pipa.

JW: Apakah kami tidak mendapatkan ini secara "gratis" karena pipa kami terbuat dari komponen? Ketika kita memanggil pipeline.predict, apakah itu tidak mengarah pada kesalahan universal komponen?

@ angela97lin Anda benar! Lihat tangkapan layar di bawah ini.

Pertanyaannya adalah, apakah kita setuju dengan perilaku di bawah ini, atau apakah kita ingin pelacakan tumpukan lebih langsung? Saat ini, jejak tumpukan berasal dari komponen pertama. Idealnya, itu akan datang dari pipa itu sendiri.

Cara cepat untuk membuat jejak tumpukan lebih jelas adalah dengan mengecualikan ComponentNotYetFittedError dalam metode pipa dan kemudian membuang PipelineNotYetFittedError . Cara lain adalah dengan mendaur ulang strategi metaclass/decorator yang kami ambil untuk komponen dan menerapkannya ke pipeline.

Screen Shot 2020-08-12 at 10 43 24 AM

@dsherry Terima kasih telah menindaklanjuti ini! Saya akan menangani masalah ini, dan mencoba mengatasinya dengan menangkap dan melempar kesalahan PipelineNotYetFittedError terlebih dahulu, karena saya pikir tidak perlu terlalu rumit jika itu sudah cukup. Jika tidak, saya akan mencoba pendekatan metaclass :)

Hm ya, setelah benar-benar mengimplementasikannya, lebih jelas bagi saya bahwa pendekatan metaclass mungkin lebih baik karena kita tidak perlu membuat kesalahan serupa di setiap metode yang kita pedulikan, jadi akan mengambil rute itu saja.

@angela97lin tl;dr: ok, kedengarannya bagus!

Kami menggunakan strategi metaclass untuk memeriksa hal-hal ini di komponen karena komponen kami dimaksudkan untuk diperluas dengan metode kustom fit , transform dan predict , dan satu-satunya cara yang pasti untuk memasukkan kode validasi kami ke dalam definisi tersebut adalah dengan menyuntikkannya pada waktu definisi kelas melalui metaclass.

Kami sekarang berada di tempat di mana kelas pipa kami dimaksudkan sebagai templat untuk membungkus grafik komponen, daripada secara langsung memegang implementasi kustom fit / predict , meskipun itu masih didukung dan harus tetap didukung untuk saat ini. Saya pikir itu bagus. Implikasi dari ini adalah strategi metaclass tidak diperlukan untuk memenuhi tujuan masalah ini, memunculkan pesan kesalahan yang jelas ketika pipeline predict dipanggil sebelum fit .

Namun, mengimplementasikan metaclass pipeline sekarang adalah investasi yang bagus untuk dilakukan. Kami memiliki setidaknya beberapa masalah validasi waktu definisi kelas pelacakan yang luar biasa dari berbagai bidang pada jalur pipa dan komponen. Dan metaclass hampir pasti merupakan pilihan yang tepat untuk menyelesaikannya. Jadi, kecepatan penuh di depan! ️😁

Apakah halaman ini membantu?
0 / 5 - 0 peringkat