0
我有兩個數據集:X和y。我想將它們分成訓練集和測試集。我想保留他們的數據序列(不隨機洗牌)。以下面的代碼爲例。 X有10行(y是相同的)。我想要的結果是X_train約佔總行數的2/3,而x_test約佔總行數的1/3。最重要的是,X_train不應該只是0到6行,而應該從0到9儘可能均勻地選擇行。這同樣適用於X_test。Python3,分佈式數據集均勻分佈,無需洗牌
import numpy as np
X = np.arange(50).reshape(10,5)
y = np.arange(10)
test_size = 0.33
n_total = X.shape[0] # total number of rows
n_train = int(test_size*n_total)
# The following is bad example, since X_train picks rows from 0 to 6.
X_train, X_test = X[:n_train], X_test[n_train:]
# Wanted result: X_train and X_test are distributed across the total rows, as evenly as possible.
X_train = X[0], X[2], X[3], X[4], X[6], X[7], X[8]
X_test = X[1], X[5], X[9]
你能幫我嗎?謝謝
感謝您的回答。但它並沒有完全解決我的問題。我也希望測試數據集均勻分佈。在你的建議中,我可能會得到'[6,8,7,0,4,9,1,5,2,3]'。然後,如果我選擇最後三個元素作爲我的測試集,'[5,2,3]'。這三個值都在0到5之間,不均勻分佈。一個理想的結果是'[1,5,9]'。 – aura