def test_ccipca_equivalence(): array = np.random.random(size=(10, 10)) col_mean = np.mean(array, axis=1) row_mean = np.mean(array, axis=0) overall_mean = np.mean(array) zero_mean_array = array - col_mean[:, np.newaxis] - row_mean[ np.newaxis, :] + overall_mean print zero_mean_array print np.mean(zero_mean_array, axis=0) print np.mean(zero_mean_array, axis=1) norm_array = normalize(zero_mean_array) U, Sigma, Vt = np.linalg.svd(norm_array) ccipca = CCIPCA(6, vector_size=10, amnesia=3.0) for iteration in xrange(500): for column in xrange(10): ccipca.fixed_iteration(norm_array[:, column], learn=True) a = ccipca._v[1:6] * 10 b = (U * Sigma * Sigma).T[:5] print(np.abs(a / b)) print Sigma[:5] print rmse(np.abs(a / b) - 1)
def __init__(self, transfreq=1, cnetfreq=2, spicefreq=10, k=20, filters=None): self.ccipca = CCIPCA(k, amnesia=2.0, remembrance=1000000.0) self.filters = filters self.iteration = 0 self.touchpoints = [] self.categories = {} self.transfreq = transfreq self.cnet = utils.feature_cycle(cthing) self.cnetfreq = cnetfreq self.spice = utils.feature_cycle(athing) self.spicefreq = spicefreq