Пример #1
0
    def _embed(self, A1, A2):
        if self.n_components is None:
            num_dims1 = select_dimension(A1)[0][-1]
            num_dims2 = select_dimension(A2)[0][-1]
            self.n_components = max(num_dims1, num_dims2)

        ase = AdjacencySpectralEmbed(n_components=self.n_components)
        X1_hat = ase.fit_transform(A1)
        X2_hat = ase.fit_transform(A2)

        if isinstance(X1_hat, tuple) and isinstance(X2_hat, tuple):
            X1_hat = np.concatenate(X1_hat, axis=-1)
            X2_hat = np.concatenate(X2_hat, axis=-1)
        elif isinstance(X1_hat, tuple) ^ isinstance(X2_hat, tuple):
            msg = ("input graphs do not have same directedness. "
                   "consider symmetrizing the directed graph.")
            raise ValueError(msg)

        return X1_hat, X2_hat
Пример #2
0
    xticklabels=False,
    yticklabels=False,
)
stashfig("agglomerative-path-dist-mat" + basename)

# %% [markdown]
# ##

from graspy.embed import select_dimension

print("Running CMDS on path dissimilarity...")
X = path_dist_mat
cmds = ClassicalMDS(dissimilarity="precomputed",
                    n_components=int(np.ceil(np.log2(np.min(X.shape)))))
path_embed = cmds.fit_transform(X)
elbows, elbow_vals = select_dimension(cmds.singular_values_, n_elbows=3)
rng = np.arange(1, len(cmds.singular_values_) + 1)
elbows = np.array(elbows)
fig, ax = plt.subplots(1, 1, figsize=(8, 4))
pc = ax.scatter(elbows, elbow_vals, color="red", label="ZG")
pc.set_zorder(10)
ax.plot(rng, cmds.singular_values_, "o-")
ax.legend()
stashfig("cmds-screeplot" + basename)

# %% [markdown]
# ##

pairplot(path_embed, alpha=0.02)
stashfig("cmds-pairs-all" + basename)
# %% [markdown]
Пример #3
0
agmm = AutoGMMCluster(
    min_components=2,
    max_components=50,
    affinity=["euclidean", "manhattan"],
    max_agglom_size=3000,
    n_jobs=-2,
    verbose=10,
)
agmm.fit(all_hop_hist.T)

# %% [markdown]
# ##

from graspy.embed import select_dimension

select_dimension(all_hop_hist.T, n_elbows=5)
#%%
from graspy.embed import selectSVD
from graspy.plot import pairplot

n_elbows = 3
U, S, V = selectSVD(all_hop_hist.T, n_elbows=n_elbows)

plot_df = pd.DataFrame(data=U)
plot_df["label"] = meta["merge_class"].values

pg = sns.PairGrid(plot_df,
                  hue="label",
                  palette=CLASS_COLOR_DICT,
                  vars=np.arange(U.shape[1]),
                  height=4)
Пример #4
0
elif dim_reduce == "tsne":
    best_embed = None
    best_kl = np.inf
    n_tsne = 10
    for i in range(n_tsne):
        manifold = TSNE(metric="precomputed")
        path_embed = manifold.fit_transform(X)
        kl = manifold.kl_divergence_
        print(kl)
        if kl < best_kl:
            best_embed = path_embed
            best_kl = kl
    path_embed = best_embed

if dim_reduce in ["cmds", "iso"]:
    elbows, elbow_vals = select_dimension(sing_vals, n_elbows=3)
    elbows = np.array(elbows)
    rng = np.arange(1, len(sing_vals) + 1)

    # screeplot
    fig, ax = plt.subplots(1, 1, figsize=(8, 4))
    ax.plot(rng, sing_vals, "o-")
    pc = ax.scatter(elbows, elbow_vals, color="red", label="ZG")
    pc.set_zorder(100)  # put red above
    ax.legend()
    stashfig(f"screeplot" + basename)

    # pairplot of full embedding
    pairplot(path_embed, alpha=0.02)

else:
Пример #5
0
joint_embed = omni.fit_transform(embed_adjs)
print(joint_embed[0].shape)

# %% [markdown]
# ##
meta = mg.meta
lp_inds, rp_inds = get_paired_inds(meta)
left_inds = meta[meta["left"]]["inds"]
right_inds = meta[meta["right"]]["inds"]
cat_embed = np.concatenate(joint_embed, axis=-1)
for e in cat_embed:
    e[left_inds] = e[left_inds] @ orthogonal_procrustes(
        e[lp_inds], e[rp_inds])[0]

cat_embed = np.concatenate(cat_embed, axis=-1)
print(select_dimension(cat_embed, n_elbows=3))

U, S, Vt = selectSVD(cat_embed, n_elbows=3)

pg = pairplot(U,
              labels=meta["merge_class"].values,
              palette=CLASS_COLOR_DICT,
              size=20,
              alpha=0.4)
pg._legend.remove()
stashfig("omni-reduced-dim")

# %% [markdown]
# ##

results = crossval_cluster(U,