Scikit-Learn 中跨多列的標籤編碼
在DataFrame 中處理多列分類資料時,可能會很乏味且為每個欄位建立單獨的LabelEncoder 物件效率低。當處理包含大量基於字串的分類資料的資料集時,通常會出現此問題。
問題描述:
嘗試將單一 LabelEncoder 物件套用於整個 DataFrame導致錯誤,如提供的程式碼片段所示。錯誤訊息「錯誤的輸入形狀 (6, 3)」表示 LabelEncoder 需要一維值數組,而不是具有多個列的 DataFrame。
解決方案:
為了解決這個問題,建議利用pandas 的apply() 方法,這個優雅的解決方案涉及將LabelEncoder 的fit_transform() 方法應用於其中的每一列。方法如下:
df.apply(LabelEncoder().fit_transform)
此方法迭代每一列,套用 LabelEncoder 轉換,並傳回帶有編碼值的新 DataFrame。
其他注意事項:
推薦替代方案:
在Scikit-Learn 0.20 及更高版本中,建議使用OneHotEncoder 作為更有效的替代方案字串資料的LabelEncoder 。它直接支援 one-hot 編碼,這通常是機器學習模型中分類資料的首選表示形式。OneHotEncoder().fit_transform(df)
以上是如何有效地將 Pandas DataFrame 中的多列進行標籤編碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!