首頁 > 後端開發 > Python教學 > 如何使用 Scikit-Learn 高效編碼多個 DataFrame 欄位?

如何使用 Scikit-Learn 高效編碼多個 DataFrame 欄位?

Barbara Streisand
發布: 2024-11-25 10:23:11
原創
266 人瀏覽過

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

使用Scikit-Learn 對多個DataFrame 欄位進行標籤編碼

在pandas DataFrame 中使用字串標籤時,通常需要將它們編碼為整數以與機器學習演算法相容。 Scikit-learn 的 LabelEncoder 是完成此任務的便利工具,但每列使用多個 LabelEncoder 物件可能會很無聊。

要繞過此問題,您可以利用以下方法:

df.apply(LabelEncoder().fit_transform)
登入後複製

這將 LabelEncoder 應用於 DataFrame 中的每一列,有效地將所有字串標籤編碼為整數。

使用OneHotEncoder 增強編碼

在Scikit-Learn 的最新版本(0.20 及更高版本)中,建議使用OneHotEncoder() 類別對字串輸入進行標籤編碼:

OneHotEncoder().fit_transform(df)
登入後複製

OneHotEncoder 提供高效率的one-hot 編碼,這對於分類資料來說通常是必需的。

逆變換與變換操作

要逆變換或變換編碼標籤,您可以使用以下技術:

  1. 維護一個字典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))
登入後複製
  1. 對特定欄位使用ColumnTransformer:
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)
登入後複製
  1. FNexForleach :
from neuraxle.preprocessing import FlattenForEach

# Flatten all columns and apply LabelEncoder
encoded_df = FlattenForEach(LabelEncoder(), then_unflatten=True).fit_transform(df)
登入後複製

取決於您的特定情況要求,您可以在 Scikit-Learn 中選擇最合適的方法對多列進行標籤編碼。

以上是如何使用 Scikit-Learn 高效編碼多個 DataFrame 欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板