我要自己实现一个holdout算法,即等比例地从数据集中抽取一定的样本作为训练集,剩余作为测试集,我的思想是,将样本随机打乱,然后取出前面一部分的样本作为训练集,后面一部分成为测试集,下面是我的代码:
def hold_out(sampleNum_1,sampleNum_2,ratio,seed): #传入样本的总个数
np.random.seed(seed) #设置下标打乱的随机种子
idx_1 = np.arange(0, sampleNum_1)
np.random.shuffle(idx_1)
trainNum_1 = int(sampleNum_1*ratio) #样本总个数*0.8取整数 训练样本数
trainIndex_1 = []
testIndex_1 = []
i = 0
for item in idx_1:
if(i<trainNum_1):
trainIndex_1.append(item)
else:
testIndex_1.append(item)
i = i+1
idx_2 = np.arange(0, sampleNum_2)
np.random.shuffle(idx_2)
trainNum_2 = int(sampleNum_2*ratio) #样本总个数*0.8取整数 训练样本数
trainIndex_2 = []
testIndex_2 = []
i = 0
for item in idx_2:
if(i<trainNum_2):
trainIndex_2.append(item+sampleNum_1)
else:
testIndex_2.append(item+sampleNum_1)
i = i+1
trainIndex = trainIndex_1+trainIndex_2
testIndex = testIndex_1 + testIndex_2
return trainIndex,testIndex