我尝试过的一种有效方法是将 X 存储在 pandas 数据框中并随机播放
X = X.reindex(np.random.permutation(X.index))
因为当我尝试时我遇到了相同的内存错误
np.random.shuffle(X)
然后,我将 pandas 数据帧转换回 numpy 数组,并使用此函数,我可以获得训练测试拆分
#test_proportion of 3 means 1/3 so 33% test and 67% train
def shuffle(matrix, target, test_proportion):
ratio = int(matrix.shape[0]/test_proportion) #should be int
X_train = matrix[ratio:,:]
X_test = matrix[:ratio,:]
Y_train = target[ratio:,:]
Y_test = target[:ratio,:]
return X_train, X_test, Y_train, Y_test
X_train, X_test, Y_train, Y_test = shuffle(X, Y, 3)
这暂时有效,当我想做K折的交叉验证时,我可以迭代地循环k times并洗牌。虽然现在已经足够了,但为什么 numpy 和 sci-kit learn 的 shuffle 和 train_test_split 实现会导致大数组出现内存错误?