Pelajari AI dengan Python · Pelajaran

Pengekodan Pemboleh Ubah Kategori

Pengekodan label, pengekodan one-hot, pengekodan ordinal serta pd.get_dummies() berbanding OrdinalEncoder sklearn.

Pelajaran 2 daripada 413 langkah

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 baseline

OrdinalEncoder 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 error

Lajur 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=True mengelakkan perangkap pemboleh ubah penunjuk
  • handle_unknown="ignore" untuk kategori ujian yang tidak pernah dilihat
  • Berwaspada terhadap peningkatan mendadak lajur berkardinaliti tinggi
Percuma untuk bermula

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

  1. Pengesanan dan Pembuangan Pencilan
  2. Pengekodan Pemboleh Ubah Kategori
  3. Penskalaan Ciri: Normalisasi dan Standardisasi
  4. Membina Saluran Pemprosesan Awal
← Kembali ke Pelajari AI dengan Python