У меня есть задача, которая действительно ставит меня в тупик.Я разработал алгоритм, который сортирует цвета по бинам / подгруппам.Я хочу оценить, насколько хорошо это работает по сравнению с человеческой интуицией .Итак, я создал несколько списков цветов (мои данные) и вручную просмотрел их и отсортировал по бинам / подгруппам того, как, по моему мнению, алгоритм должен сортировать цвета (мои основные истины).Затем я подаю эти алгоритмы те же списки цветов (мои данные) и сравниваю их сортировку с моими основными истинами.
В этом и заключается моя проблема.Я не знаю, как лучше сравнить основную правду с результатами, чтобы оценить, насколько хорошо работает алгоритм.Кто-нибудь может дать совет, как сравнить 2 списка цветов?
Ниже приведен пример истинности и результата алгоритма.Мне нужно сравнить эти 2 разных списка цветов, чтобы увидеть, насколько близок результат к основной истине (левый). Как видите;количество бинов изменяется, длина каждого бина является переменной, а порядок цветов в каждом бине - переменным.Единственной константой является то, что оба списка всегда будут иметь одинаковое количество цветов (они будут отсортированы по-разному). Так вот почему так сложно (по крайней мере, мне) понять, как их сравнивать.
Пример входных данных, т. Е. Простой список цветов, который подается в сортировщик цветов:
[[69,99121], [59,91,103], [71107140], [97132162], [85117141], [94136153], [86131144], [65,99,118], [211214201], [204204191], [203207188], [215216203], [194199180], [222215200], [219213195], [214206191], [197188172], [186177160], [206197181], [206196183], [38,35,31], [5,5,12], [31,34,41], [42,39,34], [30,32,27], [12,8,9]]
Пример вывода из сортировщика цвета (цвета выше)были отсортированы по 4 лоткам / подгруппам):
[[[69,99,121], [59,91,103], [71,107,140], [97,132,162], [85,117,141], [94,136,153], [86,131,144], [65,99,118]], [[211,214,201], [204,204,191], [203,207,188], [215,216,203], [194,199,180]], [[222,215,200], [219,213,195], [214,206,191], [197,188,172], [186,177,160], [206,197,181], [206,196,183]], [[38,35,31], [5,5,12], [31,34,41], [42,39,34], [30,32,27], [12,8,9]]]
Примечание: я могу легко изменить форматотсортированные цвета к чему-то другому (например, крошечный массив или гистограмма), если вы думаете, что это будет легче сравнивать.Обратите внимание, что с гистограммой число бинов должно быть одинаковым для каждого, поэтому мне, вероятно, нужно заполнить один из списков.
Как я могу сравнить эти 2 списка Python, когда подсписокпорядок не имеет большого значения, а длина подсписка настолько изменчива?
Редактировать Разъяснение проблемы: Я думаю, что решение для сравнения бинов решено (см. код ниже),Проблема состоит в том, как узнать, какое мусорное ведро из наземной истины сравнить с каким мусорным ведром из результатов.Например, на приведенном выше изображении мне нужно сравнить ячейку 2 из истинного положения (слева) с ячейкой 1 из результатов (справа), то есть сравнить оранжевые ячейки из каждого из них.Кроме того, проблема возникает, когда нет результатов для сравнения с основной истиной.
def validator(result_bin, ground_truth_bin):
# todo: padd the shorter bin with black values so each is the same length
dists = cdist(result_bin, ground_truth_bin, 'euclidean')
correct_guesses = np.sum(dists<25, axis=1)
score = float(len(correct_guesses)) / len(ground_truth_bin)
return score