Skip to content

Instantly share code, notes, and snippets.

@jcboyd
Created October 15, 2022 11:01
Show Gist options
  • Save jcboyd/b193bd3072e0d03b669e51148fd8c54a to your computer and use it in GitHub Desktop.
Save jcboyd/b193bd3072e0d03b669e51148fd8c54a to your computer and use it in GitHub Desktop.
PCA residual plot
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "c076eb3f",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/tmp/ipykernel_410218/3646576483.py:8: RuntimeWarning: covariance is not positive-semidefinite.\n",
" X = np.random.multivariate_normal(mean, cov, 50)\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x576 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"from sklearn.decomposition import PCA\n",
"\n",
"mean = [0, 0]\n",
"cov = [[5, 5], [0, 1]]\n",
"\n",
"X = np.random.multivariate_normal(mean, cov, 50)\n",
"X -= np.mean(X, axis=0)\n",
"\n",
"pca = PCA(n_components=2).fit(X)\n",
"components = pca.components_\n",
"\n",
"def residual_plot(ax, X, components, magnitudes):\n",
"\n",
" ax.plot(X[:, 0], X[:, 1], 'x')\n",
"\n",
" colours = ['red', 'green']\n",
" \n",
" for i, (v, s) in enumerate(zip(components, magnitudes)):\n",
" ax.plot(s * np.array([0, +v[0]]),\n",
" s * np.array([0, +v[1]]), color=colours[i], linewidth=2)\n",
" ax.plot(s * np.array([-v[0], 0]),\n",
" s * np.array([-v[1], 0]), color=colours[i], linestyle='dashed')\n",
"\n",
" proj = X.dot(components[0])[..., None] \n",
" Z = proj * components[0][None]\n",
"\n",
" ax.scatter(Z[:, 0], Z[:, 1], color='purple', alpha=0.5, s=50)\n",
"\n",
" for idx in np.random.choice(np.arange(X.shape[0]), size=20):\n",
" x, p = X[idx], Z[idx]\n",
" ax.plot([x[0], p[0]], [x[1], p[1]], color='black', linestyle='dashed')\n",
"\n",
" mse = np.mean(np.linalg.norm(X - Z, axis=1))\n",
" var = np.mean(proj ** 2)\n",
"\n",
" ax.set_title('$\\sigma^2=$ %.02f, MSE = %.02f' % (var, mse), fontsize=20)\n",
" ax.axis('equal')\n",
"\n",
"fig, ax = plt.subplots(figsize=(8, 8))\n",
"residual_plot(ax, X, pca.components_, 8 * pca.explained_variance_ratio_)\n",
"xlims = ax.get_xlim()\n",
"ylims = ax.get_ylim()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "83b81b95",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(-5.8353920012866425, 5.8353920012866425)"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x576 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fake_comp = np.array([-0.5, 3])\n",
"fake_comp = fake_comp / np.linalg.norm(fake_comp)\n",
"\n",
"fig, ax = plt.subplots(figsize=(8, 8))\n",
"residual_plot(ax, X, [fake_comp], 6 * pca.explained_variance_ratio_)\n",
"ax.set_xlim(xlims)\n",
"ax.set_ylim(ylims)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.9.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment