如何将datasets.IMDB中train_data完备划分为10份数据,10份数据互不重复

简介: 在这段代码中,首先使用list()函数将range对象test_indices转换为列表,然后使用random.shuffle方法将其随机打乱顺序。接下来,使用KFold方法将test_indices划分为K个互不重叠的子集,每个子集包含相同数量的索引。接着,使用这些索引从test_data.examples中选择相应的examples,并将其作为新的子集添加到test_subsets列表中。最终,test_subsets列表中将包含10个不重叠的测试集子集。
from torchtext.legacy import data, datasets
TEXT = data.Field(tokenize='spacy')
LABEL = data.LabelField(dtype=torch.float)
train_data, test_data = datasets.IMDB.splits(TEXT, LABEL)

------------------如何将train_data完备划分为10份数据,10份数据互不重复


如果要先将数据集打乱,再划分为10个数据集,可以先对test_data.examples随机打乱顺序,然后再进行KFold划分。

import random
test_indices = range(len(test_data.examples))
random.shuffle(test_indices)
k = 10
kfold = KFold(n_splits=k)
test_subsets = []
for _, test_idx in kfold.split(test_indices):
    test_subset = data.Dataset([test_data.examples[i] for i in test_idx], fields=[('text', TEXT), ('label', LABEL)])
    test_subsets.append(test_subset)

在这段代码中,首先使用random.shuffle方法将test_indices随机打乱顺序,然后使用KFold方法将test_indices划分为K个互不重叠的子集,每个子集包含相同数量的索引。接下来,使用这些索引从test_data.examples中选择相应的examples,并将其作为新的子集添加到test_subsets列表中。最终,test_subsets列表中将包含10个不重叠的测试集子集。


-------------------上面代码报错:TypeError: 'range' object does not support item assignment


因为range对象不支持直接修改索引,而只有列表或其他可变序列支持此操作。因此,我们需要将test_indices从range对象转换为列表,然后在对其进行打乱顺序和切片操作。下面是修改后的代码:


import random
test_indices = list(range(len(test_data.examples)))
random.shuffle(test_indices)
k = 10
kfold = KFold(n_splits=k)
test_subsets = []
for _, test_idx in kfold.split(test_indices):
    test_subset = data.Dataset([test_data.examples[i] for i in test_idx], fields=[('text', TEXT), ('label', LABEL)])
    test_subsets.append(test_subset)

在这段代码中,首先使用list()函数将range对象test_indices转换为列表,然后使用random.shuffle方法将其随机打乱顺序。接下来,使用KFold方法将test_indices划分为K个互不重叠的子集,每个子集包含相同数量的索引。接着,使用这些索引从test_data.examples中选择相应的examples,并将其作为新的子集添加到test_subsets列表中。最终,test_subsets列表中将包含10个不重叠的测试集子集。

相关文章
使用python将数据集划分为训练集、验证集和测试集
使用python将数据集划分为训练集、验证集和测试集
|
5月前
|
机器学习/深度学习 人工智能 前端开发
如何正确拆分数据集?常见的三种方法总结
如何正确拆分数据集?常见的三种方法总结
|
5月前
|
机器学习/深度学习 JavaScript 前端开发
深度学习必备:对数据集的拆分、根据拆分图片拆分labels、对全部标注标签进行区间检查
使用JavaScript代码或浏览器扩展可以一次性在浏览器中打开多个相同的标签页。
|
6月前
|
分布式计算 自然语言处理 MaxCompute
构建NLP 开发问题之如何在数据加载框架中实现从两个ODPS表中分别读取正样本和负样本,并在batch内以1:1的方式混合
构建NLP 开发问题之如何在数据加载框架中实现从两个ODPS表中分别读取正样本和负样本,并在batch内以1:1的方式混合
|
8月前
|
SQL 存储 开发框架
C# DataSet结合FlyTreeView显示树状模型数据
C# DataSet结合FlyTreeView显示树状模型数据
|
8月前
|
数据挖掘
SPSS两独立样本t检验
SPSS两独立样本t检验
180 0
|
数据可视化 Python
不同的batch_size对训练集和验证集的影响
不同的batch_size对训练集和验证集的影响
275 0
|
PyTorch 算法框架/工具
如何将x_data和y_data利用torch转换成小批量数据,并要求打乱数据,以及将数据标准化或者归一化,如何处理?
以上代码中,在定义预处理操作transform时,只在Normalize函数的第一个参数中传入x_data的均值和标准差,而在第二个参数中传入空元组,表示不对y_data进行标准化。 接着,将标准化后的x_data和原始的y_data转换为张量格式,并将它们合并为一个TensorDataset对象。最后,定义dataloader对象,设置batch_size和shuffle参数,并使用上述数据集对象作为输入数据。
330 0
|
机器学习/深度学习 算法 数据可视化
机器学习避坑指南:训练集/测试集分布一致性检查
机器学习避坑指南:训练集/测试集分布一致性检查
机器学习避坑指南:训练集/测试集分布一致性检查
|
机器学习/深度学习 PyTorch Serverless
假设测试数据集test_data为随机生成的,并设置小批次。model神经网络已经训练好了,怎么用MSE来做测试
其中,model表示已经训练好的PyTorch模型,torch.rand()函数用于生成测试数据集,torch.split()函数用于将测试数据集分成小批次,model(batch)用于对小批次的输入数据进行预测,torch.cat()函数用于将所有小批次的预测值拼接在一起,最后使用mean_squared_error()函数计算均方误差。注意,在计算均方误差之前,需要将测试数据集和预测值转换为NumPy数组并将它们从GPU中移动到CPU上。
171 0