??本文介紹基于Python語言,實作機器學習、深度學習等模型訓練時,資料集打亂的具體操作,
1 為什么要打亂資料集
??在機器學習中,如果不進行資料集的打亂,則可能導致模型在訓練程序中出現具有“偏見”的情況,降低其泛化能力,從而降低訓練精度,例如,如果我們做深度學習的分類,其中初始資料的前80%都是第一類,后20%都是第二類,那么如果我們不打亂資料,模型按照資料順序依次加以訓練,則在前面大部分資料中訓練出來的結果都是第一類(即形成了慣性,模型認為這些資料只對應著第一類);而到后20%資料進行訓練時,所得結果也往往全都為第一類;所以要打亂,
2 如何打亂
??首先引入random,
import random
2.1 資料特征與標簽均為一維
DataIndex=[i for i in range(len(TrainX))]
random.shuffle(DataIndex)
TrainX=TrainX[DataIndex]
TrainY=TrainY[DataIndex]
??其中,TrainX為一維的訓練資料特征,TrainY為一維的訓練資料標簽,
2.2 資料特征為多維而標簽為一維
Datasets=tf.data.Dataset.from_tensor_slices((dict(TrainX),TrainY))
Datasets=Datasets.shuffle(1000)
??其中,TrainX需要為多維DataFrame格式的訓練資料特征,TrainY為一維Series格式的訓練資料標簽,但是經過這種方法,我們得到的Datasets為Dataset類的資料,若是接下來需要帶入input_fn還可以,如果想單獨取出TrainX和TrainY的話就比較麻煩,
??因此,我們還可以直接在初始資料劃分訓練集與測驗集時直接將資料打亂:
TrainData=https://www.cnblogs.com/fkxxgis/archive/2023/05/22/MyData.sample(frac=TrainFrac,random_state=RandomSeed)
TestData=MyData.drop(TrainData.index)
??其中,MyData為初始全部資料,TrainData與TestData分別為劃分后的訓練集與測驗集資料,
??經過.sample()這一步驟,與原始資料的Index相比,實際上已經實作了TrainData與TestData的隨機排列,
??至此,大功告成,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/553099.html
標籤:其他
上一篇:摳圖黨福音:教你一鍵分割影像
下一篇:返回列表
