如何使用OneHotEncoder和LabelEncoder在一起?



我有数据集组成:
  • 二进制数据(例如:'yes', 'no'),
  • 多个标称数据(例如:'father', 'mother', 'other'),
  • 二进制数值数据(0,1),
  • 多个数值数据(例如:1,2,3,4,5)。

Target:定义一个函数用标称数据对列进行编码。
我要什么面额的?在同一个函数中编码OneHotEncoder()的一些列和LabelEncoder()的其他列。
具体来说,我只想要名义上的(feature_1:'father', 'mother','other';
feature_2: '家庭',学校'声誉','课程'偏好或'其他')数据编码为OneHot,其余特征标签编码。

我做了这个代码,但它只使用LabelEncoder;如果可能的话,我想用OneHotEncoder(仅用于标称数据)实现它。

def encoder(df):
le = LabelEncoder()
for c in df.columns:
if df.dtypes[c] == object:
df[c] = le.fit_transform(df[c].astype(str))

return df
encoder(stud)

stud.head()

您可以在pandas中使用select_dtypes方法和列转换器。

cate_cols = df.select_dtypes(include=["category"]).columns.tolist()
bin_cols = df.select_dtypes(include=["str", "int"]).columns.tolist()
encoders = make_column_transformer(
(OneHotEncoder(handle_unknown='ignore'), cate_cols),
(OrdinalEncoder(handle_unknown='use_encoded_value', unknown_value=np.nan), bin_cols),
remainder='passthrough')

最新更新