MCPcopy Create free account
hub / github.com/AssemblyAI-Community/Machine-Learning-From-Scratch / PCA

Class PCA

07 PCA/pca.py:4–35  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2
3
4class PCA:
5
6 def __init__(self, n_components):
7 self.n_components = n_components
8 self.components = None
9 self.mean = None
10
11 def fit(self, X):
12 # mean centering
13 self.mean = np.mean(X, axis=0)
14 X = X - self.mean
15
16 # covariance, functions needs samples as columns
17 cov = np.cov(X.T)
18
19 # eigenvectors, eigenvalues
20 eigenvectors, eigenvalues = np.linalg.eig(cov)
21
22 # eigenvectors v = [:, i] column vector, transpose this for easier calculations
23 eigenvectors = eigenvectors.T
24
25 # sort eigenvectors
26 idxs = np.argsort(eigenvalues)[::-1]
27 eigenvalues = eigenvalues[idxs]
28 eigenvectors = eigenvectors[idxs]
29
30 self.components = eigenvectors[:self.n_components]
31
32 def transform(self, X):
33 # projects data
34 X = X - self.mean
35 return np.dot(X, self.components.T)
36
37
38# Testing

Callers 1

pca.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected