iris1<-iris set.seed(1234)
library(caret) ind <- createDataPartition(iris1$Species,times=1,p=0.5,list=F) traindata <-iris1[ind,] #构建训练集 testdata <- iris1[-ind,] #构建测试集
library(class) a=knn(traindata[,1:4],testdata[,1:4],traindata[,5],k=6) #指定k值为3 a[1];a[75] # 查看第一条和最后一条测试数据的预测结果
ceshi <- function(n=1,k=3){
x <- (traindata[,1:4]-testdata[rep(n,75),1:4])^2 traindata$dist1 <- apply(x,1,function(x) sqrt(sum(x)))
mydata <- traindata[order(traindata$dist1)[1:k],5:6]
result <- data.frame(sort(table(mydata$Species),decreasing = T))
return(result[1,1]) } ceshi() # 第一个样本的预测结果 ceshi(n=75) # 最后一个样本的预测结果