{ "cells": [ { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "# Principal Component Analysis\n", "\n", "In this section of the tutorial, we will investigate the use of Principal Component Analysis in `sklearn`. Principal Component Analysis mainly rely on `fit(X)` and `transform(X)` methods. These two actions can be performed sequentially _via_ a single call to the `fit_transform(X)` method. Once fitted, components are stored in decreasing importance order in the `components_` attribute and the amount of variance they explain can be found in `explained_variance_`.\n", "\n", "More information about the use of Principal Component Analysis in `sklearn` can be found at: ." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "\n", "from sklearn.decomposition import PCA\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "np.random.seed(10)\n", "X = np.dot(np.random.random(size=(2, 2)), np.random.normal(size=(2, 200))).T\n", "plt.scatter(X[:, 0], X[:, 1], s=50)\n", "plt.axis('equal');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, we will fit a PCA keeping all components (_ie._ 2 here):" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pca = PCA(n_components=2)\n", "pca.fit(X)\n", "\n", "plt.scatter(X[:, 0], X[:, 1], s=50)\n", "for i in range(pca.n_components_):\n", " vector = pca.explained_variance_[i] * pca.components_[i]\n", " plt.plot([0, vector[0]], [0, vector[1]], \"r\", lw=3)\n", "plt.axis('equal');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us have a look at the fraction of the variance explained by each component of the PCA:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 0.8395455 0.1604545]\n" ] } ], "source": [ "print(pca.explained_variance_ / np.sum(pca.explained_variance_))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Another option is to set a minimum fraction of the variance to be retained inside the model:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n" ] } ], "source": [ "pca = PCA(0.80)\n", "pca.fit(X)\n", "print(pca.n_components_)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, if we project our data on the only component retained in the model, we get:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "X_pca = pca.fit_transform(X)\n", "X_reduced = pca.inverse_transform(X_pca)\n", "\n", "\n", "plt.scatter(X[:, 0], X[:, 1], s=50, alpha=.2)\n", "plt.scatter(X_reduced[:, 0], X_reduced[:, 1], c='b', s=50, alpha=.8)\n", "plt.axis('equal');" ] } ], "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.4.3" } }, "nbformat": 4, "nbformat_minor": 0 }