如何将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个不重叠的测试集子集。

相关文章
|
9月前
|
Python
使用python将数据集划分为训练集、验证集和测试集
使用python将数据集划分为训练集、验证集和测试集
|
24天前
|
数据可视化
股票收益分布一致性检验KS检验KOLMOGOROV-SMIRNOV、置换检验PERMUTATION TEST可视化
股票收益分布一致性检验KS检验KOLMOGOROV-SMIRNOV、置换检验PERMUTATION TEST可视化
|
3月前
【SPSS】两独立样本的极端反应检验和两配对样本的非参数检验详细操作教程(附案例实战)
【SPSS】两独立样本的极端反应检验和两配对样本的非参数检验详细操作教程(附案例实战)
61 0
|
3月前
|
数据挖掘 C++
【SPSS】单样本K-S检验和两独立样本K-S检验详细操作教程(附案例实战)
【SPSS】单样本K-S检验和两独立样本K-S检验详细操作教程(附案例实战)
83 0
|
5月前
|
数据挖掘
SPSS两独立样本t检验
SPSS两独立样本t检验
56 0
|
5月前
|
数据挖掘
SPSS两独立样本的非参数检验
SPSS两独立样本的非参数检验
52 0
|
机器学习/深度学习 PyTorch Serverless
假设测试数据集test_data为随机生成的,并设置小批次。model神经网络已经训练好了,怎么用MSE来做测试
其中,model表示已经训练好的PyTorch模型,torch.rand()函数用于生成测试数据集,torch.split()函数用于将测试数据集分成小批次,model(batch)用于对小批次的输入数据进行预测,torch.cat()函数用于将所有小批次的预测值拼接在一起,最后使用mean_squared_error()函数计算均方误差。注意,在计算均方误差之前,需要将测试数据集和预测值转换为NumPy数组并将它们从GPU中移动到CPU上。
120 0
|
PyTorch 算法框架/工具
如何将x_data和y_data利用torch转换成小批量数据,并要求打乱数据,以及将数据标准化或者归一化,如何处理?
以上代码中,在定义预处理操作transform时,只在Normalize函数的第一个参数中传入x_data的均值和标准差,而在第二个参数中传入空元组,表示不对y_data进行标准化。 接着,将标准化后的x_data和原始的y_data转换为张量格式,并将它们合并为一个TensorDataset对象。最后,定义dataloader对象,设置batch_size和shuffle参数,并使用上述数据集对象作为输入数据。
263 0
|
PyTorch 算法框架/工具
如何将x_data和y_data利用torch转换成小批量数据,并要求打乱数据,如何处理?
首先,使用TensorDataset将x_data和y_data合并到一个数据集中。然后,使用DataLoader创建一个迭代器,以便逐个处理每个小批量数据。在这里,batch_size设置为2,这意味着每个小批量将包含2个样本。shuffle参数设置为True,表示要对数据进行随机打乱。在遍历每个小批量数据时,可以在循环体内执行训练或评估操作。
147 0
|
Python
numpy重新学习系列(10)---如何用np.arange生成均匀间隔分布的array
numpy重新学习系列(10)---如何用np.arange生成均匀间隔分布的array
64 0