У меня есть вопросы по работе.
Я создаю мультиклассовую модель классификации, которая классифицирует входное изображение как одну метку из 4 классов.
В настоящее время у меня есть 100 000 изображений, которые состоят из 4 несбалансированных классов. И у меня также есть файл csv, включающий информацию об имени файла, классе, пути. Я сделал файл csv, используя библиотеку Pandas.
Теперь, учитывая мою вычислительную мощность, я хочу просто протестировать только 20 000 изображений. Конечно, эти 20 000 изображений должны иметь изображения 4 классов с одинаковым соотношением.
На мой взгляд, будет хорошо использовать информацию моего файла csv по классам. Но моя проблема в том, что я понятия не имею, как конкретизировать свои мысли. Так что мне нужны ваши советы, ребята.
Заранее спасибо!
Спасибо за ваши Коментарии. Я не знал, как объяснить свою проблему... но я пытаюсь.
Вот решение, которое я нашел, хотя оно может быть не самым оптимальным. Предположим, что у вас есть 5000 изображений для каждого класса. Если у вас есть фрейм данных (ваш CSV-файл), который структурирован следующим образом:
>>> df
filename class
0 one.png 1
1 two.png 2
.
.
.
99,000 name.png 4
Затем вы можете получить подфрейм данных с помощью
subdf = pd.DataFrame(columns=df.columns)
class_names = df['class'].unique()
n_to_sample = 20,000/len(class_names)
for class_name in class_names:
subdf = pd.concat([subdf,df[df['class']==class_name].sample(n=n_to_sample)])
Надеюсь, это сработало!
О, я очень ценю твою помощь. Я собираюсь попробовать ваше решение прямо сейчас :) А затем я попробовал другой код, используя функции query() и sample() библиотеки Pandas! Это также работает!
В частности, я применяю функции query() и sample(frac=0.2), да, параметр frac возвращает не только 20 000 изображений. Но мне нужно то же соотношение, что и исходный набор данных, несбалансированный. Поэтому я могу использовать ваши разрешения, когда мне нужны одинаковые данные о соотношении для каждой этикетки. В любом случае спасибо вам огромное!
Пожалуйста, отредактируйте вопрос, чтобы ограничить его конкретной проблемой с достаточной детализацией, чтобы найти адекватный ответ.