我正试图从一个数据集上的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做到这一点,或者我需要编写自己的函数。如果是的话,有人能帮我吗。泰克斯
我可以使用下面列出的步骤来估算分类变量。我很乐意接受任何可以自动执行这些任务的遗漏或程序
步骤1:将对象的数据类型(全部)子集到另一个容器中
步骤2:将
np.NaN
更改为对象数据类型,例如None
。现在,容器只由objects
数据类型组成步骤3:将整个容器更改为分类数据集
步骤4:对数据集进行编码(我正在使用.cat.codes)
步骤5:将编码的
None
值改回np.NaN
步骤5:使用KNN(来自fancyicompute)来估算缺失的值
步骤6:将编码的数据集重新映射到其初始名称
Imputer
只对数字起作用。可以使用map函数将“sex”列转换为数字1和0在此之后,您可以使用
Imputer
用1或0填充所有缺少的值,并再次使用map函数将“sex”转换回字符串值(如果需要)。相关问题 更多 >
编程相关推荐