From 0464d31236f9acb7f2a0afd6105f4589bbf13cb7 Mon Sep 17 00:00:00 2001 From: mhjensen Date: Fri, 26 Oct 2018 04:33:34 +0200 Subject: [PATCH] adding simple covariance code --- doc/Programs/DimRed/covariance.py | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 doc/Programs/DimRed/covariance.py diff --git a/doc/Programs/DimRed/covariance.py b/doc/Programs/DimRed/covariance.py new file mode 100644 index 000000000..b610073d3 --- /dev/null +++ b/doc/Programs/DimRed/covariance.py @@ -0,0 +1,34 @@ +#The covariance matrix and its eigenvalues the hard way +from random import random, seed +import numpy as np + +def covariance(x, y, n): + sum = 0.0 + mean_x = np.mean(x) + mean_y = np.mean(y) + for i in range(0, n): + sum += (x[(i)]-mean_x)*(y[i]-mean_y) + return sum/n + +n = 10 + +x = np.random.normal(size=n) +y = x*np.random.normal(size=n) +z = x*x+y*np.random.normal(size=n) +covxx = covariance(x,x,n) +covxy = covariance(x,y,n) +covxz = covariance(x,z,n) +covyy = covariance(y,y,n) +covyz = covariance(y,z,n) +covzz = covariance(z,z,n) + +SigmaCov = np.array([ [covxx, covxy, covxz], [covxy, covyy, covyz], [covxz, covyz, covzz]]) +print(SigmaCov) + +EigValues, EigVectors = np.linalg.eig(SigmaCov) +# sort eigenvectors and eigenvalues +permute = EigValues.argsort() +EigValues = EigValues[permute] +EigVectors = EigVectors[:,permute] +print(EigValues) +print(EigVectors)