knn的r实现

knn的r实现:使用r自带iris数据

数据的前期准备:

#iris即鸢尾花数据集,有5个属性,前4个是花瓣与花萼的长度,第5个属性是花的类别,有3个类别
names(iris)
summary(iris[,1:4])
class(iris$Species) #类别标签是因子类型,符合要求
iris_n<-as.data.frame(lapply(iris[1:4],scale)) #将数据除类别标签以外的各属性进行标准化
testindex<-sample(1:150,30) #抽取30个样本(总样本数的20%)的数据作为测试集
#因为iris数据集中属于3个类别的样本数相等,故不需分层抽样,简单随机抽样即可
iris_train<-iris_n[-testindex,]
iris_test<-iris_n[testindex,] #将数据划分为训练集和测试集
iris_train_label<-iris[-testindex,5]
iris_test_label<-iris[testindex,5] 
#把类别标签保存为两个向量备用

使用class包中的knn进行分类:

library(class) #加载class包以使用knn分类
iris_test_pred<-knn(train=iris_train,test=iris_test,cl=iris_train_label,k=12)
#用knn函数进行分类,train和test分别接收无标签的训练集和测试集,cl接收训练集的标签,参数k设定为样本量的平方根约等于12
table(iris_test_label,iris_test_pred) #制作表格来观察分类结果

结果:

iris_test_pred
iris_test_labelsetosaversicolorvirginica
setosa1100
versicolor090
virginica0010
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值