KNN算法demo(R)

11 篇文章 0 订阅

KNN算法

###### knn 算法 ##########
######## KNN 在R中使用到的包有“class包”,“gmodels包”“FNN”“rKnn”#####
##### 以iris为例 ##############
library(class)

#####划分数据及,训练集,70%随机抽样######
index=sample(1:nrow(iris),0.7*nrow(iris))
index

table(iris[index,5]) #####分布
train=iris[index,-5]
test=iris[-index,-5]
cltr=iris[index,5]####单独定义类别
clte=iris[-index,5]

##### knn 计算 #######
knn
k=3 #####设定k 值 ######

fit1=knn(train=train,test=test,cl=cltr,k=k)
fit1
summary(fit1)
table(clte,fit1)
accuracy = (18+10+15)/45;accuracy ####准确率
### 模型评估 ###########
####### ROC curve 只能对两分类操作##############

library(pROC)
# 例 数据集aSAH 
data(aSAH);
aSAH
model=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)];d
index = sample(1:nrow(d),0.7*nrow(d));index
table(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=NULL
for(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))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值