最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)隨機(jī)劃分圖片數(shù)據(jù)集的示例代碼

 更新時(shí)間:2023年05月21日 15:28:42   作者:風(fēng)吹落葉花飄蕩  
這篇文章主要為大家詳細(xì)介紹了如何通過Python實(shí)現(xiàn)隨機(jī)將圖片與標(biāo)注文件劃分為訓(xùn)練集和測(cè)試集,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

一、前言

前幾天需要?jiǎng)澐謹(jǐn)?shù)據(jù)集,就寫了一個(gè)小demo去完成這個(gè)任務(wù)。

隨機(jī)劃分圖片數(shù)據(jù)集

任務(wù)描述:我的所有圖片保存在同一個(gè)文件夾里,需要隨機(jī)將圖片與標(biāo)注文件劃分為訓(xùn)練集和測(cè)試集。

處理過程:讀取文件列表,將列表打亂,截取列表一部分

二、實(shí)現(xiàn)代碼如下

import os
import random
import shutil

def get_imlist(path):
    return [os.path.join(path, f) for f in os.listdir(path) if f.endswith('.jpg')]

def getData(src_path):

    dest_dir = src_path+'val' #劃分出來的驗(yàn)證集
    if not os.path.isdir(dest_dir):
        os.mkdir(dest_dir)

    img_list = get_imlist(src_path)
    random.shuffle(img_list)
    le = int(len(img_list) * 0.8)  # 這個(gè)可以修改劃分比例
    for f in img_list[le:]:
        shutil.move(f, dest_dir)


'''
函數(shù)功能:
劃分?jǐn)?shù)據(jù)集
'''
def SplitImg(filePath):
    getData(filePath)

'''
函數(shù)功能:
根據(jù)劃分的數(shù)據(jù)集進(jìn)行移動(dòng)標(biāo)注文件
'''
def MoveAn(filePathAn,filePathImg):
    Imgs=os.listdir(filePathImg)
    if not os.path.isdir(filePathAn+'val'):
        os.mkdir(filePathAn+'val')

    for file in os.listdir(filePathAn):
        #print(filePathAn,filePathImg)
        #print(os.path.join(filePathAn,file),os.path.join(filePathAn+'val',file))
        if file[:-4]+'.jpg' in Imgs:

            shutil.move(os.path.join(filePathAn,file),os.path.join(filePathAn+'val',file))

if __name__=='__main__':
    filePath='./寵物/寵物'# 換成你的數(shù)據(jù)集

    #拆分的數(shù)據(jù)集
    SplitImg(filePath)
    filePathAn='./寵物/寵物An'# 換成你的標(biāo)注文件地址

    # 根據(jù)數(shù)據(jù)集進(jìn)行移動(dòng)標(biāo)注文件
    MoveAn(filePathAn,filePath+'val')

三、方法補(bǔ)充

除了以上的方法,小編還為大家整理了其他劃分?jǐn)?shù)據(jù)集的方法,希望對(duì)大家有所幫助

方法一:使用random.sample將數(shù)據(jù)集隨機(jī)劃分為訓(xùn)練集與驗(yàn)證集并另存在文件夾中,設(shè)置隨機(jī)種子

import os
import random
import shutil
 

def moveFile(input1,input2,save1,save2):
    pathDir = os.listdir(input1)  # 取圖片的原始路徑
    random.seed(1)
    filenumber = len(pathDir)  # 原文件個(gè)數(shù)
    rate = 0.1  # 抽取的驗(yàn)證集的比例,占總數(shù)據(jù)的多少
    picknumber = int(filenumber * rate)  # 按照rate比例從文件夾中取一定數(shù)量圖片
    sample = random.sample(pathDir, picknumber)  # 隨機(jī)選取需要數(shù)量的樣本圖片
    print(sample)
    list_len=len(sample)
    print(list_len)
    list=[]
    for i in range(len(sample)):
        list.append(sample[i].split('.')[0])
    print(list)
    for flie_name in list:
        path_img=os.path.join(input1,flie_name+'.jpg')
        shutil.move(path_img,save1)
        path_lab=os.path.join(input2,flie_name+'.txt')
        shutil.move(path_lab,save2)
 
if __name__ == '__main__':
    input_path1='./train1200/images/train'
    input_path2= './train1200/labels/train'
    save_img='./train1200/images/val'
    save_lab='./train1200/labels/val'
    if not os.path.exists(save_lab):
        os.makedirs(save_lab)
    if not os.path.exists(save_img):
        os.makedirs(save_img)
    moveFile(input_path1,input_path2,save_img,save_lab)

方法二:通過train test_splt函數(shù)實(shí)現(xiàn)隨機(jī)劃分?jǐn)?shù)據(jù)

Python中,隨機(jī)劃分?jǐn)?shù)據(jù)集可以通過train test_splt函數(shù)實(shí)現(xiàn)。該函數(shù)可以將數(shù)據(jù)集隨機(jī)分成訓(xùn)練集和測(cè)試集,用于機(jī)器學(xué)習(xí)中的數(shù)據(jù)訓(xùn)練和測(cè)試。

函數(shù)的基本用法如下:

from sklearn.model_selection import train_test_split

#X是所有的樣本特征,y是目標(biāo)變量,test_size是測(cè)試集占總樣本數(shù)的比例
# random_state是隨機(jī)數(shù)發(fā)生器的種子,保證每次劃分結(jié)果一致
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0,3, random_state=42)

