簡體   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