train_test_split()


参考、摘抄自:https://blog.csdn.net/qq_39355550/article/details/82688014

sklearn中的train_test_split()函数解析_好好学习就改名的博客-CSDN博客

train_test_split作用是交叉验证中常用的函数,功能是从样本中随机的按比例选取train data和testdata,形式为:

X_train,X_test, y_train, y_test =

cross_validation.train_test_split(train_data,train_target,test_size=0.4, random_state=0)

其中:train_data:所要划分的样本特征集

train_target:所要划分的样本结果

test_size:样本占比,如果是整数的话就是样本的数量

以上三个参数大部分人都是清楚的,问题就出现在后面:

random_state 默认值none, 随机数种子

shuffle 默认值True, 表示是否在拆分前打乱数据, 若为False则stratify必须置为none
stratify 默认值none,如果不是none,则以分层方式拆分数据,并将其用作类标签
random_state:
函数将数据集随机拆分成训练集和测试集,如果random_state不设置,则每次运行拆分时得到的训练集和测试集都与上次不相同,导致构建的模型也就不

random_state=0时

a, b = np.arange(8).reshape(4,2), range(4)
X_train,X_test,y_train,y_test = train_test_split(a,b)
print('a:\n{}'.format(a))
print('b:\n{}'.format(b))
print('x_train:\n{}'.format(X_train))
print('x_test:\n{}'.format(X_test))
print('y_train:\n{}'.format(y_train))
print('y_test:\n{}'.format(y_test))

多次运行输出不同
第一次结果

a:
[[0 1]
 [2 3]
 [4 5]
 [6 7]]
b:
range(0, 4)
x_train:
[[4 5]
 [0 1]
 [2 3]]
x_test:
[[6 7]]
y_train:
[2, 0, 1]
y_test:
[3]

第二次

a:
[[0 1]
 [2 3]
 [4 5]
 [6 7]]
b:
range(0, 4)
x_train:
[[2 3]
 [0 1]
 [6 7]]
x_test:
[[4 5]]
y_train:
[1, 0, 3]
y_test:
[2]

设置了random_state=1后,每次运行结果都是一样的:
但是random_state取值大小对训练集和测试集划分的影响还是一个问题?【查找资料看到的说法是不影响,help给的应用案例取值为42】

shuffle:

在划分数据前打乱数据,当数据分布不均衡时,可能会使训练集和测试集也分布不均匀(特殊情况如某一类样本没有被选到)所以需要先对样本集进行打乱。

stratify:

能够保持划分前类的分布,比如选取的测试集和训练集1类样本百分比都为20%和总样本中的占比一致。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值