1. 程式人生 > >python打亂資料集中X,y標籤對的方法

python打亂資料集中X,y標籤對的方法

今天踩過的兩個小坑:

一.用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 for 
i 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]]

參考程式碼: