3

我正在处理具有不平衡图像数据集(不同类别)的多类分类问题。我尝试imblearn了库,但它不适用于图像数据集。

我有一个属于 3 类的图像数据集,即 A、B、C。A 有 1000 个数据,B 有 300 个,C 有 100 个。我想对 B 类和 C 类进行过采样,这样可以避免数据不平衡。请让我知道如何使用 python 对图像数据集进行过采样。

4

2 回答 2

1

感谢您的澄清。通常,您不会使用 Python 进行过度采样。相反,您预处理您的数据库,复制人手不足的类。在您引用的情况下,您可能会复制 B 类中的所有内容,并将 C 类中的所有内容复制 5 份。这为您提供了 1000:600:500 的新平衡,可能更适合您的训练程序。您现在对 2100 个图像进行随机播放,而不是原来的 1400 张图像。

这能解决你的问题吗?

于 2018-01-31T19:29:17.067 回答
0

实际上,似乎 imblearn.over_sampling只对 2d dims 输入进行了重新采样。因此,通过此库对图像数据集进行过采样的一种方法是与它一起使用重塑,您可以:

  • 重塑你的图像
  • 过采样
  • 再次将新数据集重塑为第一个暗淡

假设您有一个图像数据集size (5000, 28, 28, 3) and dtype of nd.array,按照上述说明,您可以使用以下解决方案:

# X : current_dataset
# y : labels

from imblearn.over_sampling import RandomOverSampler
reshaped_X = X.reshape(X.shape[0],-1)

#oversampling
oversample = RandomOverSampler()
oversampled_X, oversampled_y  = oversample.fit_resample(reshaped_X , y)

# reshaping X back to the first dims
new_X = oversampled_X.reshape(-1,28,28,3)

希望这有帮助!

于 2021-08-13T08:41:10.450 回答