python - 使用 numpy 在 python 中执行 varimax 旋转

标签 python arrays numpy

我正在研究矩阵的主成分分析。我已经找到了如下所示的组件矩阵

A = np.array([[-0.73465832 -0.24819766 -0.32045055]
              [-0.3728976   0.58628043 -0.63433607]
              [-0.72617152  0.53812819 -0.22846634]
              [ 0.34042864 -0.08063226 -0.80064174]
              [ 0.8804307   0.17166265  0.04381426]
              [-0.66313032  0.54576874  0.37964986]
              [ 0.286712    0.68305196  0.21769803]
              [ 0.94651412  0.14986739 -0.06825887]
              [ 0.40699665  0.73202276 -0.08462949]])

我需要在此分量矩阵中执行方差最大旋转,但无法找到旋转的确切方法和度数。大多数示例都显示在 R 中。但是我需要 python 中的方法。

最佳答案

您可以找到很多使用 Python 的示例。这是我在 Wikipedia 上发现的仅使用 numpy 的 Python 示例:

def varimax(Phi, gamma = 1, q = 20, tol = 1e-6):
    from numpy import eye, asarray, dot, sum, diag
    from numpy.linalg import svd
    p,k = Phi.shape
    R = eye(k)
    d=0
    for i in xrange(q):
        d_old = d
        Lambda = dot(Phi, R)
        u,s,vh = svd(dot(Phi.T,asarray(Lambda)**3 - (gamma/p) * dot(Lambda, diag(diag(dot(Lambda.T,Lambda))))))
        R = dot(u,vh)
        d = sum(s)
        if d/d_old < tol: break
    return dot(Phi, R)

关于python - 使用 numpy 在 python 中执行 varimax 旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17628589/

相关文章:

Javascript( Node )将对象插入数组

python - 在python中随机打乱一个稀疏矩阵

python - 基于边缘的二值化

python - python日志分析中如何从txt文件中获取数据?

python - 调整大小时使用 PIL 保留图像的 exif 数据(创建缩略图)

从 Array 和另一个类扩展的 Javascript 类

python - 在 numba jitted 函数中动态增长数组

python - 在不是来自 pymc 的样本上使用 pymc 诊断和后验总结

python - 日期时间格式转换

javascript - jQuery $.each push(this) 无法正常工作