StratifiedShuffleSplit 分层抽样

分层随机分割交叉验证器可以将数据分割为训练集和测试集,不过它只提供训练集/测试集数据在原始数据集中的位置索引。由该类生成的交叉验证对象融合了StratifiedKFold和ShuffleSplit两个函数的功能,该对象返回分层随机折,对像通过对每一类保留一定比例的样本生成折。注意:同随机分割一样,分层随机分割不保证所有折都是不同的,即使对于大数据集也不例外。

原型为:

class sklearn.model_selection.StratifiedShuffleSplit(n_splits=10, test_size=’default’, train_size=None, random_state=None)
  • 官方文档
  • n_splits:整数,默认值为10。重新打乱分割的迭代次数;
  • test_size:浮点数,None。分割后的测试集大小,默认为浮点数0.1(train_size没有被设置,否则为训练集大小的补集)
    • 如果为浮点数,取值范围在0.0到1.0之间,表示分割后的测试集占总数据集的比例;
    • 如果为整数,表示分割后的测试集含有的绝对样本数;
    • 如果为None,分割后的测试集大小为训练集大小的补集;
  • train_size:浮点数,整数或None。默认为None;
    • 如果为浮点数,取值范围在0.0到1.0之间,表示分割后的训练集占总数据集的比例;
    • 如果为整数,表示分割后的训练集含有的绝对样本数;
    • 如果为None,分割后的训练集大小为测试集大小的补集
  • random_state:一个整数或者一个RandomState实例,或者None;
    • 如果为整数,则它指定随机数生成器的种子;
    • 如果为RandomState实例,则指定随机数生成器;
    • 如果为None,则使用默认的随机数生成器np.random
  • groups:没有用,仅为兼容性保留

注意:随机交叉验证分割起每次调用split方法都可能会返回不同的分割结果,可以通过将参数random_state设置为一个整数使结果保持不变;

from sklearn.model_selection import StratifiedShuffleSplit
import numpy as np
X = np.array([[1, 2], [3, 4], [1, 2], [3, 4],
              [1, 2],[3, 4], [1, 2], [3, 4]])#训练数据集8*2
y = np.array([0, 0, 1, 1,0,0,1,1])#类别数据集8*1

ss=StratifiedShuffleSplit(n_splits=5,test_size=0.25,train_size=0.75,random_state=0)#分成5组,测试比例为0.25,训练比例是0.75

for train_index, test_index in ss.split(X, y):
   print("TRAIN:", train_index, "TEST:", test_index)#获得索引值
   X_train, X_test = X[train_index], X[test_index]#训练集对应的值
   y_train, y_test = y[train_index], y[test_index]#类别集对应的值

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值