当我将 IterativeImputer 与 KNeighborsClassifier 一起使用时出现错误“未知标签类型:'连续'”

Posted

技术标签:

【中文标题】当我将 IterativeImputer 与 KNeighborsClassifier 一起使用时出现错误“未知标签类型:\'连续\'”【英文标题】:Error "Unknown label type: 'continuous'" when I use IterativeImputer with KNeighborsClassifier当我将 IterativeImputer 与 KNeighborsClassifier 一起使用时出现错误“未知标签类型:'连续'” 【发布时间】:2021-08-23 09:01:11 【问题描述】:

我想用 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)

错误是:

“未知标签类型:‘连续’”

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

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

你有什么想法可以解决这个问题吗?

谢谢。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于当我将 IterativeImputer 与 KNeighborsClassifier 一起使用时出现错误“未知标签类型:'连续'”的主要内容,如果未能解决你的问题,请参考以下文章

Knex 与 Heroku Postgres 连接出现错误?

当我将 [::-1] 与变量一起使用时会发生啥? [复制]

为啥当我将 SKSpriteNode 与图像一起使用时它不会反弹,但当我使用 SKShapeNode 时它确实有效?

当我将 setContentSize 与自动布局一起使用时,UIScrollView 崩溃

当我将 RxSwift 的 DelegateProxy 与 FSCalendar 一起使用时发生错误

当我将 Ajax 与 spring 控制器一起使用时,它会被重定向 [重复]