python - 当它们看起来像 3-D 数组时如何平衡数据?
问题描述
我有一个 numpy_array 大小(3275412, 50, 22)
,它代表我的数据为 LSTM 目的而重新整形,并且我有一个 shape 目标向量(3275412,)
。
我想平衡我的数据,以便与 target0
和的数据数量大致相同1
。我准备数据的方式使我无法在重塑之前进行此平衡操作。
首先,我想应用make_imbalance
函数(有关详细信息,请参阅此链接),但我无法将它应用于二维数组(出现错误)。
我的问题是:对于 3D 数组,最有效的方法是什么?
我的想法:我考虑首先通过“连接”第二维和第三维(但不知道如何所以请告诉我make_imbalance
?结果到一个 3-D 数组(同样,不知道该怎么做)。然而,这似乎有点棘手......
因此,对于其他不平衡方法或有关重塑 3D->2D 或反之亦然的帮助,任何帮助都将不胜感激
解决方案
您可以将np.reshape
with-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 数据集。
推荐阅读
- c# - 通过反射使用泛型参数调用方法的问题
- java - 如何使用 java.cast
- mysql - 如何使查询中的视图包含子查询
- r - 在 R 中的 pdf() 函数中指定字体后更改字体类型(例如粗体)
- batch-file - 复制文件夹,重命名和递增值
- java - 如何从 Java 中的文件中读取 XML 内容作为字符串
- linux - 如何使用正则表达式有效地将参数附加到多个不同的 grub 配置文件
- python - 我如何转换 . 在 PyQt5 的 QLineEdit 中输入 0。
- .htaccess - HTACCESS 将带有 www 和非 www 的子域重定向到主域上的特定页面
- angular - angular 7 HTTP请求动态表单不起作用