没有k折叠的分层抽样

时间:2015-11-09 20:50:07

标签: python machine-learning sampling

我可以使用80%列车20%测试分割的分层抽样 python中的数据?

我已经调查了这个,它是用于kfold分层抽样。 我不确定我是否只是将迭代次数设置为0,因为它是在交叉验证包中实现的,它们至少假设2倍!

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

1 个答案:

答案 0 :(得分:1)

我不能100%确定您的问题到底是什么,所以我们只是查看sklearn.cross_validation.StratifiedShuffleSplit()的详细信息。

  

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

这意味着该函数将返回一个随机的,分层的折叠。决定给你的折叠次数的因素是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]

请告诉我这是您要找的内容,如果您有任何其他问题,请与我们联系。