【发布时间】:2014-05-14 11:55:42
【问题描述】:
您好,当我尝试在代码中实现 K 最近邻算法时,我无法理解它的工作原理。我正在 R 中实现它,但只是想知道它的工作原理,我不太担心代码,而是担心过程。我将发布我所拥有的、我的数据以及我的问题:
Training Data (just a portion of it):
Feature1 | Feature2 | Class
2 | 2 | A
1 | 4 | A
3 | 10 | B
12 | 100 | B
5 | 5 | A
到目前为止,在我的代码中:
kNN <- function(trainingData, sampleToBeClassified){
#file input
train <- read.table(trainingData,sep=",",header=TRUE)
#get the data as a matrix (every column but the class column)
labels <- as.matrix(train[,ncol(train)])
#get the classes (just the class column)
features <- as.matrix(train[,1:(ncol(train)-1)])
}
为此,我正在使用以下公式计算“距离”:
distance <- function(x1,x2) {
return(sqrt(sum((x1 - x2) ^ 2)))
}
那么算法其余部分的流程如下:?
1.遍历每个数据(在这种情况下,每行代表 2 列)并一次计算与一个数字的距离,并将其与 sampleToBeClassified 进行比较?
2.在我想要 1 个最近邻分类的起始情况下,我是否只存储与我的 sampleToBeClassified 距离最短的变量?
3.无论最近的距离变量是什么,找出它是什么类,那么那个类就成为sampleToBeClassified的类?
我的主要问题是这些功能在其中扮演什么角色?我的直觉是这两个特征一起将数据项定义为某个类,那么我应该计算什么之间的距离?
我是否走在正确的轨道上? 谢谢
【问题讨论】:
标签: r algorithm data-mining knn