当前位置: 首页 > 面试题库 >

如何将数据随机分为训练集和测试集?

狄旻
2023-03-14
问题内容

我有一个很大的数据集,想将其分为训练(50%)和测试集(50%)。

假设我有100个示例存储了输入文件,每一行包含一个示例。我需要选择50条线作为训练集和50条线测试集。

我的想法是首先生成一个长度为100(值范围从1到100)的随机列表,然后将前50个元素用作50个训练示例的行号。与测试集相同。

这可以在Matlab中轻松实现

fid=fopen(datafile);
C = textscan(fid, '%s','delimiter', '\n');
plist=randperm(100);
for i=1:50
    trainstring = C{plist(i)};
    fprintf(train_file,trainstring);
end
for i=51:100
    teststring = C{plist(i)};
    fprintf(test_file,teststring);
end

但是如何在Python中完成此功能?我是Python的新手,不知道是否可以将整个文件读入数组并选择某些行。


问题答案:

这可以在Python中使用列表类似地完成(请注意,整个列表在适当的位置被随机排列)。

import random

with open("datafile.txt", "rb") as f:
    data = f.read().split('\n')

random.shuffle(data)

train_data = data[:50]
test_data = data[50:]


 类似资料:
  • 本文向大家介绍python 划分数据集为训练集和测试集的方法,包括了python 划分数据集为训练集和测试集的方法的使用技巧和注意事项,需要的朋友参考一下 sklearn的cross_validation包中含有将数据集按照一定的比例,随机划分为训练集和测试集的函数train_test_split 得到的x_train,y_train(x_test,y_test)的index对应的是x,y中被抽取

  • 我刚刚开始使用R,我不确定如何将我的数据集与以下示例代码结合起来: 我有一个数据集,我需要将其放入训练(75%)和测试(25%)集中。我不确定应该将哪些信息放入x和大小?x是数据集文件吗?我有多少样本?

  • 问题内容: 将NumPy数组随机分为训练和测试/验证数据集的好方法是什么?与Matlab中的或函数类似。 问题答案: 如果要将数据集分成两半,可以使用,或者需要跟踪索引: 要么 有多种方法可以重复分区同一数据集以进行交叉验证。一种策略是从数据集中重复采样: 最后,sklearn包含几种交叉验证方法(k折,nave -n-out等)。它还包括更高级的“分层抽样”方法,这些方法创建了针对某些功能平衡的

  • 为了评估我们的监督模型的泛化能力,我们可以将数据分成训练和测试集: from sklearn.datasets import load_iris iris = load_iris() X, y = iris.data, iris.target 考虑如何正常执行机器学习,训练/测试分割的想法是有道理的。真实世界系统根据他们拥有的数据进行训练,当其他数据进入时(来自客户,传感器或其他来源),经过训

  • 问题内容: 我有一个火花时间序列数据框。我想将其拆分为80-20(训练测试)。由于这是 时间序列数据帧 ,因此我不想进行随机拆分。为了将第一个数据帧传递到训练中并传递第二个数据帧进行测试,我该如何做? 问题答案: 您可以用来获取按时间戳/日期列排序的DataFrame的百分位排名。然后选择所有列作为训练集,其余作为测试集。 例如,如果您具有以下DataFrame: 您需要训练集中的前4行和训练集中

  • 问题内容: 我有一个多类分类问题,并且我的数据集存在偏差,我有100个特定类的实例,并说10个不同类的实例,所以如果我有100个特定类的实例,我想在各个类之间分配数据集保留率我想让30%的记录进入训练集中,我想让100个记录代表的类有30个实例,而10个记录代表的类有3个实例,依此类推。 问题答案: 您可以从在线文档中使用sklearn的: 分层K折交叉验证迭代器 提供训练/测试索引以将数据拆分为