计算列表中每个项目之间的相关性

2024-02-04

我正在尝试计算列表中每个项目之间的皮尔逊相关性。我试图获取数据[0]和数据[1]、数据[0]和数据[2]以及数据[1]和数据[2]之间的相关性。

import scipy
from scipy import stats

data = [[1, 2, 4], [9, 5, 1], [8, 3, 3]]

def pearson(x, y):
    series1 = data[x]
    series2 = data[y]
    if x != y:
        return scipy.stats.pearsonr(series1, series2)

h = [pearson(x,y) for x,y in range(0, len(data))]

这会返回错误TypeError: 'int' object is not iterable on h。有人可以解释一下这里的错误吗?谢谢。


range http://docs.python.org/2/library/functions.html#range当您尝试使用它时,它会返回一个 int 值列表,就像它返回一个元组一样。尝试itertools.combinations http://docs.python.org/2/library/itertools.html#itertools.combinations反而:

import scipy
from scipy import stats
from itertools import combinations

data = [[1, 2, 4], [9, 5, 1], [8, 3, 3]]

def pearson(x, y):
    series1 = data[x]
    series2 = data[y]
    if x != y:
        return scipy.stats.pearsonr(series1, series2)

h = [pearson(x,y) for x,y in combinations(len(data), 2)]

或者正如@Marius 建议的:

h = [stats.pearsonr(data[x], data[y]) for x,y in combinations(len(data), 2)]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算列表中每个项目之间的相关性 的相关文章

随机推荐