Pengodean Variabel Kategorikal
Pengodean label, pengodean one-hot, pengodean ordinal, serta pd.get_dummies() dibandingkan dengan OrdinalEncoder sklearn.
Pengodean Variabel Kategorikal adalah pelajaran Learn AI with Python gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Learn AI with Python, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn AI with Python mencakup 4 pelajaran total.
Mengapa Mengodekan Kategori?
Sebagian besar model pembelajaran mesin memerlukan NUMBERS, bukan label teks seperti "merah" atau "kecil". Pengodean mengubah variabel kategorikal ke bentuk numerik dengan tetap mempertahankan maknanya.
Ordinal dibandingkan Nominal
Kategori Ordinal memiliki urutan alami (kecil < sedang < besar). Kategori Nominal tidak memilikinya (merah, hijau, biru). Pengodean yang tepat bergantung pada jenis kategori yang Anda miliki.
Pengodean Label untuk Data Ordinal
LabelEncoder memetakan setiap kategori ke bilangan bulat. Ini sesuai untuk data ORDINAL, ketika urutan bilangan bulat memiliki makna.
from sklearn.preprocessing import LabelEncoder
sizes = ["small", "large", "medium", "small"]
le = LabelEncoder()
print(le.fit_transform(sizes)) # integers (alphabetical by default)Bahaya pada Data Nominal
Menerapkan pengodean label pada data NOMINAL berisiko: model dapat membaca merah=0, hijau=1, biru=2 sebagai seolah-olah hijau berada "di antara" merah dan biru, sehingga menciptakan urutan yang keliru. Gunakan pengodean satu-hot sebagai gantinya.
Pengodean Satu-Hot dengan get_dummies
pd.get_dummies membuat satu kolom biner untuk setiap kategori. Tepat satu kolom bernilai 1 pada setiap baris, tanpa urutan tersirat, sehingga ideal untuk variabel nominal.
import pandas as pd
df = pd.DataFrame({"color": ["red", "green", "blue", "red"]})
print(pd.get_dummies(df, columns=["color"]))Jebakan Variabel Indikator
Ketika k kategori menghasilkan k kolom, kolom-kolom tersebut berkolinearitas sempurna (jumlahnya selalu 1). Jebakan variabel indikator ini mengganggu model linear. Hapus satu kolom untuk memperbaikinya.
drop_first
drop_first=True menghapus satu kategori, sehingga tersisa k-1 kolom. Kategori yang dihapus menjadi nilai dasar implisit (semuanya bernilai nol), sehingga kolinearitas hilang.
print(pd.get_dummies(df, columns=["color"], drop_first=True))
# one fewer column; the dropped color is the baselinesklearn OrdinalEncoder
Untuk alur pemrosesan, OrdinalEncoder adalah padanan sklearn untuk pengodean label pada FEATURES dan memungkinkan Anda menentukan urutan kategori secara eksplisit.
from sklearn.preprocessing import OrdinalEncoder
enc = OrdinalEncoder(categories=[["small", "medium", "large"]])
print(enc.fit_transform([["medium"], ["large"], ["small"]]))sklearn OneHotEncoder
OneHotEncoder adalah alat one-hot yang cocok digunakan dalam alur pemrosesan. Alat ini mempelajari kategori dari data pelatihan dan menerapkan pemetaan yang sama pada data baru, yang sangat penting untuk produksi.
from sklearn.preprocessing import OneHotEncoder
ohe = OneHotEncoder(sparse_output=False)
print(ohe.fit_transform([["red"], ["green"], ["blue"]]))Menangani Kategori yang Belum Pernah Dilihat
Data uji mungkin berisi kategori yang tidak pernah ditemukan selama pelatihan. Tetapkan handle_unknown="ignore" agar OneHotEncoder menghasilkan semua nol, bukan mengalami kegagalan.
ohe = OneHotEncoder(handle_unknown="ignore", sparse_output=False)
ohe.fit([["red"], ["green"]])
print(ohe.transform([["blue"]])) # all zeros, no errorKolom dengan Kardinalitas Tinggi
Melakukan pengodean satu-hot pada kolom dengan ribuan nilai unik dapat menyebabkan jumlah fitur meledak. Untuk kardinalitas tinggi, pertimbangkan pengodean target, fungsi hash, atau pengelompokan kategori yang jarang muncul ke dalam kategori "lainnya".
Pemeriksaan Singkat
Uji pengetahuan Anda tentang pengodean.
Ringkasan
Perangkat pengodean:
- Data ordinal -> pengodean bilangan bulat (
LabelEncoder/OrdinalEncoder) - Data nominal -> pengodean satu-hot (
pd.get_dummies/OneHotEncoder) drop_first=Truemenghindari jebakan variabel tiruanhandle_unknown="ignore"untuk kategori pengujian yang belum pernah dilihat- Waspadai ledakan kolom berkardinalitas tinggi
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Pengodean Variabel Kategorikal” gratis?
Ya — teks lengkap “Pengodean Variabel Kategorikal” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn AI with Python, upgrade ke CoddyKit PRO. Kursus Learn AI with Python mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Pengodean Variabel Kategorikal”?
Pengodean label, pengodean one-hot, pengodean ordinal, serta pd.get_dummies() dibandingkan dengan OrdinalEncoder sklearn. Kamu berlatih Learn AI with Python dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Learn AI with Python?
Tidak diperlukan pengalaman sebelumnya. Learn AI with Python di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Pengodean Variabel Kategorikal” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Learn AI with Python ini?
Ya. Setiap pelajaran Learn AI with Python menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Deteksi dan Penghapusan Pencilan
- Pengodean Variabel Kategorikal
- Penskalaan Fitur: Normalisasi dan Standardisasi
- Membangun Pipeline Prapemrosesan