knnimpute 是如何工作的?

Posted

技术标签:

【中文标题】knnimpute 是如何工作的?【英文标题】:How does knnimpute work? 【发布时间】:2017-07-22 17:20:21 【问题描述】:

来自https://***.com/a/35684975/4533188,我知道 K-Nearest Neighbor Imputation 的工作方式如下:

    对于当前观测,获取到所有其他观测的距离。 对于当前观测值中的每个缺失值,考虑所有那些在相关特征中没有缺失值的最近的 k 个观测值。 根据这些观察的特征值:计算平均值(或一些类似的统计数据) - 这是用于插补的值。

关键步骤是 1:如果不是所有值都可用,我们如何计算距离?上面的帖子指向Heterogeneous Euclidean-Overlap Metric。但是我对fancyimpute 的knn-imputation 的实现很感兴趣。我将其追溯到https://github.com/hammerlab/knnimpute,更具体地说是https://github.com/hammerlab/knnimpute/blob/master/knnimpute/few_observed_entries.py,然后我查看了代码。但是我无法弄清楚它是如何工作的。

有人可以向我解释一下knnimpute 在那里的工作原理吗?这里的距离计算是如何工作的?

【问题讨论】:

最常见的欧几里得距离,但也有其他选择。 @AlexW:欧几里得距离到底是什么?在有问题的数据观察和相应的其他数据观察中,但只采用两个观察中可用的那些特征 - 因此每次观察比较的特征都在变化?代码在哪里? alexwhitworth/imputation 【参考方案1】:

以下内容特定于 Scikit-Learn Python 库中的 KNNImpute 函数。 文档:https://scikit-learn.org/stable/modules/generated/sklearn.impute.KNNImputer.html

参数“metric”的默认值是“nan_euclidian”。文档可以在这里找到:https://scikit-learn.org/stable/modules/generated/sklearn.metrics.pairwise.nan_euclidean_distances.html

直观地说,“nan-euclidian”距离会在可能的情况下计算标准欧几里德距离(并且在两个观测值都缺失的情况下不计算任何内容),并线性缩放结果以补偿缺失的条目。

【讨论】:

以上是关于knnimpute 是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章

了解sklearn的KNNImputer

R:knnImputation 给出错误

scikit-learn 中的 Multivariate imputer 与 Simple imputer 有何不同?

Matlab:对缺失数据的多重插补

使用KNN进行缺失值填补详解及实践

从技术上讲,可变参数函数是如何工作的? printf 是如何工作的?