原始資料存在一定的分布規律,所以學習曲線不平滑,如果資料量夠大的話,打亂後會呈現隨機分布,學習後更能體現樣本的共性。為了加強模型的泛化能力,有時候需要打亂資料集(包括特徵資料和標籤),但是顯然還是要保證每一條資料中的特徵資料和標籤的對應關係
可以進行如下操作:
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]
python中隨機打亂資料集
假設我們現在有資料 data,label 方法一 打亂資料順序 import random index i for i in range len data random.shuffle index data data index label label index 打亂後的結果 方法二 data s...
深度學習打亂資料的方法
在深度學習中,我們對資料集進行處理,放到神經網路之前,往往需要先打亂資料集,如果資料集是ndarray numpy 資料,屬性 features 和標籤 labels 在同乙個array的話,也就是labels是在資料的最後乙個維度,前幾個維度均為資料的屬性,這樣我們可以通過numpy來打亂資料集。...
同時打亂資料集和標籤的幾種方式
最好先將資料轉換為numpy陣列的格式。方法一 使用np.random.shuffle state np.random.get state np.random.shuffle train np.random.set state state np.random.shuffle label 或者這麼使用...