Skip to content

Instantly share code, notes, and snippets.

@georgehc
Last active January 30, 2019 18:59
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save georgehc/202c220157acb2fdb98838dde25ab42b to your computer and use it in GitHub Desktop.
Save georgehc/202c220157acb2fdb98838dde25ab42b to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 94-775/95-865: Manifold Learning Demo\n",
"\n",
"Author: George H. Chen (georgechen [at symbol] cmu.edu)"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"plt.style.use('seaborn')\n",
"np.set_printoptions(precision=2, suppress=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Multi-dimensional scaling (MDS)\n",
"\n",
"Given a table of pairwise distances, MDS finds points that approximately have those pairwise distances. MDS is used within the Isomap algorithm."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[ 6.4]\n",
" [ 6.6]\n",
" [ 0. ]\n",
" [-4.6]\n",
" [-8.4]]\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"\n",
"point_names = ['A', 'B', 'C', 'D', 'E']\n",
"distances = np.array([[0, 5, 8, 13, 16],\n",
" [5, 0, 5, 10, 13],\n",
" [8, 5, 0, 5, 8],\n",
" [13, 10, 5, 0, 5],\n",
" [16, 13, 8, 5, 0]])\n",
"\n",
"from sklearn.manifold import MDS\n",
"\n",
"# remove random_state=0 and re-running gives you different 1D representations of A, B, C, D, E\n",
"mds = MDS(n_components=1, dissimilarity='precomputed', random_state=0)\n",
"low_dimensional_points = mds.fit_transform(distances)\n",
"print(low_dimensional_points)\n",
"\n",
"plt.scatter(low_dimensional_points, np.zeros(len(low_dimensional_points)))\n",
"for idx in range(len(point_names)):\n",
" plt.annotate(point_names[idx], (low_dimensional_points[idx], 0))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Isomap\n",
"\n",
"In practice, if you want to use Isomap, you don't need to write the MDS code yourself. Instead, you would use Isomap as follows (and Isomap's fitting procedure will do MDS under the hood without telling you about it):"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"swiss_roll_2d = np.array([[479, -231],\n",
" [515, -237],\n",
" [551, -233],\n",
" [581, -255],\n",
" [597, -284],\n",
" [610, -313],\n",
" [619, -341],\n",
" [623, -368],\n",
" [617, -407],\n",
" [591, -434],\n",
" [573, -468],\n",
" [542, -478],\n",
" [507, -490],\n",
" [471, -482],\n",
" [437, -462],\n",
" [398, -446],\n",
" [383, -408],\n",
" [403, -373],\n",
" [430, -349],\n",
" [470, -326],\n",
" [507, -320],\n",
" [531, -352],\n",
" [527, -385],\n",
" [487, -397]])"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(24, 2)\n"
]
}
],
"source": [
"print(swiss_roll_2d.shape)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(370.98850059737157,\n",
" 635.0114994026284,\n",
" -502.96770603384846,\n",
" -218.03229396615157)"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(swiss_roll_2d[:, 0], swiss_roll_2d[:, 1], c=list(range(len(swiss_roll_2d))), cmap='Spectral')\n",
"plt.axis('equal')"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.decomposition import PCA\n",
"\n",
"pca = PCA(n_components=1)\n",
"swiss_roll_1d_pca = pca.fit_transform(swiss_roll_2d)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"def plot_1d(data_1d, y_offset=-0.001):\n",
" plt.scatter(data_1d, np.zeros(len(data_1d)),\n",
" c=list(range(len(data_1d))), cmap='Spectral')"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_1d(swiss_roll_1d_pca)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.manifold import Isomap\n",
"\n",
"isomap = Isomap(n_neighbors=2, n_components=1)\n",
"swiss_roll_1d_isomap = isomap.fit_transform(swiss_roll_2d)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_1d(swiss_roll_1d_isomap)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In case you are wondering what distance matrix Isomap computed (using the nearest neighbor graph) to use with Isomap, you can print it out as follows:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[ 0. 36.5 72.03 109.23 142.35 174.13 203.54 230.84 270.3 307.78\n",
" 346.25 378.82 415.82 452.7 492.15 534.3 575.16 615.47 651.59 697.73\n",
" 735.22 775.22 808.46 838.15]\n",
" [ 36.5 0. 36.22 73.42 106.54 138.33 167.74 195.03 234.49 271.97\n",
" 310.44 343.02 380.02 416.89 456.34 498.5 539.35 579.66 615.78 661.93\n",
" 699.41 739.41 772.65 802.35]\n",
" [ 72.03 36.22 0. 37.2 70.32 102.1 131.51 158.81 198.27 235.75\n",
" 274.22 306.8 343.8 380.67 420.12 462.27 503.13 543.44 579.56 625.7\n",
" 663.19 703.19 736.43 766.12]\n",
" [109.23 73.42 37.2 0. 33.12 64.9 94.31 121.61 161.07 198.55\n",
" 237.02 269.59 306.59 343.47 382.92 425.07 465.93 506.24 542.36 588.5\n",
" 625.99 665.99 699.23 728.92]\n",
" [142.35 106.54 70.32 33.12 0. 31.78 61.19 88.49 127.94 165.43\n",
" 203.9 236.47 273.47 310.35 349.8 391.95 432.8 473.12 509.24 555.38\n",
" 592.86 632.86 666.11 695.8 ]\n",
" [174.13 138.33 102.1 64.9 31.78 0. 29.41 56.71 96.16 133.65\n",
" 172.12 204.69 241.69 278.57 318.02 360.17 401.02 441.34 477.46 523.6\n",
" 561.08 601.08 634.33 664.02]\n",
" [203.54 167.74 131.51 94.31 61.19 29.41 0. 27.29 66.75 104.24\n",
" 142.71 175.28 212.28 249.16 288.6 330.76 371.61 411.92 448.05 494.19\n",
" 531.67 571.67 604.91 634.61]\n",
" [230.84 195.03 158.81 121.61 88.49 56.71 27.29 0. 39.46 76.94\n",
" 115.41 147.99 184.99 221.86 261.31 303.46 344.32 384.63 420.75 466.9\n",
" 504.38 544.38 577.62 607.32]\n",
" [270.3 234.49 198.27 161.07 127.94 96.16 66.75 39.46 0. 37.48\n",
" 75.95 108.53 145.53 182.41 221.85 264.01 304.86 345.17 381.3 427.44\n",
" 464.92 504.92 538.16 567.86]\n",
" [307.78 271.97 235.75 198.55 165.43 133.65 104.24 76.94 37.48 0.\n",
" 38.47 71.04 108.04 144.92 184.37 226.52 267.38 307.69 343.81 389.95\n",
" 427.44 467.44 500.68 530.37]\n",
" [346.25 310.44 274.22 237.02 203.9 172.12 142.71 115.41 75.95 38.47\n",
" 0. 32.57 69.57 106.45 145.9 188.05 228.91 269.22 305.34 351.48\n",
" 388.97 428.97 462.21 491.9 ]\n",
" [378.82 343.02 306.8 269.59 236.47 204.69 175.28 147.99 108.53 71.04\n",
" 32.57 0. 37. 73.88 113.32 155.48 196.33 236.64 272.77 318.91\n",
" 356.39 396.39 429.63 459.33]\n",
" [415.82 380.02 343.8 306.59 273.47 241.69 212.28 184.99 145.53 108.04\n",
" 69.57 37. 0. 36.88 76.32 118.48 159.33 199.64 235.77 281.91\n",
" 319.39 359.39 392.63 422.33]\n",
" [452.7 416.89 380.67 343.47 310.35 278.57 249.16 221.86 182.41 144.92\n",
" 106.45 73.88 36.88 0. 39.45 81.6 122.45 162.77 198.89 245.03\n",
" 282.51 322.51 355.76 385.45]\n",
" [492.15 456.34 420.12 382.92 349.8 318.02 288.6 261.31 221.85 184.37\n",
" 145.9 113.32 76.32 39.45 0. 42.15 83.01 123.32 159.44 205.59\n",
" 243.07 283.07 316.31 346. ]\n",
" [534.3 498.5 462.27 425.07 391.95 360.17 330.76 303.46 264.01 226.52\n",
" 188.05 155.48 118.48 81.6 42.15 0. 40.85 81.16 117.29 163.43\n",
" 200.91 240.91 274.16 303.85]\n",
" [575.16 539.35 503.13 465.93 432.8 401.02 371.61 344.32 304.86 267.38\n",
" 228.91 196.33 159.33 122.45 83.01 40.85 0. 40.31 76.44 122.58\n",
" 160.06 200.06 233.3 263. ]\n",
" [615.47 579.66 543.44 506.24 473.12 441.34 411.92 384.63 345.17 307.69\n",
" 269.22 236.64 199.64 162.77 123.32 81.16 40.31 0. 36.12 82.27\n",
" 119.75 159.75 192.99 222.69]\n",
" [651.59 615.78 579.56 542.36 509.24 477.46 448.05 420.75 381.3 343.81\n",
" 305.34 272.77 235.77 198.89 159.44 117.29 76.44 36.12 0. 46.14\n",
" 83.62 123.62 156.87 186.56]\n",
" [697.73 661.93 625.7 588.5 555.38 523.6 494.19 466.9 427.44 389.95\n",
" 351.48 318.91 281.91 245.03 205.59 163.43 122.58 82.27 46.14 0.\n",
" 37.48 77.48 110.72 140.42]\n",
" [735.22 699.41 663.19 625.99 592.86 561.08 531.67 504.38 464.92 427.44\n",
" 388.97 356.39 319.39 282.51 243.07 200.91 160.06 119.75 83.62 37.48\n",
" 0. 40. 73.24 102.94]\n",
" [775.22 739.41 703.19 665.99 632.86 601.08 571.67 544.38 504.92 467.44\n",
" 428.97 396.39 359.39 322.51 283.07 240.91 200.06 159.75 123.62 77.48\n",
" 40. 0. 33.24 62.94]\n",
" [808.46 772.65 736.43 699.23 666.11 634.33 604.91 577.62 538.16 500.68\n",
" 462.21 429.63 392.63 355.76 316.31 274.16 233.3 192.99 156.87 110.72\n",
" 73.24 33.24 0. 41.76]\n",
" [838.15 802.35 766.12 728.92 695.8 664.02 634.61 607.32 567.86 530.37\n",
" 491.9 459.33 422.33 385.45 346. 303.85 263. 222.69 186.56 140.42\n",
" 102.94 62.94 41.76 0. ]]\n"
]
}
],
"source": [
"print(isomap.dist_matrix_)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.colorbar.Colorbar at 0x113738128>"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.imshow(isomap.dist_matrix_)\n",
"plt.colorbar()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What happens if you choose the number of nearest neighbors to be too large?"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"bad_isomap = Isomap(n_neighbors=23, n_components=1)\n",
"swiss_roll_1d_bad_isomap = bad_isomap.fit_transform(swiss_roll_2d)\n",
"\n",
"plot_1d(swiss_roll_1d_bad_isomap)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.colorbar.Colorbar at 0x1138bd048>"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.imshow(bad_isomap.dist_matrix_)\n",
"plt.colorbar()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.colorbar.Colorbar at 0x113aa5198>"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 4 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.subplot(1, 2, 1)\n",
"plt.imshow(isomap.dist_matrix_)\n",
"plt.colorbar()\n",
"\n",
"plt.subplot(1, 2, 2)\n",
"plt.imshow(bad_isomap.dist_matrix_)\n",
"plt.colorbar()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# t-SNE\n",
"\n",
"In terms of using other manifold learning algorithms that scikit-learn provides, the code is similar to using PCA and Isomap; however, different methods have different parameters that you do have to play with. One of the most popular manifold learning methods used in practice is t-SNE. Here's an example usage case:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[t-SNE] Computing 7 nearest neighbors...\n",
"[t-SNE] Indexed 24 samples in 0.000s...\n",
"[t-SNE] Computed neighbors for 24 samples in 0.001s...\n",
"[t-SNE] Computed conditional probabilities for sample 24 / 24\n",
"[t-SNE] Mean sigma: 23.784069\n",
"[t-SNE] KL divergence after 250 iterations with early exaggeration: 50.924458\n",
"[t-SNE] Error after 1000 iterations: 0.463246\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from sklearn.manifold import TSNE\n",
"\n",
"# *WARNING*: *despite* what the sklearn documentation says for t-SNE, the perplexity parameter\n",
"# does matter! a helpful article to read: https://distill.pub/2016/misread-tsne/\n",
"tsne = TSNE(n_components=1, perplexity=2, learning_rate=.01, init='random', verbose=1, random_state=0)\n",
"swiss_roll_1d_tsne = tsne.fit_transform(swiss_roll_2d)\n",
"plot_1d(swiss_roll_1d_tsne)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment