Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mengekodkan Berbilang Lajur DataFrame dengan Cekap dengan Scikit-Learn?

Bagaimana untuk Mengekodkan Berbilang Lajur DataFrame dengan Cekap dengan Scikit-Learn?

Barbara Streisand
Lepaskan: 2024-11-25 10:23:11
asal
393 orang telah melayarinya

How to Efficiently Encode Multiple DataFrame Columns with Scikit-Learn?

Pengekodan Label Berbilang Lajur DataFrame dengan Scikit-Learn

Apabila bekerja dengan label rentetan dalam DataFrame panda, selalunya perlu mengekodnya ke dalam integer untuk keserasian dengan algoritma pembelajaran mesin. LabelEncoder Scikit-learn ialah alat yang mudah untuk tugas ini, tetapi menggunakan berbilang objek LabelEncoder untuk setiap lajur boleh membosankan.

Untuk memintas ini, anda boleh memanfaatkan pendekatan berikut:

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

Ini menggunakan LabelEncoder pada setiap lajur dalam DataFrame, dengan berkesan mengekod semua label rentetan integer.

Pengekodan Dipertingkatkan dengan OneHotEncoder

Dalam versi terbaru Scikit-Learn (0.20 dan ke atas), kelas OneHotEncoder() disyorkan untuk input rentetan pengekodan label :

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

OneHotEncoder menyediakan one-hot yang cekap pengekodan, yang selalunya diperlukan untuk data kategori.

Operasi Songsang dan Transformasi

Untuk mengubah songsang atau mengubah label yang dikodkan, anda boleh menggunakan teknik berikut:

  1. Kekalkan kamus tentang LabelEncoders:
from collections import defaultdict
d = defaultdict(LabelEncoder)

# Encoding
fit = df.apply(lambda x: d[x.name].fit_transform(x))

# Inverse transform
fit.apply(lambda x: d[x.name].inverse_transform(x))

# Transform future data
df.apply(lambda x: d[x.name].transform(x))
Salin selepas log masuk
  1. Gunakan ColumnTransformer untuk lajur tertentu:
from sklearn.preprocessing import ColumnTransformer, OneHotEncoder

# Select specific columns for encoding
encoder = OneHotEncoder()
transformer = ColumnTransformer(transformers=[('ohe', encoder, ['col1', 'col2', 'col3'])])

# Transform the DataFrame
encoded_df = transformer.fit_transform(df)
Salin selepas log masuk
  1. Gunakan Neuraxle's FlattenForEach step:
from neuraxle.preprocessing import FlattenForEach

# Flatten all columns and apply LabelEncoder
encoded_df = FlattenForEach(LabelEncoder(), then_unflatten=True).fit_transform(df)
Salin selepas log masuk

Bergantung pada keperluan khusus anda, anda boleh memilih kaedah yang paling sesuai untuk pengekodan label berbilang lajur dalam Scikit-Learn.

Atas ialah kandungan terperinci Bagaimana untuk Mengekodkan Berbilang Lajur DataFrame dengan Cekap dengan Scikit-Learn?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan