python打亂資料集中X,y標籤對的方法
阿新 • • 發佈:2019-01-10
今天踩過的兩個小坑:
一.用random的shuffle打亂資料集中的資料-標籤對
index=[i for i in range(len(X_batch))] # print(type(index)) index=random.shuffle(index)
結果shuffle完以後index變成None了,看了下api,這樣說明的:
這個函式如果返回值,就返回None,所以用index=balabala就把index的內容改變了。去掉index=random.shuffle(index)等號前面的值,這樣利用shuffle函式就可以直接將index的內容打亂,並且不返回任何值。
因此以上方式就可以打亂index的順序,並以新順序輸出batch中的資料。
二.整體引用index這個list中的資料
因為index是一個list,所以程式碼這樣寫:
X_batch=X_batch[index]
Y_batch=Y_batch[index]
是有問題的,報錯是:TypeError: list indices must be integers or slices, not list.
這是因為我的X_batch,Y_batch都是list,直接引用index是錯誤的。而可以直接引用的方法是如果X_batch,Y_batch是陣列,index是陣列,就可以。所以程式碼改成了:
X_batch,Y_batch=data_generator(data_path) index=[i fori in range(len(X_batch))] # print(type(index)) random.shuffle(index) index=np.array(index) X_batch=[np.array(X_batch)[index]] Y_batch=[np.array(Y_batch)[index]]
參考程式碼: