Я использую Sklearn GridSearchCv
, чтобы найти лучшие параметры для случайного леса применительно к данным дистанционного зондирования с 4 классами (здания, растительность, вода и дороги), проблема в том, что у меня намного больше классов "растительности" чем остальные (под много я имею в виду разницу от тысяч до нескольких миллионов). Должен ли я сбалансировать свой набор данных тестирования для получения метрик?
Я уже уравновешиваю весь набор перед тем, как разделить его на обучение и тестирование, это означает, что оба набора данных имеют одинаковое распределение классов одинаковым образом. Боюсь, это не отражает производительность алгоритма на реальных данных, но дает представление о производительности каждого класса. Если я использую несбалансированные данные, класс «вегетация» может в итоге испортить другие средние значения.
Вот пример баланса, который я делаю, как вы можете видеть, я делаю это прямо на X и y. Какие полные данные и этикетки.
if balance:
smt = RandomUnderSampler(sampling_strategy='auto')
X, y = smt.fit_sample(X, y)
print("Features array shape after balance: " + str(X.shape))
Я хочу лучше понять производительность модели на реальных данных, но я не нашел окончательных ответов на этот вопрос!