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