关于编码转换时出现的错误:could not convert string to float: ‘否’
问题代码如下:
# 布尔型转换函数
def boolean_transform(df):
df['red_color_enco'] = df['red_color'].map({'是': True, '否': False})
df['playing_enco'] = df['playing'].map({'是': True, '否': False})
return df
# 布尔型转换器
boolean_transformer = FunctionTransformer(boolean_transform)
# 特征处理,通过管道Pipeline处理数据,province和city使用二进制编码
categorical_transformer = Pipeline(steps=[
('binary_encoder_province', BinaryEncoder(cols=['province'])),
('binary_encoder_city', BinaryEncoder(cols=['city'])),
('boolean', boolean_transformer(cols=['small_micro_enco'])),
('hashing_class', HashingEncoder(column='pro_class')),
])
如上,但是因为需要转换的布尔型特征有两列,因此需要自定义转换器。
这是我第二次出现这个问题
could not convert string to float: ‘某个字符’
总结一下:
1.第一次出现问题的原因是Pipeline 或 ColumnTransformer 配置错误;
2.第二次的原因是特征编码未完全覆盖数据,我们需要转换的有两列特征,但是后续只转换了一列,会出现冲突。