Выпуск индекса через список, содержащий равные значения в python - PullRequest
0 голосов
/ 26 мая 2018

У меня есть два списка с именами predicted_labels_ssup0 и predicted_labels_ssup1, которые содержат вероятности предсказаний SVM для каждого экземпляра.Как-то так, число значений вероятности совершенно равны.И моя цель состоит в том, чтобы извлечь индексы самых высоких значений вероятности и сохранить их в другом списке под названием confident_inst_indexes.

Итак, вот как я это сделал:

confident_inst_indexes=[]
for x,y in zip(predicted_labels_ssup0,predicted_labels_ssup1):


    if (x > 0.997):
        #print('x',x)

        #print(predicted_labels_ssup0.tolist().index(x))
        confident_inst_indexes= np.append(confident_inst_indexes,predicted_labels_ssup0.tolist().index(x))
    elif (y > 0.995):
        #print('y',y)
        #print(predicted_labels_ssup1.tolist().index(y))
        confident_inst_indexes= np.append(confident_inst_indexes,predicted_labels_ssup1.tolist().index(y))

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

Как я могу это исправить?Есть предложения?

Спасибо

Ответы [ 2 ]

0 голосов
/ 26 мая 2018

Один простой способ - использовать перечисление во время итерации, чтобы получить индекс:

a = [1,5,3,5]
b = [0,2,0,4]
for index, (x,y) in enumerate(zip(a, b)):
    print(index, x, y)

Похоже, вы просматриваете индекс по крошечной штуке с tolist().index(x), это всегда даст вам первое совпадениеИкс.Может быть, это причина того, что вы получаете всегда один и тот же индекс.

0 голосов
/ 26 мая 2018

Если я хорошо понимаю, что вы пытаетесь сделать, вы можете напрямую использовать argwhere из библиотеки numpy.Он возвращает все индексы, где выполняется условие

a = np.argwhere(predicted_labels_ssup0 > 0.997)
b = np.argwhere(predicted_labels_ssup1 > 0.995)
confident_inst_indexes = [a, b] # you may have to flatten too

Надеюсь, это поможет,

Николас

...