Вычислить Тау Кендалла для списка списка - PullRequest
0 голосов
/ 07 апреля 2020

Я создал модель, которая может упорядочивать объекты различной длины, и я хочу измерить ее производительность. Модель получает на вход зашифрованные объекты и выводит упорядоченные объекты. Например, у меня есть вход x = [[5, 6, 4, 3, 1, 2], [3,2,4,1], [2,1,3], .....] и вывод у = [[5, 6, 3, 1, 2, 4], [1,3, 2, 4], [1,2,3] .....] Я хочу использовать тау Кендалла вычислить корреляцию списка х и у. Но я не уверен, что смогу это сделать, потому что во многих примерах в Интернете показано использование тау Кендалла только с 1-мерным списком, поэтому я должен вычислять тау Кендалла для каждого списка отдельно и усреднять их? и если мне не нужно делать их отдельно, как я могу иметь дело со списками разной длины? Я попытался сделать scipy.stat.kendalltau (x, y), но он выдает ошибку из-за разной длины списков.

1 Ответ

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

Похоже, что каждый элемент x и y является списками одинаковой длины. Вам просто нужно перебирать списки параллельно, используя zip.

from scipy import stats

x= [[ 5, 6, 4, 3, 1, 2], [3,2,4,1], [2,1,3]] 
y=[[5, 6, 3, 1, 2, 4], [ 1,3, 2, 4], [1,2,3]]

for l1, l2 in zip(x, y):
    print(stats.kendalltau(l1, l2))

KendalltauResult(correlation=0.6, pvalue=0.1361111111111111)
KendalltauResult(correlation=-0.6666666666666669, pvalue=0.3333333333333333)
KendalltauResult(correlation=0.33333333333333337, pvalue=1.0)
...