数据量小时的test one交叉验证
在进行回归预测时,交叉验证时必不可少的,本次实践之前,我对交叉验证是一个模糊的状态,那么就记录一下本次实验对交叉验证的理解。
此为数据集较小时的交叉验证,standar_data为标准化后的特征,具体实现的话,可以看看这篇:
sklearn中的归一化,标准化以及返回
具体代码如下:(y_data是真实值,也就是标签)
1 | #!/usr/bin/env python |
数据量较大的交叉验证
1 | #sample_step表示一个模型测试集的样本数量 |
理解与总结
可以说,交叉验证的在数据量小时这种只预测一个的操作特别典型,先想一想为啥交叉验证,因为数据量小,换种说法就是不够全面,带有特殊性。那么我们想想如果不交叉验证,假设你训练0.8,测试0.2,然后自己循环5次10次,结果的预测值误差mse来个均值,但是数据量小,而且要求预测全部数据。那么交叉验证的作用就体现出来了。
做法:(以数据量为300样本为例)
我们需要训练300个模型,
具体是预测第一个样本的话,用后299个样本训练模型,,,,
预测第二个样本的话,用其他299个样本训练模型,,,,
……
预测最后一个样本,用前299个样本训练模型,,,
结论:
这样,我们会发现测试集对于那个模型来说是未知的,类比来做练习题和考试题,也就是相当于测试集有了考试题的未知性,这样这么多模型训练出来的300个预测结果,泛化(预测未知)能力就较强了。
-------------本文结束感谢您的阅读-------------