用K折交叉验证估计KNN算法中的K值

       前几天用KNN对自己的数据进行了分类,对于KNN中的K值,之前一直是靠缘分来试的,试的时候感觉K=3的效果挺好的。之后看了好多CSDN的博客,发现一般大家除了靠缘分去试K值之外,也会采用交叉验证的方法去近似求得K值,因此我决定自己实现一下,看看有什么效果。

       交叉验证之前老师在将数据挖掘的时候简单的介绍了一下,那时候只记得10折交叉验证,而且并没有去实验,所以早就忘得一干二净。

       K折交叉验证,在matlab中已经集成了函数crossvalind,可以直接调用。

       所谓K折交叉验证(K-foldcross validation),其过程如下:

     (1)  将全部训练集S分成K个不相交的子集,假设S中的训练样例个数为m,那么每一个子集有m/k个训练样例。

     (2)  每次从分好的子集中,选出一个作为测试集,另外k-1个作为训练集。

     (3)  根据训练集得到模型。

     (4)  根据模型对测试集进行测试,得到分类率。

     (5)  计算k次求得的分类率的平均值,作为模型的最终分类率。

     虽然计算过程比较繁琐,但是我觉得还可以,毕竟我的数据不是很多。。。。

datatrain = xlsread('traindata1.xlsx'); %读训练数据
traindata1 = datatrain(:,1:180); %训练样本
trainlabel1 = 
  • 7
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值