使用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 編碼,這對於分類資料來說通常是必需的。
逆變換與變換操作
要逆變換或變換編碼標籤,您可以使用以下技術:
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))
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)
from neuraxle.preprocessing import FlattenForEach # Flatten all columns and apply LabelEncoder encoded_df = FlattenForEach(LabelEncoder(), then_unflatten=True).fit_transform(df)
以上是如何使用 Scikit-Learn 高效編碼多個 DataFrame 欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!