簡單的從一個文件夾隨機抽取一定數(shù)量圖片到另一個文件夾竭业。
import os, random, shutil
def moveFile(fileDir):
pathDir = os.listdir(fileDir) #文件夾路徑下的所有圖片名以list方式存儲
filenumber=len(pathDir)
#picknumber=100(想取圖片數(shù)量)
# 想以一定比率抽取圖片則為
rate=0.2 #rate=想取圖片數(shù)量/文件夾下面所有圖片數(shù)量
picknumber=int(filenumber*rate) #想取圖片數(shù)量(整數(shù))
sample = random.sample(pathDir, picknumber) #在圖片名list中隨機選取
print (sample)
for name in sample:
shutil.move(fileDir+name, tarDir+name)
if __name__ == '__main__':
fileDir = "./source-data-file/" #源圖片文件夾路徑
tarDir = './result-data-file/' #移動到新的文件夾路徑
moveFile(fileDir)
隨機讀取文件夾下面的所有文件名术徊,寫入到txt
import random
from random import shuffle
path = "C:/Users/eadhaw/Desktop/1223test/train/"
new_path = "C:/Users/eadhaw/Desktop/1223test/train.txt"
files = os.listdir(path)
shuffle(files)
#print(files)
for filename in files:
f_path = path + filename
print(filename[:-4])
f = open(new_path,"a+")
f.write(filename[:-4]) # 保存的文件名不要后面四位(.png)
f.write("\n")
f.close()
交叉驗證概念
百度百科:交叉驗證的基本思想是把在某種意義下將原始數(shù)據(jù)(dataset)進行分組,一部分做為訓練集(train set),另一部分做為驗證集(validation set or test set),首先用訓練集對分類器進行訓練,再利用驗證集來測試訓練得到的模型(model),以此來做為評價分類器的性能指標。
數(shù)據(jù)集定義:
訓練數(shù)據(jù)集:訓練模型母怜;
驗證數(shù)據(jù)集:驗證模型的效果失尖;如果模型的效果不好眉孩,則重新調(diào)整參數(shù)再次訓練新的模型,直到找到了一組參數(shù)技健,使得模型針對驗證數(shù)據(jù)集來說已經(jīng)達到最優(yōu)了写穴;(調(diào)整超參數(shù)使用的數(shù)據(jù)集)
測試數(shù)據(jù)集:將此數(shù)據(jù)集傳入由驗證數(shù)據(jù)集得到的最佳模型,得到模型最終的性能雌贱;(作為衡量最終模型性能的數(shù)據(jù)集)
k折交叉驗證
將原始數(shù)據(jù)集分割為訓練數(shù)據(jù)集和測試數(shù)據(jù)集啊送,再將訓練數(shù)據(jù)集分割為 k 個樣本子集偿短,依次遍歷這k個子集,每次把當前子集作為驗證集删掀,其余所有子集作為訓練集翔冀。這樣算是一次實驗,而k折交叉驗證只有實驗k次才算完成完整的一次披泪,也就是說交叉驗證實際是把實驗重復做了k次(保證k個部分的數(shù)據(jù)都分別做過驗證集)訓練出 k 個模型纤子,每一個模型都在對應的驗證數(shù)據(jù)集上求出其性能的指標,k 個模型的性能指標的平均值作為最終衡量該組參數(shù)對應的模型的性能指標款票。
一組參數(shù)訓練出 k 個模型控硼,如果最終指標不理想,重新調(diào)整參數(shù)艾少,再次得到這 k 個模型的性能指標的均值卡乾。
借鑒https://www.cnblogs.com/volcao/p/9291831.html