我对ML世界还很陌生,我正在尝试将数据集X_TrainY_Train随机化,以便以后根据它们建立微型批次。 X_Train的随机化工作正常,但是Y_Train的随机化却不断给我追溯:


  只能将列表(而不是“ int”)连接到列表


import numpy as np
import math

def create_datasets():
   dataset = np.genfromtxt('winequality-white.csv', delimiter=';')
   dataset = dataset[1:,:]
   X_Test=dataset[:64,:-1]
   X_Train=dataset[64:,:-1]
   m = X_Train.shape[0]
   Y_Test=dataset[:64,-1:]
   Y_Train=dataset[64:,-1:].reshape(m,1)

   return X_Train, Y_Train, X_Test, Y_Test, m

def shuffling(X_Train,Y_Train,m,minibatch_size):
   permutation=list(np.random.permutation(m))
   shuffled_X=X_Train[permutation,:].T
   shuffled_Y=Y_Train[permutation,:]
   n_comp_minibatches=math.floor(m/minibatch_size)    #Total n. of minibatches with 64 elements
   minibatches=[]


有人能告诉我我哪里错了吗?

最佳答案

您的代码对我来说似乎很好。这是完整版本:

def shuffling(X_Train, Y_Train, m, minibatch_size):
    permutation = list(np.random.permutation(m))
    shuffled_X = X_Train[permutation, :]
    shuffled_Y = Y_Train[permutation, :]
    n_comp_minibatches = math.floor(m / minibatch_size)
    minibatches = [(shuffled_X[i*minibatch_size:(i+1)*minibatch_size],
                    shuffled_Y[i*minibatch_size:(i+1)*minibatch_size])
                   for i in range(n_comp_minibatches)]
    return minibatches


如果您还想包括最后一个不完整的迷你批处理,只需在列表推导中使用n_comp_minibatches + 1即可。同样,使用[rows, features]数据而不是[features, data]通常更方便,这就是为什么我跳过转置的原因,但这取决于您。

08-16 20:23