如何有效地將 Pandas DataFrame 中的多列進行標籤編碼?

Mary-Kate Olsen
發布: 2024-11-21 22:52:13
原創
900 人瀏覽過

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

Scikit-Learn 中跨多列的標籤編碼

在DataFrame 中處理多列分類資料時,可能會很乏味且為每個欄位建立單獨的LabelEncoder 物件效率低。當處理包含大量基於字串的分類資料的資料集時,通常會出現此問題。

問題描述:

嘗試將單一 LabelEncoder 物件套用於整個 DataFrame導致錯誤,如提供的程式碼片段所示。錯誤訊息「錯誤的輸入形狀 (6, 3)」表示 LabelEncoder 需要一維值數組,而不是具有多個列的 DataFrame。

解決方案:

為了解決這個問題,建議利用pandas 的apply() 方法,這個優雅的解決方案涉及將LabelEncoder 的fit_transform() 方法應用於其中的每一列。方法如下:

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

此方法迭代每一列,套用 LabelEncoder 轉換,並傳回帶有編碼值的新 DataFrame。

其他注意事項:

  • 逆轉換:要將編碼值解碼回其原始類別,請在編碼的DataFrame 上轉換:
  • 要將編碼值解碼回其原始類別,請在編碼的DataFrame 上使用inverse_transform() 方法。
  • 多個編碼器:
  • 如果不同的 LabelEncoder 參數需要不同列,考慮使用字典來儲存編碼器,如擴充答案所示。
  • 列選擇:
  • 對於並非所有列都需要標籤編碼的場景,請使用 ColumnTransformer,它可以轉換列子集的規格。

推薦替代方案:

在Scikit-Learn 0.20 及更高版本中,建議使用OneHotEncoder 作為更有效的替代方案字串資料的LabelEncoder 。它直接支援 one-hot 編碼,這通常是機器學習模型中分類資料的首選表示形式。
OneHotEncoder().fit_transform(df)
登入後複製

透過利用這些技術,從業者可以有效地處理多列基於字串的分類數據的標籤編碼數據,方便準備用於機器學習分析的數據集。

以上是如何有效地將 Pandas DataFrame 中的多列進行標籤編碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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