Разделение набора данных на обучающие, тестовые и проверочные наборы для поддержания пропорций

#machine-learning #scikit-learn #deep-learning #computer-vision #training-data

#машинное обучение #scikit-learn #глубокое обучение #компьютерное зрение #обучение-данные

Вопрос:

Я работаю с набором данных iWildCam и пытаюсь разделить свой набор данных так, чтобы он поддерживал пропорции животных в обучающих, тестовых и проверочных наборах, в то же время гарантируя, что изображения из одной и той же последовательности не встречаются в обучающих и тестовых наборах.

Чтобы предоставить больше контекста, каждое изображение принадлежит последовательности. Этот набор данных представляет собой набор изображений с камер-ловушек, поэтому иногда изображения принадлежат к одной и той же последовательности. Поэтому я должен убедиться, что если изображение из последовательности используется для обучения моей модели, то оно не должно присутствовать в тестовом наборе. Чтобы добавить дополнительную сложность к этой проблеме, каждому изображению присваивается категория (в основном, какое животное изображено на изображении).

Поэтому в дополнение к тому, чтобы убедиться, что изображения из одной и той же последовательности не встречаются в тестовых и обучающих наборах, мне также нужно попытаться убедиться, что пропорции категорий в обучении, тестировании и проверке одинаковы (я был бы признателен за любые мысли о том, нужно ли это вообще).).

Я не совсем уверен, как к этому подойти. Я попытался использовать GroupKFold из sklearn, и мне удалось получить сгибы со следующим распределением категорий изображений.

Гистограмма, показывающая распределение категорий в сгибах, сгенерированных GroupKFold

Любые предложения о том, как я могу добиться этого, будут очень полезны.

Спасибо,

Комментарии:

1. вы имеете в виду — scikit-learn.org/stable/modules/generated /… ?

2. Спасибо за ваш ответ. Я изучал это, но в своем посте я также говорил о последовательностях принадлежности каждого изображения. Я хочу убедиться, что если изображения x и y отображаются в одной и той же последовательности изображений, то x не должен появляться в обучении, а y не должен появляться в тестировании. Поскольку последовательности изображений являются «похожими» изображениями, и если модель видит изображение x при обучении и если она видит изображение y при тестировании, она бы уже видела очень похожее изображение во время обучения (т. Е. Изображение x). Именно поэтому я в первую очередь использовал GroupKFold.