计算列表的Kendall's Tau

2024-09-28 22:19:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个模型,可以对不同长度的对象进行排序,我想测量它的性能。模型接收一个加扰的对象作为输入,并输出有序的对象。例如,我有一个输入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的相关性。但我不确定我是否能做到这一点,因为网络上有很多例子显示Kendall的Tau仅用于1D列表,所以我是否应该分别计算每个列表的Kendall的Tau并将其平均?如果我不必单独做,我如何处理不同长度的列表? 我试着做scipy.stat.kendalltau(x,y),但是由于列表的长度不同,它给了我一个错误


Tags: 对象模型网络列表排序错误scipy性能
1条回答
网友
1楼 · 发布于 2024-09-28 22:19:41

看起来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)

相关问题 更多 >