Sejauh ini, saya telah menghapus variabel linier sebagai bagian dari proses persiapan data dengan melihat tabel korelasi dan menghilangkan variabel yang berada di atas ambang batas tertentu. Apakah ada cara yang lebih diterima untuk melakukan ini? Selain itu, saya menyadari bahwa hanya melihat korelasi antara 2 variabel pada suatu waktu tidak ideal, pengukuran seperti VIF memperhitungkan potensi korelasi antar beberapa variabel. Bagaimana orang pergi secara sistematis memilih kombinasi variabel yang tidak menunjukkan multikolinieritas?
Saya memiliki data saya dalam bingkai data panda dan saya menggunakan model sklearn.
python
multicollinearity
scikit-learn
oranye1
sumber
sumber
Jawaban:
Terima kasih SpanishBoy - Ini adalah kode yang bagus. @ilanman: Ini memeriksa nilai VIF dan kemudian menjatuhkan variabel yang VIF lebih dari 5. Dengan "kinerja", saya pikir maksudnya run time. Kode di atas membutuhkan waktu sekitar 3 jam untuk berjalan di sekitar 300 variabel, 5.000 baris.
Omong-omong, saya telah memodifikasinya untuk menghapus beberapa loop tambahan. Juga, saya membuatnya sedikit lebih bersih dan mengembalikan bingkai data dengan variabel yang dikurangi. Versi ini mengurangi waktu menjalankan saya hingga setengah! Kode saya di bawah- Semoga membantu.
sumber
usdm
metode paketvifstep
) untuk VIF dan run time sangat keren. Seperti yang saya katakan sebelumnya, varian di atas dan Anda (dioptimalkan setengah) sangat lambat dibandingkan dengan R. Ada ide lain bagaimana mengoptimalkan belum?Anda dapat mencoba menggunakan kode di bawah ini:
Itu berhasil, tapi saya tidak suka kinerja pendekatan itu
sumber
Saya mencoba jawaban SpanishBoy dan menemukan kesalahan serval ketika menjalankannya untuk data-frame. Berikut adalah solusi yang di-debug.
Saya juga tidak memiliki masalah dengan kinerja, tetapi belum mengujinya secara ekstensif.
sumber
RuntimeWarning: divide by zero encountered in double_scalars