Mengonversi Variabel — Transformer Kolom, OneHotEncoding… – Menuju AI — Teknologi, Sains, dan Teknik Terbaik

Pengarang: Ibrahim Kovan

Analisis data

Tinjauan Prapemrosesan Data: Mengonversi Variabel — Transformer Kolom, OneHotEncoding, Label Binarizer, Standardisasi, Normalisasi, Penskalaan Kuat, dan banyak lagi

Metode pra-pemrosesan data yang berguna dengan implementasi python dalam satu tampilan

Kumpulan data harus sesuai untuk data yang dilatih dalam Pembelajaran Mesin dan prediksi yang dibuat oleh algoritme untuk menghasilkan hasil yang lebih sukses. Setiap kolom memiliki karakteristik yang berbeda dan metode terpisah harus diterapkan untuk masing-masing jika perlu. Misalnya, hasil yang lebih baik diperoleh ketika data kategorikal diubah menjadi data numerik. Perbedaan yang harus dibuat di sini adalah memilih metode pra-pemrosesan data yang cocok untuk model dan proyek. Artikel ini berisi sudut pandang yang berbeda untuk melihat dataset untuk memudahkan algoritme mempelajari dataset. Semua kajian dibuat lebih mudah dipahami dengan aplikasi python.

Daftar Isi (TOC)
1. Variabel Kategoris
1.1. Transformer Kolom, OneHotEncoding, Dummy Coding
1.2. Pengkode Label
1.3. Enkoder Ordinal
1.4. Label Binarizer
2. Variabel Numerik
2.1. Standardisasi
2.2. Normalisasi
2.3. Regularisasi L²
2.4. Scaler yang Kuat
Foto oleh Gaelle Marcel di Unsplash

1. Variabel Kategoris

Kolom-kolom dalam dataset siap untuk diproses oleh algoritma, mereka dapat disajikan secara terus menerus (continuous features), atau dapat disajikan tanpa variasi secara terus menerus, misalnya, ketika kita mempertimbangkan dataset iris, sebuah bunga adalah Iris Setosa, Iris Versicolor atau Iris Virginia. Itu tidak bisa bernilai apa pun di tengah-tengah jenis ini. Kumpulan data seperti itu disebut fitur kategorikal dan kolom ini perlu dibuat sesuai untuk algoritma (mengubah data kategorikal ke numerik). Metode ini dijelaskan di bawah dan diimplementasikan dengan python.

1.1. Transformer Kolom, One Hot Encoding, dan Dummy Coding

Proses untuk kolom kategoris dan kolom numerik tidak sama. Dengan Transformer Kolom, beberapa operasi prapemrosesan yang berbeda dapat dilakukan pada kolom dalam kumpulan data secara bersamaan.

OneHotEncoding mengubah setiap jenis data kategorikal menjadi kolom dan membuat kumpulan data numerik. Misalnya, dalam kumpulan data, ia menambahkan 2 kolom baru, pria dan wanita, sebagai ganti opsi pria/wanita di kolom jenis kelamin, dan untuk data wanita: opsi pria memberikan 0 dan opsi wanita 1 dan sebaliknya.

impor numpy sebagai np
impor panda sebagai pd
impor matplotlib.pyplot sebagai plt IN[1]
data=pd.read_csv(‘toy_dataset.csv’)
data
Gambar 1. KELUAR[1], Gambar oleh penulis dari sklearn.compose import make_column_transformer
dari sklearn.preprocessing impor OneHotEncoder
dari sklearn.preprocessing impor MinMaxScaler IN[2]
ohe=OneHotEncoder(jarang=Salah)
scaler = MinMaxScaler()
ct=make_column_transformer((oh,[‘City’,’Gender’,’Illness’]),
(penskala [‘Income’]),sisa=’melewati’)
data_ct=ct.fit_transform(data)
data_ct
Gambar 2. KELUAR[2], Gambar oleh penulis IN[3]
ohe_True=OneHotEncoder(jarang=Benar)
ohe_with_sparse=ohe_True.fit_transform(data[‘Gender’].values.reshape(-1,1)).toarray()
ohe_with_sparse
KELUAR[3]
Himpunan([[0., 1.],
[0., 1.],
[0., 1.],
…,
[0., 1.],
[0., 1.],
[1., 0.]])

Prosedur yang sama dilakukan dengan pandas.get_dummies di Pandas. Namun, OneHotEncoder lebih disukai untuk studi pembelajaran mesin. Karena OneHotEncoder berasal dari kelas transformer dan diterapkan dengan perintah fit. Setelah diterapkan, ia dapat mengubah data berikutnya sesuai dengan kategori yang telah dipelajarinya, dan mudah digunakan dengan pipeline.

DI DALAM[4]
dum=pd.get_dummies(data,kolom=[‘Gender’,’City’,’Illness’],awalan=”,awalan_sep=”)
Gambar 3. KELUAR[4], Gambar oleh penulis

Sekarang mari kita lihat hyperparameters OneHotEncoder.

Jarang: Karena dataset menyertakan banyak nilai “0”, sparse didefinisikan sebagai 0. Namun, ketika Sparse=False diatur dan .toarray() ditambahkan, dataset dapat dibaca. Handle_unknown: Ketika parameter ini diatur ke ‘ignore’ dan kategori yang tidak diketahui ditemukan selama transformasi, kolom yang disandikan satu-panas yang dihasilkan untuk fitur ini akan menjadi nol.

1.2. Pengkode Label

Data kategori diubah menjadi numerik mulai dari 0 dan meningkat secara aritmatika. Misalnya, kolom yang berisi data merah, putih, biru; Ubah 0 sesuai merah, 1 sesuai putih dan 3 sesuai biru.

DI DALAM[5]
dari sklearn.preprocessing impor LabelEncoder
le=LabelEncoder()
encoded_data_city=le.fit_transform(data[‘City’])
print(“Kota”, np.unique(encoded_data_city))
encoded_data_gender=le.fit_transform(data[‘Gender’])
print(“Gender”, np.unique(encoded_data_gender))
KELUAR[5]
kota [0 1 2 3 4 5 6 7]
Jenis kelamin [0 1]

1.3. Enkoder Ordinal

Ordinal Encoder melakukan hal yang sama seperti Label Encoder. Perbedaan antara Ordinal Encoder digunakan untuk fitur sedangkan Label Encoder digunakan Label(target) sehingga Ordinal Encoder sesuai dengan data (number_of_samples, number_of_features) sedangkan Label Encoder (number_of_samples)

DI DALAM[6]
dari sklearn.preprocessing impor OrdinalEncoder
oe=OrdinalEncoder(kategori=[dictionary])
encoded_data_city=oe.fit_transform(data[[‘City’]])
print(“Kota”, np.unique(encoded_data_city))
KELUAR[6]
kota [0. 1. 2. 3. 4. 5. 6. 7.]

1.4. Label Binarizer

Label Binarizer memiliki fungsi yang sama dengan OneHotEncoding. Bedanya OHE digunakan untuk data multicolumn sedangkan LabelBinarizer digunakan untuk single column saja. Ini digunakan untuk satu kolom di LabelEncoder.

DI DALAM[7]
dari preprocessing impor sklearn
lb = prapemrosesan.LabelBinarizer()
label_city=lb.fit_transform(data[‘City’])
label_kota
KELUAR[7]
Himpunan([[0, 0, 1, …, 0, 0, 0],
[0, 0, 1, …, 0, 0, 0],
[0, 0, 1, …, 0, 0, 0],
…,
[1, 0, 0, …, 0, 0, 0],
[1, 0, 0, …, 0, 0, 0],
[1, 0, 0, …, 0, 0, 0]])

2. Variabel Numerik

Rescaling Variabel Numerik sangat penting untuk algoritma untuk memberikan hasil yang lebih akurat. Berkat Rescale, semua data numerik diurutkan di antara rentang tertentu menurut aturan tertentu. Mari kita lihat metode ini sekarang.

2.1. Standardisasi

Nilai rata-rata kolom diberi 0 dan semua nilai numerik lainnya dikelilingi oleh varians 1.

Gambar 4. Standardisasi, sumber IN[8]
dari sklearn.preprocessing impor StandardScaler
penskala = StandardScaler()
data_standardscaler=scaler.fit_transform(data[[‘Income’]])
data_standardscaler
KELUAR[8]
Himpunan([[-2.03629388],
[-1.84753398],
[-1.55144865],
…,
[ 0.82563756],
[ 0.82535744],
[-0.16013972]])

2.2. Normalisasi

Data numerik dalam kolom didistribusikan antara 0 dan 1, dengan data minimum adalah 0 dan data maksimum adalah 1.

Gambar 5. Normalisasi, sumber IN[9]
dari sklearn.preprocessing impor MinMaxScaler
scaler = MinMaxScaler()
data_minmaxscaler=scaler.fit_transform(data[[‘Income’]])
data_minmaxscaler
KELUAR[9}
array([[0.23070001],
[0.25722818],
[0.29883978],
…,
[0.6329136 ],
[0.63287423],
[0.49437324]])

2.3. Regularisasi L²

Normalisasi L2 juga dikenal sebagai norma Euclidian. Semua data ditempatkan antara -1 dan 1.

Gambar 6. Normalisasi L2, sumber

2.4. Scaler yang Kuat

Nilai median dan Inter Quantile Range (IQR) dihitung.

baru_x(i) = [x(i) — median_value]/IQR

DI DALAM[10]
dari sklearn.preprocessing impor RobustScaler
penskala = RobustScaler()
data_robust=scaler.fit_transform(data[[‘Income’]])
data_robust OUT[10]
Himpunan([[-2.2530733 ],
[-2.05363353],
[-1.74079594],
…,
[ 0.77078379],
[ 0.77048782],
[-0.27076793]])

Kembali ke panduan klik di sini.

Pedoman Pembelajaran Mesin

Tinjauan Prapemrosesan Data: Konversi Variabel — Transformer Kolom, OneHotEncoding… awalnya diterbitkan di Towards AI on Medium, di mana orang-orang melanjutkan percakapan dengan menyoroti dan menanggapi cerita ini.

Diterbitkan melalui Menuju AI