Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class NumpyPCA:
- def __init__(self, n_component=None):
- self.v = None
- self.mean = None
- self.n = n_component
- def fit(self, x, y=None):
- self.mean = np.average(x, axis=0)
- x -= self.mean
- self.v, *_ = np.linalg.svd(x.T)
- # if use eigenvalue (slow)
- # cov = np.cov(x.T)
- # w, self.v = np.linalg.eigh(cov)
- if self.n is None:
- self.n = x.shape[0]
- def transform(self, x, y=None):
- if self.mean is None:
- raise Exception('please run fit first')
- return self.v[:, :self.n].T.dot((x - self.mean).T)
- def fit_transform(self, x, y=None):
- self.fit(x, y)
- return self.transform(x, y)
- def reconstruct(self, x):
- return self.v[:, :x.shape[0]].dot(x.T) + self.mean
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement