Pengekodan Pemboleh Ubah Kategori
Pengekodan label, pengekodan one-hot, pengekodan ordinal serta pd.get_dummies() berbanding OrdinalEncoder sklearn.
Pengekodan Pemboleh Ubah Kategori ialah pelajaran Pelajari AI dengan Python percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Pelajari AI dengan Python, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Pelajari AI dengan Python merangkumi sejumlah 4 pelajaran.
Mengapakah Kategori Perlu Dikodkan?
Kebanyakan model pembelajaran mesin memerlukan NUMBERS, bukannya label teks seperti "merah" atau "kecil". Pengekodan menukar pemboleh ubah kategori kepada bentuk numerik sambil mengekalkan maksudnya.
Ordinal berbanding Nominal
Kategori Ordinal mempunyai susunan semula jadi (kecil < sederhana < besar). Kategori Nominal tidak mempunyai susunan sedemikian (merah, hijau, biru). Pengekodan yang sesuai bergantung pada jenis kategori yang anda miliki.
Pengekodan Label untuk Ordinal
LabelEncoder memetakan setiap kategori kepada integer. Ia sesuai untuk data ORDINAL apabila susunan integer itu mempunyai makna.
from sklearn.preprocessing import LabelEncoder
sizes = ["small", "large", "medium", "small"]
le = LabelEncoder()
print(le.fit_transform(sizes)) # integers (alphabetical by default)Bahaya pada Nominal
Menggunakan pengekodan label pada data NOMINAL berisiko: model mungkin membaca merah=0, hijau=1, biru=2 seolah-olah hijau berada "di antara" merah dan biru, lalu mencipta susunan palsu. Sebaliknya, gunakan pengekodan binari.
Pengekodan Binari dengan get_dummies
pd.get_dummies mencipta satu lajur binari bagi setiap kategori. Tepat satu lajur bernilai 1 bagi setiap baris, tanpa susunan tersirat, dan sesuai untuk pemboleh ubah nominal.
import pandas as pd
df = pd.DataFrame({"color": ["red", "green", "blue", "red"]})
print(pd.get_dummies(df, columns=["color"]))Perangkap Pemboleh Ubah Penunjuk
Apabila k kategori menghasilkan k lajur, lajur-lajur itu berkolinear sempurna (jumlahnya sentiasa 1). Perangkap pemboleh ubah penunjuk ini merosakkan model linear. DROP satu lajur untuk membaikinya.
Pilihan drop_first
drop_first=True mengalih keluar satu kategori, lalu meninggalkan k-1 lajur. Kategori yang dialih keluar menjadi garis dasar tersirat (semuanya sifar), sekali gus menghapuskan kolineariti.
print(pd.get_dummies(df, columns=["color"], drop_first=True))
# one fewer column; the dropped color is the baselineOrdinalEncoder sklearn
Untuk saluran paip, OrdinalEncoder ialah padanan sklearn bagi pengekodan label untuk FEATURES, dan membolehkan anda menentukan susunan kategori dengan jelas.
from sklearn.preprocessing import OrdinalEncoder
enc = OrdinalEncoder(categories=[["small", "medium", "large"]])
print(enc.fit_transform([["medium"], ["large"], ["small"]]))OneHotEncoder sklearn
OneHotEncoder ialah alat pengekodan binari yang mesra saluran paip. Ia mempelajari kategori daripada data latihan dan menggunakan pemetaan yang sama pada data baharu, perkara yang penting untuk pengeluaran.
from sklearn.preprocessing import OneHotEncoder
ohe = OneHotEncoder(sparse_output=False)
print(ohe.fit_transform([["red"], ["green"], ["blue"]]))Mengendalikan Kategori yang Tidak Pernah Dilihat
Data ujian mungkin mengandungi kategori yang tidak pernah dilihat semasa latihan. Tetapkan handle_unknown="ignore" supaya OneHotEncoder menghasilkan semua sifar dan bukannya terhenti dengan ralat.
ohe = OneHotEncoder(handle_unknown="ignore", sparse_output=False)
ohe.fit([["red"], ["green"]])
print(ohe.transform([["blue"]])) # all zeros, no errorLajur Berkardinaliti Tinggi
Pengekodan binari bagi lajur yang mempunyai ribuan nilai unik akan meningkatkan bilangan ciri secara mendadak. Untuk kardinaliti tinggi, pertimbangkan pengekodan sasaran, pencincangan atau pengelompokan kategori yang jarang kepada kategori "lain".
Semakan Pantas
Uji pengetahuan anda tentang pengekodan.
Rumusan
Kit alat pengekodan:
- Data ordinal -> pengekodan integer (
LabelEncoder/OrdinalEncoder) - Data nominal -> pengekodan binari (
pd.get_dummies/OneHotEncoder) drop_first=Truemengelakkan perangkap pemboleh ubah penunjukhandle_unknown="ignore"untuk kategori ujian yang tidak pernah dilihat- Berwaspada terhadap peningkatan mendadak lajur berkardinaliti tinggi
Pelajari Python dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 53
- Pelajaran
- 225
Soalan Lazim
Adakah pelajaran “Pengekodan Pemboleh Ubah Kategori” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Pelajari AI dengan Python, termasuk “Pengekodan Pemboleh Ubah Kategori”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Pelajari AI dengan Python merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Pengekodan Pemboleh Ubah Kategori”?
Pengekodan label, pengekodan one-hot, pengekodan ordinal serta pd.get_dummies() berbanding OrdinalEncoder sklearn. Anda berlatih Pelajari AI dengan Python menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Pelajari AI dengan Python?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Pelajari AI dengan Python di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Pengekodan Pemboleh Ubah Kategori” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Pelajari AI dengan Python ini?
Ya. Setiap pelajaran Pelajari AI dengan Python menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Pengesanan dan Pembuangan Pencilan
- Pengekodan Pemboleh Ubah Kategori
- Penskalaan Ciri: Normalisasi dan Standardisasi
- Membina Saluran Pemprosesan Awal