首页 > 解决方案 > 当它们看起来像 3-D 数组时如何平衡数据?

问题描述

我有一个 numpy_array 大小(3275412, 50, 22),它代表我的数据为 LSTM 目的而重新整形,并且我有一个 shape 目标向量(3275412,)

我想平衡我的数据,以便与 target0和的数据数量大致相同1。我准备数据的方式使我无法在重塑之前进行此平衡操作。

首先,我想应用make_imbalance函数(有关详细信息,请参阅此链接),但我无法将它应用于二维数组(出现错误)。

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

我的想法:我考虑首先通过“连接”第二维和第三维(但不知道如何所以请告诉我make_imbalance?结果到一个 3-D 数组(同样,不知道该怎么做)。然而,这似乎有点棘手......

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

标签: pythonarraysnumpy

解决方案


您可以将np.reshapewith-1用于未知尺寸大小。

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

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

data2d_new, y_new = make_imbalance(data2d, y) 

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

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

会给你平衡的 3d 数据集。


推荐阅读