This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Copyright (C) 2013 Istituto per l'Interscambio Scientifico I.S.I. | |
# You can contact us by email (isi@isi.it) or write to: | |
# ISI Foundation, Via Alassio 11/c, 10126 Torino, Italy. | |
# | |
# This work is licensed under a Creative Commons 4.0 | |
# Attribution-NonCommercial-ShareAlike License | |
# You may obtain a copy of the License at | |
# http://creativecommons.org/licenses/by-nc-sa/4.0/ | |
# | |
# This program was written by Andre Panisson <panisson@gmail.com> at |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# A quick demo of how to produce a loglog histogram plot of very large | |
# amounts of data, by using log-histogram bins | |
import numpy as np | |
import matplotlib.pyplot as plt | |
import itertools as it | |
# We shall draw millions of samples from a Zipf distribution. Using linear | |
# bins this is too much data for a fast and attactive plot. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import numpy as np, numpy.linalg as linalg | |
def fast_svd(M, k): | |
p = k+5 | |
Y = np.dot(M, np.random.normal(size=(M.shape[1],p))) | |
Q,r = linalg.qr(Y) | |
B = np.dot(Q.T,M) | |
Uhat, s, v = linalg.svd(B, full_matrices=False) | |
U = np.dot(Q, Uhat) | |
return U.T[:k].T, s[:k], v[:k] |