import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.cm as cm
mpl.rcParams['font.size'] = 16
seed = 1
from kerasy.utils import generateWholeCakes
N = 200
K = 3
r_low, r_high = 2,5
rmin,rmax = -r_high, r_high
epochs = 500
X,Y = np.meshgrid(np.linspace(rmin,rmax,100), np.linspace(rmin,rmax,100))
XY = np.c_[X.ravel(),Y.ravel()]
# Original generated Data.
train_x_ori, train_y_ori = generateWholeCakes(
K*2, N*2, r_low=r_low, r_high=r_high, seed=seed, same=False, noise_scale=2
)
mask = (train_y_ori%2)==0
train_x = train_x_ori[mask]; train_y = train_y_ori[mask]
fig, (ax_ori,ax_used) = plt.subplots(1,2,figsize=(8,4))
ax_ori.set_title("Original Data."), ax_used.set_title("Training Data.")
ax_ori.scatter(train_x_ori[:,0], train_x_ori[:,1], c=train_y_ori, cmap="jet")
ax_used.scatter(train_x[:,0], train_x[:,1], c=train_y, cmap="jet")
plt.tight_layout()
plt.show()
def plot_result(X, labels, model=None, ax=None):
if ax is None:
fig, ax = plt.subplots(figsize=(4,4))
ax.scatter(X[:,0], X[:,1], c=labels, cmap="tab10")
if ax is None:
# Training Data.
ax.set_title(f"Training Data.", fontsize=20)
ax.set_xlabel("$x_1$"), ax.set_ylabel("$x_2$")
else:
# Train Result
mn = model.__class__.__name__
ax.set_title(f"{mn} result", fontsize=20)
ax.set_xlabel("$x_{" + mn + "1}$"), ax.set_ylabel("$x_{" + mn + "2}$")
return ax
from kerasy.ML.decomposition import UMAP
model_umap = UMAP(
min_dist=0.1,
spread=1.0,
sigma_iter=40,
sigma_init=1.0,
sigma_tol=1e-5,
sigma_lower=0,
sigma_upper=np.inf,
random_state=seed,
)
train_x_transformed_umap = model_umap.fit_transform(
train_x,
n_components=2,
epochs=epochs,
init_lr=1,
verbose=1
)
500/500 [####################] 100.00% - 33.058s
plot_result(train_x_transformed_umap, train_y, model=model_umap)
plt.show()
from kerasy.ML.decomposition import tSNE
model_tsne = tSNE(
initial_momentum=0.5,
final_momoentum=0.8,
eta=500,
min_gain=0.1,
tol=1e-05,
prec_max_iter=50,
random_state=seed
)
train_x_transformed_tsne = model_tsne.fit_transform(
train_x,
n_components=2,
epochs=epochs,
verbose=1
)
Each conditional Gaussian has the same perplexity: 30.0 Mean value of sigma: 0.670 500/500 [####################] 100.00% - 1.802s KL(P||Q): 0.13418998741311491
plot_result(train_x_transformed_tsne, train_y, model=model_tsne)
plt.show()
fig, (ax_umap,ax_ori,ax_tsne) = plt.subplots(1,3,figsize=(18,6))
ax_umap = plot_result(train_x_transformed_umap, train_y, model=model_umap, ax=ax_umap)
ax_ori = plot_result(train_x, train_y, ax=ax_ori)
ax_tsne = plot_result(train_x_transformed_tsne, train_y, model=model_tsne, ax=ax_tsne)
plt.tight_layout()
plt.show()
from kerasy.ML.cluster import DBSCAN
model_db = DBSCAN(eps=.8)
model_db.fit(train_x_transformed_tsne)
207/207 [####################] 100.00% - 0.021s num cluster: 11
labels = model_db.labels_
plt.figure(figsize=(6,6))
plt.scatter(
train_x_transformed_tsne[:,0],
train_x_transformed_tsne[:,1],
c = labels
)
plt.show()
from kerasy.datasets import mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
num_mnist = 3000
x_train_mnist = x_train[:num_mnist].reshape(num_mnist, -1)
y_train_mnist = y_train[:num_mnist]
epochs = 600
from kerasy.ML.decomposition import UMAP
model_mnist_umap = UMAP(
min_dist=0.1,
spread=1.0,
sigma_iter=40,
sigma_init=1.0,
sigma_tol=1e-5,
sigma_lower=0,
sigma_upper=np.inf,
random_state=seed,
)
x_train_mnist_transformed_umap = model_mnist_umap.fit_transform(
x_train_mnist,
n_components=2,
epochs=epochs,
init_lr=1,
verbose=1
)
600/600 [####################] 100.00% - 527.371s
plot_result(x_train_mnist_transformed_umap, y_train_mnist, model=model_mnist_umap)
plt.show()
from kerasy.ML.decomposition import tSNE
model_mnist_tsne = tSNE(
initial_momentum=0.5,
final_momoentum=0.8,
eta=500,
min_gain=0.1,
tol=1e-05,
prec_max_iter=50,
random_state=seed
)
x_train_mnist_transformed_tsne = model_mnist_tsne.fit_transform(
x_train_mnist,
n_components=2,
epochs=epochs,
verbose=1
)
Preprocessing the data using PCA to reduce the dimentions 784→50 Each conditional Gaussian has the same perplexity: 30.0 Mean value of sigma: 0.001 600/600 [####################] 100.00% - 28481.057s KL(P||Q): 1.1038501853343383
plot_result(x_train_mnist_transformed_tsne, y_train_mnist, model=model_mnist_tsne)
plt.show()
fig, (ax_umap,ax_tsne) = plt.subplots(1,2,figsize=(12,6))
ax_umap = plot_result(x_train_mnist_transformed_umap, y_train_mnist, model=model_mnist_umap, ax=ax_umap)
ax_tsne = plot_result(x_train_mnist_transformed_tsne, y_train_mnist, model=model_mnist_tsne, ax=ax_tsne)
plt.tight_layout()
plt.show()