In [1]:
%pylab inline


Populating the interactive namespace from numpy and matplotlib

In [2]:
import logging
logger = logging.getLogger()
logger.setLevel(logging.ERROR)
import numpy as np
import trees
from trees.ddt import *
import mpld3
import seaborn as sns
sns.set_style('white')
from tqdm import tqdm
from sklearn.decomposition import PCA
import networkx as nx

In [3]:
X, y = trees.data.load('zoo')
pca = PCA(n_components=2)
X = pca.fit_transform(X)
X += np.random.normal(scale=.15, size=X.shape)
max = 200
X = X[:max]
y = y[:max]
N, D = X.shape
scatter(*X.T);
interactor = trees.interact.Interactor(X, y, trees.interact.Database('../zoo.db'))
constraints = []
for (a, b, c) in interactor.interactions:
    if a >= max or b >= max or c >= max:
        continue
    constraints.append((a, b, c))



In [4]:
df = Inverse(c=1)
lm = GaussianLikelihoodModel(sigma=np.cov(X.T) / 4.0, sigma0=np.eye(D) / 2.0, mu0=X.mean(axis=0)).compile()
ddt = InteractiveDirichletDiffusionTree(df, lm, constraints=[])#interactor.interactions[:10])
sampler = MetropolisHastingsSampler(ddt, X)
sampler.initialize_assignments()
for constraint in constraints:
    ddt.add_constraint(constraint, X)


set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
set([])
KeyboardInterrupt

In [5]:
ddt.verify_constraints(interactor.interactions)


Out[5]:
False

In [6]:
failed = []
for constraint in interactor.interactions:
    if ddt.verify_constraint(constraint):
        continue
    failed.append(constraint)
print failed


[(44, 98, 65), (55, 98, 65), (16, 56, 0), (26, 91, 81), (10, 67, 37), (34, 92, 71), (29, 93, 16), (54, 84, 21), (48, 55, 63), (44, 68, 58), (23, 43, 36), (50, 64, 31), (85, 92, 95), (2, 61, 62), (33, 79, 22), (32, 63, 83), (30, 42, 82), (31, 65, 84), (21, 58, 29), (1, 44, 54), (11, 95, 10)]

In [7]:
[ddt.point_index(i)[1][0] for i in (23, 33, 0)]
(1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,


  File "<ipython-input-7-3ca917517366>", line 2
    (1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                                                    ^
SyntaxError: invalid syntax

In [ ]:
ddt.root.point_count()