数据挖掘寻找knn最优近邻个数

1.载入相关包

library("class")
#install.packages("kknn")
library(kknn)
library(rpart)
library(rpart.plot)
library(skimr)
library(pROC)
library(caret)

 

2.生成数据

set.seed(2022)
x1<-runif(60,min=-1,max=1)
x1
x2<-runif(60,min=-1,max=1)
x2
y<-sample(c(0,1),size=60,replace=TRUE,prob=c(0.3,0.7))
y
plot(density(y,from=-1,to=2))
knndata<-data.frame(x1,x2,y)
sampleid<-sample(x=1:60,size=18)
sampleid
-sampleid
datatest<-knndata[sampleid,]#十分之三的样本进入测试集
datatrain<-knndata[-sampleid,]#十分之七的样本进入训练集,训练集用来生成模型
summary(datatrain)
skim(datatrain)


3、绘制散点图

plot(x1,y,col="blue")
par(new=TRUE)
plot(x2,y,col="green")
par(mfrow=c(1,2))#mfrow表示几行几列作图
plot(knndata[,1:2],pch=knndata[,3]+1,cex=0.8,xlab="x1",ylab="x2",main="全部样本")
plot(datatrain[,1:2],pch=datatrain[,3]+1,cex=0.8,xlab="x1",ylab="x2",main="训练样本和测试样本")
points(datatest[,1:2],pch=datatest[,3]+16,cex=0.8,col="red")

 
4、全样本错判率
errratio<-vector()
for(i in 1:30){
  knnfit<-knn(train=knndata[,1:2],test=knndata[,1:2],
              cl=knndata[,3],k=i)
  CT<-table(knndata[,3],knnfit)
  errratio<-c(errratio,(1-sum(diag(CT))/sum(CT))*100)}#样本错判率
errratio
par(mfrow=c(1,1))
plot(1:30,errratio,lty=2,col="red",type="l",xlab="全样本近邻个数K",
     ylab=&#

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值