String dan faktor
Seperti yang Anda ketahui, Spark memerlukan data numerik untuk pemodelan. Sejauh ini hal tersebut tidak menjadi masalah; bahkan kolom boolean pun dapat dengan mudah dikonversi menjadi bilangan bulat tanpa kesulitan. Namun, Anda juga akan menggunakan maskapai dan tujuan pesawat sebagai fitur dalam model Anda. Keduanya dikodekan sebagai string dan tidak ada cara yang jelas untuk mengonversinya ke tipe data numerik.
Untungnya, PySpark memiliki fungsi bawaan untuk menangani hal ini di submodul pyspark.ml.features. Anda dapat membuat yang disebut 'vektor one-hot' untuk merepresentasikan maskapai dan tujuan setiap penerbangan. Vektor one-hot adalah cara merepresentasikan fitur kategorikal di mana setiap pengamatan memiliki sebuah vektor yang seluruh elemennya bernilai nol kecuali paling banyak satu elemen, yang bernilai satu (1).
Setiap elemen dalam vektor berkorespondensi dengan suatu level dari fitur tersebut, sehingga Anda dapat mengetahui level yang benar dengan melihat elemen vektor mana yang bernilai satu (1).
Langkah pertama untuk mengodekan fitur kategorikal Anda adalah membuat StringIndexer. Anggota kelas ini adalah Estimator yang menerima DataFrame dengan sebuah kolom string dan memetakan setiap string unik ke sebuah angka. Kemudian, Estimator mengembalikan Transformer yang menerima sebuah DataFrame, melampirkan pemetaan tersebut sebagai metadata, dan mengembalikan DataFrame baru dengan kolom numerik yang berkorespondensi dengan kolom string.
Langkah kedua adalah mengodekan kolom numerik ini sebagai vektor one-hot menggunakan OneHotEncoder. Prosesnya persis sama seperti StringIndexer, yaitu dengan membuat Estimator lalu Transformer. Hasil akhirnya adalah sebuah kolom yang mengodekan fitur kategorikal Anda sebagai vektor yang cocok untuk rutinitas Machine Learning!
Ini mungkin tampak rumit, tetapi jangan khawatir! Yang perlu Anda ingat hanyalah Anda perlu membuat StringIndexer dan OneHotEncoder, dan Pipeline akan menangani sisanya.
Mengapa Anda harus mengodekan fitur kategorikal sebagai vektor one-hot?
Latihan ini adalah bagian dari kursus
Dasar-Dasar PySpark
Latihan interaktif praktis
Ubah teori menjadi tindakan dengan salah satu latihan interaktif kami.
Mulai berolahraga