【发布时间】:2017-09-17 00:27:44
【问题描述】:
我正在尝试从数据集上的 fancyimpute 模块实现 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'
这是我使用的代码(我正在尝试使用 Imputer):
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
我如何使用 knnimpute 来做到这一点,或者我需要编写自己的函数。如果是,任何人都可以帮助我。谢谢
【问题讨论】:
-
大多数 scikit-learn 估计器/转换器只处理数字,而不是字符串。因此,首先将您的字符串分类数据转换为数字,然后尝试
-
当然。我已经在想一个主意了。但 Imputer 无法将 np.NaN 转换为标签
-
你如何定义类别/分类变量之间的距离,欧几里得或其他?
-
我使用了欧式距离,否则,说明对分类变量使用汉明距离
-
欧几里得坐标系上未定义的两个对象之间的欧几里得距离的定义是什么?例如。我可以轻松地对“category1”、“category2”和“category3”进行一次热编码。但我无法确定它们的相对距离。
标签: python machine-learning knn imputation