KNN算法demo(R)

来源:互联网 发布:淘宝客网站要备案吗 编辑:程序博客网 时间:2024/05/22 05:58

KNN算法

###### knn 算法 ################## KNN 在R中使用到的包有“class包”,“gmodels包”“FNN”“rKnn”########## 以iris为例 ##############library(class)#####划分数据及,训练集,70%随机抽样######index=sample(1:nrow(iris),0.7*nrow(iris))indextable(iris[index,5]) #####分布train=iris[index,-5]test=iris[-index,-5]cltr=iris[index,5]####单独定义类别clte=iris[-index,5]##### knn 计算 #######knnk=3 #####设定k 值 ######fit1=knn(train=train,test=test,cl=cltr,k=k)fit1summary(fit1)table(clte,fit1)accuracy = (18+10+15)/45;accuracy ####准确率### 模型评估 ################## ROC curve 只能对两分类操作##############library(pROC)# 例 数据集aSAH data(aSAH);aSAHmodel=roc(aSAH$outcome, aSAH$s100b,   levels=c("Good", "Poor"))plot.roc(aSAH$outcome, aSAH$s100b)plot(model, print.auc=TRUE, auc.polygon=TRUE, grid=c(0.1, 0.2),     grid.col=c("green", "red"), max.auc.polygon=TRUE,     auc.polygon.col="skyblue", print.thres=TRUE)#########练习#########d = aSAH[,c(2,4:7)];dindex = sample(1:nrow(d),0.7*nrow(d));indextable(d[index,5])########## leave-one out cross validation #######data(iris3)train <- rbind(iris3[,,1], iris3[,,2], iris3[,,3])cl <- factor(c(rep("s",50), rep("c",50), rep("v",50)))knn.cv(train, cl, k = 3, prob = TRUE)attributes(.Last.value)##########k值取值k=seq(1,9,by=2)acc=NULLfor(i in 1:length(k)){  fit=knn(train=train,test,cltr,k=k[i])  A=as.matrix(table(fit,clte))  s=0  for(j in 1:nrow(A))  {s=s+A[j,j]}  acc[i]=s/sum(A)}plot(k,acc,type="l",ylim=c(0,1))