Saat ini saya sedang bekerja dengan Python dan Scikit belajar untuk keperluan klasifikasi, dan melakukan beberapa pembacaan di sekitar GridSearch. Saya pikir ini adalah cara yang bagus untuk mengoptimalkan parameter estimator saya untuk mendapatkan hasil terbaik.
Metodologi saya adalah ini:
- Bagi data saya menjadi pelatihan / tes.
- Gunakan GridSearch dengan validasi 5Fold Cross untuk melatih dan menguji estimator saya (Hutan Acak, Peningkatan Gradien, antara lain) untuk mendapatkan estimator terbaik dengan kombinasi optimal parameter hiper.
- Saya kemudian menghitung metrik pada masing-masing estimator saya seperti Precision, Recall, FMeasure dan Matthews Correlation Coefficient, menggunakan set pengujian saya untuk memprediksi klasifikasi dan membandingkannya dengan label kelas aktual.
Pada tahap ini saya melihat perilaku aneh dan saya tidak yakin bagaimana untuk melanjutkan. Apakah saya mengambil .best_estimator_ dari GridSearch dan menggunakan ini sebagai output 'optimal' dari pencarian grid , dan melakukan prediksi menggunakan estimator ini? Jika saya melakukan ini, saya menemukan bahwa metrik tahap 3 biasanya jauh lebih rendah daripada jika saya hanya melatih semua data pelatihan dan menguji pada set tes. Atau, apakah saya hanya mengambil objek GridSearchCV keluaran sebagai penaksir baru ? Jika saya melakukan ini, saya mendapatkan skor yang lebih baik untuk metrik tahap 3 saya, tetapi rasanya aneh menggunakan objek GridSearchCV alih-alih classifier yang dimaksud (Misalnya Hutan acak) ...
EDIT: Jadi pertanyaan saya adalah apa perbedaan antara objek GridSearchCV yang dikembalikan dan atribut .best_estimator_? Yang mana yang harus saya gunakan untuk menghitung metrik lebih lanjut? Dapatkah saya menggunakan output ini seperti classifier biasa (misalnya menggunakan predict), atau bagaimana saya harus menggunakannya?
refit=False
makaclf.fit
tidak akan dilakukan dengan classifier terbaik?