Cara melakukan encoding one-hot dengan python
Enkode one-hot digunakan untuk mengonversi variabel kategori ke dalam format yang dapat dengan mudah digunakan oleh algoritme pembelajaran mesin .
Ide dasar dari one-hot coding adalah membuat variabel baru yang mengambil nilai 0 dan 1 untuk mewakili nilai kategorikal aslinya.
Misalnya, gambar berikut menunjukkan bagaimana kita melakukan enkode one-hot untuk mengonversi variabel kategorikal yang berisi nama tim menjadi variabel baru yang hanya berisi nilai 0 dan 1:
Contoh langkah demi langkah berikut menunjukkan cara melakukan enkode one-hot untuk kumpulan data persis ini dengan Python.
Langkah 1: Buat datanya
Pertama, mari buat DataFrame panda berikut:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'B', 'B', 'B', 'B', 'C', 'C'], ' points ': [25, 12, 15, 14, 19, 23, 25, 29]}) #view DataFrame print (df) team points 0 to 25 1 to 12 2 B 15 3 B 14 4 B 19 5 B 23 6 C 25 7 C 29
Langkah 2: Lakukan pengkodean one-hot
Selanjutnya, mari kita impor fungsi OneHotEncoder() dari perpustakaan sklearn dan menggunakannya untuk melakukan pengkodean panas pada variabel ‘tim’ di pandas DataFrame:
from sklearn. preprocessing import OneHotEncoder #creating instance of one-hot-encoder encoder = OneHotEncoder(handle_unknown=' ignore ') #perform one-hot encoding on 'team' column encoder_df = pd. DataFrame ( encoder.fit_transform (df[[' team ']]). toarray ()) #merge one-hot encoded columns back with original DataFrame final_df = df. join (encoder_df) #view final df print (final_df) team points 0 1 2 0 to 25 1.0 0.0 0.0 1 to 12 1.0 0.0 0.0 2 B 15 0.0 1.0 0.0 3 B 14 0.0 1.0 0.0 4 B 19 0.0 1.0 0.0 5 B 23 0.0 1.0 0.0 6 C 25 0.0 0.0 1.0 7 C 29 0.0 0.0 1.0
Perhatikan bahwa tiga kolom baru telah ditambahkan ke DataFrame karena kolom “tim” asli berisi tiga nilai unik.
Catatan : Anda dapat menemukan dokumentasi lengkap untuk fungsi OneHotEncoder() di sini .
Langkah 3: Hapus variabel kategori asli
Terakhir, kita dapat menghapus variabel ‘tim’ asli dari DataFrame karena kita tidak lagi membutuhkannya:
#drop 'team' column final_df. drop (' team ', axis= 1 , inplace= True ) #view final df print (final_df) points 0 1 2 0 25 1.0 0.0 0.0 1 12 1.0 0.0 0.0 2 15 0.0 1.0 0.0 3 14 0.0 1.0 0.0 4 19 0.0 1.0 0.0 5 23 0.0 1.0 0.0 6 25 0.0 0.0 1.0 7 29 0.0 0.0 1.0
Terkait: Cara Menghapus Kolom di Pandas (4 Metode)
Kita juga dapat mengganti nama kolom DataFrame akhir agar lebih mudah dibaca:
#rename columns final_df. columns = ['points', 'teamA', 'teamB', 'teamC'] #view final df print (final_df) points teamA teamB teamC 0 25 1.0 0.0 0.0 1 12 1.0 0.0 0.0 2 15 0.0 1.0 0.0 3 14 0.0 1.0 0.0 4 19 0.0 1.0 0.0 5 23 0.0 1.0 0.0 6 25 0.0 0.0 1.0 7 29 0.0 0.0 1.0
Encoding one-hot selesai dan sekarang kita dapat memasukkan DataFrame pandas ini ke dalam algoritma pembelajaran mesin apa pun yang kita inginkan.
Sumber daya tambahan
Cara menghitung mean terpangkas dengan Python
Cara melakukan regresi linier dengan Python
Cara Melakukan Regresi Logistik dengan Python