使用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' –