当数据看起来像3-D数组时如何平衡数据?

时间:2018-08-27 10:27:37

标签: python arrays numpy

我有一个大小为(3275412, 50, 22)的numpy_array,它表示出于LSTM目的而重塑的数据,并且我有一个目标形状为(3275412,)的向量。

我想平衡我的数据,以便与目标01大约有相同数量的数据。 我准备数据的方式使我无法在整形之前执行此平衡操作。

首先,我想应用make_imbalance函数(有关详细信息,请参见this link),但是我不能将其应用于二维数组(出现错误)。

我的问题是:对于3D阵列,最有效的方法是什么?

我的想法:我首先想到了通过将“第二维”和“第三维”“级联”(但不知道如何告诉我??)将我的3D数组“扁平化”为2-D数组,然后应用{ {1}},然后将结果重塑为3D数组(再次,不知道如何做)。似乎有点棘手...

因此,对于其他平衡方法或重塑3D-> 2D或反之亦然的任何帮助,将不胜感激

1 个答案:

答案 0 :(得分:0)

对于未知尺寸,您可以将np.reshape-1一起使用。

data2d = data3d.reshape(data3d.shape[0], -1)

将为您提供形状为(n_samples, n_features)的二维数组 第二维和第三维合并。

data2d_new, y_new = make_imbalance(data2d, y) 

调用make_imbalance之后,您将获得一个形状为(n_samples_new, n_features)的2d数组,其中行数为“未知”,但您知道原始3d数组的其他两个“特征”维,所以

data3d_new = data2d.reshape(-1, data3d.shape[1], data3d.shape[2])

将为您提供平衡的3d数据集。