python-3.x - 使用 scipy 将协方差转换为相关时出错
问题描述
我正在尝试使用此处的方法将协方差矩阵(来自 scipy.optimize.curve_fit)转换为相关矩阵: https ://math.stackexchange.com/questions/186959/correlation-matrix-from-covariance-matrix
我的代码在这里
import numpy as np
S = [[1.0, 1.0, 8.1],
[1.0, 16.0, 18.0],
[8.1, 18.0, 81.0] ]
S = np.array(S)
diag = np.sqrt(np.diag(np.diag(S)))
gaid = np.linalg.inv(diag)
corl = gaid * S * gaid
print(corl)
我期待看到[[1. 0.25 0.9 ], [0.25 1. 0.5 ], [0.9 0.5 1. ]]
但得到[[1. 0. 0.], [0. 1. 0.], [0. 0. 1.]]
。我显然在做一些愚蠢的事情,但不确定是什么,所以所有的建议都得到了感激 - 谢谢!
解决方案
您现在可能已经弄清楚了,但是您必须使用 @ 运算符在 numpy 中进行矩阵乘法。运算符 * 用于逐元素乘法。所以
corl = gaid @ S @ gaid
给出您正在寻找的答案。
推荐阅读
- python - 使用 sympy 求解 ODE 的泰勒级数方法
- php - 如何在命令行中列出站点中的作曲家要求及其来源
- spring-boot - 在特定上下文中使用函数时禁用 @PreAuthorize
- flutter - 切换到其他应用程序时,Flutter 应用程序会在一段时间后重新启动而不是恢复
- path-finding - 益智游戏的探路者
- django - 为什么我收到 TypeError:create_superuser() 缺少 1 个必需的位置参数:AbstractUser 中的“用户名”?
- optimization - Julia:优化具有多个有界参数的函数,而不使用 JuMP 或类似的东西?
- node.js - 多对多关系棱镜
- python - python playsound() 上的错误 259 无法发声
- c# - 在 3D 空间中围绕轴旋转矢量