Я думаю, что в вашей терминологии есть недоразумение. Название вашего вопроса относится к выборке, а текст вопроса требует взвешивания.
Для уточнения:
При выборке у вас либо меньше, столько же или больше экземпляров, чем в исходном наборе; уникальное членство образца может быть либо строгим подмножеством исходного набора, либо идентичным исходному набору (с заменой, т.е. дубликатами).
Путем взвешивания вы просто настраиваете веса, которые могут использоваться для каких-то дальнейших целей (например, выборка, машинное обучение), чтобы учесть или наложить некоторый (им) баланс относительно равномерного взвешивания.
Я полагаю, что вы имеете в виду взвешивание, но один и тот же ответ должен работать в обоих случаях. Если общее количество наблюдений составляет N
, а частота каждого класса является элементом вектора длиной 20 freq
(например, количество элементов в классе 1 составляет freq[1]*N
), тогда просто используйте вектор весов 1/freq
для нормализации весов. Вы можете масштабировать его по некоторой константе, например N
, хотя это не имеет значения. В случае, если какая-либо частота равна 0 или очень близка к ней, вы можете решить эту проблему, используя вектор сглаженных отсчетов (например, сглаживание по Гуд-Тьюрингу).
В результате каждый набор будет иметь равную долю от общего веса.