{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 12. Continuous Latent Variables" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from sklearn import datasets\n", "%matplotlib inline\n", "\n", "from prml.dimreduction import Autoencoder, BayesianPCA, PCA\n", "\n", "np.random.seed(1234)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "iris = datasets.load_iris()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 12.1 Principal Component Analysis" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "pca = PCA(n_components=2)\n", "Z = pca.fit_transform(iris.data)\n", "plt.scatter(Z[:, 0], Z[:, 1], c=iris.target)\n", "plt.gca().set_aspect('equal', adjustable='box')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 12.1.4 PCA for high-dimensional data" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x, y = datasets.fetch_openml(\"mnist_784\", return_X_y=True, as_frame=False)\n", "mnist3 = x[np.random.choice(np.where(y == '3')[0], 200)]\n", "pca = PCA(n_components=4)\n", "pca.fit(mnist3)\n", "plt.subplot(1, 5, 1)\n", "plt.imshow(pca.mean.reshape(28, 28))\n", "plt.axis('off')\n", "for i, w in enumerate(pca.W.T[::-1]):\n", " plt.subplot(1, 5, i + 2)\n", " plt.imshow(w.reshape(28, 28))\n", " plt.axis('off')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 12.2.2 EM algorithm for PCA" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "pca = PCA(n_components=2)\n", "Z = pca.fit_transform(iris.data, method=\"em\")\n", "plt.scatter(Z[:, 0], Z[:, 1], c=iris.target)\n", "plt.gca().set_aspect('equal', adjustable='box')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 12.2.3 Bayesian PCA" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def create_toy_data(sample_size=100, ndim_hidden=1, ndim_observe=2, std=1.):\n", " Z = np.random.normal(size=(sample_size, ndim_hidden))\n", " mu = np.random.uniform(-5, 5, size=(ndim_observe))\n", " W = np.random.uniform(-5, 5, (ndim_hidden, ndim_observe))\n", "\n", " X = Z.dot(W) + mu + np.random.normal(scale=std, size=(sample_size, ndim_observe))\n", " return X\n", "\n", "def hinton(matrix, max_weight=None, ax=None):\n", " \"\"\"Draw Hinton diagram for visualizing a weight matrix.\"\"\"\n", " ax = ax if ax is not None else plt.gca()\n", "\n", " if not max_weight:\n", " max_weight = 2 ** np.ceil(np.log(np.abs(matrix).max()) / np.log(2))\n", "\n", " ax.patch.set_facecolor('gray')\n", " ax.set_aspect('equal', 'box')\n", " ax.xaxis.set_major_locator(plt.NullLocator())\n", " ax.yaxis.set_major_locator(plt.NullLocator())\n", "\n", " for (x, y), w in np.ndenumerate(matrix):\n", " color = 'white' if w > 0 else 'black'\n", " size = np.sqrt(np.abs(w) / max_weight)\n", " rect = plt.Rectangle([y - size / 2, x - size / 2], size, size,\n", " facecolor=color, edgecolor=color)\n", " ax.add_patch(rect)\n", "\n", " ax.autoscale_view()\n", " ax.invert_yaxis()\n", " plt.xlim(-0.5, np.size(matrix, 1) - 0.5)\n", " plt.ylim(-0.5, len(matrix) - 0.5)\n", "\n", "X = create_toy_data(sample_size=100, ndim_hidden=3, ndim_observe=10, std=1.)\n", "pca = PCA(n_components=9)\n", "pca.fit(X)\n", "bpca = BayesianPCA(n_components=9)\n", "bpca.fit(X, initial=\"eigen\")\n", "plt.subplot(1, 2, 1)\n", "plt.title(\"PCA\")\n", "hinton(pca.W)\n", "plt.subplot(1, 2, 2)\n", "plt.title(\"Bayesian PCA\")\n", "hinton(bpca.W)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "### 12.4.2 Autoassociative neural networks" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "autoencoder = Autoencoder(4, 3, 2)\n", "autoencoder.fit(iris.data, 10000, 1e-3)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "Z = autoencoder.transform(iris.data)\n", "plt.scatter(Z[:, 0], Z[:, 1], c=iris.target)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "anaconda-cloud": {}, "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": 1 }