Python - Как вытащить текст с несколькими метками из целевого файла и разместить в правильном порядке, а горячий кодировать его? - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть 1500 изображений PNG и связанные файлы .txt для каждого изображения, которые содержат значения нескольких меток (1-7 значений) для того, что идентифицировано на каждой фотографии. Проблема состоит в том, что метки вышли из строя с каждым изображением, и один файл может иметь 1 значение, а другой - все 7 значений в любом порядке. Я не знаю, как вытащить информацию, заказать ее, а затем соответствующим образом закодировать. Мне нужна помощь, пожалуйста. Из-за этого я получаю следующую ошибку, используя le.fit ():

ValueError: y содержит ранее невидимые метки: ['label2 \ nlabel7 \ nlabel1', 'label2 \ nlabel1', 'label2 \ nlabel1 \ nlabel6 ', ....

Я думаю, что должно произойти:

  1. Я создаю словарь (Dict = {1:' label1 ', 2:' label2 ', 3 : 'label3'})
  2. Я смотрю в папке с файлами .txt
  3. Я сопоставляю то, что находится в файлах, со значениями словаря и помещаю число в список. Так что у меня будет список из 1500 списков.
  4. Каким-то образом мне нужно упорядочить эти списки и поставить нули в пропущенные цифры

Это даст мне целевые значения каждого изображения, закодированного в горячем виде.

Заранее спасибо

1 Ответ

0 голосов
/ 17 апреля 2020

Это то, чем я в конечном итоге занимался после разнообразной чудесной помощи.

Dict = {'label1': 0,
        'label2': 1,
        'label3': 2,
        'label4': 3,
        'label5': 4,
        'label6': 5,
        'label7': 6}

labels_arr = [['label1', 'label5', 'label4'], ['label1', 'label4', 'label3'], 
             ['label1', 'label3'], ['label1'], ['label1', 'label4', 'label3'], 
             ['label1', 'label3', 'label4'], 
             ['label1', 'label2', 'label3', 'label4', 'label5', 'label6', 'label7']]

nums_arr  =[]                      # this array saves the list after each loop
for i in range(len(labels_arr)):   # needed first to loop through the list of lists
    nums_arr_i=[]                  # this array needed to append the 1's and 0's to it
    for key in Dict.keys():        # after we loop through the Dict keys first
        if key in labels_arr[i]:   # compares the keys to original labels array at [i]
            nums_arr_i.append(1)   # append 1 or 0 if it matches or not
        else:
            nums_arr_i.append(0)
    nums_arr.append(nums_arr_i)    # end result list of 7 1's or 0's is appended to 
print('nums_arr= ', nums_arr)      # nums_arr and we loop to the next i in labels_arr

# End Result
nums_arr=  [[1, 0, 0, 1, 1, 0, 0], [1, 0, 1, 1, 0, 0, 0], [1, 0, 1, 0, 0, 0, 0], 
           [1, 0, 0, 0, 0, 0, 0], [1, 0, 1, 1, 0, 0, 0], [1, 0, 1, 1, 0, 0, 0], 
           [1, 1, 1, 1, 1, 1, 1]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...