我最近开始学习Python,使用机器学习方法为研究项目开发预测模型。我有一个由数值和分类数据组成的大型数据集,其中有很多缺失值。目前我正在尝试使用OneHotEncoder对分类特征进行编码。当我阅读关于OneHotEncoder的资料时,我的理解是对于缺失值(NaN),OneHotEncoder会将该特征的所有类别都赋值为0,如下所示:
0 Male
1 Female
2 NaN
应用OneHotEncoder之后:
0 10
1 01
2 00
然而,当运行以下代码时:
# Encoding categorical data
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
ct = ColumnTransformer([('encoder', OneHotEncoder(handle_unknown='ignore'), [1])],
remainder='passthrough')
obj_df = np.array(ct.fit_transform(obj_df))
print(obj_df)
我遇到了错误ValueError: Input contains NaN
因此,我猜测我之前对OneHotEncoder处理缺失值的理解是错误的。有没有办法让我获得上述功能?我知道在编码之前填充缺失值可以解决这个问题,但我不愿意这样做,因为我正在处理医疗数据,并担心填充可能会降低模型的预测准确性。
我找到了这个问题,它很相似,但答案没有提供足够详细的解决方案来处理NaN值。
请让我知道你的想法,谢谢。