KNN是机器学习中最简单的分类算法之一
就是把每一个测试样本跟训练样本中的每一个样本求他们的欧式距离,然后选出最小的几个,里面哪一个类多 这个测试样本就属于哪一个类
用R语言自带的iris 写了一下
data("iris")
length(iris[,1])
idx = sample(150,100)
train = iris[idx,]
test = iris[-idx,]
trainLabel = train[,"Species"]
testLabel = test[,"Species"]
trainData = train[,c(1:4)]
testData = test[,c(1:4)]
trainData = as.matrix(trainData)
testData = as.matrix(testData)
#testData[1,]
label = c(1:100)
falseaccury = 0;
for ( i in 1:length(testData[,1]) ){
countVi = 0;
countVe = 0;
countSe = 0;
s = matrix(rep(testData[i,],length(trainData[,1])),nrow = length(trainData[,1]),byrow = TRUE)
Diffmatrix = s - trainData
t = apply(Diffmatrix^2,1,sum)
st = data.frame(t,1:length(t))
colnames(st) =c("dist","or")
orderst = st[order(st$dist),]
for(j in 1:1){
temp