Мультиклассовая классификация для баланса в питоне (по выборке)
У меня есть следующая проблема, есть проблема классификации. На трассе 50000 строк, на Y 60 этикеток. Но данные несбалансированы (в одном классе 35000 значений, в других 59 классах 15000 значений, из которых около 30 значений). Если, например, то есть X (column_1, column_2, column_3) и Y:
colum_1 colum_2 colum_3 Y
0.5 1 2 1
0.5 1.1 2 1
0.55 0.95 3 1
0.1 1 2 2
2 0.9 3 3
И нужно добавить "шумные" данные, чтобы не было условного дисбаланса, чтобы все значения стали одинаковыми:
colum_1 colum_2 colum_3 Y
0.5 1 2 1
0.5 1.1 2 1
0.55 0.95 3 1
0.1 1 2 2
0.15 0.99 2 2
0.05 1.01 2 2
2 0.9 3 3
1.95 0.95 3 3
2.05 0.85 3 3
Только это игрушечный пример, но у меня много значений.
1 ответ
Хотя вопрос не совсем ясен, я думаю, что вы ищете помощь в избыточной выборке классов меньшинств. Общий подход будет SMOTE
алгоритм, который вы можете найти в imblearn
пакет.
from imblearn.over_sampling import SMOTE
sm = SMOTE(random_state=42, ratio = 1.0)
X_res, Y_res = sm.fit_sample(X_train, Y_train)
Просто убедитесь, что вы сначала поделили свои данные на группы обучения и тестирования, а затем провели избыточную выборку для каждой группы отдельно, чтобы не заканчиваться одинаковыми данными в обеих группах. Более полное описание здесь.