【发布时间】:2017-04-15 18:44:52
【问题描述】:
我有两个矩阵,T1 和 T2,大小均为 mxn。我想找到两个矩阵之间的相关系数
到目前为止,我还没有使用任何内置的库函数。我正在为此执行以下步骤:
首先我计算两个矩阵的平均值为:
M1 = T1.mean()
M2 = T2.mean()
然后我从相应的矩阵中减去平均值:
A = np.subtract(T1, M1)
B = np.subtract(T2, M2)
其中 np 是 numpy 库,A 和 B 是减法后的结果矩阵。
现在,我将相关系数计算为:
alpha = np.sum(A*B) / (np.sqrt((np.sum(A))*np.sum(B)))
但是,我得到的值远远大于 1,根本没有意义。它应该在 0 到 1 之间才能从中获得一些意义。
我也尝试过使用矩阵 A 和 B 的绝对值,但这也没有用。
我也试过用:
np.sum(np.dot(A,B.T)) instead of np.sum(A*B)
在此图像中,C 是矩阵之一,T 是另一个矩阵。
'u' 是平均符号。
谁能告诉我我到底在哪里做错了。
【问题讨论】:
-
你想要每个矩阵中同一行之间的相关性吗?
-
或者您是否只想获取
A中的所有值与B中的所有值之间的相关性?如果是这样,只需将两个矩阵展平为向量并计算正则相关系数 -
请查看edit1以更深入地了解问题
-
不是 100% 确定这一点,但我认为
np.sum(A*B)实际上可能会执行公式中显示的其他操作。我猜第一个是在将两个矩阵相乘后计算所有元素的总和,而后者是对每一对值的乘法求和。也许你可以用两个非常简单的 2x2 矩阵来检查? -
为确保您被理解,您可以为
T1和T2提供一个小示例输入、您的预期输出以及到目前为止的结果。
标签: python numpy matrix correlation