Last active
September 5, 2023 10:10
-
-
Save zxdawn/f4ccc030250152c676ea358d3cf5794c to your computer and use it in GitHub Desktop.
Compare manual Kernel PCA with sklearn
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The notebook aims to check how kernel PCA works.\n", | |
"\n", | |
"Refs:\n", | |
"\n", | |
"- [Kernel tricks and nonlinear dimensionality reduction via RBF kernel PCA](https://sebastianraschka.com/Articles/2014_kernel_pca.html)\n", | |
"- [Python implementation of precomputed RBF kernel with Gram matrix?](https://stackoverflow.com/q/46123169/7347925)\n", | |
"- [Kernel PCA](https://medium.com/@phsamuel.work/kernel-pca-f7a40f0b4265)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import numpy as np\n", | |
"import matplotlib.pyplot as plt\n", | |
"\n", | |
"from scipy.linalg import eigh\n", | |
"from scipy.spatial.distance import pdist, squareform\n", | |
"\n", | |
"from sklearn.decomposition import KernelPCA\n", | |
"from sklearn.metrics.pairwise import polynomial_kernel, rbf_kernel\n", | |
"from sklearn.datasets import make_moons" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Create Data" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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iSxbtkyDBw9WQUGBxowZo9pO9koPhUK64IILdPLJJ6tv376aOHGi/vSnP6V9jAAAAHAmy8lva2urevbs2a69Z8+eam1ttWVQHVm1apUWLlyo22+/XTt27FBZWZkuvPBCNTQ0JOy/adMmXXDBBVq/fr22b9+uKVOmaNq0adqxY0dax2mbSESqqZEef9z8l81FAMA9iOGAI1mu9jB9+nS9//77evzxxzVw4EBJUlNTk+bMmaMTTjhBa9euTctAJWn8+PEaPXq0li9fHmsbOnSoZsyYoaVLl6b0Pc466yzNmjVL3/72t1Pqn7VqD6FQ4hoi993n/BoiAOB1xHAgo6zka5Znfu+//34dOHBApaWlOu200zRkyBANHjxYBw4c0E9+8pMuDzqZQ4cOafv27SovL49rLy8v15YtW1L6Hq2trTpw4IBOPPHEDvscPHhQ+/fvj7tlXLR69NFBUzL3jZ8507wf8Agmz+A6xHDkqFyJx5arPQSDQf3tb39TdXW1Xn75ZRmGoWHDhun8889Px/hi9u3bp0gkoqKiorj2oqIiNTc3p/Q97r77bn344Yf68pe/3GGfpUuX6s477+zWWLslEjFnCxJNyBuGuX3KwoXS9OkUP0XOY/IMrkMMR47KpXhseeY36oILLtD111+v+fPnpz3xPZqvzWbShmG0a0vk8ccf1x133KFVq1apf//+HfZbvHixWlpaYrfGxsZuj9mS2tr2swVHMwypsdHsB+QwJs/gSsRw5KBci8ddSn43btyoadOmaciQITr99NN18cUXd1p1wQ79+vWT3+9vN8u7d+/edrPBba1atUpXXXWVfvOb3yRN1PPz89W3b9+4W0aFw/b2A1wo2eSZZE6eufUjN+QwYjhyTC7GY8vJ7y9/+Uudf/75OuaYYzR//nxdd9116t27tz772c/qV7/6VTrGKEnq1auXxowZo+rq6rj26upqTZo0qcPHPf7447riiiv0q1/9Sp///OfTNj7bFBfb2w9wISbP4FrEcOSYXIzHltf8fve739UPfvAD3XDDDbG2BQsW6J577tH//u//avbs2bYO8GiLFi1SZWWlxo4dq4kTJ+pnP/uZGhoaNG/ePEnmkoWmpib94he/kGQmvnPnztV9992nCRMmxGaNe/furcLCwrSNs1vKysxFNE1Nif/M8vnM+8vKMj82IEOYPINrEcORY3Ix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X0+cOFGNjY360Y9+pHPPPTet4/QyjvXM41i333XXXacXXnhBmzdvTtrXKcc8yW+aXHfddbr00ks77VNaWtql7z1gwABJ5l9RxcXFsfa9e/e2+6vKa1J93V944QW9/fbb7e7717/+Zek1LC4uVklJiV599VXLY811/fr1k9/vbzfb2NlxOmDAgIT98/LydNJJJ6VtrLmkK697IhMmTNAvf/lLu4eH/+JYdw6O9a67/vrrtW7dOm3atEmBQKDTvk465kl+06Rfv37q169fWr734MGDNWDAAFVXV2vUqFGSzHV+Gzdu1F133ZWWn+kWqb7uEydOVEtLi5577jmNGzdOkvTss8+qpaVFkyZNSvnnvfPOO2psbIz7IwSmXr16acyYMaqurtYll1wSa6+urtb06dMTPmbixIn63e9+F9f21FNPaezYserZs2dax5sruvK6J7Jjxw6O6zTiWHcOjnXrDMPQ9ddfr7Vr16qmpkaDBw9O+hhHHfMZv8QO7bz55pvGjh07jDvvvNPo06ePsWPHDmPHjh3GgQMHYn3OOOMMIxQKxb7+/ve/bxQWFhqhUMh48cUXjcsuu8woLi429u/fn42n4Eqf+9znjBEjRhhbt241tm7dapx99tnGF77whbg+R7/uBw4cMG688UZjy5YtRn19vbFhwwZj4sSJxqBBg3jdO/DrX//a6Nmzp/Hwww8bu3btMhYuXGgce+yxxhtvvGEYhmHcdtttRmVlZaz/66+/bhxzzDHGDTfcYOzatct4+OGHjZ49exqrV6/O1lNwJauv+7333musXbvW+Mc//mH8/e9/N2677TZDkrFmzZpsPQXXOXDgQCx2SzLuueceY8eOHcabb75pGAbHerpYfd051u3xzW9+0ygsLDRqamqMcDgcu3300UexPk4+5kl+HeDyyy83JLW7bdiwIdZHkvHII4/Evm5tbTW+853vGAMGDDDy8/ONc88913jxxRczP3gXe+edd4w5c+YYxx13nHHccccZc+bMaVf+5ujX/aOPPjLKy8uNk08+2ejZs6dxyimnGJdffrnR0NCQ+cG7yE9/+lOjpKTE6NWrlzF69Oi4UjiXX365cd5558X1r6mpMUaNGmX06tXLKC0tNZYvX57hEecGK6/7XXfdZZx22mlGQUGBccIJJxif/vSnjT/84Q9ZGLV7RUtotb1dfvnlhmFwrKeL1dedY90eiV7ztnmKk495n2H8d7UxAAAAkOModQYAAADPIPkFAACAZ5D8AgAAwDNIfgEAAOAZJL8AAADwDJJfAAAAeAbJLwAAADyD5BcAEOPz+fTEE09Ikt544w35fD7V1dVldUwAYCeSXwBAQsFgUOFwWMOHD7f1+5aWlqqqqsrW7wkAqSL5BQCPOXz4cEr9/H6/BgwYoLy8vDSPCAAyh+QXAGzyr3/9SwMGDND3vve9WNuzzz6rXr166amnnurwcW+99ZYuvfRSnXjiiTr22GM1duxYPfvss7H7ly9frtNOO029evXSGWecocceeyzu8Q0NDZo+fbr69Omjvn376stf/rLefvvt2P133HGHRo4cqRUrVujUU09Vfn6+DMPQq6++qnPPPVcFBQUaNmyYqqur475v22UPNTU18vl8+stf/qKxY8fqmGOO0aRJk/TKK6/EHvPaa69p+vTpKioqUp8+ffSpT31Kf/7zn2P3T548WW+++aZuuOEG+Xw++Xy+2H1btmzRueeeq969eysYDGr+/Pn68MMPU3z1ASA1JL8AYJOTTz5ZK1as0B133KFt27bpgw8+0Fe+8hVdc801Ki8vT/iYDz74QOedd5727NmjdevWaefOnbrlllvU2toqSVq7dq0WLFigG2+8UX//+9919dVX68orr9SGDRskSYZhaMaMGXr33Xe1ceNGVVdX67XXXtOsWbPifs4///lP/eY3v9GaNWtUV1en1tZWVVRUyO/365lnntEDDzygW2+9NaXnefvtt+vuu+/Wtm3blJeXp69+9atxz+eiiy7Sn//8Z+3YsUNTp07VtGnT1NDQIEkKhUIKBAJasmSJwuGwwuGwJOnFF1/U1KlTVVFRoRdeeEGrVq3S5s2bdd1111n7JQBAMgYAwFbXXHON8YlPfMKYM2eOMXz4cOPf//53h30ffPBB47jjjjPeeeedhPdPmjTJ+PrXvx7X9qUvfcm46KKLDMMwjKeeesrw+/1GQ0ND7P6XXnrJkGQ899xzhmEYxne+8x2jZ8+ext69e2N9/vSnPxl+v99obGyMtf3xj380JBlr1641DMMw6uvrDUnGjh07DMMwjA0bNhiSjD//+c+xx/zhD38wJHX6HIcNG2b85Cc/iX1dUlJi3HvvvXF9KisrjW984xtxbbW1tUaPHj06/d4AYBUzvwBgsx/96Ec6cuSIfvOb32jlypUqKCjosG9dXZ1GjRqlE088MeH9u3fv1jnnnBPXds4552j37t2x+4PBoILBYOz+YcOG6fjjj4/1kaSSkhKdfPLJcd/3lFNOUSAQiLVNnDgxpec3YsSI2P+Li4slSXv37pUkffjhh7rllltiY+jTp49efvnl2MxvR7Zv365HH31Uffr0id2mTp2q1tZW1dfXpzQuAEgFVzEAgM1ef/117dmzR62trXrzzTfjksW2evfunfT7Hb0uVjKXOkTbjv5/R30k6dhjj213f7Kf05GePXu2e0x0mcbNN9+sP/3pT/rRj36kIUOGqHfv3po5c6YOHTrU6fdsbW3V1Vdfrfnz57e775RTTklpXACQCpJfALDRoUOHNGfOHM2aNUtnnnmmrrrqKr344osqKipK2H/EiBF66KGH9O677yac/R06dKg2b96suXPnxtq2bNmioUOHSjJneRsaGtTY2Bib/d21a5daWlpifRKJPm7Pnj0aOHCgJGnr1q1dft5RtbW1uuKKK3TJJZdIMtcAv/HGG3F9evXqpUgkEtc2evRovfTSSxoyZEi3xwAAnWHZAwDY6Pbbb1dLS4t+/OMf65ZbbtHQoUN11VVXddj/sssu04ABAzRjxgw9/fTTev3117VmzZpYInrzzTfr0Ucf1QMPPKBXX31V99xzj0KhkG666SZJ0vnnn68RI0Zozpw5+tvf/qbnnntOc+fO1XnnnaexY8d2+HPPP/98nXHGGZo7d6527typ2tpa3X777d1+/kOGDFEoFFJdXZ127typ2bNnx2aFo0pLS7Vp0yY1NTVp3759kqRbb71VW7du1bXXXqu6ujq9+uqrWrduna6//vpujwkAjkbyCwA2qampUVVVlR577DH17dtXPXr00GOPPabNmzdr+fLlCR8TLYPWv39/XXTRRTr77LP1/e9/X36/X5I0Y8YM3XffffrhD3+os846Sw8++KAeeeQRTZ48WdLHO7KdcMIJOvfcc3X++efr1FNP1apVqzoda48ePbR27VodPHhQ48aN09e+9jV997vf7fZrcO+99+qEE07QpEmTNG3aNE2dOlWjR4+O67NkyRK98cYbOu2002LrkEeMGKGNGzfq1VdfVVlZmUaNGqX/9//+X2xNMQDYxWckWvgFAAAA5CBmfgEAAOAZJL8AAADwDJJfAAAAeAbJLwAAADyD5BcAAACeQfILAAAAzyD5BQAAgGeQ/AIAAMAzSH4BAADgGSS/AAAA8AySXwAAAHgGyS8AAAA84/8DT+w0ifdKYr0AAAAASUVORK5CYII=", | |
"text/plain": [ | |
"<Figure size 800x600 with 1 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"X, y = make_moons(n_samples=100, random_state=654)\n", | |
"\n", | |
"plt.figure(figsize=(8,6))\n", | |
"\n", | |
"plt.scatter(X[y==0, 0], X[y==0, 1], color='red')\n", | |
"plt.scatter(X[y==1, 0], X[y==1, 1], color='blue')\n", | |
"\n", | |
"\n", | |
"plt.ylabel('y coordinate')\n", | |
"plt.xlabel('x coordinate')\n", | |
"\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Manual stepwise Kernel PCA" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def stepwise_kpca(X, gamma, n_components=None):\n", | |
" \"\"\"\n", | |
" X: A MxN dataset as NumPy array where the samples are stored as rows (M), features as columns (N).\n", | |
" gamma: coefficient for the RBF kernel.\n", | |
" n_components: number of components to be returned. [Default: all components]\n", | |
" \"\"\"\n", | |
" # ----- apply the rbf kernel manually ---- #\n", | |
" # # Calculating the squared Euclidean distances for every pair of points\n", | |
" # # in the MxN dimensional dataset.\n", | |
" # sq_dists = pdist(X, 'sqeuclidean')\n", | |
"\n", | |
" # # Converting the pairwise distances into a symmetric MxM matrix.\n", | |
" # mat_sq_dists = squareform(sq_dists)\n", | |
" # K = np.exp(-gamma*mat_sq_dists)\n", | |
" # ----------------------------------------- #\n", | |
"\n", | |
" K = rbf_kernel(X, gamma=gamma)\n", | |
"\n", | |
" # Centering the symmetric NxN kernel matrix.\n", | |
" N = K.shape[0]\n", | |
"\n", | |
" # simplified version\n", | |
" C = np.eye(N) - np.ones(K.shape)/N\n", | |
" K = C.dot(K).dot(C)\n", | |
"\n", | |
" # original version\n", | |
" # one_n = np.ones((N,N)) / N\n", | |
" # K = K - one_n.dot(K) - K.dot(one_n) + one_n.dot(K).dot(one_n)\n", | |
"\n", | |
" # Obtaining eigenvalues in descending order with corresponding\n", | |
" # eigenvectors from the symmetric matrix.\n", | |
" eigvals, eigvecs = eigh(K)\n", | |
"\n", | |
" if n_components is None:\n", | |
" n_components = eigvals.shape[0]\n", | |
"\n", | |
" # Obtaining the i eigenvectors that corresponds to the i highest eigenvalues.\n", | |
" X_pca = np.column_stack((eigvecs[:,-i] for i in range(1,n_components+1)))\n", | |
"\n", | |
" return eigvals, eigvecs, X_pca" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/var/folders/n2/jdncdjcx465bv0ls_nyvsqx40000gn/T/ipykernel_25131/3190209221.py:38: FutureWarning: arrays to stack must be passed as a \"sequence\" type such as list or tuple. Support for non-sequence iterables such as generators is deprecated as of NumPy 1.16 and will raise an error in the future.\n", | |
" X_pca = np.column_stack((eigvecs[:,-i] for i in range(1,n_components+1)))\n" | |
] | |
} | |
], | |
"source": [ | |
"# get all pca matrixs\n", | |
"eigvals, eigvecs, X_pca = stepwise_kpca(X, gamma=15)\n", | |
"\n", | |
"# get the top 2\n", | |
"# eigvals, eigvecs, X_pca = stepwise_kpca(X, gamma=1/15, n_components=2)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"((100,), (100, 100), (100, 100))" | |
] | |
}, | |
"execution_count": 5, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"eigvals.shape, eigvecs.shape, X_pca.shape" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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NpsNu3btavf+3377bcTHx+O2227D008/7XdlwSjUOo779+/HtWvXkJub693Wq1cvDBo0SJHPR2vachyrq6tRX1/vc4xiY2MxZswYv9cYsTxevXoV+/fv93n/AJCbm9viMauoqPBLn5eXh3379uHatWtB0xix3AHqHUcAuHLlClJSUpCcnIxJkyahsrJS+TegEW05jnKYrTwC6h1LoP1lUjczvkdafX09evbs6be9Z8+e3rUQ22rmzJno06cPEhMTcejQIcyfPx8HDx5EaWlpu/arRWodx/r6esTExKBbt24+2xMSEtr9+WhRW46jZ3tCQoLP9oSEBPz973/3/m3U8nju3Dm43e6A7z/YMQuU/vr16zh37hySkpJaTGPEcgeodxzT0tKwevVqDB48GA0NDVi2bBlGjRqFgwcPon///qq9n0hpy3GUw2zlEVDvWCpRJk0fZC1cuBAvvPBC0DSffvopAMBisfg9J4QIuD0UhYWF3t8HDRqE/v37Y9iwYThw4AAyMzPbte9w0cJxDESt/aolHMex+fPNX2OE8hhMa+9fTvrm20PdpxEofRxHjBiBESNGeJ8fNWoUMjMz8eqrr+KVV15RKtuao0bZMWN5BJR/30qUSdMHWbNnz2515FRqaio+++wzfP31137PnT171i96bq/MzExER0fj+PHjumnUIn0cExMTcfXqVVy8eNHnataZM2cwcuTINu833NQ8jomJiQCkb7pJSUne7WfOnAl67PVYHgOJj4+H1Wr1+2Yb7P0nJiYGTB8VFYWbb745aBql6wWtUOs4NtehQwfceeedOH78uDIZ15i2HEc5zFYeAfWOZXNtKZOm75MVHx+PtLS0oI+4uDhkZWXB5XJh79693tfu2bMHLpdL8Ub88OHDuHbtmk9DqHWRPo5Dhw5FdHS0zy0tp9OJQ4cO6SrIUvM4em4B3niMrl69ip07dwY9Rnosj4HExMRg6NChfrc9S0tLW3z/WVlZfum3bduGYcOGITo6OmgaPZW7UKh1HJsTQqCqqkr35a4lbTmOcpitPALqHcvm2lQm29Vt3mTGjx8vhgwZIioqKkRFRYUYPHiwmDRpkk+aAQMGCIfD4f37/PnzorKyUrz//vsCgFi/fr2orKwUTqdTCCHEl19+KV544QXx6aefiurqavH++++LtLQ0kZGRIa5fvx7W9xcuahxHIYSYNWuWSE5OFtu3bxcHDhwQ3/ve98Ttt9/O43jDcVyyZImw2WzC4XCIzz//XDzwwAMiKSlJNDQ0CCGMXx7Xr18voqOjxcqVK8WRI0dEUVGR6Ny5szh58qQQQohf/OIXoqCgwJv+q6++Ep06dRLz5s0TR44cEStXrhTR0dFi48aN3jSffPKJsFqtYsmSJeLo0aNiyZIlIioqymfkp9GocRwXLlwotm7dKk6cOCEqKyvFT3/6UxEVFSX27NkT9vcXLqEeRyGEqKysFJWVlWLo0KEiPz9fVFZWisOHD3ufN2N5FEKdY6lEmWSQFYLz58+LmTNnii5duoguXbqImTNniosXL/qkASBWrVrl/XvVqlUCgN/j+eefF0IIUVNTI0aPHi26d+8uYmJiRN++fcWcOXPE+fPnw/fGwkyN4yiEEP/85z/F7NmzRffu3UXHjh3FpEmTRE1NTXjeVAS05Tg2NTWJ559/XiQmJorY2FgxevRo8fnnn3ufN0N5fP3110VKSoqIiYkRmZmZYufOnd7nfvKTn4gxY8b4pC8rKxMZGRkiJiZGpKamiuXLl/vt89133xUDBgwQ0dHRIi0tTZSUlKj9NiJO6eNYVFQkevfuLWJiYkSPHj1Ebm6u2LVrVzjeSkSFehwD1YMpKSk+acxYHoVQ/lgqUSYt//5HRERERKQg0/fJIiIiIlIDgywiIiIiFTDIIiIiIlIBgywiIiIiFTDIIiIiIlIBgywiIiIiFTDIIiIiIlIBgywiIiIiFTDIIiJqA4vFgr/85S8AgJMnT8JisaCqqiqieSIibWGQRUTUTna7HU6nE4MGDVJ0v6mpqSguLlZ0n0QUPgyyiIhacO3aNVnprFYrEhMTERUVpXKOiEhPGGQRUdidPXsWiYmJ+PWvf+3dtmfPHsTExGDbtm0tvu7UqVOYMWMGunfvjs6dO2PYsGHYs2eP9/nly5ejb9++iImJwYABA7BmzRqf19fU1GDy5Mm46aab0LVrV9x///34+uuvvc8vXLgQd9xxB/74xz/i1ltvRWxsLIQQOH78OEaPHo24uDikp6ejtLTUZ7/NbxeWlZXBYrHgww8/xLBhw9CpUyeMHDkSx44d877mxIkTmDx5MhISEnDTTTfhzjvvxPbt273P5+Tk4O9//zvmzZsHi8UCi8XifW7Xrl0YPXo0OnbsCLvdjjlz5uCbb76RefSJKFwYZBFR2PXo0QN//OMfsXDhQuzbtw9XrlzBj370Izz22GPIzc0N+JorV65gzJgxOH36NDZv3oyDBw/i2WefRVNTEwBg06ZNmDt3Lp566ikcOnQIjz76KH76059ix44dAAAhBKZMmYILFy5g586dKC0txYkTJzB9+nSf//Pll1/inXfeQUlJCaqqqtDU1ISpU6fCarVi9+7dWLFiBX7+85/Lep8LFizASy+9hH379iEqKgr/9V//5fN+Jk6ciO3bt6OyshJ5eXm45557UFNTAwBwOBxITk7GokWL4HQ64XQ6AQCff/458vLyMHXqVHz22WfYsGEDPv74Y8yePTu0D4GI1CeIiCLkscceE9/97nfFzJkzxaBBg8Q///nPFtO++eabokuXLuL8+fMBnx85cqQoLCz02XbfffeJiRMnCiGE2LZtm7BaraKmpsb7/OHDhwUAsXfvXiGEEM8//7yIjo4WZ86c8ab529/+JqxWq6itrfVu++CDDwQAsWnTJiGEENXV1QKAqKysFEIIsWPHDgFAbN++3fua999/XwAI+h7T09PFq6++6v07JSVFvPzyyz5pCgoKxCOPPOKzrby8XHTo0CHovoko/Hgli4gi5ne/+x2uX7+Od955B2+//Tbi4uJaTFtVVYWMjAx079494PNHjx7FqFGjfLaNGjUKR48e9T5vt9tht9u9z6enp+M73/mONw0ApKSkoEePHj777d27N5KTk73bsrKyZL2/IUOGeH9PSkoCAJw5cwYA8M033+DZZ5/15uGmm27CF1984b2S1ZL9+/dj9erVuOmmm7yPvLw8NDU1obq6Wla+iCg82EuTiCLmq6++wunTp9HU1IS///3vPkFJcx07dmx1fzf2WwKkW4SebTf+3lIaAOjcubPf8639n5ZER0f7vcZze/OZZ57B3/72N/zud79Dv3790LFjR0ybNg1Xr14Nus+mpiY8+uijmDNnjt9zvXv3lpUvIgoPBllEFBFXr17FzJkzMX36dKSlpeGhhx7C559/joSEhIDphwwZgj/84Q+4cOFCwKtZAwcOxMcff4wf//jH3m27du3CwIEDAUhXrWpqalBbW+u9mnXkyBG4XC5vmkA8rzt9+jR69eoFAKioqGjz+/YoLy/Hgw8+iB/+8IcApD5aJ0+e9EkTExMDt9vtsy0zMxOHDx9Gv3792p0HIlIXbxcSUUQsWLAALpcLr7zyCp599lkMHDgQDz30UIvpH3jgASQmJmLKlCn45JNP8NVXX6GkpMQb8DzzzDNYvXo1VqxYgePHj2Pp0qVwOBx4+umnAQDjxo3DkCFDMHPmTBw4cAB79+7Fj3/8Y4wZMwbDhg1r8f+OGzcOAwYMwI9//GMcPHgQ5eXlWLBgQbvff79+/eBwOFBVVYWDBw8iPz/fe5XLIzU1FR999BHq6upw7tw5AMDPf/5zVFRU4PHHH0dVVRWOHz+OzZs344knnmh3nohIWQyyiCjsysrKUFxcjDVr1qBr167o0KED1qxZg48//hjLly8P+BrP9A49e/bExIkTMXjwYCxZsgRWqxUAMGXKFCxbtgy//e1vcdttt+HNN9/EqlWrkJOTA+DbGdq7deuG0aNHY9y4cbj11luxYcOGoHnt0KEDNm3ahMbGRtx11114+OGH8atf/ardx+Dll19Gt27dMHLkSNxzzz3Iy8tDZmamT5pFixbh5MmT6Nu3r7ef2JAhQ7Bz504cP34c2dnZyMjIwHPPPeft80VE2mERgTocEBEREVG78EoWERERkQoYZBERERGpgEEWERERkQoYZBERERGpgEEWERERkQoYZBERERGpgEEWERERkQoYZBERERGpgEEWERERkQoYZBERERGpgEEWERERkQr+H1ehfIvEi10wAAAAAElFTkSuQmCC", | |
"text/plain": [ | |
"<Figure size 640x480 with 1 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.scatter(X_pca[y==0, 0], X_pca[y==0, 1], color='red')\n", | |
"plt.scatter(X_pca[y==1, 0], X_pca[y==1, 1], color='blue')\n", | |
"\n", | |
"\n", | |
"plt.ylabel('y coordinate')\n", | |
"plt.xlabel('x coordinate')\n", | |
"\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## sklearn Kernel PCA" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Same components as above" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<style>#sk-container-id-1 {color: black;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>KernelPCA(gamma=15, kernel='rbf', n_components=100)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">KernelPCA</label><div class=\"sk-toggleable__content\"><pre>KernelPCA(gamma=15, kernel='rbf', n_components=100)</pre></div></div></div></div></div>" | |
], | |
"text/plain": [ | |
"KernelPCA(gamma=15, kernel='rbf', n_components=100)" | |
] | |
}, | |
"execution_count": 7, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"kpca = KernelPCA(kernel='rbf', gamma=15, n_components=X.shape[0])\n", | |
"kpca.fit(X)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"eigvals_sklearn, eigvecs_sklearn = kpca.eigenvalues_, kpca.eigenvectors_\n", | |
"\n", | |
"X_pca_sklearn = eigvecs_sklearn" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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7rK5hiNjspqarHOinTEmCwDgYYnsBlN2nayrrrpKV111lZ1lgWTVmEcftaZPBALhNSwQsH4uW0aABQDwJC91g3FfLpSkTZs26dvf/rYuvPBCXXTRRbruuuu02Q0j0NyivFx66SXp3HPD0wsLrXS3LBACAEAveKUbjPty4e9+9zvdeuutKi8v17hx42SM0datW7V69WqtWLFCs2bNcqqsKcux041uX+oWAIA+cLobdPpyYdxB1sUXX6w77rhD8+fPD0t/+OGH9R//8R/avXu3rQV0A/YuBADAfVJunayPP/5Y3/72tyPSr7vuOtXX19tSKAAAALeLO8gqKirS66+/HpH++uuvq6ioyJZCAQAAuF3cswvvvvtuzZ07V3V1dRo7dqwCgYC2bNmiFStW6NFHH3WijAAAAK4Td5D1P/7H/1B+fr5+/vOf68UXX5RkjdNatWqVpk+fbnsBAQAA3KjXi5HiJAa+AwDgPik38P3tt9/Wtm3bItK3bdumd955x5ZCAQAAuF3cQdYPf/hDNTY2RqQ3NTXphz/8oS2FAgAAcLu4g6xdu3Zp5MiREekjRozQrl27bCkUAACA28U98D0rK0uff/65zj///LD05uZm9evX660Q0RVWfQcA+JAXur+4z2RdddVVWrBggVpbW0Nphw8f1k9+8hM2jLZbdbW1FfmVV0qzZlk/S0qsdAAAPMor3V/cswubmpo0YcIEHTx4UCNGjJAk1dXVKS8vT+vWrfPlgqSOzE6orra2IO/89gS3IHfTDpkAAMQokd1fyu1dKElfffWVnnvuOe3YsUOnnXaahg8frptvvlkZGRm2F9ANbH+TOjqskP3TT6PfHwhYW5HX17vv3CkAAF1IdPfndJDVq0FUp59+uu644w67y4KgzZu7rmGSFd43Nlr5Jk1KWLEAAHCS17q/uMdkIQGam+3NBwCAC3it+yPISkUFBfbmAwDABbzW/RFkpaLx462LzsFRfp0FAlJRkZUPAACP8Fr3R5CVitLTpUcftX7vXNOCfy9bxqB3AICneK37izvI+v73v6833njDibLgVOXl1jzVc88NTy8sZPkGAIBnean7i3sJh+985zt69dVXVVRUpFtvvVXf+973dG7nI+Ezjk4B9cKStwAAxCkR3V9KrpN18OBB/e53v9OKFSv0wQcfaPLkybrttts0ffp0X66V5fSbBAAA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fgAACUbXE8k1QdahQ4dUUVGhnJwc5eTkqKKiQocPH+72MdXV1Zo6dapyc3MVCARUV1cXkae9vV0/+tGPlJubq9NPP13XXXedPu1uhT03YNqPv7A7L1yIaus9dD2RXBNkzZo1S3V1dVqzZo3WrFmjuro6VVRUdPuYr776SuPGjdPSpUu7zFNZWanVq1dr5cqV2rJli44cOaJp06apw82feKb9+AdzpeFCVFtvouuJwrjArl27jCTz5ptvhtJqamqMJPPhhx/2+Pj6+nojydTW1oalHz582GRkZJiVK1eG0pqamkxaWppZs2ZNzOVrbW01kkxra2vMj0mIqipjCguNsSZ2WLeiIisd7ldVZUwgEP7+SlZaIMD7jJREtfU+N3U9TvffrjiTVVNTo5ycHF1xxRWhtNGjRysnJ0dbt27t9fNu375dx44d05QpU0JpgwYN0rBhw7p93vb2drW1tYXdUlJ5ubR3rzWV4/nnrZ/19cyr9gLmSsOFqLb+QNdzkitmF7a0tGjgwIER6QMHDlRLS0ufnjczM1NnnXVWWHpeXl63z7tkyRItXry41/83oZj2403x7M7L+48UQbX1D7oeS1LPZC1atEiBQKDb2zvvvCNJCkQZSWeMiZreVz0974IFC9Ta2hq6NTY22l4GoFvMlYYLUW3hN0k9k3XnnXfqpptu6jZPSUmJ3nvvPX3++ecR9+3fv195eXm9/v/5+fk6evSoDh06FHY2a9++fRo7dmyXj8vKylJWVlav/29KYPVAd2OuNFyIautNdCddS2qQlZubq9zc3B7zjRkzRq2trXrrrbd0+eWXS5K2bdum1tbWboOhnpSVlSkjI0Pr1q3TjTfeKElqbm7WBx98oJ/97Ge9ft6UV11tDYw49bx9YaE1LcSPF83dKDhXuqkp+gCXQMC6309zpZHyqLbeQ3fSPVcMfL/44ot19dVX6/bbb9ebb76pN998U7fffrumTZumIUOGhPINHTpUq1evDv39xRdfqK6uTrt27ZIk/eUvf1FdXV1ovFVOTo5uu+023X333Xr99ddVW1urW265RZdccokmT56c2BeZKOze6Q3MlYYLUW29he4kBo7MWXTAwYMHzezZs03//v1N//79zezZs82hQ4fC8kgyy5cvD/29fPlyIyni9sADD4Ty/P3vfzd33nmnOfvss81pp51mpk2bZhoaGuIq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PnT/pEmT9Mknn2j+/PkKBAIKBAKh+7Zu3aoJEybotNNOU1FRkebOnauvvvoqxqMPIFEIsgAk3IABA/TrX/9aixYt0jvvvKMjR47olltu0b/8y79oypQpUR9z5MgRTZw4UZ999pleeeUV7dixQ/fee69OnDghSVq9erXmzZunu+++Wx988IF+8IMf6NZbb9WGDRskScYYXX/99friiy+0adMmrVu3Th999JFmzpwZ9n/++te/6sUXX1RVVZXq6up04sQJlZeXKz09XW+++aaefvpp3XfffTG9zoULF+rnP/+53nnnHfXr10///M//HPZ6rr32Wq1fv161tbWaOnWqvv3tb6uhoUGSVF1drcLCQj344INqbm5Wc3OzJOn999/X1KlTVV5ervfee0+rVq3Sli1bdOedd8b3JgBwngGAJPmXf/kX841vfMPMnj3bDBs2zPz973/vMu8zzzxj+vfvbw4ePBj1/rFjx5rbb789LO2GG24w1157rTHGmLVr15r09HTT0NAQun/nzp1GknnrrbeMMcY88MADJiMjw+zbty+U509/+pNJT083jY2NobQ//vGPRpJZvXq1McaY+vp6I8nU1tYaY4zZsGGDkWTWr18fesyrr75qJHX7GktLS83jjz8e+ru4uNg88sgjYXkqKirMHXfcEZa2efNmk5aW1u1zA0g8zmQBSJp///d/1/Hjx/Xiiy/queeeU3Z2dpd56+rqNGLECJ199tlR79+9e7fGjRsXljZu3Djt3r07dH9RUZGKiopC95eWlurrX/96KI8kFRcXa8CAAWHPe95556mwsDCUNmbMmJhe3/Dhw0O/FxQUSJL27dsnSfrqq6907733hspwxhln6MMPPwydyerK9u3btWLFCp1xxhmh29SpU3XixAnV19fHVC4AicEoTQBJ8/HHH+uzzz7TiRMn9Mknn4QFJZ2ddtppPT7fqeOWJOsSYTDt1N+7yiNJp59+esT9Pf2frmRkZEQ8Jnh588c//rH+9Kc/6d///d914YUX6rTTTtOMGTN09OjRbp/zxIkT+sEPfqC5c+dG3HfeeefFVC4AiUGQBSApjh49qtmzZ2vmzJkaOnSobrvtNr3//vvKy8uLmn/48OH61a9+pS+++CLq2ayLL75YW7Zs0Xe/+91Q2tatW3XxxRdLss5aNTQ0qLGxMXQ2a9euXWptbQ3liSb4uM8++0yDBg2SJNXU1PT6dQdt3rxZ3//+9/Xf/tt/k2SN0dq7d29YnszMTHV0dISljRw5Ujt37tSFF17Y5zIAcBaXCwEkxcKFC9Xa2qrHHntM9957ry6++GLddtttXea/+eablZ+fr+uvv15//vOf9fHHH6uqqioU8Pz4xz/WihUr9PTTT2vPnj16+OGHVV1drXvuuUeSNHnyZA0fPlyzZ8/Wu+++q7feekvf/e53NXHiRI0aNarL/zt58mQNGTJE3/3ud7Vjxw5t3rxZCxcu7PPrv/DCC1VdXa26ujrt2LFDs2bNCp3lCiopKdEbb7yhpqYmHThwQJJ03333qaamRj/84Q9VV1enPXv26JVXXtGPfvSjPpcJgL0IsgAk3MaNG7Vs2TL99re/1Zlnnqm0tDT99re/1ZYtW/TUU09FfUxweYeBAwfq2muv1SWXXKKlS5cqPT1dknT99dfr0Ucf1f/+3/9b3/zmN/XMM89o+fLlmjRpkqSTK7SfddZZmjBhgiZPnqzzzz9fq1at6rasaWlpWr16tdrb23X55Zfrv//3/65/+7d/6/MxeOSRR3TWWWdp7Nix+va3v62pU6dq5MiRYXkefPBB7d27VxdccEFonNjw4cO1adMm7dmzR+PHj9eIESP005/+NDTmC0DqCJhoAw4AAADQJ5zJAgAAcABBFgAAgAMIsgAAABxAkAUAAOAAgiwAAAAHEGQBAAA4gCALAADAAQRZAAAADiDIAgAAcABBFgAAgAMIsgAAABzw/wF/y5xpbW1+1QAAAABJRU5ErkJggg==", | |
"text/plain": [ | |
"<Figure size 640x480 with 1 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.scatter(X_pca_sklearn[y==0, 0], X_pca_sklearn[y==0, 1], color='red')\n", | |
"plt.scatter(X_pca_sklearn[y==1, 0], X_pca_sklearn[y==1, 1], color='blue')\n", | |
"\n", | |
"\n", | |
"plt.ylabel('y coordinate')\n", | |
"plt.xlabel('x coordinate')\n", | |
"\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Default Non-zero components" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"kpca = KernelPCA(kernel='rbf', gamma=15, n_components=None, eigen_solver='dense')#fit_inverse_transform=True)\n", | |
"kpca.fit(X)\n", | |
"eigvals_sklearn, eigvecs_sklearn = kpca.eigenvalues_, kpca.eigenvectors_\n", | |
"X_pca_sklearn_nonzero = eigvecs_sklearn" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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7rK5hiNjspqarHOinTEmCwDgYYnsBlN2nayrrrpKV111lZ1lgWTVmEcftaZPBALhNSwQsH4uW0aABQDwJC91g3FfLpSkTZs26dvf/rYuvPBCXXTRRbruuuu02Q0j0NyivFx66SXp3HPD0wsLrXS3LBACAEAveKUbjPty4e9+9zvdeuutKi8v17hx42SM0datW7V69WqtWLFCs2bNcqqsKcux041uX+oWAIA+cLobdPpyYdxB1sUXX6w77rhD8+fPD0t/+OGH9R//8R/avXu3rQV0A/YuBADAfVJunayPP/5Y3/72tyPSr7vuOtXX19tSKAAAALeLO8gqKirS66+/HpH++uuvq6ioyJZCAQAAuF3cswvvvvtuzZ07V3V1dRo7dqwCgYC2bNmiFStW6NFHH3WijAAAAK4Td5D1P/7H/1B+fr5+/vOf68UXX5RkjdNatWqVpk+fbnsBAQAA3KjXi5HiJAa+AwDgPik38P3tt9/Wtm3bItK3bdumd955x5ZCAQAAuF3cQdYPf/hDNTY2RqQ3NTXphz/8oS2FAgAAcLu4g6xdu3Zp5MiREekjRozQrl27bCkUAACA28U98D0rK0uff/65zj///LD05uZm9evX660Q0RVWfQcA+JAXur+4z2RdddVVWrBggVpbW0Nphw8f1k9+8hM2jLZbdbW1FfmVV0qzZlk/S0qsdAAAPMor3V/cswubmpo0YcIEHTx4UCNGjJAk1dXVKS8vT+vWrfPlgqSOzE6orra2IO/89gS3IHfTDpkAAMQokd1fyu1dKElfffWVnnvuOe3YsUOnnXaahg8frptvvlkZGRm2F9ANbH+TOjqskP3TT6PfHwhYW5HX17vv3CkAAF1IdPfndJDVq0FUp59+uu644w67y4KgzZu7rmGSFd43Nlr5Jk1KWLEAAHCS17q/uMdkIQGam+3NBwCAC3it+yPISkUFBfbmAwDABbzW/RFkpaLx462LzsFRfp0FAlJRkZUPAACP8Fr3R5CVitLTpUcftX7vXNOCfy9bxqB3AICneK37izvI+v73v6833njDibLgVOXl1jzVc88NTy8sZPkGAIBnean7i3sJh+985zt69dVXVVRUpFtvvVXf+973dG7nI+Ezjk4B9cKStwAAxCkR3V9KrpN18OBB/e53v9OKFSv0wQcfaPLkybrttts0ffp0X66V5fSbBAAA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fgAACUbXE8k1QdahQ4dUUVGhnJwc5eTkqKKiQocPH+72MdXV1Zo6dapyc3MVCARUV1cXkae9vV0/+tGPlJubq9NPP13XXXedPu1uhT03YNqPv7A7L1yIaus9dD2RXBNkzZo1S3V1dVqzZo3WrFmjuro6VVRUdPuYr776SuPGjdPSpUu7zFNZWanVq1dr5cqV2rJli44cOaJp06apw82feKb9+AdzpeFCVFtvouuJwrjArl27jCTz5ptvhtJqamqMJPPhhx/2+Pj6+nojydTW1oalHz582GRkZJiVK1eG0pqamkxaWppZs2ZNzOVrbW01kkxra2vMj0mIqipjCguNsSZ2WLeiIisd7ldVZUwgEP7+SlZaIMD7jJREtfU+N3U9TvffrjiTVVNTo5ycHF1xxRWhtNGjRysnJ0dbt27t9fNu375dx44d05QpU0JpgwYN0rBhw7p93vb2drW1tYXdUlJ5ubR3rzWV4/nnrZ/19cyr9gLmSsOFqLb+QNdzkitmF7a0tGjgwIER6QMHDlRLS0ufnjczM1NnnXVWWHpeXl63z7tkyRItXry41/83oZj2403x7M7L+48UQbX1D7oeS1LPZC1atEiBQKDb2zvvvCNJCkQZSWeMiZreVz0974IFC9Ta2hq6NTY22l4GoFvMlYYLUW3hN0k9k3XnnXfqpptu6jZPSUmJ3nvvPX3++ecR9+3fv195eXm9/v/5+fk6evSoDh06FHY2a9++fRo7dmyXj8vKylJWVlav/29KYPVAd2OuNFyIautNdCddS2qQlZubq9zc3B7zjRkzRq2trXrrrbd0+eWXS5K2bdum1tbWboOhnpSVlSkjI0Pr1q3TjTfeKElqbm7WBx98oJ/97Ge9ft6UV11tDYw49bx9YaE1LcSPF83dKDhXuqkp+gCXQMC6309zpZHyqLbeQ3fSPVcMfL/44ot19dVX6/bbb9ebb76pN998U7fffrumTZumIUOGhPINHTpUq1evDv39xRdfqK6uTrt27ZIk/eUvf1FdXV1ovFVOTo5uu+023X333Xr99ddVW1urW265RZdccokmT56c2BeZKOze6Q3MlYYLUW29he4kBo7MWXTAwYMHzezZs03//v1N//79zezZs82hQ4fC8kgyy5cvD/29fPlyIyni9sADD4Ty/P3vfzd33nmnOfvss81pp51mpk2bZhoaGuIq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PnT/pEmT9Mknn2j+/PkKBAIKBAKh+7Zu3aoJEybotNNOU1FRkebOnauvvvoqxqMPIFEIsgAk3IABA/TrX/9aixYt0jvvvKMjR47olltu0b/8y79oypQpUR9z5MgRTZw4UZ999pleeeUV7dixQ/fee69OnDghSVq9erXmzZunu+++Wx988IF+8IMf6NZbb9WGDRskScYYXX/99friiy+0adMmrVu3Th999JFmzpwZ9n/++te/6sUXX1RVVZXq6up04sQJlZeXKz09XW+++aaefvpp3XfffTG9zoULF+rnP/+53nnnHfXr10///M//HPZ6rr32Wq1fv161tbWaOnWqvv3tb6uhoUGSVF1drcLCQj344INqbm5Wc3OzJOn999/X1KlTVV5ervfee0+rVq3Sli1bdOedd8b3JgBwngGAJPmXf/kX841vfMPMnj3bDBs2zPz973/vMu8zzzxj+vfvbw4ePBj1/rFjx5rbb789LO2GG24w1157rTHGmLVr15r09HTT0NAQun/nzp1GknnrrbeMMcY88MADJiMjw+zbty+U509/+pNJT083jY2NobQ//vGPRpJZvXq1McaY+vp6I8nU1tYaY4zZsGGDkWTWr18fesyrr75qJHX7GktLS83jjz8e+ru4uNg88sgjYXkqKirMHXfcEZa2efNmk5aW1u1zA0g8zmQBSJp///d/1/Hjx/Xiiy/queeeU3Z2dpd56+rqNGLECJ199tlR79+9e7fGjRsXljZu3Djt3r07dH9RUZGKiopC95eWlurrX/96KI8kFRcXa8CAAWHPe95556mwsDCUNmbMmJhe3/Dhw0O/FxQUSJL27dsnSfrqq6907733hspwxhln6MMPPwydyerK9u3btWLFCp1xxhmh29SpU3XixAnV19fHVC4AicEoTQBJ8/HHH+uzzz7TiRMn9Mknn4QFJZ2ddtppPT7fqeOWJOsSYTDt1N+7yiNJp59+esT9Pf2frmRkZEQ8Jnh588c//rH+9Kc/6d///d914YUX6rTTTtOMGTN09OjRbp/zxIkT+sEPfqC5c+dG3HfeeefFVC4AiUGQBSApjh49qtmzZ2vmzJkaOnSobrvtNr3//vvKy8uLmn/48OH61a9+pS+++CLq2ayLL75YW7Zs0Xe/+91Q2tatW3XxxRdLss5aNTQ0qLGxMXQ2a9euXWptbQ3liSb4uM8++0yDBg2SJNXU1PT6dQdt3rxZ3//+9/Xf/tt/k2SN0dq7d29YnszMTHV0dISljRw5Ujt37tSFF17Y5zIAcBaXCwEkxcKFC9Xa2qrHHntM9957ry6++GLddtttXea/+eablZ+fr+uvv15//vOf9fHHH6uqqioU8Pz4xz/WihUr9PTTT2vPnj16+OGHVV1drXvuuUeSNHnyZA0fPlyzZ8/Wu+++q7feekvf/e53NXHiRI0aNarL/zt58mQNGTJE3/3ud7Vjxw5t3rxZCxcu7PPrv/DCC1VdXa26ujrt2LFDs2bNCp3lCiopKdEbb7yhpqYmHThwQJJ03333qaamRj/84Q9VV1enPXv26JVXXtGPfvSjPpcJgL0IsgAk3MaNG7Vs2TL99re/1Zlnnqm0tDT99re/1ZYtW/TUU09FfUxweYeBAwfq2muv1SWXXKKlS5cqPT1dknT99dfr0Ucf1f/+3/9b3/zmN/XMM89o+fLlmjRpkqSTK7SfddZZmjBhgiZPnqzzzz9fq1at6rasaWlpWr16tdrb23X55Zfrv//3/65/+7d/6/MxeOSRR3TWWWdp7Nix+va3v62pU6dq5MiRYXkefPBB7d27VxdccEFonNjw4cO1adMm7dmzR+PHj9eIESP005/+NDTmC0DqCJhoAw4AAADQJ5zJAgAAcABBFgAAgAMIsgAAABxAkAUAAOAAgiwAAAAHEGQBAAA4gCALAADAAQRZAAAADiDIAgAAcABBFgAAgAMIsgAAABzw/wF/y5xpbW1+1QAAAABJRU5ErkJggg==", | |
"text/plain": [ | |
"<Figure size 640x480 with 1 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.scatter(X_pca_sklearn_nonzero[y==0, 0], X_pca_sklearn_nonzero[y==0, 1], color='red')\n", | |
"plt.scatter(X_pca_sklearn_nonzero[y==1, 0], X_pca_sklearn_nonzero[y==1, 1], color='blue')\n", | |
"\n", | |
"\n", | |
"plt.ylabel('y coordinate')\n", | |
"plt.xlabel('x coordinate')\n", | |
"\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Summarization" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([[ 1.21586962e-02, 3.84017806e-02, -3.94762848e-02, ...,\n", | |
" 1.57121308e-04, -1.98593340e-04, -9.99995089e-02],\n", | |
" [ 1.31843616e-01, 7.05710250e-02, -7.04548930e-02, ...,\n", | |
" 1.54801905e-01, 1.64915730e-01, -9.98462437e-02],\n", | |
" [-9.39065619e-02, 1.35976749e-01, 1.39124055e-01, ...,\n", | |
" -4.80791379e-02, 4.50129377e-02, -1.00050711e-01],\n", | |
" ...,\n", | |
" [-1.21586962e-02, 3.84017806e-02, 3.94762848e-02, ...,\n", | |
" 1.57439182e-04, -2.12273207e-04, -9.99995748e-02],\n", | |
" [ 4.98412964e-02, -9.23448423e-02, 8.96735105e-02, ...,\n", | |
" -1.61006968e-03, -2.07821160e-03, -9.99915435e-02],\n", | |
" [ 6.02674547e-02, 1.11322346e-01, -1.14374591e-01, ...,\n", | |
" 7.04417958e-03, 7.18657107e-03, -9.99560821e-02]])" | |
] | |
}, | |
"execution_count": 12, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"X_pca" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([[ 1.21586962e-02, -3.84017806e-02, 3.94762848e-02, ...,\n", | |
" -0.00000000e+00, 3.41564764e-04, 9.99992981e-02],\n", | |
" [ 1.31843616e-01, -7.05710250e-02, 7.04548930e-02, ...,\n", | |
" 1.46237126e-01, 1.72795928e-01, 9.92478952e-02],\n", | |
" [-9.39065619e-02, -1.35976749e-01, -1.39124055e-01, ...,\n", | |
" 5.08610704e-02, -4.30187816e-02, 1.00314669e-01],\n", | |
" ...,\n", | |
" [-1.21586962e-02, -3.84017806e-02, -3.94762848e-02, ...,\n", | |
" -1.36669126e-05, 3.40470403e-04, 9.99992848e-02],\n", | |
" [ 4.98412964e-02, 9.23448423e-02, -8.96735105e-02, ...,\n", | |
" -1.65109004e-03, -1.63380378e-03, 9.99949217e-02],\n", | |
" [ 6.02674547e-02, -1.11322346e-01, 1.14374591e-01, ...,\n", | |
" 6.51226198e-03, 7.98734676e-03, 9.99582955e-02]])" | |
] | |
}, | |
"execution_count": 13, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"X_pca_sklearn" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 14, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.colorbar.Colorbar at 0x1386144c0>" | |
] | |
}, | |
"execution_count": 14, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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", | |
"text/plain": [ | |
"<Figure size 640x480 with 2 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.imshow(X_pca-X_pca_sklearn, cmap='RdBu')\n", | |
"plt.colorbar()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"False" | |
] | |
}, | |
"execution_count": 15, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"np.allclose(X_pca, X_pca_sklearn, atol=0.2)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"It seems something is still different in manual and sklearn Kernel PCA." | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "enpt", | |
"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.10.12" | |
}, | |
"orig_nbformat": 4 | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment