Saya perlu menemukan akurasi dataset pelatihan dengan menerapkan Algoritma Hutan Acak. Tapi tipe set data saya adalah kategoris dan numerik. Ketika saya mencoba menyesuaikan data-data itu, saya mendapatkan kesalahan.
'Input berisi NaN, infinity atau nilai yang terlalu besar untuk dtype (' float32 ')'.
Mungkin masalahnya adalah untuk tipe data objek. Bagaimana saya bisa menyesuaikan data kategorikal tanpa mengubah untuk menerapkan RF?
Ini kode saya.
python
data-mining
random-forest
IS2057
sumber
sumber
Jawaban:
Anda perlu mengubah fitur kategorikal menjadi atribut numerik. Pendekatan umum adalah dengan menggunakan pengkodean satu-panas, tapi itu jelas bukan satu-satunya pilihan. Jika Anda memiliki variabel dengan jumlah level kategori yang tinggi, Anda harus mempertimbangkan menggabungkan level atau menggunakan trik hashing. Sklearn dilengkapi dengan beberapa pendekatan (lihat bagian "lihat juga"): One Hot Encoder dan Hashing Trick
Jika Anda tidak berkomitmen untuk melakukan sklearn, implementasi hutan acak h2o menangani fitur kategorikal secara langsung.
sumber
Ada beberapa masalah untuk mendapatkan jenis kesalahan ini sejauh yang saya tahu. Yang pertama adalah, dalam dataset saya ada ruang ekstra yang mengapa menunjukkan kesalahan, 'Input Berisi nilai NAN; Kedua, python tidak dapat bekerja dengan semua jenis nilai objek. Kita perlu mengubah nilai objek ini menjadi nilai numerik. Untuk mengkonversi objek ke numerik terdapat dua jenis proses pengkodean: Label encoder dan One hot encoder. Di mana label encoder mengenkode nilai objek antara 0 hingga n_classes-1 dan One hot encoder nilai encode antara 0 dan 1. Dalam pekerjaan saya, sebelum memasang data saya untuk semua jenis metode klasifikasi, saya menggunakan label encoder untuk mengonversi nilai dan sebelum mengonversi saya memastikan bahwa tidak ada ruang kosong di kumpulan data saya.
sumber