python进行文件分类

python将数据快速分成训练集和测试集

参考博客: python将一个文件夹下图片按比例分在两个文件夹下_qq_32039433的博客-CSDN博客

代码如下:

神经网络模型训练时得到的数据并没有分成测试集和训练集,所以需要自己按比例进行分割,如下是进行的按照3:7进行数据分割python代码。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 将一个文件夹下图片按比例分在两个文件夹下,比例改0.7这个值即可
import os
import random
import shutil
from shutil import copy2
trainfiles = os.listdir('C:/Users/cozce/Desktop/机器学习/第二次 实验大作业-船舶分类(CNN)/船舶数据(船和非船类)/sea')#(图片文件夹)
num_train = len(trainfiles)
print( "num_train: " + str(num_train) )
index_list = list(range(num_train))
print(index_list)
random.shuffle(index_list)
num = 0
trainDir = 'C:/Users/cozce/Desktop/机器学习/第二次 实验大作业-船舶分类(CNN)/船舶数据(船和非船类)/sea_train'#(将图片文件夹中的7份放在这个文件夹下)
validDir = 'C:/Users/cozce/Desktop/机器学习/第二次 实验大作业-船舶分类(CNN)/船舶数据(船和非船类)/sea_test'#(将图片文件夹中的3份放在这个文件夹下)
for i in index_list:
   fileName = os.path.join('C:/Users/cozce/Desktop/机器学习/第二次 实验大作业-船舶分类(CNN)/船舶数据(船和非船类)/sea', trainfiles[i])
   if num < num_train*0.7:
       print(str(fileName))
       copy2(fileName, trainDir)
   else:
       copy2(fileName, validDir)
   num += 1

另附上批量修改图片名代码:

import os
import re
import sys
path = r"D:\Code\机器学习\VGG16\VGG16_1\Is_ship\train\sea"
fileList = os.listdir(path)  # 待修改文件夹
print("修改前:" + str(fileList))  # 输出文件夹中包含的文件
os.chdir(path)  # 将当前工作目录修改为待修改文件夹的位置
num = 1  # 名称变量
for fileName in fileList:  # 遍历文件夹中所有文件
   pat = ".+\.(jpg|PNG|png)"  # 匹配文件名正则表达式
   pattern = re.findall(pat, fileName)  # 进行匹配
   print('pattern[0]:', pattern)
   print('num:', num, 'filename:', fileName)
   os.rename(fileName, ('sea.' + str(num)+".png"))  # 文件重新命名
   num = num + 1  # 改变编号,继续下一项
print("---------------------------------------------------")
sys.stdin.flush()  # 刷新
print("修改后:" + str(os.listdir(path)))  # 输出修改后文件夹中包含的文件

 

上一篇:echarts 雷达图不同类型max设置问题


下一篇:jQuery图片Lightbox灯箱点击图片弹出放大图片