- GTM visualization examples from following datasets:
- S-curve (from sklearn s-curve example)
- Severed sphere (from sklearn severed sphere example)
- Hand-written digits (from sklearn hand-written digits example)
from ugtm import eGTM,eGTR import numpy as np import altair as alt import pandas as pd from sklearn import datasets from sklearn import metrics from sklearn import model_selection from sklearn import manifold
X,y = datasets.make_s_curve(n_samples=1000, random_state=0) man = manifold.TSNE(n_components=2, init='pca', random_state=0) tsne = man.fit_transform(X) man = manifold.MDS(max_iter=100, n_init=1, random_state=0) mds = man.fit_transform(X) man = manifold.LocallyLinearEmbedding(n_neighbors=20, n_components=2, eigen_solver='auto', method="standard", random_state=0) lle = man.fit_transform(X)
# Construct GTM gtm = eGTM(m=2).fit(X) gtm_means = gtm.transform(X,model="means") gtm_modes = gtm.transform(X,model="modes")
dgtm_modes = pd.DataFrame(gtm_modes, columns=["x1", "x2"]) dgtm_modes["label"] = y
- gtm_modes = alt.Chart(dgtm_modes).mark_circle().encode(
x='x1', y='x2', color=alt.Color('label:Q', scale=alt.Scale(scheme='viridis')), size=alt.value(50), tooltip=['x1','x2','label:Q']
).properties(title = "GTM (modes)", width = 100, height = 100)
dgtm_means = pd.DataFrame(gtm_means, columns=["x1", "x2"]) dgtm_means["label"] = y
- gtm_means = alt.Chart(dgtm_means).mark_circle().encode(
x='x1', y='x2', color=alt.Color('label:Q', scale=alt.Scale(scheme='viridis')), size=alt.value(50), tooltip=['x1','x2','label:Q']
).properties(title = "GTM (means)", width = 100, height = 100)
#Construct activity landscape gtr = eGTR(m=2) gtr = gtr.fit(X,y)
dfclassmap = pd.DataFrame(gtr.optimizedModel.matX, columns=["x1", "x2"]) dfclassmap["label"] = gtr.node_label
# Classification map gtr = alt.Chart(dfclassmap).mark_square().encode( x='x1', y='x2', color=alt.Color('label:Q', scale=alt.Scale(scheme='viridis')), size=alt.value(50), tooltip=['x1','x2', 'label:Q'], #opacity='density' ).properties(title = "GTM landscape",width = 100, height = 100)
dtsne = pd.DataFrame(tsne, columns=["x1", "x2"]) dmds = pd.DataFrame(mds, columns=["x1", "x2"]) dlle = pd.DataFrame(lle, columns=["x1", "x2"]) dtsne["label"] = y dmds["label"] = y dlle["label"] = y
- tsne = alt.Chart(dtsne).mark_circle().encode(
x='x1', y='x2', color=alt.Color('label:Q', scale=alt.Scale(scheme='viridis')), size=alt.value(50), tooltip=['x1','x2','label:Q']
).properties(title = "t-SNE", width = 100, height = 100)
- mds = alt.Chart(dmds).mark_circle().encode(
x='x1', y='x2', color=alt.Color('label:Q', scale=alt.Scale(scheme='viridis')), size=alt.value(50), tooltip=['x1','x2','label:Q']
).properties(title = "MDS", width = 100, height = 100)
- lle = alt.Chart(dlle).mark_circle().encode(
x='x1', y='x2', color=alt.Color('label:Q', scale=alt.Scale(scheme='viridis')), size=alt.value(50), tooltip=['x1','x2','label:Q']
).properties(title = "LLE", width = 100, height = 100)
gtm = gtm_means | gtm_modes | gtr others = tsne | mds | lle
alt.vconcat(gtm, others)
from ugtm import eGTM,eGTR import numpy as np import altair as alt import pandas as pd from sklearn import datasets from sklearn import metrics from sklearn import model_selection from sklearn import manifold from sklearn.utils import check_random_state
random_state = check_random_state(0) p = random_state.rand(1000) * (2 * np.pi - 0.55) t = random_state.rand(1000) * np.pi
# Sever the poles from the sphere. indices = ((t < (np.pi - (np.pi / 8))) & (t > ((np.pi / 8)))) x, y, z = np.sin(t[indices]) * np.cos(p[indices]), np.sin(t[indices]) * np.sin(p[indices]), np.cos(t[indices])
X = np.array([x, y, z]).T
y = p[indices]
man = manifold.TSNE(n_components=2, init='pca', random_state=0) tsne = man.fit_transform(X) man = manifold.MDS(max_iter=100, n_init=1, random_state=0) mds = man.fit_transform(X) man = manifold.LocallyLinearEmbedding(n_neighbors=10, n_components=2, eigen_solver='auto', method="standard", random_state=0) lle = man.fit_transform(X)
# Construct GTM gtm = eGTM(m=2).fit(X) gtm_means = gtm.transform(X,model="means") gtm_modes = gtm.transform(X,model="modes")
dgtm_modes = pd.DataFrame(gtm_modes, columns=["x1", "x2"]) dgtm_modes["label"] = y
- gtm_modes = alt.Chart(dgtm_modes).mark_circle().encode(
x='x1', y='x2', color=alt.Color('label:Q', scale=alt.Scale(scheme='viridis')), size=alt.value(50), tooltip=['x1','x2','label:Q']
).properties(title = "GTM (modes)", width = 100, height = 100)
dgtm_means = pd.DataFrame(gtm_means, columns=["x1", "x2"]) dgtm_means["label"] = y
- gtm_means = alt.Chart(dgtm_means).mark_circle().encode(
x='x1', y='x2', color=alt.Color('label:Q', scale=alt.Scale(scheme='viridis')), size=alt.value(50), tooltip=['x1','x2','label:Q']
).properties(title = "GTM (means)", width = 100, height = 100)
#Construct activity landscape gtr = eGTR(m=2) gtr = gtr.fit(X,y)
dfclassmap = pd.DataFrame(gtr.optimizedModel.matX, columns=["x1", "x2"]) dfclassmap["label"] = gtr.node_label
# Classification map gtr = alt.Chart(dfclassmap).mark_square().encode( x='x1', y='x2', color=alt.Color('label:Q', scale=alt.Scale(scheme='viridis')), size=alt.value(50), tooltip=['x1','x2', 'label:Q'], #opacity='density' ).properties(title = "GTM landscape",width = 100, height = 100)
dtsne = pd.DataFrame(tsne, columns=["x1", "x2"]) dmds = pd.DataFrame(mds, columns=["x1", "x2"]) dlle = pd.DataFrame(lle, columns=["x1", "x2"]) dtsne["label"] = y dmds["label"] = y dlle["label"] = y
- tsne = alt.Chart(dtsne).mark_circle().encode(
x='x1', y='x2', color=alt.Color('label:Q', scale=alt.Scale(scheme='viridis')), size=alt.value(50), tooltip=['x1','x2','label:Q']
).properties(title = "t-SNE", width = 100, height = 100)
- mds = alt.Chart(dmds).mark_circle().encode(
x='x1', y='x2', color=alt.Color('label:Q', scale=alt.Scale(scheme='viridis')), size=alt.value(50), tooltip=['x1','x2','label:Q']
).properties(title = "MDS", width = 100, height = 100)
- lle = alt.Chart(dlle).mark_circle().encode(
x='x1', y='x2', color=alt.Color('label:Q', scale=alt.Scale(scheme='viridis')), size=alt.value(50), tooltip=['x1','x2','label:Q']
).properties(title = "LLE", width = 100, height = 100)
gtm = gtm_means | gtm_modes | gtr others = tsne | mds | lle
alt.vconcat(gtm, others)
from ugtm import eGTM,eGTC import numpy as np import altair as alt import pandas as pd from sklearn import datasets from sklearn import metrics from sklearn import model_selection from sklearn import manifold from sklearn.utils import check_random_state
digits = datasets.load_digits(n_class=6) X = digits.data y = digits.target
man = manifold.TSNE(n_components=2, init='pca', random_state=0) tsne = man.fit_transform(X) man = manifold.MDS(max_iter=100, n_init=1, random_state=0) mds = man.fit_transform(X) man = manifold.LocallyLinearEmbedding(n_neighbors=20, n_components=2, eigen_solver='auto', method="standard", random_state=0) lle = man.fit_transform(X)
# Construct GTM gtm = eGTM().fit(X) gtm_means = gtm.transform(X,model="means") gtm_modes = gtm.transform(X,model="modes")
dgtm_modes = pd.DataFrame(gtm_modes, columns=["x1", "x2"]) dgtm_modes["label"] = y
- gtm_modes = alt.Chart(dgtm_modes).mark_circle().encode(
x='x1', y='x2', color=alt.Color('label:N', scale=alt.Scale(scheme='viridis')), size=alt.value(50), tooltip=['x1','x2','label:N']
).properties(title = "GTM (modes)", width = 100, height = 100)
dgtm_means = pd.DataFrame(gtm_means, columns=["x1", "x2"]) dgtm_means["label"] = y
- gtm_means = alt.Chart(dgtm_means).mark_circle().encode(
x='x1', y='x2', color=alt.Color('label:N', scale=alt.Scale(scheme='viridis')), size=alt.value(50), tooltip=['x1','x2','label:N']
).properties(title = "GTM (means)", width = 100, height = 100)
#Construct activity landscape gtc = eGTC() gtc = gtc.fit(X,y)
dfclassmap = pd.DataFrame(gtc.optimizedModel.matX, columns=["x1", "x2"]) dfclassmap["label"] = gtc.node_label
# Classification map gtc = alt.Chart(dfclassmap).mark_square().encode( x='x1', y='x2', color=alt.Color('label:N', scale=alt.Scale(scheme='viridis')), size=alt.value(50), tooltip=['x1','x2', 'label:N'], #opacity='density' ).properties(title = "GTM class map",width = 100, height = 100)
dtsne = pd.DataFrame(tsne, columns=["x1", "x2"]) dmds = pd.DataFrame(mds, columns=["x1", "x2"]) dlle = pd.DataFrame(lle, columns=["x1", "x2"]) dtsne["label"] = digits.target_names[y] dmds["label"] = digits.target_names[y] dlle["label"] = digits.target_names[y]
- tsne = alt.Chart(dtsne).mark_circle().encode(
x='x1', y='x2', color=alt.Color('label:N', scale=alt.Scale(scheme='viridis')), size=alt.value(50), tooltip=['x1','x2','label:N']
).properties(title = "t-SNE", width = 100, height = 100)
- mds = alt.Chart(dmds).mark_circle().encode(
x='x1', y='x2', color=alt.Color('label:N', scale=alt.Scale(scheme='viridis')), size=alt.value(50), tooltip=['x1','x2','label:N']
).properties(title = "MDS", width = 100, height = 100)
- lle = alt.Chart(dlle).mark_circle().encode(
x='x1', y='x2', color=alt.Color('label:N', scale=alt.Scale(scheme='viridis')), size=alt.value(50), tooltip=['x1','x2','label:N']
).properties(title = "LLE", width = 100, height = 100)
gtm = gtm_means | gtm_modes | gtc others = tsne | mds | lle
alt.vconcat(gtm, others)