第一步,不重复抽样将原始数据随机分为 k 份。
第二步,每一次挑选其中 1 份作为测试集,剩余 k-1 份作为训练集用于模型训练。
第三步,重复第二步 k 次,这样每个子集都有一次机会作为测试集,其余机会作为训练集。 在每个训练集上训练后得到一个模型, 用这个模型在相应的测试集上测试,计算并保存模型的评估指标,
第四步,计算 k 组测试结果的平均值作为模型精度的估计,并作为当前 k 折交叉验证下模型的性能指标。
也可以专门留出测试集(不参与K折),而K折过程用于模型调优
scikit-learn中计算交叉验证的函数:
cross_val_score:得到K折验证中每一折的得分,K个得分取平均值就是模型的平均性能
cross_val_predict:得到经过K折交叉验证计算得到的每个训练验证的输出预测
在最新的版本sklearn 0.21中cross_val_score与cross_validate被统一,cross_val_score仅仅为调用cross_validate返回字典的结果。
cross_val_score计算得到的平均性能可以作为模型的泛化性能参考
cross_val_predict计算得到的样本预测输出不能作为模型的泛化性能参考