У меня есть набор данных, в котором один из похожих классов выглядит несбалансированным.Это набор данных с номерами, в которых метки классов идут от 1 до 10.
Группировка по меткам (y
) в обучающем наборе дает следующий результат:
(array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], dtype=uint8), array([13861, 10585, 8497, 7458, 6882, 5727, 5595, 5045, 4659,
4948]))
Как видно1
имеет 13861
точек данных, а 7
имеет только 5595
точек данных.
Чтобы избежать дисбаланса классов между 1
и 7
Я хочу добавить несколько дополнительных изображений для7
класс.
Здесь установлено train
:
from scipy.io import loadmat
train = loadmat('train.mat')
extra = loadmat('extra.mat')
И train
, и extra
являются словарями с 2 клавишами X
и y
.
Вот форма train
и extra
:
train['X'] --> (32, 32, 3, 73257)
# 73257 images of 32x32x3
train['y'] --> (73257,1)
# 73257 labels of corresponding images
extra['X'] --> (32, 32, 3, 531131)
# 531131 images of 32x32x3
extra['y'] --> (531131, 1)
# 531131 labels of corresponding images
Теперь я хочу обновить train
набор данных с метками из extra
, в первую очередь взяв x%
данных с меткой 7
в extra
в train
.Как я мог это сделать?
Я попробовал следующее:
arr, _ = np.where(extra['y'] == 7)
c = np.concatenate(X_train, extra['X'][arr])
Но я получаю сообщение об ошибке IndexError: index 32 is out of bounds for axis 0 with size 32