R,在矩阵中创建K-最近邻居权重

时间:2016-03-22 20:01:44

标签: r knn

我有一个2列数据框,对应于500个地理参考观测样本的 X Y 笛卡尔坐标。 我想生成一个权重矩阵 W ,其中每个元素等于:
* 1 如果观察 j k-最近邻居之一观察 i ,和 * 0 if else
假设我们有这个数据框:

    df=as.data.frame(cbind(x=rnorm(500), y=rnorm(500)))  

假设 k = 20 ,那么如何用R创建这个矩阵?

1 个答案:

答案 0 :(得分:0)

使用CRAN的var all_replies = $('#post_' + post_id) .find('.post-comment-replies > :has(.post-comment-reply)'); 包...假设您的距离矩阵为FastKNN,如下所示:

5 * 5

所以我的library(FastKNN) df <- as.data.frame(cbind(x = rnorm(5), y=rnorm(5))) dist_mat <- as.matrix(dist(df, method = "euclidean", upper = TRUE, diag=TRUE)) ## Let's say k = 2... k <- 2 nrst <- lapply(1:nrow(dist_mat), function(i) k.nearest.neighbors(i, dist_mat, k = k)) ## Build w w <- matrix(nrow = dim(dist_mat), ncol=dim(dist_mat)) ## all NA right now w[is.na(w)] <- 0 ## populate with 0 for(i in 1:length(nrst)) for(j in nrst[[i]]) w[i,j] = 1 看起来像这样:

df

我的> df x y 1 -0.2109351 -0.315256132 2 0.5172415 0.003352551 3 1.5700413 -0.737475081 4 -0.2699282 -0.198414683 5 1.3997493 -0.241382737 最终看起来像这样:

w