qq_29417091 2020-02-27 10:53 采纳率: 0%
浏览 428
已结题

从10个人里面随机抽取8个人,跟先将10个人随机排列,再取出前8个人,这两者等价吗?(机器学习hold_out实现)

我要自己实现一个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

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-02-27 10:57
    关注

    这两者完全等价。
    本质上 np.random.shuffle 这个算法就是从原始数组中随机取全部的元素,构成新序列。所以你从10个人里面随机抽取8个人只是做了这个算法的前面一部分而已。

    评论

报告相同问题?

悬赏问题

  • ¥15 用hfss做微带贴片阵列天线的时候分析设置有问题
  • ¥50 我撰写的python爬虫爬不了 要爬的网址有反爬机制
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等