Skip to content

Instantly share code, notes, and snippets.

@odinsbane
Last active December 1, 2017 12:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save odinsbane/023908f683f7c37c7c05a4e4f8ee8692 to your computer and use it in GitHub Desktop.
Save odinsbane/023908f683f7c37c7c05a4e4f8ee8692 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
import sys
import numpy as np
from sklearn.decomposition import PCA
if __name__=="__main__":
nComponents = 742
infile = sys.argv[1]
values = np.array([ [float.fromhex(item) for item in line.split()] for line in open(infile, 'r') if not line[0]=='#'])
pca = PCA(n_components=nComponents, svd_solver='full')
print values.shape
reduced = pca.fit_transform(values)
print reduced.shape
out = open(sys.argv[2], 'w')
for row in reduced:
for i in range(nComponents):
out.write("%d"%row[i])
if i==nComponents -1:
out.write("\n")
else:
out.write("\t")
out.close()
id = np.identity(nComponents)
zero = pca.inverse_transform(np.zeros(nComponents))
eigens = pca.inverse_transform(id)
print eigens.shape
for i in range(nComponents):
eigenOut = open("v%03d-%s"%(i,sys.argv[3]), 'w')
vector = eigens[i];
for j in range(32):
for k in range(32):
eigenOut.write("%s\t"%(vector[j*32 + k]-zero[j*32+k]))
eigenOut.write("\n")
eigenOut.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment