perform varimax rotation in python using numpy

前端 未结 3 1707
南笙
南笙 2021-02-13 15:15

I am working on principal component analysis of a matrix. I have already found the component matrix shown below

A = np.array([[-0.73465832 -0.24819766 -0.3204505         


        
3条回答
  •  不要未来只要你来
    2021-02-13 15:56

    You can find a lot of examples with Python. Here is an example I found for Python using only numpy, on Wikipedia:

    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)
    

提交回复
热议问题