如何在python中计算相关矩阵?我有一个 n 维向量,其中每个元素都有 5 维。例如我的矢量看起来像
[ [0.1, .32, .2, 0.4, 0.8], [.23, .18, .56, .61, .12], [.9, .3, .6, .5, .3], [.34, .75, .91, .19, .21] ]
在这种情况下,向量的维数为 4,并且该向量的每个元素都有 5 维。如何以最简单的方式构造矩阵?
谢谢
如何在python中计算相关矩阵?我有一个 n 维向量,其中每个元素都有 5 维。例如我的矢量看起来像
[ [0.1, .32, .2, 0.4, 0.8], [.23, .18, .56, .61, .12], [.9, .3, .6, .5, .3], [.34, .75, .91, .19, .21] ]
在这种情况下,向量的维数为 4,并且该向量的每个元素都有 5 维。如何以最简单的方式构造矩阵?
谢谢
使用numpy,您可以使用np.corrcoef:
In [88]: import numpy as np
In [89]: np.corrcoef([[0.1, .32, .2, 0.4, 0.8], [.23, .18, .56, .61, .12], [.9, .3, .6, .5, .3], [.34, .75, .91, .19, .21]])
Out[89]:
array([[ 1. , -0.35153114, -0.74736506, -0.48917666],
[-0.35153114, 1. , 0.23810227, 0.15958285],
[-0.74736506, 0.23810227, 1. , -0.03960706],
[-0.48917666, 0.15958285, -0.03960706, 1. ]])
如果您不想重新编写矩阵,也可以使用 np.array 。
import numpy as np
a = np.array([ [0.1, .32, .2, 0.4, 0.8], [.23, .18, .56, .61, .12], [.9, .3, .6, .5, .3], [.34, .75, .91, .19, .21]])
b = np.corrcoef(a)
print b
由于我几乎错过了@Anton Tarasenko 的评论,我将提供一个新的答案。所以给定你的数组:
a = np.array([[0.1, .32, .2, 0.4, 0.8],
[.23, .18, .56, .61, .12],
[.9, .3, .6, .5, .3],
[.34, .75, .91, .19, .21]])
如果你想要我假设的维度(列)的相关矩阵,你可以使用 numpy (注意转置!):
import numpy as np
print(np.corrcoef(a.T))
或者,如果你在 Pandas 中有它:
import pandas as pd
print(pd.DataFrame(a).corr())
两者都打印
array([[ 1. , -0.03783885, 0.34905716, 0.14648975, -0.34945863],
[-0.03783885, 1. , 0.67888519, -0.96102583, -0.12757741],
[ 0.34905716, 0.67888519, 1. , -0.45104803, -0.80429469],
[ 0.14648975, -0.96102583, -0.45104803, 1. , -0.15132323],
[-0.34945863, -0.12757741, -0.80429469, -0.15132323, 1. ]])
这是使用 Python 计算多个时间序列的相关矩阵的一个很好的例子。包含的源代码使用 Pandas、NumPy 和 matplotlib 计算一组外汇货币对的相关矩阵,以生成相关图。
样本数据是一组历史数据文件,输出是单个相关矩阵和图。该代码有很好的文档记录。