In [1]:
%pylab inline
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)
In [5]:
ddt.verify_constraints(interactor.interactions)
Out[5]:
In [6]:
failed = []
for constraint in interactor.interactions:
if ddt.verify_constraint(constraint):
continue
failed.append(constraint)
print failed
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,
In [ ]:
ddt.root.point_count()