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

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *