Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Melabelkan dengan Cekap Mengekod Berbilang Lajur dalam Pandas DataFrame?

Bagaimana untuk Melabelkan dengan Cekap Mengekod Berbilang Lajur dalam Pandas DataFrame?

Mary-Kate Olsen
Lepaskan: 2024-11-21 22:52:13
asal
1041 orang telah melayarinya

How to Efficiently Label Encode Multiple Columns in a Pandas DataFrame?

Pengekodan Label Merentasi Pelbagai Lajur dalam Scikit-Learn

Apabila berurusan dengan berbilang lajur data kategori dalam DataFrame, ia boleh membosankan dan tidak cekap untuk mencipta objek LabelEncoder individu untuk setiap lajur. Isu ini biasanya timbul apabila bekerja dengan set data yang mengandungi banyak lajur data kategori berasaskan rentetan.

Perihalan Masalah:

Percubaan untuk menggunakan satu objek LabelEncoder pada keseluruhan DataFrame mengakibatkan ralat, seperti yang ditunjukkan dalam coretan kod yang disediakan. Mesej ralat, "bentuk input buruk (6, 3), menunjukkan bahawa LabelEncoder menjangkakan tatasusunan nilai 1D, bukan DataFrame dengan berbilang lajur.

Penyelesaian:

Untuk mengatasi isu ini, adalah disyorkan untuk memanfaatkan kaedah apply() panda. Penyelesaian elegan ini melibatkan penggunaan LabelEncoder kaedah fit_transform() kepada setiap lajur dalam DataFrame Begini caranya:

df.apply(LabelEncoder().fit_transform)
Salin selepas log masuk

Pendekatan ini berulang melalui setiap lajur, menggunakan transformasi LabelEncoder dan mengembalikan DataFrame baharu dengan nilai yang dikodkan.

Tambahan Pertimbangan:

  • Transformasi Songsang: Untuk menyahkod nilai yang dikodkan kembali kepada kategori asalnya, gunakan kaedah inverse_transform() pada DataFrame yang dikodkan.
  • Berbilang Pengekod: Jika parameter LabelEncoder berbeza diperlukan untuk lajur yang berbeza, pertimbangkan untuk menggunakan kamus untuk menyimpan pengekod, seperti yang ditunjukkan dalam jawapan lanjutan.
  • Pemilihan Lajur: Untuk senario yang tidak semua lajur memerlukan pengekodan label, gunakan ColumnTransformer , yang membolehkan spesifikasi subset lajur menjadi berubah.

Alternatif Disyorkan:

Dalam Scikit-Learn versi 0.20 dan lebih baru, OneHotEncoder disyorkan sebagai alternatif yang lebih cekap kepada LabelEncoder untuk data rentetan. Ia menyokong pengekodan satu panas secara langsung, yang selalunya merupakan perwakilan pilihan untuk data kategori dalam model pembelajaran mesin.

OneHotEncoder().fit_transform(df)
Salin selepas log masuk

Dengan memanfaatkan teknik ini, pengamal boleh mengendalikan pengekodan label dengan cekap untuk berbilang lajur kategori berasaskan rentetan data, memudahkan penyediaan set data untuk analisis pembelajaran mesin.

Atas ialah kandungan terperinci Bagaimana untuk Melabelkan dengan Cekap Mengekod Berbilang Lajur dalam Pandas DataFrame?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan