In [4]:
%matplotlib inline 
import matplotlib.pyplot as plt
from matplotlib import offsetbox
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
from sklearn.datasets import load_boston
from sklearn.manifold import TSNE
from sklearn.decomposition import PCA
plt.rcParams['figure.figsize'] = (20, 25)

boston = load_boston()

In [3]:
def show_dataset(X, y, ax=None):
    """
    Given examples in 2/3 dimensions X, and target y, show them
    :param X:
    :param y:
    :return:
    """
    if X.shape[1] == 3:
        scattered = ax.scatter(X[:, 0], X[:, 1], X[:, 2], c=y, cmap='gray')
        plt.colorbar(scattered)
    elif X.shape[1] == 2:
        plt.scatter(X[:, 0], X[:, 1], c=y, cmap='gray')
        plt.colorbar()
    else:
        raise RuntimeError("Dimension too big")

In [8]:
ax = plt.subplot(3, 1, 1)
alg = TSNE(n_components=2, perplexity=5.0, n_iter=2000, metric="euclidean")
new_data = alg.fit_transform(boston.data, boston.target)
show_dataset(new_data, boston.target)

ax = plt.subplot(3, 1, 2)
alg2 = TSNE(n_components=2, perplexity=20.0, n_iter=2000, metric="euclidean")
new_data2 = alg2.fit_transform(boston.data, boston.target)
show_dataset(new_data2, boston.target)

ax = plt.subplot(3, 1, 3)
alg3 = TSNE(n_components=2, perplexity=50.0, n_iter=2000, metric="euclidean")
new_data3 = alg3.fit_transform(boston.data, boston.target)
show_dataset(new_data3, boston.target)



In [ ]: