生成分类数据集并划分测试集到EXECL

首先我们要有划分好类别的数据集。

格式如:data---001---类下所有图片

                     ---002---类下所有图片

                     ---003---类下所有图片

                     ---...

已经分好类别后,我们只需要对他7:3划分训练集和测试集,并记录在execl中即可。

很简单其实主要就是读取所有文件夹下文件并划分记录到excel,下面以数据集中一类做例子,之后修改地址和名称即可继续导入其他类别到excel。

#!/usr/bin/python3
# -*- coding: utf-8 -*-

# 导入CSV安装包
import csv
import os
# 1. 创建文件对象
Image_Path=r"F:\ShipRS_sepation_v1\Image"     #图片路径
Annotation_Path=r"F:\ShipRS_sepation_v1\Annotation/"
if not os.path.isdir(Annotation_Path):
    os.makedirs(Annotation_Path)
train = open(Annotation_Path+'/train.csv','w',encoding='utf-8',newline='')
train_writer = csv.writer(train)
train_writer.writerow(["class","label"])
test = open(Annotation_Path+'/test.csv','w',encoding='utf-8',newline='')
test_writer = csv.writer(test)
test_writer.writerow(["class","label"])
count = 0
i = 0
train_num = 0
test_num = 0
imagelist=os.listdir(Image_Path+'/补给舰/')
for image in imagelist:
    (filepath, image_name) = os.path.split(image)
    if i>6:
        test_writer.writerow([image_name, "Supply ship"])
        test_num += 1
    else:
        train_writer.writerow([image_name, "Supply ship"])
        train_num += 1
    i += 1
    if i == 10:
        i = 0
    count += 1
i = 0
print("补给舰训练集 ",train_num)
print("补给舰测试集 ",test_num,'\n')

结果如图

 

 

好的,首先你需要明确的是,CNN是用于图像处理的深度学习模型,不太适用于处理序列数据。如果你的数据是序列数据,建议使用RNN或者LSTM等模型。不过,考虑到你可能只是举例子,并不需要真正的代码,我可以给你提供一个简单的CNN网络的代码示例。 这里我们将数据转换成图像的形式,每个序列看做是一张图片,图片的像素值为序列的值。这样处理的好处是可以直接使用CNN进行分类等任务。但是需要注意的是,这样处理可能会导致信息丢失,需要根据具体情况进行调整。 以下是一个简单的matlab代码示例,用于构建CNN网络: ```matlab % 读取数据 data = xlsread('data.xlsx'); % 将数据转换成图像形式 image_size = [10 6]; % 图像大小 num_images = 500000; % 图像数量 images = zeros([image_size num_images]); for i = 1:num_images images(:,:,i) = reshape(data(i,:), image_size)'; end % 随机划分数据集 train_ratio = 0.6; val_ratio = 0.2; test_ratio = 0.2; [trainInd,valInd,testInd] = dividerand(num_images, train_ratio, val_ratio, test_ratio); % 构建CNN网络 layers = [ imageInputLayer(image_size) convolution2dLayer([3 3], 32) reluLayer maxPooling2dLayer([2 2], 'Stride', 2) convolution2dLayer([3 3], 64) reluLayer maxPooling2dLayer([2 2], 'Stride', 2) fullyConnectedLayer(128) reluLayer fullyConnectedLayer(55) softmaxLayer classificationLayer]; % 设置训练参数 options = trainingOptions('adam', ... 'MaxEpochs', 10, ... 'MiniBatchSize', 128, ... 'ValidationData', {images(:,:,valInd), categorical(data(valInd,:))}, ... 'Plots', 'training-progress'); % 训练网络 net = trainNetwork(images(:,:,trainInd), categorical(data(trainInd,:)), layers, options); % 测试网络 test_data = images(:,:,testInd); test_labels = categorical(data(testInd,:)); predicted_labels = classify(net, test_data); accuracy = sum(predicted_labels == test_labels) / numel(test_labels); disp(['Accuracy: ' num2str(accuracy)]); ``` 需要注意的是,这只是一个简单的示例,实际应用中需要根据具体情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ζั͡ޓއއ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值