当前位置: 代码网 > it编程>前端脚本>Python > 数据挖掘寻找knn最优近邻个数

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

2024年07月31日 Python 我要评论
数据挖掘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)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com