代码详解:用Python构建邻域矩阵( 十 )

#array([0 1 2 3 4 5 6 7 8 9 10 11
)

然后行索引i_index 对应测试样本中的索引 , 但需要重复K次以匹配j_index 排序:

i_index = np.repeat(np.array(range(M) dtype=int) repeats=K axis=0).ravel()

#array([0 0 0 1 1 1 2 2 2 3 3 3
)

这意味着在第一行(行索引0)的0、1和2列将有一个索引 。 在第二行(1)的第3、4、5列中会有一个索引……如果你再次查看测试/训练样本位置(第一个图) , 结果是一致的!

我们假设所有值为“1”:

values = np.ones(M * K) # M = number of test sample K = number of neighbours

或者用取决于距离的函数表示 , 例如:

values = 1. / distances.flatten()**2

最后 , 我们的矩阵看起来像(值为“1”):

matrix = sparse.coo_matrix((values (i_index j_index)) shape=(M N))

推荐阅读