我正在阅读相关文档,这里写道:
使用来自训练集中n_neighbors个最近邻居的均值填充每个样本的缺失值。如果两个样本没有缺失的特征相似,则它们是相似的。
现在,我在尝试用一个玩具数据集进行实验。
>>>X = [[1, 2, nan], [3, 4, 3], [nan, 6, 5], [8, 8, 7]]
>>>X
[[ 1., 2., nan],
[ 3., 4., 3.],
[nan, 6., 5.],
[ 8., 8., 7.]]
我们可以按照以下方式创建一个KNNImputer:
imputer = KNNImputer(n_neighbors=2)
问题是:当两列中存在nan时,它如何填充nan?例如,如果要填充第一行第三列的nan,它会选择哪些特征最接近,因为其中一行第一列也有nan?当我执行“imputer.fit_transform(X)”时,它会给我返回结果。
array([[1. , 2. , 4. ],
[3. , 4. , 3. ],
[5.5, 6. , 5. ],
[8. , 8. , 7. ]])
这意味着填充第1行中的
nan
,最近的邻居是第二行和第三行。它如何计算第一行和第三行之间的欧几里得距离?
process_chunk
中所看到的那样。因此,由于第一行中的nan位于左侧,它已经被插补了,因此如果我没有遗漏什么,应该考虑新值。@arghhjayy - yatu