将数据集随机7:2:1分

#训练集
train_file = open(train_path,"w")
#验证集
val_file = open(val_path,"w")
#测试集
test_file = open(test_path,"w")
#注释集
anno = open(annotation_path, 'r')
result = []
#存放注释集中的数据
my_dict = {}
#存放注释集中的数据的个数
cnt = 0
for line in anno:
   my_dict[cnt]=line
   cnt+=1
totalnum = cnt
#7:2:1分
train_num = int(totalnum * 0.7)
val_num = int(totalnum * 0.2)
test_num = totalnum-train_num-val_num
#生成不重复的集合
test_set = set()
val_set = set()
train_set = set()
#随即分类
while(len(test_set) < test_num):
     x = random.randint(0,totalnum)
     if x not in test_set :
        test_set.add(x)
 
while(len(val_set) < val_num):
     x = random.randint(0,totalnum)
     if x in test_set :
        continue
     if x not in val_set :
        val_set.add(x)
		
for x in range(totalnum):
     if x in test_set or x in val_set:
        continue
     else:
        train_set.add(x)

index = 0		
for i in range(cnt):
     strs = my_dict[i]
     if i in train_set:
        train_file.write(strs)
     elif i in val_set:
        val_file.write(strs)
     else:
        test_file.write(strs)
     index+=1

train_file.close
val_file.close
test_file.close

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了将数据随机7:3组,我们可以采用如下步骤: 1. 首先,我们需要将数据集随机化,可以通过R中的函数sample()来实现。sample()函数可以从向量、数据框或矩阵中抽取指定数量的随机元素,并可以设置是否有放回地抽取。 2. 接着,我们需要计算将数据集为7:3所需的割点。可以通过nrow()或length()函数来获取数据集合的行数或长度,然后根据7:3的比例计算割点。 3. 然后,我们可以使用R中的函数split()来将随机化后的数据集割为两个子集。split()函数可以将一个向量、数据框或矩阵按照指定的割点割为若干个子集,并返回一个列表。 4. 最后,我们可以将割后的两个子集别存储到两个变量中,以便进一步的处理。 下面是一个示例代码: # 生成一个长度为10的向量作为数据集合 data <- 1:10 # 随机数据集合 set.seed(123) # 设置随机种子以确保结果可复现 data_random <- sample(data) # 计算割点 split_point <- round(length(data_random) * 0.7) # 数据集合 data_train <- split(data_random, 1:split_point) data_test <- split(data_random, (split_point+1):length(data_random)) 在这个示例代码中,我们首先生成一个长度为10的向量作为数据集合,然后使用set.seed()函数设置随机种子,以便确保在不同的运行中得到的随机结果是一致的。接着,我们使用sample()函数随机数据集合,然后通过计算割点将数据集割为7:3的两个子集。最后,我们将两个子集别存储到data_train和data_test变量中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值