我正在使用一个非常简单的数据集。它在分类和数字特征中都缺少一些值。正因为如此,我尝试使用sklearn.preprocessing.knimpute来获得最准确的插补。但是,当我运行以下代码时:
imputer = KNNImputer(n_neighbors=120)
imputer.fit_transform(x_train)
我得到错误:ValueError: could not convert string to float: 'Private'
这是有道理的,它显然不能处理分类数据。但当我尝试运行OneHotEncoder时:
encoder = OneHotEncoder(drop="first")
encoder.fit_transform(x_train[categorical_features])
它抛出错误:ValueError: Input contains NaN
我更喜欢使用KNNImpute
即使是分类数据,因为我觉得如果我只使用ColumnTransform
并分别用数字和分类数据进行插补,我会失去一些准确性。有没有办法让OneHotEncoder
忽略这些缺失的值?如果不是,使用ColumnTransform
或更简单的插补器是解决此问题的更好方法吗
提前谢谢
在处理
OneHotEncoder
上缺少的值时,还存在一些未解决的问题/pr,但目前还不清楚这些选项是什么。在此期间,这里有一个手动方法SimpleImputer
字符串“missing”填充分类缺失李>OneHotEncoder
李>get_feature_names
来识别对应于每个原始特征的列,尤其是“缺失”指示符李>np.nan
;然后删除缺少的指示符列李>KNNImputer
李>KNNImputer
可以在一行中获得多个1。您可以使用argmax取而代之,只返回一个1。)相关问题 更多 >
编程相关推荐