什么是留一交叉验证以及如何用python编码实现
来源:互联网 发布:webzip软件 编辑:程序博客网 时间:2024/05/29 16:14
什么是留一交叉验证以及如何用python编码实现
当我们在进行编写PLS(偏最小二乘)程序,用近红外光谱做回归等一类算法时,时常会涉及最佳主成分的选取。所谓最佳就存在一个比较。这时就会用到交叉验证,交叉验证有许多种,今天就简单说一下留一交叉验证(仅自己的理解,不一定十分正确)。
留一交叉验证:
就是将样本集中的样本每次抽取一个不同的样本作为测试集,剩余的样本作为训练集。需要进行原样本个数次抽取,以进行后续的操作。假设一个.mat文件有310个样本,那么每次抽取一个不同的样本做测试,剩余的299个样本做训练。需要进行310次这样的过程,但是每次选取的做测试的样本是不同的,那么每次训练集的样本也是不同的。由于留一交叉验证的操作的次数十分多,这样选取出来的主成分更具普遍性,可以避免一些不必要的波动,避免一些数据分析时出现有时效果好,有时效果差,这样摇摆不定的情况。因此广受青睐,但是留一交叉验证也有其弊端,样本过多运算时间过长。
下面就来说一下留一交叉验证Python代码的实现。
下面这个是系统自带的留一交叉验证最简单的举例。
以下是其输出结果:
以下是我对留一交叉验证关于读取.mat这类数据量比较庞大的文件并输出每次的训练、集测试集的的一个小程序:
(由于.mat文件的样本比较多(经常是几十至百个),维度也比较高(一般超过一百个特征)。所以我们在这里只用4个样本做一个示例:X选取了4个样本5个特征,y是只有一列)
下面是留一交叉验证每次操作时输出的训练集和测试集:
可以看出每次的X_test和X_train都是不一样的。
0 0
- 什么是留一交叉验证以及如何用python编码实现
- 如何用Python实现常见机器学习算法(一)
- 如何用编码实现文件下载
- 如何用ASP.NET实现验证码
- [转]在ASP.NET中如何用C#.NET实现基于表单的验证(一)
- 如何用Python实现八大排序算法
- 如何用Python实现八大排序算法
- 如何用Python实现目录遍历
- 如何用 Python 实现 Web 抓取?
- 如何用 Python 实现 Web 抓取?
- 如何用python实现一个多线程定时器
- Linux 我常用的命令 以及如何用python实现这些命令
- CRC32算法学习笔记以及如何用java实现(一)
- CRC32算法学习笔记以及如何用java实现(一)
- CRC32算法学习笔记以及如何用java实现(一)
- 如何用W7100A实现DDNS客户端(一)
- 如何用W7100A实现HTTP服务器(一)
- 如何用Python中的chardet去检测字符编码类型
- C结构体
- 排序总结
- 结构体、共用体、枚举
- 《操作系统常考知识点总结》
- 1_Hello Ubuntu
- 什么是留一交叉验证以及如何用python编码实现
- 《操作系统面试题》
- 浅拷贝和深拷贝
- 《操作系统试题库(整理)》
- C 语言程序设计实践 7.1 转置
- 我的当前心态与未来展望
- C 语言程序设计实践 7.2 计算器
- 《计算机操作系统笔试面试题及答案》
- 《(自己整理)操作系统常见面试题》