Scikit-Learn 中跨多列的標籤編碼
標籤編碼是將分類資料轉換為數字特徵的常用技術。雖然可以為每個欄位建立單獨的 LabelEncoder 實例,但在多列需要標籤編碼的情況下,使用單一編碼器會更有效。
考慮具有許多字串標籤列的 DataFrame。要對整個DataFrame 進行標籤編碼,一個簡單的方法可能是將整個DataFrame 傳遞給LabelEncoder,如下所示:
但是,這種方法會導致以下錯誤:
要解決這個問題,一個解決方案是使用apply 函數將LabelEncoder 應用於DataFrame 中的每一列。此方法獨立地轉換每一列,允許對多列進行高效的一步編碼:
或者,在scikit-learn 0.20 及更高版本中,推薦的方法是使用OneHotEncoder:
OneHotEncoder 現在支援直接編碼字串輸入。
了解更多彈性,ColumnTransformer 可用於將標籤編碼套用至特定欄位或僅套用於列中的某些資料類型。
對於逆變換和轉換未來數據,可以使用 defaultdict 來保留每個列的標籤編碼器柱子。透過存取字典中的編碼器,可以使用原始 LabelEncoder 實例對資料進行解碼或編碼。
此外,像 Neuraxle 這樣的函式庫提供了 FlattenForEach 步驟,這有助於將相同的 LabelEncoder 應用到扁平化資料。
對於不同的列需要不同的 LabelEncoder 或僅應對列的子集進行編碼的情況,ColumnTransformer提供對選擇和編碼過程的精細控制。
以上是如何在 Scikit-Learn 中有效地對多列進行標籤編碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!