我需要从距离矩阵中得到k个最近邻居。例:
我有两个“训练”向量"a" <- c(1,1)
和"b" <- c(2,2)
,它们是二维向量。我必须对c(3,3)
进行分类,因为数字是特征码,distance(2,3) > distance(1,3)
...所以c(3,3)
对于最近邻居有"a"
,因此我没有常规距离。后来我必须推广并输出n个最近邻居,但一次只能用于一个向量。
This最初是最有希望的,但当我调查documentation k.nearest.neighbors
时,我意识到这对我没有帮助。我不能用Python的scikit-learn做到这一点,但对R实现有什么希望,有什么建议吗?
我需要速度,所以如果我要用高级语言实现它,我需要用一些库来实现...我可以很容易地在Python的numpy中编写它,但几乎肯定会太慢。
编辑:
library(FNN)
distance_matrix <- matrix( rep( 0, len=9), nrow = 3)
distance_matrix[1,3] <- 2
distance_matrix[3,1] <- 2
distance_matrix[2,3] <- 3
distance_matrix[3,2] <- 3
train <- rbind(c(1,1), c(2,2)
test <- rbind(c(3,3))
y <- c("one", "two")
fit <- knn(train, test, y, distance_matrix, k=1, prob=TRUE)
result <- data.frame(test, pred=fit, prob=attr(fit, "prob"))
但是,当我查看数据框result
时,我会看到基于欧几里德度量标准或类似内容的结果,而不是我的距离矩阵。