def test_add(self): t1 = make_sparse_labeled_tensor(2) t2 = make_sparse_labeled_tensor(2) t1['cat', 'mammal'] = 1 t1['cat', 'pet'] = 1 t1['panda', 'mammal'] = 1 t2['cat', 'pet'] = 1 t2['bear', 'pet'] = -1 t3 = t1 + t2
def test_add(self): t1 = make_sparse_labeled_tensor(2) t2 = make_sparse_labeled_tensor(2) t1['cat', 'mammal'] = 1 t1['cat', 'pet'] = 1 t1['panda', 'mammal'] = 1 t2['cat', 'pet'] = 1 t2['bear', 'pet'] = -1 t3 = t1 + t2
def iteration(self, u, learn=False): """Train the eigenvector table with new vector u""" print "iteration = ", self._iteration mags = [] u_copy = make_sparse_labeled_tensor(1, initial=u) # copy for k in xrange(min(self._k, self._iteration+1)): mag, new_u = self.update_eigenvector(k, u_copy, learn) u_copy = new_u mags.append(mag) if learn: self._iteration += 1 self._v[1:] = sorted(self._v[1:], reverse=True, key=lambda v: v.norm()) return mags
def iteration(self, u, learn=False): """Train the eigenvector table with new vector u""" print "iteration = ", self._iteration mags = [] u_copy = make_sparse_labeled_tensor(1, initial=u) # copy for k in xrange(min(self._k, self._iteration + 1)): mag, new_u = self.update_eigenvector(k, u_copy, learn) u_copy = new_u mags.append(mag) if learn: self._iteration += 1 self._v[1:] = sorted(self._v[1:], reverse=True, key=lambda v: v.norm()) return mags
def update_eigenvector(self, k, u, learn=False): """Update eigenvector k with vector u, returning pair containing magnitude of eigenvector component and residue vector""" if learn: # Handle elementary cases if self._iteration < k: return 0.0, zerovec() if self._iteration == k: self._v[k] = make_sparse_labeled_tensor(1, initial=u) mag = self._v[k].norm() return mag, zerovec() # Compute weighting factors n = min(self._iteration, self._remembrance) if n < self._bootstrap: w_old = float(n - 1) / n w_new = 1.0 / n else: l = self._amnesia w_old = float(n - l) / n w_new = float(l) / n # Compute the attractor attractor = self.compute_attractor(k, u) # Approach attractor self._v[k] *= w_old self._v[k] += attractor * w_new # Calculate component magnitudes v_hat = self._v[k].hat() if k == 0: if self._auto_baseline: base_mag = self._v[k].norm() else: base_mag = 0.0 else: base_mag = u * v_hat u_residue = u - (v_hat * base_mag) if k == 0: logger.debug('e0: %s' % str(self._v[k])) logger.debug('u: %s' % str(u)) if learn: logger.debug('attractor: %s' % str(attractor)) logger.debug('residue: %s' % str(u_residue)) logger.debug('') return base_mag, u_residue
def make_twit_vec(text, extras=None): words = list(clean_twitter(text)) or ['empty'] twitvec = make_sparse_labeled_tensor(ndim=1) for word in words: if word.strip(): if word[0] == '-': twitvec[word[1:]] += -1 else: twitvec[word] += 1 twitvec = twitvec.hat() if extras is not None: for extra in extras.split(): if extra[0] == '-': twitvec[extra[1:]] = -0.1 else: twitvec[extra] = 0.1 return twitvec
def make_twit_vec(text, extras=None): words = list(clean_twitter(text)) or [ 'empty' ] twitvec = make_sparse_labeled_tensor(ndim=1) for word in words: if word.strip(): if word[0] == '-': twitvec[word[1:]] += -1 else: twitvec[word] += 1 twitvec = twitvec.hat() if extras is not None: for extra in extras.split(): if extra[0] == '-': twitvec[extra[1:]] = -0.1 else: twitvec[extra] = 0.1 return twitvec
def update_eigenvector(self, k, u, learn=False): """Update eigenvector k with vector u, returning pair containing magnitude of eigenvector component and residue vector""" if learn: # Handle elementary cases if self._iteration < k: return 0.0, zerovec() if self._iteration == k: self._v[k] = make_sparse_labeled_tensor(1, initial=u) mag = self._v[k].norm() return mag, zerovec() # Compute weighting factors n = min(self._iteration, self._remembrance) if n < self._bootstrap: w_old = float(n - 1) / n w_new = 1.0 / n else: l = self._amnesia w_old = float(n - l) / n w_new = float(l) / n # Compute the attractor attractor = self.compute_attractor(k, u) # Approach attractor self._v[k] *= w_old self._v[k] += attractor * w_new # Calculate component magnitudes v_hat = self._v[k].hat() if k == 0: if self._auto_baseline: base_mag = self._v[k].norm() else: base_mag = 0.0 else: base_mag = u * v_hat u_residue = u - (v_hat * base_mag) if k == 0: logger.debug('e0: %s' % str(self._v[k])) logger.debug('u: %s' % str(u)) if learn: logger.debug('attractor: %s' % str(attractor)) logger.debug('residue: %s' % str(u_residue)) logger.debug('') return base_mag, u_residue
def test_make_shape(): labels = OrderedSet(list("abcde")) t = make_sparse_labeled_tensor(ndim=1, labels=[labels]) eq_(t.shape[0], len(labels)) eq_(t.tensor.shape[0], len(labels))
def ez_matrix(rows, cols, vals): ''' Simple way to make a matrix (2D sparse tensor). ''' return make_sparse_labeled_tensor(ndim=2, initial=zip(zip(rows, cols), vals))
def zerovec(): return make_sparse_labeled_tensor(1)
def zerovec(): return make_sparse_labeled_tensor(1)
def test_make_shape(): labels = OrderedSet(list('abcde')) t = make_sparse_labeled_tensor(ndim=1, labels=[labels]) eq_(t.shape[0], len(labels)) eq_(t.tensor.shape[0], len(labels))
def setUp(self): self.tensor = make_sparse_labeled_tensor(2)
def ez_matrix(rows, cols, vals): ''' Simple way to make a matrix (2D sparse tensor). ''' return make_sparse_labeled_tensor(ndim=2, initial=zip(zip(rows, cols), vals))
def stack_contains(self, cls): from csc.divisi.labeled_view import make_sparse_labeled_tensor return make_sparse_labeled_tensor(2).stack_contains(cls)
def test_wrong_dims(): from csc.divisi.labeled_view import make_sparse_labeled_tensor t1 = make_sparse_labeled_tensor(ndim=1) t2 = make_sparse_labeled_tensor(ndim=2) Blend([t1, t2])
def stack_contains(self, cls): from csc.divisi.labeled_view import make_sparse_labeled_tensor return make_sparse_labeled_tensor(2).stack_contains(cls)
def test_wrong_dims(): from csc.divisi.labeled_view import make_sparse_labeled_tensor t1 = make_sparse_labeled_tensor(ndim=1) t2 = make_sparse_labeled_tensor(ndim=2) Blend([t1, t2])
def setUp(self): self.tensor = make_sparse_labeled_tensor(2)