其中,X是所有的樣本特征,是目標(biāo)變量,test_size是測(cè)試集占總樣本數(shù)的比例。random_state用于設(shè)置隨機(jī)數(shù)發(fā)生器的種子,以保i每次劃分結(jié)果一致。函數(shù)會(huì)返回4個(gè)數(shù)組: X_train、X_test、y_train,y_test,分別代表訓(xùn)練集的特征、測(cè)試集的特征、訓(xùn)練集的目標(biāo)變量和測(cè)試集的目標(biāo)變量

方法三:將一個(gè)數(shù)據(jù)集按比例隨機(jī)分割成訓(xùn)練集、驗(yàn)證集、測(cè)試集

import random

def split(fname, train_ratio, var_ratio):
    lines = fname.readlines()
    n_total = len(lines)          # 獲取數(shù)據(jù)集的總長(zhǎng)度

    train_offset = int(n_total * train_ratio)
    val_offset = int(n_total * (train_ratio + var_ratio))
    random.shuffle(fname.read())  # 按行打亂順序

    train_data = open('train.txt.bio', 'wb')
    val_data = open('val.txt.bio', 'wb')
    test_data = open('test.txt.bio', 'wb')


    for i, line in enumerate(lines):
        if i < train_offset:
            train_data.write(line)
        elif i < val_offset:
            val_data.write(line)
        else:
            test_data.write(line)

    train_data.close()
    val_data.close()
    test_data.close()


if __name__ == "__main__":
   fname = open('en/en_total.txt.bio', "rb")
   split(fname, train_ratio = 0.6, var_ratio = 0.2)
   fname.close()

到此這篇關(guān)于Python實(shí)現(xiàn)隨機(jī)劃分圖片數(shù)據(jù)集的示例代碼的文章就介紹到這了,更多相關(guān)Python隨機(jī)劃分?jǐn)?shù)據(jù)集內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Python來編寫HTTP服務(wù)器的超級(jí)指南

    使用Python來編寫HTTP服務(wù)器的超級(jí)指南

    這篇文章主要介紹了使用Python來編寫HTTP服務(wù)器的超級(jí)指南,同時(shí)介紹了基于Python框架的web服務(wù)器的編寫方法,譯文從理論到實(shí)現(xiàn)講得都很生動(dòng)詳細(xì),十分推薦!需要的朋友可以參考下
    2016-02-02
  • idea2020手動(dòng)安裝python插件的實(shí)現(xiàn)方法

    idea2020手動(dòng)安裝python插件的實(shí)現(xiàn)方法

    這篇文章主要介紹了idea2020手動(dòng)安裝python插件的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • python迭代dict的key和value的方法

    python迭代dict的key和value的方法

    今天小編就為大家分享一篇python迭代dict的key和value的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • python 元組的使用方法

    python 元組的使用方法

    這篇文章主要介紹了python 元組的使用方法,文中講解非常細(xì)致,代碼幫助大家更好的參考和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • CentOS7下安裝python3.6.8的教程詳解

    CentOS7下安裝python3.6.8的教程詳解

    這篇文章主要介紹了CentOS7下安裝python3.6.8的教程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Pandas數(shù)據(jù)分析固定時(shí)間點(diǎn)和時(shí)間差

    Pandas數(shù)據(jù)分析固定時(shí)間點(diǎn)和時(shí)間差

    這篇文章主要介紹了Pandas數(shù)據(jù)分析固定時(shí)間點(diǎn)和時(shí)間差,文章未日澳主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • python3實(shí)現(xiàn)微型的web服務(wù)器

    python3實(shí)現(xiàn)微型的web服務(wù)器

    這篇文章主要為大家詳細(xì)介紹了python3實(shí)現(xiàn)一個(gè)微型的web服務(wù)器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • 詳解Python中的正則表達(dá)式

    詳解Python中的正則表達(dá)式

    正則表達(dá)式是一個(gè)特殊的字符序列,它能幫助你方便的檢查一個(gè)字符串是否與某種模式匹配。本文給大家?guī)砹藀ython中的正則表達(dá)式,感興趣的朋友一起看看吧
    2018-07-07
  • Python如何生成指定區(qū)間中的隨機(jī)數(shù)

    Python如何生成指定區(qū)間中的隨機(jī)數(shù)

    這篇文章主要介紹了Python如何生成指定區(qū)間中的隨機(jī)數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Python面向?qū)ο蟪绦蛟O(shè)計(jì)類的封裝與繼承用法示例

    Python面向?qū)ο蟪绦蛟O(shè)計(jì)類的封裝與繼承用法示例

    這篇文章主要介紹了Python面向?qū)ο蟪绦蛟O(shè)計(jì)類的封裝與繼承用法,結(jié)合實(shí)例形式分析了Python面向?qū)ο蟪绦蛟O(shè)計(jì)中類的封裝、繼承相關(guān)概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2019-04-04

最新評(píng)論

南宫市| 万山特区| 杂多县| 沙田区| 萨嘎县| 武威市| 苗栗市| 仁寿县| 民乐县| 旅游| 成安县| 霍山县| 永川市| 育儿| 富源县| 广西| 乌拉特后旗| 邯郸县| 安庆市| 清新县| 惠东县| 怀远县| 灵武市| 平湖市| 湖口县| 迭部县| 霸州市| 长汀县| 松溪县| 正阳县| 嘉定区| 新晃| 汨罗市| 噶尔县| 富阳市| 澎湖县| 宁武县| 万宁市| 临高县| 巫山县| 利川市|