## Monday, November 09, 2009

### SVD in Python

Here's a small example of Singular Value Decomposition using Python:
`from scipy import linalg, mat, dot;matrix = mat( [[2,1,0,0], [4,3,0,0]] );print "Original matrix:"print matrixU, s, V = linalg.svd( matrix )print "U:"print Uprint "sigma:"print sprint "VT:"print Vdimensions = 1rows,cols = matrix.shape#Dimension reduction, build SIGMA'for index in xrange(dimensions, rows): s[index]=0print "reduced sigma:"print s#Reconstruct MATRIX'reconstructedMatrix= dot(dot(U,linalg.diagsvd(s,len(matrix),len(V))),V)#Print transformprint "reconstructed:"print reconstructedMatrix`
This code prints the following:
`Original matrix:[[2 1 0 0][4 3 0 0]]U:[[-0.40455358 -0.9145143 ][-0.9145143   0.40455358]]sigma:[ 5.4649857   0.36596619]VT:[[-0.81741556 -0.57604844  0.          0.        ][-0.57604844  0.81741556  0.          0.        ][ 0.          0.          1.          0.        ][ 0.          0.          0.          1.        ]]reduced sigma:[ 5.4649857  0.       ]reconstructed:[[ 1.80720735  1.27357371  0.          0.        ][ 4.08528566  2.87897923  0.          0.        ]]`
And with one more dimension for sigma:
`reduced sigma:[ 5.4649857   0.36596619]reconstructed:[[ 2.  1.  0.  0.][ 4.  3.  0.  0.]]`
This is how you can use Python for quick tests and experiments on SVD.