Evalml: AutoMLSearch get_pipeline selalu mengembalikan pipeline dengan nama yang sama

Dibuat pada 2 Mar 2021  ·  3Komentar  ·  Sumber: alteryx/evalml

Repro:

from evalml.automl import AutoMLSearch
from evalml.demos import load_breast_cancer

X, y = load_breast_cancer()
automl = AutoMLSearch(X, y, problem_type="binary", max_batches=1)
automl.search()

pipelines = [automl.get_pipeline(i) for i in range(3)]
assert [p.name for p in pipelines] == ['LightGBM Classifier w/ Imputer', 'LightGBM Classifier w/ Imputer', 'LightGBM Classifier w/ Imputer']

Pipeline tidak harus memiliki nama yang sama. Penduganya berbeda:

[p.estimator.name for p in pipelines]
['Baseline Classifier', 'Decision Tree Classifier', 'LightGBM Classifier']
bug needs design

Komentar yang paling membantu

Saya percaya ini berasal dari #1400 . Saya pikir kita berada dalam acar (pun intended) - desain pipa kita bergantung pada pengaturan atribut kelas untuk mendefinisikan pipa, yang kondusif untuk memiliki kelas pipa yang dihasilkan secara dinamis seperti yang kita lakukan dalam pencarian. Masalahnya adalah saluran pipa ini tidak dapat "diekspor" keluar dari AutoMLSearch.

Mungkin ada solusi mudah yang saya abaikan, tetapi saya pikir ini akan memerlukan diskusi desain yang mendalam jika kita ingin memperbaikinya dan menjaga saluran pipa automl kita tetap bisa.

Semua 3 komentar

Bukan hanya nama; hyperparameters (dan saya menduga nilai lain yang disimpan di kelas) juga diperbarui. Ini karena kita menggunakan kelas GeneratedPipelineBinary dan memperbarui variabel kelasnya. Karena setiap pipeline adalah GeneratedPipelineBinary , itu akan memperbaruinya untuk seluruh kelas dan memengaruhi semua instance.

Saya percaya ini berasal dari #1400 . Saya pikir kita berada dalam acar (pun intended) - desain pipa kita bergantung pada pengaturan atribut kelas untuk mendefinisikan pipa, yang kondusif untuk memiliki kelas pipa yang dihasilkan secara dinamis seperti yang kita lakukan dalam pencarian. Masalahnya adalah saluran pipa ini tidak dapat "diekspor" keluar dari AutoMLSearch.

Mungkin ada solusi mudah yang saya abaikan, tetapi saya pikir ini akan memerlukan diskusi desain yang mendalam jika kita ingin memperbaikinya dan menjaga saluran pipa automl kita tetap bisa.

Rencana
Jangka pendek: masalah ini melacak pengembalian perubahan dari #1400 untuk menyelesaikan perilaku buggy. Pipeline kami tidak akan mendukung python pickle tetapi masih dapat dibuat serial menggunakan fungsi save / load yang ada yang menggunakan cloudpickle .

Jangka panjang: setelah pengembalian, #1956 melacak mencari tahu bagaimana kita harus mendukung penyimpanan pipa evalml menggunakan python pickle .

Apakah halaman ini membantu?
0 / 5 - 0 peringkat