python 自动划分训练集和测试集
生活随笔
收集整理的這篇文章主要介紹了
python 自动划分训练集和测试集
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
自動劃分訓練集和測試集
- 前言
- 代碼
- 總結
前言
在進行深度學習的模型訓練時,我們通常需要將數據進行劃分,劃分成訓練集和測試集,若數據集太大,數據劃分花費的時間太多!!!
不多說,上代碼(python代碼)
代碼
# *_*coding: utf-8 *_*import os import random import shutil import timedef copyFile(fileDir,origion_path1,class_name):name = class_namepath = origion_path1image_list = os.listdir(fileDir) # 獲取圖片的原始路徑image_number = len(image_list)train_number = int(image_number * train_rate)train_sample = random.sample(image_list, train_number) # 從image_list中隨機獲取0.75比例的圖像.test_sample = list(set(image_list) - set(train_sample))sample = [train_sample, test_sample]# 復制圖像到目標文件夾for k in range(len(save_dir)):if os.path.isdir(save_dir[k]) and os.path.isdir(save_dir1[k]):for name in sample[k]:name1 = name.split(".")[0] + '.xml'shutil.copy(os.path.join(fileDir, name), os.path.join(save_dir[k], name))shutil.copy(os.path.join(path, name1), os.path.join(save_dir1[k], name1))else:os.makedirs(save_dir[k])os.makedirs(save_dir1[k])for name in sample[k]:name1 = name.split(".")[0] + '.xml'shutil.copy(os.path.join(fileDir, name), os.path.join(save_dir[k], name))shutil.copy(os.path.join(path, name1), os.path.join(save_dir1[k], name1))if __name__ == '__main__':time_start = time.time()# 原始數據集路徑origion_path = './JPEGImages/'origion_path1 = './Annotations/'# 保存路徑save_train_dir = './train/JPEGImages/'save_test_dir = './test/JPEGImages/'save_train_dir1 = './train/Annotations/'save_test_dir1 = './test/Annotations/'save_dir = [save_train_dir, save_test_dir]save_dir1 = [save_train_dir1, save_test_dir1]# 訓練集比例train_rate = 0.75# 數據集類別及數量file_list = os.listdir(origion_path)num_classes = len(file_list)for i in range(num_classes):class_name = file_list[i]copyFile(origion_path,origion_path1,class_name)print('劃分完畢!')time_end = time.time()print('---------------')print('訓練集和測試集劃分共耗時%s!' % (time_end - time_start))1.需要修改的地方
1)origion_path:圖片路徑
2)origion_path1:xml文件路徑
3)train_rate:訓練集比例
2.執行文件deal.py后生成
train-img:訓練集圖片數據
train-xml:訓練集xml數據
test-img:測試集圖片數據
test-xml:測試及xml數據
3.train_rate可以根據實際情況進行調整,一般train:test是3:1
注:每次劃分數據都是隨機的,每次執行時將之前劃分好的數據保存或者重命名,不然會重復寫入到4個文件夾中
總結
代碼還是比較簡潔的,有什么問題可以留言。
總結
以上是生活随笔為你收集整理的python 自动划分训练集和测试集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java打卡系统
- 下一篇: 【持续更新】总结国内外图形学物理模拟相关