Skip to content

Instantly share code, notes, and snippets.

@georgehc
Last active November 1, 2021 16:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save georgehc/017360da00f1b10676d0fb12eb4758a4 to your computer and use it in GitHub Desktop.
Save georgehc/017360da00f1b10676d0fb12eb4758a4 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",
"[[ 0. 0.2 6.4 11. 14.8]\n",
" [ 0.2 0. 6.6 11.2 15. ]\n",
" [ 6.4 6.6 0. 4.6 8.4]\n",
" [11. 11.2 4.6 0. 3.8]\n",
" [14.8 15. 8.4 3.8 0. ]]\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x396 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"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",
"# plotting code (same idea as how we did the 1D PCA plot in the earlier demo)\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))\n",
"\n",
"# this shows you the low-dimensional distance table:\n",
"# - `pdist` computes pairwise distances between points, storing the results in a compact format\n",
"# - `squareform` converts the compact format into a 2D distance table like the ones from lecture\n",
"from scipy.spatial.distance import pdist, squareform\n",
"low_dimensional_distances = squareform(pdist(low_dimensional_points))\n",
"print(low_dimensional_distances)"
]
},
{
"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": [
"# goes from outside to inside of the Swiss roll\n",
"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": [
"(371.0, 635.0, -502.95, -218.05)"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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H39cP/nJTzRt2rSs6Onpp59WaWmpLrroIv385z+XdOx95dm6Run6qayszNr1kaTc3Fx985vfVE1NjXbu3Knbbrstq9coXT8LFizI6jVqbW1VU1OTfvazn+n999/XHXfckdVrlK6fbF+jj6xevVp33nmnpMz9W+fpM+qPrFy5Us8995weeOABxePxrvGPXvxRUFBwyi/+cNvHe6qurtY555wjSbr88sv11ltvZU1PdXV1euWVVzRv3jxt3bpV9957r1paWrrms22N0vVz8cUXZ+36SNKkSZN09dVXyzAMTZo0ScXFxTp06FDXfLatUbp+Lrrooqxeo+LiYlVXVyscDmvy5MnKyclRW9vxFzxk2xql6+eSSy7J6jWSpKNHj+q9997T+eefL0kKBI5H6FCukaeD+tlnn9Xq1aslSXl5eTIMQ+ecc45ee+01SdLLL7+sqqoqVVZWatOmTYrH42pra9P27ds1depUN0vvUbqeFi1apC1btkiSNm7cqOnTp2dNT7/61a/0T//0T1q7dq3OOussrVy5UhdffHHWrlG6fr71rW9l7fpI0q9//Wv94Ac/kCTt379f0WhUF154YdauUbp+7rzzzqxeo1mzZun3v/+9HMfR/v371dHRoQsuuCBr1yhdPwsWLMjqNZKk119/XZ/73Oe6fj777LMzskaeftZ3e3u77r//fh08eFCpVEq33XabpkyZogceeEDJZFKTJ0/Www8/LNM0tX79ev3Lv/yLHMfRwoULdeWVV7pdflrpeho3bpweeughhUIhjRo1Sg899JAKCgqypqePzJs3T9/73vcUCASyeo0+8lE/nZ2dWb0+iURC999/v5qammQYhu655x6VlJRk7Rql6ycnJyer10iSfvjDH+q1116T4zj69re/rYqKiqxdI+nEfkpLS7N+jX7xi18oGAxq/vz5kqQdO3ZkZI08HdQAAAx3nt76BgBguCOoAQDwMIIaAAAPI6gBAPAwghoAAA8jqAEA8DCCGgAADyOoAQDwsP8P/gRAYlHYRyQAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 576x396 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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liC0AQCwBKENAIAlCG0AACxBaAMAYAlCGwAASxDaAABYgtAGAMAShDYAAJYgtAEAsAShDQCAJQhtAAAsQWgDAGAJQhsAAEsQ2gAAWILQBgDAEoQ2AACWILQBALAEoQ0AgCUIbQAALEFoAwBgCUIbAABLENoAAFiC0AYAwBKENgAAliC0AQCwBKENAIAlCG0AACxBaAMAYAlCGwAASxDaAABYgtAGAMAShDYAAJYgtAEAsIRjjDGDXQQAAOgbV9oAAFiC0AYAwBKENgAAliC0AQCwBKENAIAlCG0AACzhDnYB6NnLL7+sP//5z1q8eLEkacOGDXrwwQfl9/s1adIk3X777ZKkRx99VH/961/luq7uvfdejRs3bjDLHnTGGE2ZMkVjxoyRJI0fP1533313j/3DEZ7nacGCBdqyZYuCwaAeeOABjR49erDLOmFdc801ikQikqRRo0bp1ltv1T333CPHcXT22WfrZz/7mXw+rosk6e9//7t+9atfadmyZWpqasrZp5UrV2r58uVyXVe33XabLrnkksEu+8RkcEL6xS9+YaZOnWruuOOOzLRvfvObpqmpyXieZ2688UbT0NBgGhoazJw5c4zneWb37t3m2muvHcSqTwzbt283t9xyS9b0XP3DUX/5y1/M/PnzjTHGvPXWW+bWW28d5IpOXF1dXeZb3/pWt2m33HKL+dvf/maMMea+++4zL7300iBUduL57W9/a6666iozffp0Y0zuPu3fv99cddVVJh6Pm8OHD2f+G9k4DTxB1dbWasGCBZnX0WhUiURC1dXVchxHkyZN0rp161RfX69JkybJcRyNHDlS6XRaLS0tg1f4CWDTpk3at2+f5syZo5tuuknvv/9+j/3DUfX19Zo8ebKkI3cnGhoaBrmiE9fmzZvV2dmpG264Qd/97ne1YcMGbdq0SRdeeKEkacqUKXr99dcHucoTQ3V1tX7zm99kXufq08aNGzVhwgQFg0FFIhFVV1dr8+bNg1XyCY3b44Ns1apVeuqpp7pNW7hwoa688kq98cYbmWnRaFThcDjzurS0VDt37lQoFFJFRUW36e3t7RoyZMhxr/1EkKt/999/v26++WZ94xvf0Pr16zVv3jw99thjOfuHoz69j/n9fqVSKbkuh4lPKyoq0ty5czV9+nRt375dN910k4wxchxH0tHvIaSpU6dq165dmde5+hSNRjOPGj6eHo1GP/NabcC3cZBNnz5d06dP73O+cDisWCyWeR2LxVRWVqZAIJA1/ZM7/+ddrv51dnbK7/dLki644ALt27dPpaWlOfuHoz69j3meR2D34IwzztDo0aPlOI7OOOMMVVRUaNOmTZlx9q+effI5/8d9ynV8O5mOY/ng9rglwuGwAoGAduzYIWOMXnvtNV1wwQWqra3Va6+9Js/ztGfPHnmed9JcZffk0UcfzVx9b968WSNHjlQkEsnZPxxVW1ururo6SUd+9FhTUzPIFZ24nnvuOT300EOSpH379ikajeprX/ta5u5YXV0d+1cPzj333Kw+jRs3TvX19YrH42pvb1djYyP7Xw84jbbIz3/+c/34xz9WOp3WpEmTdP7550s6cjU5Y8YMeZ6n+++/f5CrHHw333yz5s2bp1dffVV+v1+LFi2S1HP/cMTll1+utWvXaubMmTLGaOHChYNd0gnruuuu009/+lPNmjVLjuNo4cKFqqys1H333adHHnlEZ555pqZOnTrYZZ6Q5s+fn9Unv9+vOXPmaPbs2TLG6M4771QoFBrsUk9I/F++AACwBLfHAQCwBKENAIAlCG0AACxBaAMAYAlCGwAASxDaAABYgtAGAMAShDYAAJb4/5tN55UzzDWiAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 576x396 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_1d(swiss_roll_1d_pca)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x396 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"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)\n",
"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": 10,
"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": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.colorbar.Colorbar at 0x7fc40672e890>"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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Fi2SJO3YsUONjY2qrq5Wa2urenp6tHbt2hy3MvMmX/ebb76pe+65Rxs3bsxxy7Jr//79Kikp0ZNPPqlTp07ptttu01VXXTUvPvN8lJMwns2Vf3PdwMCAhoeHtXHjRm3YsEFHjhzJdZOyqrS0VHv27Bl/3d/fr6qqKklSTU2NDh06lKumZdXk637jjTd04MAB3X333dq8ebNisVgOW5c9N910kx588MHx1z6fb9585vkoJwFiupV/88HChQt177336oUXXtBPf/pTPfzww3l97bW1tRMW7SSTyfHcMoFAQNFoNFdNy6rJ1x0KhfToo4/qV7/6lb74xS/q6aefzmHrsicQCCgYDCoWi+lHP/qRGhsb581nno9yEiCyufJvrisrK9O6devk8XhUVlamkpISffrpp7luljEXjz3H43EVFxfnsDXmrF27Vtdcc834v998880ctyh7Tpw4oQ0bNug73/mObrnllnn7meeDnASIbK78m+v27t07nm3xk08+USwW0+WXX57jVpmzfPly9fX1SZJ6e3u1atWqHLfIjHvvvVevv/66JOnVV1/V1VdfneMWZcfJkye1ceNGPfLII6qrq5M0fz/zfJCThXLZXPk3142MjOixxx7TRx99JI/Ho4cffljXXnttrpuVVR9++KF+/OMfq7u7W++//75aWlo0Ojqq8vJybdu2TT6fL9dNzIqLr7u/v19bt27VggULdNlll2nr1q0ThlnzxbZt2/SnP/1J5eXl49t+8pOfaNu2bfPiM883rKQGAFhiMjIAwBIBAgBgiQABALBEgAAAWCJAAAAsESAAAJYIEAAASwQIAICl/wMd4Xs8+EVnjQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 576x396 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": 12,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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liC0AQCwBKENAIAlCG0AACxBaAMAYAlCGwAASxDaAABYgtAGAMAShDYAAJYgtAEAsAShDQCAJQhtAAAsQWgDAGAJQhsAAEsQ2gAAWILQBgDAEoQ2AACWILQBALAEoQ0AgCUIbQAALEFoAwBgCUIbAABLENoAAFiC0AYAwBKENgAAliC0AQCwBKENAIAlCG0AACxBaAMAYAlCGwAASxDaAABYgtAGAMAShDYAAJYgtAEAsIRjjDGDXQQAAOgbV9oAAFiC0AYAwBKENgAAliC0AQCwBKENAIAlCG0AACzhDnYB6NnLL7+sP//5z1q8eLEkacOGDXrwwQfl9/s1adIk3X777ZKkRx99VH/961/luq7uvfdejRs3bjDLHnTGGE2ZMkVjxoyRJI0fP1533313j/3DEZ7nacGCBdqyZYuCwaAeeOABjR49erDLOmFdc801ikQikqRRo0bp1ltv1T333CPHcXT22WfrZz/7mXw+rosk6e9//7t+9atfadmyZWpqasrZp5UrV2r58uVyXVe33XabLrnkksEu+8RkcEL6xS9+YaZOnWruuOOOzLRvfvObpqmpyXieZ2688UbT0NBgGhoazJw5c4zneWb37t3m2muvHcSqTwzbt283t9xyS9b0XP3DUX/5y1/M/PnzjTHGvPXWW+bWW28d5IpOXF1dXeZb3/pWt2m33HKL+dvf/maMMea+++4zL7300iBUduL57W9/a6666iozffp0Y0zuPu3fv99cddVVJh6Pm8OHD2f+G9k4DTxB1dbWasGCBZnX0WhUiURC1dXVchxHkyZN0rp161RfX69JkybJcRyNHDlS6XRaLS0tg1f4CWDTpk3at2+f5syZo5tuuknvv/9+j/3DUfX19Zo8ebKkI3cnGhoaBrmiE9fmzZvV2dmpG264Qd/97ne1YcMGbdq0SRdeeKEkacqUKXr99dcHucoTQ3V1tX7zm99kXufq08aNGzVhwgQFg0FFIhFVV1dr8+bNg1XyCY3b44Ns1apVeuqpp7pNW7hwoa688kq98cYbmWnRaFThcDjzurS0VDt37lQoFFJFRUW36e3t7RoyZMhxr/1EkKt/999/v26++WZ94xvf0Pr16zVv3jw99thjOfuHoz69j/n9fqVSKbkuh4lPKyoq0ty5czV9+nRt375dN910k4wxchxH0tHvIaSpU6dq165dmde5+hSNRjOPGj6eHo1GP/NabcC3cZBNnz5d06dP73O+cDisWCyWeR2LxVRWVqZAIJA1/ZM7/+ddrv51dnbK7/dLki644ALt27dPpaWlOfuHoz69j3meR2D34IwzztDo0aPlOI7OOOMMVVRUaNOmTZlx9q+effI5/8d9ynV8O5mOY/ng9rglwuGwAoGAduzYIWOMXnvtNV1wwQWqra3Va6+9Js/ztGfPHnmed9JcZffk0UcfzVx9b968WSNHjlQkEsnZPxxVW1ururo6SUd+9FhTUzPIFZ24nnvuOT300EOSpH379ikajeprX/ta5u5YXV0d+1cPzj333Kw+jRs3TvX19YrH42pvb1djYyP7Xw84jbbIz3/+c/34xz9WOp3WpEmTdP7550s6cjU5Y8YMeZ6n+++/f5CrHHw333yz5s2bp1dffVV+v1+LFi2S1HP/cMTll1+utWvXaubMmTLGaOHChYNd0gnruuuu009/+lPNmjVLjuNo4cKFqqys1H333adHHnlEZ555pqZOnTrYZZ6Q5s+fn9Unv9+vOXPmaPbs2TLG6M4771QoFBrsUk9I/F++AACwBLfHAQCwBKENAIAlCG0AACxBaAMAYAlCGwAASxDaAABYgtAGAMAShDYAAJb4/5tN55UzzDWiAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 576x396 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": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.colorbar.Colorbar at 0x7fc406b79390>"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAFJCAYAAACB97o3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAjJUlEQVR4nO3dfWxUVf7H8c9QOjy0lALFB8RikSehacBV8Bci6h+1xg0rGqxLTUkoMaFrovWR5wcXAhqUmBDBhOxfxQ028g+bfTCRaNgVQgwJIEUgIYICFQoU2hlKp8D8/tjYpZ07c/u9du5w2/cracLcc+aeMw/tl3Puud8TisfjcQEA0EW/THcAAHBnIkAAABwRIAAAjggQAABHBAgAgCMCBADAUf9Md8DJ5cuXzc9paGgw1f/pp5/Mbfz888+m+mfPnk1a9qc//UlbtmxJOG59HY2Njab6kvTjjz+a6kciEXMbyV7Hd999p0cffdR8vq7a2trMzxk8eLCp/ogRI8xthMPhpGV/+9vfNHv27E7HJk2aZG7joYceMtUfN26cuY3x48eb6odCoaRlv/vd73TgwIGE4/X19aY2Tp06ZaovSTdu3DDV/+ijj8xtdFeq98hNpu5GuCMDRF9w9913Z7oLGTF58uRMdyFjJkyYkOkuZEROTk6mu3BH+C0BIlOYYgIAOPI0grh165bWrFmj48ePKxwOa926dRozZkxP9w0Aeo0+M4L46quvFIvF9Pnnn+utt97S+++/39P9AoBeJRQKef7JFE8jiAMHDujxxx+XJE2dOlVHjhzp0U4BQG/Tr1/wZvRDXpL1LV++XE8//bSeeOIJSdKTTz6pr776Sv37c80bAJwMGDDA83O9rNrrCZ7+oufm5ioajXY8vnXrVo8Gh76wzPW9997T6tWrE4739mWu0Wi0R1a1BHGZ6/HjxzVx4sROx/rCMtdZs2Zpz549CcdZ5nrn8zTmefjhhzs+8IMHD/bZ5XsA0F195hpEaWmpvv32W/3xj39UPB7X+vXre7pfAIAM8xQg+vXrpz//+c893RcA6LWCOMXEVWUA8AEBIolUF52HDx+eUD58+PB0d0lZWVnm51gvrg4aNChludPFw4EDB/ZoG06sy+28LBqIxWJJy5wu/ra3t5vO7+XCuXUhxc2bN81t3L54ozvlFy5cMLcxatQoU/2rV6+a27Be3M3Ly0tZ7vQ9tf6ee/keennt6RLEZa6MIADAB+kaQbS3t2vZsmU6e/asYrGYqqurdc8992jRokV64IEHJEnz5s3Ts88+q7q6Ou3YsUP9+/dXdXW1nnrqqZTnJkAAgA/SFSB27dql/Px8bdy4UU1NTXr++ef16quvasGCBaqqquqo19jYqNraWu3cuVNtbW2qqKjQzJkzUy7NJkAAQIA988wzKisr63iclZWlI0eO6Mcff9Tu3bs1ZswYLVu2TIcPH9a0adMUDocVDodVWFioY8eOqaSkJOm5CRAA4IN0jSB+vTYaiUT02muvqaamRrFYTC+++KKKi4u1detWffLJJ5o0aZKGDBnS6Xlu1/KCd9UEAAIonTfKNTQ0aP78+Xruuec0e/ZslZaWqri4WNJ/71s7evRoQgaMaDTaKWA4IUAAgA/SFSAuXryoqqoqvfPOO5o7d64kaeHChTp8+LAkad++fZoyZYpKSkp04MABtbW1qaWlRSdPnnTNgsEUEwD4IF3LXD/99FM1Nzdry5YtHdsYL1myROvXr1d2drYKCgq0du1a5ebmqrKyUhUVFYrH43rjjTdcEwgSIADAB+m6BrFixQqtWLEi4fiOHTsSjpWXl6u8vLzb5yZAAIAPgngnNdcgAACOGEEAgA+COIIgQACADwgQSaTaJW348OHmXdSSnedO45aAzinpmnWnNC87qzU1NZnqX7t2zdxGqhUbTmXW5HCtra3mPllfx/Xr181tuH0eXb/rXhICDhs2zFTfmgBSkgoKCkz1CwsLU5Y73ZBl/cytCR0lqaWlxfycdCFAAAAckc0VAOCIEQQAwFEQA0TwxjwAAF8wggAAHwRxBEGAAAAfECAAAI4IEAAARyxzBQA4YgQBAHAUxAARvDEPAMAXvowgfvrpp6RlU6ZMSSjPyspKd5c85W6yziG6vQ6n/DXZ2dmmNgYNGmSqL9nz/7jtOuXk9r1vu3J63ZcuXTKdPx6Pm/vkJW+V1a1bt0zlXnJKuW0031WqzyIZa94qt8/DqdxtP+TfWl+y5x1LpyCOIJhiAgAfECAAAI5YxQQAcMQIAgDgiAABAHAUxCmm4PUYAOALRhAA4AOmmAAAjoI4xUSAAAAfMIIAADgiQAAAHDHFBABwxAgiiZ9//tlUnpOTk87uSPIWzfPz80313b4Qd911V8Ixa7+syf0kqb293VQ/HA6b24jFYknLioqKEo4NHTrUdH4vCR1bWlpM9a3vkyTduHEjZfnAgQM7PfYjMaWXxIZuSQe7cvveOpVbf59Gjhxpqi/dWcn6gogRBAD4gCkmAIAjppgAAI4YQQAAHDGCAAA4IkAAABwFcYopeD0GAPiCEQQA+IApJgCAoyBOMREgAMAHjCAAAI4IEEmcPXvWVD5o0CBzG9a8OV5y4Fg/YLf8Qk7l1jb697d/hNb3ysvQ+Nq1a0nLRo0alXBswIABpvO75TxycvnyZVN9a+4mSYpEIinLu75OL380bt68aarv5b26fv26qX5bW5u5PC8vz9SGNV+XlJj7KpOYYgIAOAriCCJ4IQ0A4AvPI4g5c+ZoyJAhkqTRo0drw4YNPdYpAOht+swU06/zibW1tT3aGQDorfrMFNOxY8fU2tqqqqoqzZ8/XwcPHuzhbgFA7xIKhTz/ZKzPcQ/bTR0/flyHDh3Siy++qFOnTumVV17Rv/71r6Qras6fP6+77777N3cWAILq97//vefn/v3vf+/BnnSfpymmoqIijRkzRqFQSEVFRcrPz1djY6Puvfdex/pbtmxJeq733ntPq1ev7nRs3Lhx5j45LZ1MpbCw0NyG0xahqXhZltfc3Gyq72VLxdOnT5vqnzp1ytzGDz/84Hh8w4YNWrp0acLxS5cumc7vto2tEz+WuZ47dy5p2ZUrVxK22fSyTHnixImm+hMmTDC3UVxc3GP1y8rK9OWXXyYcty5zvXDhgqm+JH3//fem+itWrDC30V1BnGLyFCC++OILnThxQmvWrNH58+cViUQ87RcLAH1Fui5St7e3a9myZTp79qxisZiqq6s1btw4LVmyRKFQSOPHj9fq1avVr18/1dXVaceOHerfv7+qq6v11FNPpTy3pwAxd+5cLV26VPPmzVMoFNL69es9/U8IAPDb7Nq1S/n5+dq4caOampr0/PPPa9KkSaqpqdGMGTO0atUq7d69W1OnTlVtba127typtrY2VVRUaObMmQqHw0nP7emvejgc1kcffeT5BQFAX5OuKaZnnnlGZWVlHY+zsrJUX1+v6dOnS5JmzZqlb7/9Vv369dO0adMUDocVDodVWFioY8eOqaSkJOm5g7cwFwACqF+/fp5/UsnJyVFubq4ikYhee+011dTUKB6PdwSknJwctbS0KBKJdNy79utxt9QwBAgA8EE6l7k2NDRo/vz5eu655zR79uxOQSUajSovL0+5ubmKRqOdjt8eMJz4cuGgoaHBVO4lwZZbsrCusrOzzW1YLzKl+mDz8vIcVyxZV3Z4GbZa36tbt26Z20i1Guu+++5LOGZNnmhNJif5s4rELelg13Iv7601+V4sFjO30draaqrvtuLLqdz6XR88eLCpvmRPAplO6fr+Xbx4UVVVVVq1apX+7//+T5I0efJk7d+/XzNmzNCePXv02GOPqaSkRB9//LHa2toUi8V08uRJ1xVuXFkGAB+kK0B8+umnam5u1pYtWzpuKVi+fLnWrVunTZs2aezYsSorK1NWVpYqKytVUVGheDyuN954wzWAEiAAwAfpChArVqxwvH9j+/btCcfKy8tVXl7e7XNzDQIA4IgRBAD4oM/cSQ0AsCFAAAAcESAAAI4IEAAAR31mRzkAgE0QRxDBC2kAAF8wggAAHwRxBOFLgGhsbDSVDxo0yNyGNb+Qlzas+ZtS7ZGRl5fnuBuc9UvklmzLifW98pLLJ9UOf05l1pxEtycd666bN2+a6re3t5vbsOZi8vLeWt8ra+4myZ6LyW0nRKdy6w6NXvacuZP2qSFAAAAcESAAAI4IEAAARwQIAICjIAYIlrkCABwxggAAHwRxBEGAAAAfECAAAI4IEAAARwQIAIAjAgQAwFEQAwTLXAEAjnwZQfz444+mci8bazglvkvFmrhNsidvS1V/zJgxOn36dMJxayI9a31JKigoMNX38nmkSig3bty4hGM5OTk9dv5krInbvPyP7+LFiynLR4wY0enx1atXzW1YX4eX9+ratWum+leuXDGXW7+7AwcONNWXvCXlTJcgjiCYYgIAHxAgAACOCBAAAEcECACAIwIEAMBREAMEy1wBAI4YQQCAD4I4giBAAIAPCBAAAEcECACAIwIEAMARASKJSCRiKr98+bK5DWvumAEDBpjbCIfDpvqpchjNmjVLp06dSjhuzZsTi8VM9SV7bqXhw4eb24jH40nL7rvvvoRj1jw7WVlZ5j4NHjzYVN9L7h+3fF0TJkzo9Ngtd5OT/Px8U/0hQ4aY27B+192+t17yQXVl/fwk6d577/3N7faUIAYIlrkCABwxxQQAPvCSFTnTCBAA4IMgTjERIADABwQIAIAjAgQAwBEBAgDgKIgBIniX1QEAvmAEAQA+COIIggABAD4gQAAAHBEgAACOCBBJNDQ0mMr9SEAXjUbNbVj75ZZA8Icffkg41tzcbGpj1KhRpvqSPXFaqsR7yYwYMcJU1r+/7at48+ZNc5+sz2lrazO34ZZ8r2viQy/fdWuiwhs3bpjbaGlpMT8nlcbGxoRj586dM53DS4JNL9/ddAligGAVEwD4oF+/fp5/uuPQoUOqrKyUJNXX1+vxxx9XZWWlKisr9Y9//EOSVFdXpxdeeEHl5eX6+uuvXc/JFBMABNy2bdu0a9cuDRo0SJJ09OhRLViwQFVVVR11GhsbVVtbq507d6qtrU0VFRWaOXNmytTu3QpNt0em06dPa968eaqoqNDq1at7JM87APR2oVDI84+bwsJCbd68uePxkSNH9M033+jll1/WsmXLFIlEdPjwYU2bNk3hcFhDhgxRYWGhjh07lvK8rgFi27ZtWrFiRcd87IYNG1RTU6O//vWvisfj2r17t2vnAaCvS2eAKCsr63Qdr6SkRO+++64+++wz3X///frkk08UiUQ6bR6Vk5Pjupmba4DoGpnq6+s1ffp0Sf/dFW3v3r2unQeAvi6dAaKr0tJSFRcXd/z76NGjys3N7bQ4JxqNuu426HoNoqysTGfOnOl4HI/HOzqck5PTrdUO3333nSZPnpy03MuKot5gw4YNme7CHWPo0KFprS9JDz30kKl+WVmZuQ03W7du7fFzBsEHH3yQ6S5knJ+rmBYuXKiVK1eqpKRE+/bt05QpU1RSUqKPP/5YbW1tisViOnnyZMIWuF2ZL1LffkU9Go0qLy/P9TmPPvpo0rJoNKqcnJxOx1ItkexOv7qjsLDQ3EZRUZGpfqolqBs2bNDSpUsTjjvt1+y1jWTGjRtnqm/tk2T/DK9evWqqb10iKUk//fSTqf6JEyfMbRw9ejRp2datW1VdXd3p2C+//GJuIzs721Tfy97aubm5pvqp/if6wQcfaPHixQnHU/2n0Yn190+y728/Z84ccxvd5WeAWLNmjdauXavs7GwVFBRo7dq1ys3NVWVlpSoqKhSPx/XGG2+4Lh02B4jJkydr//79mjFjhvbs2aPHHnvM84sAgL4i3QFi9OjRqqurkyRNmTJFO3bsSKhTXl6u8vLybp/TfB/E4sWLtXnzZr300ktqb29PyzAcAJB53RpB3B6ZioqKtH379rR2CgB6myDeSc2NcgDgAwJED2lvbzc/x5pv5tKlS+Y2rCtn3C4AOfXBmmfHy42KXRcFuPFykTNZbqWhQ4c6XpC2vrdecjFZ8/J4acNtXXnXxRHWxRVeWL9TXp9j5SVHlJWX1W7pQoAAADjy4z8DPY0AAQA+YAQBAHAUxAARvDEPAMAXjCAAwAdBHEEQIADABwQIAIAjAgQAwBEBAgDgiAABAHAUxADBMlcAgCNfRhC/7mfd3XK3fDZOWltbTfWteXkke34at1wzP//8c8Kx69evm9rwshufNX+Tl7w8yfIYDR061HGzH2veo+HDh5v7ZOUlV1Bzc3PK8q6b3njJpWX9jnjJbeb2O9uVW5+cyq2bRLm9t07cttT0UxBHEEwxAYAPyMUEAHDECAIA4IgAAQBwRIAAADgK4jWI4PUYAOALRhAA4AOmmAAAjggQAABHBAgAgCMCBADAURBXMREgAMAHjCCSGDx4sKm8f397t65du2aqb01GJkktLS2m+pcvXzaXW79E1iR3kv39dfv8nCTr10MPPaSffvop4biX5IlW1gR/XhLpuSXGGz9+fKfHXhIhXrlyxVTfS/LLpqYmU323pJFO3znrdzcWi5nqS9LAgQPNz8H/MIIAAB8wggAAOCJAAAAccZEaAOCIEQQAwBEBAgDgKIgBIniTYgAAXzCCAAAfBHEEQYAAAB+wigkA4IgRBADAEQEiiREjRpjKveQXun79uvk5Vm55drpyy91kze3kxNonyf5F9ZLPJlmuq7KyMp04cSLhuPUzv3HjhrlP1txKBQUF5jbcckoVFhZ2euwl75g1F9PFixfNbVhzY7l9fk7fIevn4SV/mpdcV+kSxAARvEkxAIAvmGICAB9wkRoA4CiIU0wECADwAQECAOCIAAEAcESAAAA4CuJF6uD1GADgCwIEAPggFAp5/umOQ4cOqbKyUpJ0+vRpzZs3TxUVFVq9enXHTYl1dXV64YUXVF5erq+//tr1nEwxAYAP0nkNYtu2bdq1a5cGDRokSdqwYYNqamo0Y8YMrVq1Srt379bUqVNVW1urnTt3qq2tTRUVFZo5c6bC4XDS8zKCAAAfpHMEUVhYqM2bN3c8rq+v1/Tp0yVJs2bN0t69e3X48GFNmzZN4XBYQ4YMUWFhoY4dO5byvIwgAMAH6bxIXVZWpjNnznQ8jsfjHYElJydHLS0tikQiGjJkSEednJwcRSKRlOf1JUCkGsI4lUejUXMb1kRe1kRhkj1BnNubf+7cuYRjAwYMMLVhrS/Zk7d5SQiYqo2jR48mHHN7r7pqbm4298n6OqwJ6yRp5MiRv6m8O6wJ6GKx2G9u001ra6u53Pp5ePkD6yXhYrr4ucz19vcqGo0qLy9Pubm5nf62RqPRTgHD8Txp6yEAICMmT56s/fv3S5L27NmjRx55RCUlJTpw4IDa2trU0tKikydPasKECSnPwxQTAPQyixcv1sqVK7Vp0yaNHTtWZWVlysrKUmVlpSoqKhSPx/XGG2+4zkB0K0AcOnRIH374oWpra1VfX69FixbpgQcekCTNmzdPzz777G9+QQDQm6V7imn06NGqq6uTJBUVFWn79u0JdcrLy1VeXt7tc7oGiK7Lp44ePaoFCxaoqqqq240AQF8XxFQbrtcgui6fOnLkiL755hu9/PLLWrZsmfniIgD0Rem+US4tfY53Y6nGmTNn9Oabb6qurk47d+7UxIkTVVxcrK1bt6q5uVmLFy9O+fwTJ064XgwBgN7s3//+t+fnPv744z3Yk+4zX6QuLS1VXl5ex7/Xrl3r+pzZs2cnLTt+/LgmTpzY6ZiXZa4NDQ2m+l6WuVr3Zk51AejKlSvKz883PcfaRjJue4R35SW4Dx8+3PH41q1bVV1dnXC8617NboqKisx9Gj9+vKm+tU+SfRlrY2OjuY3z58+b6lt/NyTp+++/N9W/fQ1+V5s2bdKbb76ZcNy6H7eXJcJTp0411S8tLTW30V29coqpq4ULF+rw4cOSpH379mnKlCk93ikA6G2COMVkHkGsWbNGa9euVXZ2tgoKCro1ggAABE+3AsTty6emTJmiHTt2pLVTANDb9IkpJgBA3+DLndSTJk0ylV+4cMHcxs2bN0313XLHOLHmwHH7H4PTRTrrxXMveXauXr1qqm/N3SSl7tcvv/yScMyaZ8fLIgPr52e9iOpm5MiRCReleyI3kxvr74Yk3XPPPab6LS0tKcuHDh2acMz63fXyOqz509IpiCMIUm0AgA8IEAAARwQIAICjIAYILlIDABwxggAAHwRxBEGAAAAfECAAAI6CGCC4BgEAcMQIAgB8EMQRBAECAHwQxADBFBMAwBEjCADwQRBHEL4EiIceeshUPmrUKHMbw4YNM9X3Yy9tt+RiXXfSk+zJxbwkrbMmoXPa+c5NqsR42dnZ5vN1df36dfNzrly5ktb6UurXPXLkSPNucMnOY+El6WB7e7upvlsiRKeEndakkeFw2FRfsv9dSCcCBADAEQECAOCIAAEAcESAAAA4CmKAYJkrAMARAQIA4IgpJgDwQRCnmAgQAOADAgQAwBEBAgDgiAABAHBEgEhi3LhxpnJrjhZJGjhwoKl+NBo1txGPx0313fIqTZgwIeFYLBbr0TacWPM3DRkyxNxGqn45fVZuuXy6suYKkuz5ty5evGhuI9XnV1xcrIaGhk7H3PJ1ObHmVvKSj2j06NHm56Ty4IMPJhyz5rry8l0fPHiw+Tn4H0YQAOCDII4guA8CAOCIEQQA+CCIIwgCBAD4IIgBgikmAIAjRhAA4ANGEACAXoMRBAD4IIgjCAIEAPggiAGCKSYAgCNGEADggyCOIAgQAOADAkQS48ePN5V7ScpVUFBgqn/t2jVzG9Ykd9evX09ZXlxcnHCstbXV1Ia1vmR/7eFw2NxGS0tL0rLc3NyEY9ZkfW1tbeY+NTU1mepbkzO6KS0t1ffff9/p2D333GM+jzVRoZfEe9Z+uX1Hxo4dm3CssbHR1Eaq71Qy/foxi/5b8O4BABwxxQQAPkjnFNOcOXM60vKPHj1aixYt0pIlSxQKhTR+/HitXr3a02iKAAEAPkhXgPh1urW2trbj2KJFi1RTU6MZM2Zo1apV2r17t0pLS83nZooJAHwQCoU8/6Ry7Ngxtba2qqqqSvPnz9fBgwdVX1+v6dOnS5JmzZqlvXv3euozIwgACLCBAwdq4cKFevHFF3Xq1Cm98sorisfjHYElJyfH0wV+iQABAL5I1xRTUVGRxowZo1AopKKiIuXn56u+vr6jPBqNKi8vz9O5mWICAB+ka4rpiy++0Pvvvy9JOn/+vCKRiGbOnKn9+/dLkvbs2aNHHnnEU58ZQQBAgM2dO1dLly7VvHnzFAqFtH79eg0bNkwrV67Upk2bNHbsWJWVlXk6NwECAHyQrimmcDisjz76KOH49u3bf/O5mWICADhiBAEAPiAXUxJub0zXci9X3AsLC031veTZsd6J6JYvyCkXk3U5WnNzs6m+JF25csVU35qDys2vd3z+Fm55rpxEo1FT/Zs3b5rbcMuNdebMmU6PvSw/tOat8sKaf2v48OHmcuv3ysvvrJdcZekSxADBFBMAwBFTTADggyCOIFIGiPb2di1btkxnz55VLBZTdXW1xo0b1yNJoAAAd7aUAWLXrl3Kz8/Xxo0b1dTUpOeff16TJk3qkSRQANCXBHEEkfK//s8884xef/31jsdZWVk9lgQKAPqSdN1JndY+x7uxNCASiai6ulrl5eX64IMP9J///EeStG/fPu3cuVMffvhhyudHo1Hl5OT0TI8BIIAuXbrk+bkjRozowZ50n+tF6oaGBr366quqqKjQ7NmztXHjxo6y7iaBOnDgQNKyWbNmac+ePZ2ODRo0yPWcXUUiEVP9TC9zLSsr05dffplwvLcsc022neQHH3ygxYsXm8/XlZdlrv3729ZkDBw40NxGqmWVmzZt0ptvvtnp2NChQ81tTJo0yVT/wQcfNLfhtEVoKm7LXJ1cvHgxrfUl+zLXadOmmdvorl43xXTx4kVVVVXpnXfe0dy5cyVJkydP7pEkUADQlwRxiillgPj000/V3NysLVu2qLKyUpWVlaqpqdHmzZv10ksvqb293XMSKADAnS3lmHvFihVasWJFwvGeSAIFALizcaMcAPggiNcgCBAA4AMCRBK3b3/X1axZsxLKvayIuHHjhqm+l4Rx+fn5pvpuK7ycyq2JCu+66y5Tfck9iWBPOHfuXNKyyZMnJxyzfn5Xr14198mafM/L6q329vaU5V1XUsViMXMb1tduXbUmJV+Flkyq96qgoMBxBVJBQYGpDesqNMnbyif8DyMIAPBBEEcQJFECADhiBAEAPmAEAQDoNQgQAABHTDEBgA+YYgIA9BqMIADAB4wgAAC9BiMIAPABIwgAQK/hywji1KlTpvLLly+b23DLgdOVl1xMI0eONNV32y3swoULCccGDx5sasNLfhrrTmnWPknSgAEDkpYVFRWZz9eVl530rHmPvOSsctt1sOt3yJofSpLC4bCpvjXPlWTf2TDVDo3JcjFZv7vWXGiS/e8COmOKCQB8wBQTAKDXYAQBAD5gBAEA6DUIEAAARwQIAIAjrkEAgA+4BgEA6DUYQQCADxhBAAB6DUYQAOADRhAAgF7DlxGEW7KwruVXr141t2FNLtbU1GRuw/qcVEnxnnvuOX3//fcJx1MluXPiJVnfoEGDTPXvvfdecxupkrc5JWN0S2zYlZdki9YkhVlZWeY2CgoKUpZPnTq102MvifSGDRtmqu8l2aJb0sGuWltbzeVOCfxS8ZJ4z5pgE50xxQQAPmCKCQDQazCCAAAfMIIAAPQajCAAwAeMIAAAvQYBAgDgiCkmAPBBEKeYCBAAEGC3bt3SmjVrdPz4cYXDYa1bt05jxozpkXMzxQQAPgiFQp5/Uvnqq68Ui8X0+eef66233tL777/fY30mQABAgB04cECPP/64pP+mcjly5EiPnTsUT5U0BwBwR1u+fLmefvppPfHEE5KkJ598Ul999ZWnPG1dMYIAgADLzc1VNBrteHzr1q0eCQ4SAQIAAu3hhx/Wnj17JEkHDx7UhAkTeuzcTDEBQID9uorpxIkTisfjWr9+vR588MEeOTcBAgDgiCkmAIAjAgQAwFFG7qRO551/QTBnzpyOLTNHjx6tDRs2ZLhH6XXo0CF9+OGHqq2t1enTp7VkyRKFQiGNHz9eq1evNm9vGRS3v+76+notWrRIDzzwgCRp3rx5evbZZzPbwTRob2/XsmXLdPbsWcViMVVXV2vcuHF95jPvbTISIG6/8+/gwYN6//33tXXr1kx0xXdtbW2SpNra2gz3xB/btm3Trl27OvbB3rBhg2pqajRjxgytWrVKu3fvVmlpaYZ72fO6vu6jR49qwYIFqqqqynDP0mvXrl3Kz8/Xxo0b1dTUpOeff16TJk3qE595b5SRMJ7OO//udMeOHVNra6uqqqo0f/58HTx4MNNdSqvCwkJt3ry543F9fb2mT58uSZo1a5b27t2bqa6lVdfXfeTIEX3zzTd6+eWXtWzZMkUikQz2Ln2eeeYZvf766x2Ps7Ky+sxn3htlJEBEIhHl5uZ2PM7KytKNGzcy0RXfDRw4UAsXLtRf/vIXvffee3r77bd79WsvKyvrdNNOPB7vyC2Tk5OjlpaWTHUtrbq+7pKSEr377rv67LPPdP/99+uTTz7JYO/SJycnR7m5uYpEInrttddUU1PTZz7z3igjASKdd/7d6YqKivSHP/xBoVBIRUVFys/PV2NjY6a75Zvb556j0ajy8vIy2Bv/lJaWqri4uOPfR48ezXCP0qehoUHz58/Xc889p9mzZ/fZz7w3yEiASOedf3e6L774oiPb4vnz5xWJRDRy5MgM98o/kydP1v79+yVJe/bs0SOPPJLhHvlj4cKFOnz4sCRp3759mjJlSoZ7lB4XL15UVVWV3nnnHc2dO1dS3/3Me4OM3CiXzjv/7nSxWExLly7VuXPnFAqF9Pbbb+vhhx/OdLfS6syZM3rzzTdVV1enH3/8UStXrlR7e7vGjh2rdevWKSsrK9NdTIvbX3d9fb3Wrl2r7OxsFRQUaO3atZ2mWXuLdevW6Z///KfGjh3bcWz58uVat25dn/jMexvupAYAOGIxMgDAEQECAOCIAAEAcESAAAA4IkAAABwRIAAAjggQAABHBAgAgKP/B2N1xYFzvRdYAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 576x396 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.imshow(bad_isomap.dist_matrix_)\n",
"plt.colorbar()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.colorbar.Colorbar at 0x7fc406d62f10>"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x396 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": 15,
"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: 49.421303\n",
"[t-SNE] KL divergence after 1000 iterations: 0.371065\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x396 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=0.1, n_iter=1000, 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.7.10"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment