打亂數據集的方法


原始數據存在一定的分布規律,所以學習曲線不平滑,如果數據量夠大的話,打亂后會呈現隨機分布,學習后更能體現樣本的共性。為了加強模型的泛化能力,有時候需要打亂數據集(包括特征數據和標簽),但是顯然還是要保證每一條數據中的特征數據和標簽的對應關系
可以進行如下操作:
1.通過隨機化index

import random
index = [i for i in range(len(data))] 
random.shuffle(index)
data = data[index]
label = label[index]

2.將數據集 特征數據和標簽先整合成一個array再隨機化行的順序

s_data = np.array([data, labels])#假設data和labels均為二維數組
s_data = s_data.transpose(1,0,2)
np.random.shuffle(s_data)
data = s_data[:,0,:]     
labels = s_data[:,1,:]

PS:numpy中函數shuffle與permutation都是對原來的數組隨機打亂原來的順序,shuffle中文含義為洗牌,permutation中文含義為排列,區別在於shuffle直接在原來的數組上進行操作,改變原來數組的順序,無返回值。而permutation不直接在原來的數組上進行操作,而是返回一個新的打亂順序的數組,並不改變原來的數組。

import numpy as np
a = np.arange(9)
print("a:",a)
np.random.shuffle(a)
print("a:",a)
b = np.random.permutation(a)
print("b:",b)
print("a:",a)

輸出為:

a: [0 1 2 3 4 5 6 7 8]
a: [1 7 8 0 5 3 2 4 6]
b: [5 1 8 3 6 4 2 7 0]
a: [1 7 8 0 5 3 2 4 6]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM