无论是训练机器学习或是深度学习,第一步当然是先划分数据集啦,今天小白整理了一些划分数据集的方法,希望大佬们多多指教啊,嘻嘻~

首先看一下数据集的样子,flower_data文件夹下有四个文件夹,每个文件夹表示一种花的类别

划分数据集的主要步骤:

1. 定义一个空字典,用来存放各个类别的训练集、测试集和验证集,字典的key是类别,value也是一个字典,存放该类别的训练集、测试集和验证集;

2.使用python获取所有的类别文件夹;

3.对每个类别划分训练集、测试集和验证集:(1)把该类别的所有有效图片放入一个列表中;(2)设置一个随机数对列表进行划分。

具体的代码实现如下所示

importglobimportos.pathimportrandomimportnumpy as np#图片数据文件夹

INPUT_DATA = ‘./flower_data‘

#这个函数从数据文件夹中读取所有的图片列表并按训练、验证、测试数据分开#testing_percentage和validation_percentage指定了测试数据集和验证数据集的大小

defcreate_image_lists(testing_percentage,validation_percentage):#得到的所有图片都存在result这个字典里,key为类别的名称,value值也是一个字典,存放的是该类别的

#文件名、训练集、测试集和验证集

result ={}#获取当前目录下所有的子目录,这里x 是一个三元组(root,dirs,files),第一个元素表示INPUT_DATA当前目录,

#第二个元素表示当前目录下的所有子目录,第三个元素表示当前目录下的所有的文件

sub_dirs = [x[0] for x inos.walk(INPUT_DATA)]#sub_dirs = [‘./flower_data‘,‘./flower_data\\daisy‘,‘./flower_data\\dandelion‘,

#‘./flower_data\\roses‘,‘./flower_data\\sunflowers‘,‘./flower_data\\tulips‘]

#每个子目录表示一类花,现在对每类花划分训练集、测试集和验证集

#sub_dirs[0]表示当前文件夹本身的地址,不予考虑,只考虑他的子目录(各个类别的花)

for sub_dir in sub_dirs[1:]:#获取当前目录下所有的有效图片文件

extensions = [‘jpg‘,‘jpeg‘]#把图片存放在file_list列表里

file_list =[]#os.path.basename(sub_dir)返回sub_sir最后的文件名

#如os.path.basename(‘./flower_data/daisy‘)返回daisy

dir_name =os.path.basename(sub_dir)for extension inextensions:

file_glob= os.path.join(INPUT_DATA,dir_name,‘*.‘+extension)#glob.glob(file_glob)获取指定目录下的所有图片,存放在file_list中

file_list.extend(glob.glob(file_glob))if not file_list: continue

#通过目录名获取类别的名称,返回将字符串中所有大写字符转换为小写后生成的字符串

label_name =dir_name.lower()#初始化当前类别的训练数据集、测试数据集和验证数据集

training_images =[]

testing_images=[]

validation_images=[]for file_name infile_list:

base_name=os.path.basename(file_name)#随机将数据分到训练数据集、测试数据集和验证数据集

#产生一个随机数,最大值为100

chance = np.random.randint(100)if chance

validation_images.append(base_name)elif chance < (testing_percentage+validation_percentage):

testing_images.append(base_name)else:

training_images.append(base_name)#将当前类别是数据放入结果字典

result[label_name]={‘dir‘:dir_name,‘training‘:training_images,‘testing‘:testing_images,‘validation‘:validation_images}#返回整理好的所有数据

returnresult

result= create_image_lists(10,30)print(result)

运行结果:

可以看出字典result中有五个key,表示五个类别。

下图是各个类别的划分情况:

原文地址:https://www.cnblogs.com/lijingblog/p/9888930.html

