摄于 2017年4月21日 台湾垦丁船帆石海滩
前言
这两天本来打算开始写朴素贝叶斯分类器的算法的,由于上一篇博文python实现贝叶斯推断——垃圾邮件分类在实现时,在数据划分训练集和测试集的时候遇到两个问题,第一是数据量太少,只有50条数据,解决方法就是扩大数据量咯。第二个,也是今天写这篇博文的目的,就是在训练的时候,我先把数据文件进行随机乱序,然后抽取了乱序后前10个数据文件,这个目的实际上就是为了随机从中抽取10个数据文件作为测试集,剩下的40个数据文件作为训练集。这种方法在机器学习的数据准备过程中是非常常见的。但是,为了能够更好的测试模型,尽可能的排除外在因素的干扰,消除偏好,同时获得最好的精度,所以这里则引入交叉验证(Cross-Validation),而交叉验证的次数一般取10次,所以一般也叫十次交叉验证。从stackoverflow上找到一张图,一看即明,原图网站。
算法思路
如果数据量为10的倍数,则分离数据是非常方便的,即直接均分十份,依次轮流存入test和train两个文件夹中。
但是如果不是10的倍数呢?
思路如下:
1.获取数据数量,余除10,获得余数,例如现在有24个数据文件,24%10=4
2.根据余数拆分数据,即将数据拆分成20和4两份。
3.将拆分数据后能够整除10的一份均分十份,即将数据量为