python中分类变量的knn插补

2024-03-28 19:16:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图从一个数据集上的fancyicompute模块实现kNN。我能够使用下面的代码实现数据集连续变量的代码:

knn_impute2=KNN(k=3).complete(train[['LotArea','LotFrontage']]) 

它得到了如下所示的理想答案:This show how the original dataset looks like and how it has changed using knn imputation

我试图为分类数据集实现相同的代码,但得到错误:

could not convert string to float: 'female'

这是我使用的代码(我试图使用输入法):

from sklearn.preprocessing import Imputer
imp = Imputer(missing_values='NaN', strategy='most_frequent', axis=0)
imp.fit(df['sex'])
print(imp.transform(df['sex']))

我做错什么了?

概括地说,我想在这个数据集上使用knn插补来插补性别列。下面是数据集。

The dataset i want to impute using knn imputation with k value 2

我怎么能用knnicompute做到这一点,或者我需要编写自己的函数。如果是的话,有人能帮我吗。泰克斯


Tags: to数据代码dfdatasethow集上using
2条回答

我可以使用下面列出的步骤来估算分类变量。我很乐意接受任何可以自动执行这些任务的遗漏或程序

步骤1:将对象的数据类型(全部)子集到另一个容器中

步骤2:将np.NaN更改为对象数据类型,例如None。现在,容器只由objects数据类型组成

步骤3:将整个容器更改为分类数据集

步骤4:对数据集进行编码(我正在使用.cat.codes)

步骤5:将编码的None值改回np.NaN

步骤5:使用KNN(来自fancyicompute)来估算缺失的值

步骤6:将编码的数据集重新映射到其初始名称

Imputer只对数字起作用。可以使用map函数将“sex”列转换为数字1和0

df.sex=df.sex.map({'female':1,'male':0})

在此之后,您可以使用Imputer用1或0填充所有缺少的值,并再次使用map函数将“sex”转换回字符串值(如果需要)。

相关问题 更多 >