Я создал модель, которая может упорядочивать объекты разной длины, и хочу измерить ее производительность. Модель получает на вход зашифрованные объекты и выводит упорядоченные объекты. Например, у меня есть вход 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].....] Я хочу использовать тау Кендалла вычислить корреляцию списка x и y. Но я не уверен, смогу ли я это сделать, потому что в Интернете много примеров, показывающих использование тау Кендалла только с одномерным списком, поэтому должен ли я вычислять тау Кендалла для каждого списка отдельно и усреднять их? и если мне не нужно делать их отдельно, как я могу работать со списками разной длины? Я пытался сделать scipy.stat.kendalltau(x,y), но это выдает ошибку из-за разной длины списков.

0
Rahoobah 7 Апр 2020 в 04:28

1 ответ

Похоже, что все элементы 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)
0
Eric Truett 7 Апр 2020 в 04:45
Я хочу вычислить Тау Кендалла для всех списков x и y как одно число. У меня есть около 4846 списков по x и по y, поэтому я не хочу иметь 4846 тау Кендалла для каждого элемента. Я надеюсь, что это ясно.
 – 
Rahoobah
7 Апр 2020 в 05:07