R语言KNN分类问题(kknn/class包在iris数据集上的实例)

调用iris数据集,并划分训练集测试集

library(datasets)
library(class)
n<-dim(iris)[1] #样本数
p<-dim(iris)[2]-1 #特征数
index<-sample(1:n,round(0.8*n)) #取80%的样本为训练集,20%样本为测试集

1.kknn包

library(kknn)
train<-iris[index,]
test<-iris[-index,]

#测试集上的预测
pre_test<-kknn(Species~.,train, test)
fit_test<- fitted(pre_test) #分类结果
t<-table(test$Species, fit_test)
accu_test<-sum(diag(t))/sum(t) #测试集准确率

#训练集上的预测
pre_train<-kknn(Species~.,train, train)
fit_train <- fitted(pre_train) #分类结果
t<-table(train$Species, fit_train)
accu_train<-sum(diag(t))/sum(t) #训练集准确率

2.class包

train<-iris[index,-5]
test<-iris[-index,-5]
cl<-iris[index,5]#设置类别变量
k<-7#以最近的几个点来投票

#测试集上的预测
pre_test<-knn(train=train,test=test,cl=cl,k=k,pro=T) #分类结果
t<-table(iris[-index,5],pre_test)
accu_test<-sum(diag(t))/sum(t) #测试集准确率

#训练集上的预测
pre_train<-knn(train=train,test=train,cl=cl,k=k,pro=T) #分类结果
t<-table(iris[index,5],pre_train)
accu_train<-sum(diag(t))/sum(t) #训练集准确率
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值