自定义距离矩阵与KNN

时间:2017-12-31 17:07:53

标签: r machine-learning classification knn

我需要从距离矩阵中得到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时,我会看到基于欧几里德度量标准或类似内容的结果,而不是我的距离矩阵。

0 个答案:

没有答案