当我将 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 连接出现错误?
为啥当我将 SKSpriteNode 与图像一起使用时它不会反弹,但当我使用 SKShapeNode 时它确实有效?
当我将 setContentSize 与自动布局一起使用时,UIScrollView 崩溃