python抽取一定比例数据,python按比例拆分数据集成训练跟验证集。使用glob、os.walk来获取路径进行数据集粗分。...

好的工具可以让工作完成的事半功倍,非常完美。

1、通过代码把各种把已经分好类别的按比例划分未训练集、测试集:

# ratio是测试集的比例

def split_train_test(path,ratio):

#列出当前文件从夹下的所有文件名称,包括文件跟文件夹

dirs = os.listdir(path)

train_path = os.path.join(path, 'train')

test_path = os.path.join(path, 'val')

if not os.path.isdir(train_path):

#已存在的目录新建会报错

os.mkdir(train_path)

if not os.path.isdir(test_path):

os.mkdir(test_path)

for dir in dirs:

train_dir = os.path.join(train_path,dir)

test_dir = os.path.join(test_path,dir)

os.mkdir(train_dir)

os.mkdir(test_dir)

files = os.listdir(os.path.join(path,dir))

np.random.shuffle(files)

test_num = int(len(files)*ratio)

test_files = files[:test_num]

train_files = files[test_num:]

# 使用copy比copyfile更好。copyfile的原参数是必须未文件全路径,而copy里面也是copyfile,其src可以是路径,

# 其文件名会自动添加。

for file in test_files:

# shutil.copyfile(os.path.join(path,dir,file),os.path.join(test_dir,file))

shutil.copy(os.path.join(path,dir,file),os.path.join(test_dir,file))

for file in train_files:

# shutil.copyfile(os.path.join(path,dir,file),os.path.join(train_dir,file))

shutil.copy(os.path.join(path,dir,file),os.path.join(train_dir,file))

2、使用glob获取路径下的文件:

glob是可以获取指定路径下的所有文件,并返回文件名的路径,其作用跟os.walk()功能差不多。如下:

66d118b6a9032a8d3acb57cab4ca74c6.png

q其适合使用在使用深度进行数据粗分类的工作上,因为需要把分好类的图片拷贝shutil.copy()、裁剪shutil.move到另一个文件夹上时用。如果只想获取指定路径下的文件名,不想带有路径则可以使用os.walk()

e306a715a996592963d15bedaff3dfa7.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值