使用random.shuffle
来创建数据集的随机排列,并切它如你所愿:
import random
random.shuffle(data)
train = data[:int(len(data)*0.85)]
test = data[len(train):]
由于您所请求的特定解决方案来划分一个潜在的大的CSV文件分成两个文件的培训和测试数据,我也将显示如何,可以使用如上述的一般方法类似的方法来完成:
import random
# Count lines
with open('data.csv','r') as csvf:
linecount = sum(1 for lines in csvf if line.strip() != '')
# Create index sets for training and test data
indices = list(range(linecount))
random.shuffle(indices)
ind_test = set(indices[:int(linecount*0.15)])
del indices
# Partition CSV file
with open('data.csv','r') as csvf, open('train.csv','w') as trainf, open('test.csv','w') as testf:
i = 0
for line in csvf:
if line.strip() != '':
if i in ind_test:
testf.write(line.strip() + '\n')
else:
trainf.write(line.strip() + '\n')
由此,我假定第e CSV文件每行包含一个观察值。
这将创建一个精确的85:15分割。如果准确度较低的分区对您来说还不错,Peter Wood的解决方案会更有效率。
您的帖子非常广泛。详细说明你已经尝试了什么。用问号清楚你问的是什么问题。 –
@MartinCowie我刚刚在网络搜索研究。到目前为止没有尝试任何东正在寻找一个逻辑,我想从现有的文件创建两个文件。 'Test.csv'和'Train.csv'从一个masterfile'data.csv'我希望85%的数据应该在'test.csv'中,其余15%的数据在'train.csv' –