我有数据集组成:
我有数据集组成:
- 二进制数据(例如:'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')