Bagaimana saya bisa menyesuaikan tipe data kategorikal untuk klasifikasi hutan acak?

11

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.

tangkapan layar

tangkapan layar

tangkapan layar

IS2057
sumber
Anda tidak perlu melakukan one_hot jika Anda menggunakan model pohon, karena itu tidak mengukur jarak seperti metode lainnya.
Jun Yang
1
@JunYang, scikit-learn saat ini membutuhkan kategori pengkodean.
Ben Reiniger

Jawaban:

11

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.

David Marx
sumber
0

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.

IS2057
sumber