Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
import numpy as np
from scipy import linalg
from sklearn.utils import array2d, as_float_array
from sklearn.base import TransformerMixin, BaseEstimator
class ZCA(BaseEstimator, TransformerMixin):
def __init__(self, regularization=10**-5, copy=False):
self.regularization = regularization
self.copy = copy
def fit(self, X, y=None):
X = array2d(X)
X = as_float_array(X, copy = self.copy)
self.mean_ = np.mean(X, axis=0)
X -= self.mean_
sigma =,X) / X.shape[1]
U, S, V = linalg.svd(sigma)
tmp =, np.diag(1/np.sqrt(S+self.regularization)))
self.components_ =, U.T)
return self
def transform(self, X):
X = array2d(X)
X_transformed = X - self.mean_
X_transformed =, self.components_.T)
return X_transformed
Copy link

Coderx7 commented Oct 25, 2016

How is that done in python (Im new to python)I'd be grateful if you could as well show a snippet for that.

Copy link

JaeDukSeo commented May 18, 2018

Copy link

JaeDukSeo commented May 5, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment