繁体   English   中英

无k折的分层抽样

[英]stratified sampling without k fold

我可以使用80%训练20%测试在python中拆分数据的分层抽样吗?

我已经研究过了,它是用于kfold分层抽样的。 我不确定是否只需将0设置为迭代次数即可,因为它是在交叉验证包中实现的,并且它们假定至少2折!

StratifiedShuffleSplit(labels=[0 0 1 1], n_iter=3, ...)

我不确定100%确切地是您的问题是什么,所以让我们仅查看sklearn.cross_validation.StratifiedShuffleSplit()的详细信息。

此交叉验证对象是StratifiedKFold和ShuffleSplit的合并。

这意味着该函数将返回随机,分层的折叠。 n_iter参数决定了折返给您的n_iter数。 如果将其设置为0,则函数响应中将不会收到任何信息。

并非所有的折叠都是唯一的。


要回答我认为您的问题, 我可以在80%的训练中使用分层采样20%的测试在python中拆分数据吗?

是的,让我们看一下示例代码。 通过将test_size参数设置为0.2(20%),您将强制折叠进行80%的训练和20%的测试。

import numpy as np
from sklearn.cross_validation import StratifiedShuffleSplit
X = np.array([[1, 1], [2, 2], [3, 3], [4, 4], [5,5], [6,6], [7,7], [8,8], [9,9], [10,10]])
y = np.array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1])
sss = StratifiedShuffleSplit(y, 1, test_size=0.2, random_state=0)

for train_index, test_index in sss:
    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]

>>> TRAIN: [0 6 3 9 2 5 1 7] TEST: [4 8]

如果这是您想要的,请告诉我,如果还有其他问题,请告诉我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM