[英]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.