sklearn数据集分割函数[StratifiedShuffleSplit、split]

本文介绍sklearn中StratifiedShuffleSplit模块的使用方法,通过实例演示如何保持训练集和测试集中特征比例的一致性,确保模型评估的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • sklearn.model_selection.StratifiedShuffleSplit(n_splits=10, test_size=’default’, train_size=None, random_state=None)
    将数据集划分为几组数据集/测试集。
  • split(X, y)
    按照y的值将数据集分为训练集或测试集,保证训练集和测试集中各类y值所占的比例与原数据集相同。

考虑一个场景,房屋数据集中认为地区收入在房价中占很重要的作用,想分开的训练集和测试集中各种收入所占的比重与原数据集中所占的比重相同。
代码实现:

    from sklearn.model_selection import StratifiedShuffleSplit
    split = StratifiedShuffleSplit(n_splits=1, test_size=0.2, random_state=42)
    for train_index, test_index in split.split(housing, housing["income_cat"]):
        strat_train_set = housing.loc[train_index]
        strat_test_set = housing.loc[test_index]

通过例子解释一下:
假设housing["income_cat"]=[1,1,1,1,1,2,2,22,2,2,2,2,2,2]也就是4个1,10个2,1所占的比例为1/3,2占的比例为2/3;
则经过split.split(housing, housing["income_cat"])后,strat_train_set [“income_cat”]和strat_test_set[“income_cat”]中1和2,所占的比例相同,分别为1/2,和2/3.也就是说,strat_train_set [“income_cat”]中有4个1,8个2;而strat_test_set[“income_cat”]中有1个1,2个2

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值