由于出现类似鸢尾花数据集这种分段数据可能简单的交叉验证无法适用,所以这里引用了分层K折交叉验证。在分层交叉验证中,我们划分数据,使得每个折中类别之间的比例整数与数据集中的比例相同,如下图所示:
mglearn.plots.plot_stratified_cross_validation()
![606c3f2a2fa661bf4f04a75a774368bb.png](https://i-blog.csdnimg.cn/blog_migrate/2638969c8bcad25c71fe239592bd7202.jpeg)
当数据按照类别标签排序时,标准交叉验证和分成交叉验证的对比
适用分层交叉验证可以使得具有明显分成的数据集在分成的时候各层数据在各个模型中都存在,适用分成K折交叉验证来验证一个分类器,通常要比交叉验证的效果要好,因为它可以对泛化性能做出更加可靠的评估(使用简单的k折交叉验证是,有可能某个折中只有样本A而无样本B,从而使得该模块的精度预测为0)。
对于回归问题,scikit-learn默认使用标准k折交叉验证,也可以尝试让每个折表示回归的目标的不同取值,但并不是一种常用的策略,也会让大多数用户感到意外。
对交叉验证的更多控制:我们之前看到,可以利用cv来参数来调节cross_val_score所使用的折数,但scikit-learn允许提供一个交叉验证分类器(cross_validation spliter)作为cv参数,来对数据划分过程做更加精细的控制。对于大多数使用场景而言,回归问题默认的k折交叉验证与分类问题的分层k折交叉验证的表