当我将 IterativeImputer 与 KNeighborsClassifier 一起使用时出现错误 "Unknown label type: 'continuous'"

Error "Unknown label type: 'continuous'" when I use IterativeImputer with KNeighborsClassifier

我想用 IterativeImputer 进行多重插补。

这里是数据集(原文来自https://www.kaggle.com/jboysen/mri-and-alzheimers):

alz_df_imp_categorical

要估算的变量是“educ”和“ses”。因为它们是分类的,所以我选择使用分类器(来自 sklearn 的 KNeighborsClassifier)。预测变量是连续的(“性别”除外)。

这是代码:

# calling the  MICE class
KNN_class_estimator = KNeighborsClassifier()
mice_imputer =  IterativeImputer(random_state=0, estimator=KNN_class_estimator, initial_strategy ='mean')
# imputing the missing value with mice imputer
alz_df_imp_categorical = mice_imputer.fit_transform(alz_df_imp_categorical)

错误是:

“未知标签类型:'continuous'”

实际上,fit_transform() 函数将数据帧转换为数组,所有变量都转换为 float 类型。因此,由于此数组转换,要预测的变量不再是绝对变量。此外,数组中只接受一种类型的变量(因此,我不能仅将变量转换为分类预测并让其他变量浮动)。因此,由于目标变量是浮动的,分类器无法工作。所以,我理解错误...但我不知道如何解决它。

我认为,当它们有多种类型的预测变量(连续和分类)时,我们可能无法应用 KNN 分类器。但是,当我在 R 中使用 KNN 分类器时,我对此没有任何问题。

你有解决这个问题的想法吗?

谢谢。

我刚刚明白为什么它不起作用。这是因为 IterativeImputer 仅适用于连续变量。因此,显然您不能使用 IterativeImputer 对连续变量应用多重插补。 有关于此的讨论here

我发现可以在 python 中使用分类变量进行简单插补。但是,似乎不能用这种类型的变量进行多重插补(反正我没找到)。