Advertisement
Guest User

Untitled

a guest
Aug 24th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.80 KB | None | 0 0
  1. class NumpyPCA:
  2. def __init__(self, n_component=None):
  3. self.v = None
  4. self.mean = None
  5. self.n = n_component
  6.  
  7. def fit(self, x, y=None):
  8. self.mean = np.average(x, axis=0)
  9. x -= self.mean
  10. self.v, *_ = np.linalg.svd(x.T)
  11.  
  12. # if use eigenvalue (slow)
  13. # cov = np.cov(x.T)
  14. # w, self.v = np.linalg.eigh(cov)
  15.  
  16. if self.n is None:
  17. self.n = x.shape[0]
  18.  
  19. def transform(self, x, y=None):
  20. if self.mean is None:
  21. raise Exception('please run fit first')
  22. return self.v[:, :self.n].T.dot((x - self.mean).T)
  23.  
  24. def fit_transform(self, x, y=None):
  25. self.fit(x, y)
  26. return self.transform(x, y)
  27.  
  28. def reconstruct(self, x):
  29. return self.v[:, :x.shape[0]].dot(x.T) + self.mean
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement