0

我有一个高度不平衡的数据集:

from collections import Counter
unique1, counts1 = np.unique(labels_ds  , return_counts=True)
dict(zip(unique1, counts1))
print('Original dataset shape {}' .format(counts1))     

#returns
#Original dataset shape [  353    88  6656     1  1757    52  5480   226   452   125  5992   559 497  6134 29747]

在这种情况下,我不能只是简单地使用RandomOverSampler它返回n=29747*1 samples,也不能SMOTE因为它至少需要 k_neighbors=1 因此,我想复制少数类的样本然后应用SMOTE。注意:我的特征和标签位于单独的数组中,它们分别具有形状# (27, 28, 500, 500, 15)和形状# (27, 500, 500, 1)

idx = np.where(labels == 6)
print(idx)
# returns (array([23]), array([459]), array([429]), array([0]))

所以我的问题是,我怎样才能复制(x6)少数类的特征和标签(可能基于少数类标签的索引)?

编辑 我的整个图像被网格化为 9x3 ==>27“单元格”每个单元格有 28 个图像(卫星图像,28 个相对于时间),500x500 是高度和宽度,15 是特征数,1 因为这是一个基于像素的分类,因此我有“可以这么说的标签图像”

4

0 回答 0