python从date目录导入数据集_使用python划分数据集相关推荐

  1. python从date目录导入数据集_PyTorch加载自己的数据集实例详解

    数据预处理在解决深度学习问题的过程中,往往需要花费大量的时间和精力. 数据处理的质量对训练神经网络来说十分重要,良好的数据处理不仅会加速模型训练, 更会提高模型性能.为解决这一问题,PyTorch提供 ...

  2. python哪个关键字可以导入模块_关于python导入模块import与常见的模块详解

    0.什么是python模块?干什么的用的? Java中如果使用abs()函数,则需要需要导入Math包,同样python也是封装的,因为python提供的函数太多,所以根据函数的功能将其封装在不同的m ...

  3. pandas的自带数据集_用Python和Pandas进行数据清理:检测丢失值

    数据清理是一个非常耗时的任务,在应用机器学习模型之前,你需要获得待处理的数据,然后你会意识到这些数据是一团乱麻. 根据IBM数据分析的观点 -- 数据科学家花费80%的时间来寻找.清理和组织数据上,只 ...

  4. python读取sas数据集_利用Python获取SAS和R自带数据集

    图:北京-奥森公园-2018年4月 无论是SAS.R还是Python,本身都自带一些数据集,对于初学者来说,可以通过这些自带的小数据集进行编程练习,无疑是非常方便的.SAS.R作为统计分析软件,本身自 ...

  5. python模块导入教学_【python基础课|今日教学内容:Python导入模块的方式,学python的必备技能】- 环球网校...

    [摘要]在这个科学技术高速发展的时代,越来越多的人都开始选择学习编程软件,那么首先被大家选择的编程软件就是python,也用在各行各业之中,并被大家所熟知,所以也有越来越多的python学习者关注py ...

  6. vscode怎样导入数据_【Python开发】用VSCode+Jupyter notebook 编写 Python

    版权声明:小博主水平有限,希望大家多多指导.本文仅代表作者本人观点. 1.过去,想要在 VSCode 中运行 Jupyter notebook 需要安装一个 Neuron 扩展,我也装过,感觉很强大. ...

  7. python默认安装目录在哪_怎么查看python的安装目录

    技术宅 怎么查看python的安装目录? linux中一般安装后的默认路径如下#!/usr/bin/env python 或者 #!/usr/locat/bin/python 如果没有找到,可以通过命 ...

  8. Python安装后目录在哪儿_如何查看Python的安装目录

    一.Python的安装录 当前安装版本为:python 3.10.4 1.在安装python的时候可以看到安装目录,可以修改安装目录: 2.windows系统下64位安装目录如下: 跟其他软件不太一样 ...

  9. pandas的自带数据集_盘点 | Python自带的那些数据集

    01  Seaborn自带数据集 在学习Pandas透视表的时候,大家应该注意到,我们使用的案例数据"泰坦尼克号"来自于seaborn自带的在线数据库,我们可以通过seaborn提 ...

最新文章

  1. MFC单文档的背景上绘制一个可以自动显示文字的长方形
  2. 图解完整模式安装windows server 2008企业版[为企业部署Windows Server 2008系列四]
  3. c# 计算空格宽度像素_用pythonnet为计算机视觉做图像整理
  4. 如何在VS2013中显示代码行号
  5. 你可能不知道的shell、bash二三事(Centos 7)
  6. Matlab 函数文件简介
  7. 【Fusion】mosek.fusion基本模型
  8. 功能测试转测试开发的正确姿势
  9. 碳中和目标下A股先锋调研:钢铁行业加速碳达峰 多行业影响已现
  10. python能做什么软件?Python到底能干嘛,一文看懂
  11. 使用Eclipse编译运行MapReduce程序 Hadoop2.6.0_Ubuntu/CentOS
  12. Mysql学习日记:L13-distinct关键字
  13. vivo手机拍照有什么技巧,如何拍出精美照片?
  14. linux下分区ntfs,简易教程:Linux下NTFS分区的写操作
  15. DNS 的A记录、CNAME记录、mx记录
  16. javaweb项目JS文件报错解决办法
  17. 使用ExcelDataReader读写excel(.xls,.xlsx)
  18. 逆向工程第006篇:简易游戏辅助的实现
  19. G. The Galactic Olympics
  20. 如何评价《非暴力沟通》这本书?

热门文章

  1. 十一、jQuery的基本用法
  2. 文艺平衡树 Splay 学习笔记(1)
  3. laravel迁移文件
  4. 1.SoapUI接口测试--创建项目
  5. LeetCode Permutations
  6. Linux下nginx安装与配置
  7. jQuery 开发环境搭配(转)
  8. 弄懂webpack,只要看这一片就够了(文末有福利)
  9. vue路由传参的三种基本方式 - 流年的樱花逝 - SegmentFault 思否
  10. PHP数组的排序函数