没有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() 的详细信息。

This cross-validation object is a merge of StratifiedKFold and ShuffleSplit.

这意味着该函数将return随机化、分层、折叠。决定返回给您的折叠数的是 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]

请告诉我这是否是您要找的东西,如果您有任何其他问题,请告诉我。