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

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

在使用 sklearn 进行机器学习建模时,一般需要将数据集分为训练集、验证集和测试集三部分。训练集用于训练模型,验证集用于调参和评估模型的性能,测试集用于最终评估模型的泛化性能。sklearn 提供了多种用于分割数据集函数和类,包括 train_test_splitStratifiedShuffleSplit、KFold 等。 下面以 train_test_split 为例,介绍如何使用 sklearn 分割训练集、验证集和测试集。 首先,导入需要的库和数据集: ```python from sklearn.model_selection import train_test_split from sklearn.datasets import load_iris iris = load_iris() X, y = iris.data, iris.target ``` 然后,调用 train_test_split 函数进行分割,指定参数 test_size 和 random_state: ```python X_trainval, X_test, y_trainval, y_test = train_test_split(X, y, test_size=0.2, random_state=42) ``` 这里将数据集分成了训练集 + 验证集和测试集两部分,其中训练集 + 验证集占原始数据集的 80%,测试集占 20%。random_state 参数用于设置随机种子,确保每次运行代码得到的分割结果一致。 接着,再将训练集 + 验证集分成训练集和验证集两部分: ```python X_train, X_val, y_train, y_val = train_test_split(X_trainval, y_trainval, test_size=0.25, random_state=42) ``` 这里将训练集 + 验证集再次分成了训练集和验证集,其中训练集占训练集 + 验证集的 75%,验证集占 25%。 最后,可以查看数据集的大小: ```python print("训练集大小:", X_train.shape[0]) print("验证集大小:", X_val.shape[0]) print("测试集大小:", X_test.shape[0]) ``` 输出结果为: ``` 训练集大小: 90 验证集大小: 30 测试集大小: 30 ``` 这样就完成了 sklearn 分割训练集、验证集和测试集的操作。
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值