{ "cells": [ { "cell_type": "markdown", "metadata": { "toc": true }, "source": [ "

Table of Contents

\n", "
" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# code for loading the format for the notebook\n", "import os\n", "\n", "# path : store the current path to convert back to it later\n", "path = os.getcwd()\n", "os.chdir(os.path.join('..', 'notebook_format'))\n", "from formats import load_style\n", "load_style(plot_style = False)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ethen 2017-10-07 14:50:59 \n", "\n", "CPython 3.5.2\n", "IPython 6.1.0\n", "\n", "numpy 1.13.3\n", "pandas 0.20.3\n", "matplotlib 2.0.0\n", "sklearn 0.19.0\n", "pyspark 2.2.0\n" ] } ], "source": [ "os.chdir(path)\n", "\n", "# 1. magic for inline plot\n", "# 2. magic to print version\n", "# 3. magic so that the notebook will reload external python modules\n", "# 4. magic to enable retina (high resolution) plots\n", "# https://gist.github.com/minrk/3301035\n", "%matplotlib inline\n", "%load_ext watermark\n", "%load_ext autoreload\n", "%autoreload 2\n", "%config InlineBackend.figure_format = 'retina'\n", "\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "from sklearn.datasets import load_iris\n", "from pyspark.conf import SparkConf\n", "from pyspark.sql import SparkSession \n", "from pyspark.ml.feature import VectorAssembler, StandardScaler, PCA\n", "\n", "# create the SparkSession class,\n", "# which is the entry point into all functionality in Spark\n", "# The .master part sets it to run on all cores on local, note\n", "# that we should leave out the .master part if we're actually\n", "# running the job on a cluster, or else we won't be actually\n", "# using the cluster\n", "spark = (SparkSession.\n", " builder.\n", " master('local[*]').\n", " appName('PCA').\n", " config(conf = SparkConf()).\n", " getOrCreate())\n", "\n", "%watermark -a 'Ethen' -d -t -v -p numpy,pandas,matplotlib,sklearn,pyspark" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Spark PCA" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is simply an API walkthough, for more details on PCA consider referring to the following [documentation](http://nbviewer.jupyter.org/github/ethen8181/machine-learning/blob/master/dim_reduct/PCA.ipynb)." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "+-----------------+----------------+-----------------+----------------+\n", "|sepal length (cm)|sepal width (cm)|petal length (cm)|petal width (cm)|\n", "+-----------------+----------------+-----------------+----------------+\n", "| 5.1| 3.5| 1.4| 0.2|\n", "| 4.9| 3.0| 1.4| 0.2|\n", "| 4.7| 3.2| 1.3| 0.2|\n", "| 4.6| 3.1| 1.5| 0.2|\n", "| 5.0| 3.6| 1.4| 0.2|\n", "| 5.4| 3.9| 1.7| 0.4|\n", "+-----------------+----------------+-----------------+----------------+\n", "only showing top 6 rows\n", "\n" ] } ], "source": [ "# load the data and convert it to a pandas DataFrame,\n", "# then use that to create the spark DataFrame\n", "iris = load_iris()\n", "X = iris['data']\n", "y = iris['target']\n", "\n", "data = pd.DataFrame(X, columns = iris.feature_names)\n", "dataset = spark.createDataFrame(data, iris.feature_names)\n", "dataset.show(6)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, in order to train ML models in Spark later, we'll use the `VectorAssembler` to combine a given list of columns into a single vector column." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "+-----------------+\n", "| features|\n", "+-----------------+\n", "|[5.1,3.5,1.4,0.2]|\n", "|[4.9,3.0,1.4,0.2]|\n", "|[4.7,3.2,1.3,0.2]|\n", "|[4.6,3.1,1.5,0.2]|\n", "|[5.0,3.6,1.4,0.2]|\n", "|[5.4,3.9,1.7,0.4]|\n", "+-----------------+\n", "only showing top 6 rows\n", "\n" ] } ], "source": [ "# specify the input columns' name and\n", "# the combined output column's name\n", "assembler = VectorAssembler(\n", " inputCols = iris.feature_names, outputCol = 'features')\n", "\n", "# use it to transform the dataset and select just\n", "# the output column\n", "df = assembler.transform(dataset).select('features')\n", "df.show(6)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we standardize the features, notice here we only need to specify the assembled column as the input feature." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "+-----------------+--------------------+\n", "| features| scaledFeatures|\n", "+-----------------+--------------------+\n", "|[5.1,3.5,1.4,0.2]|[-0.8976738791967...|\n", "|[4.9,3.0,1.4,0.2]|[-1.1392004834649...|\n", "|[4.7,3.2,1.3,0.2]|[-1.3807270877331...|\n", "|[4.6,3.1,1.5,0.2]|[-1.5014903898672...|\n", "|[5.0,3.6,1.4,0.2]|[-1.0184371813308...|\n", "|[5.4,3.9,1.7,0.4]|[-0.5353839727944...|\n", "+-----------------+--------------------+\n", "only showing top 6 rows\n", "\n" ] } ], "source": [ "scaler = StandardScaler(\n", " inputCol = 'features', \n", " outputCol = 'scaledFeatures',\n", " withMean = True,\n", " withStd = True\n", ").fit(df)\n", "\n", "# when we transform the dataframe, the old\n", "# feature will still remain in it\n", "df_scaled = scaler.transform(df)\n", "df_scaled.show(6)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "After the preprocessing step, we fit the PCA model." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Explained Variance Ratio [ 0.72770452 0.23030523]\n", "+-----------------+--------------------+--------------------+\n", "| features| scaledFeatures| pcaFeatures|\n", "+-----------------+--------------------+--------------------+\n", "|[5.1,3.5,1.4,0.2]|[-0.8976738791967...|[2.25698063306802...|\n", "|[4.9,3.0,1.4,0.2]|[-1.1392004834649...|[2.07945911889540...|\n", "|[4.7,3.2,1.3,0.2]|[-1.3807270877331...|[2.36004408158420...|\n", "|[4.6,3.1,1.5,0.2]|[-1.5014903898672...|[2.29650366000388...|\n", "|[5.0,3.6,1.4,0.2]|[-1.0184371813308...|[2.38080158645274...|\n", "|[5.4,3.9,1.7,0.4]|[-0.5353839727944...|[2.06362347633723...|\n", "+-----------------+--------------------+--------------------+\n", "only showing top 6 rows\n", "\n" ] } ], "source": [ "n_components = 2\n", "pca = PCA(\n", " k = n_components, \n", " inputCol = 'scaledFeatures', \n", " outputCol = 'pcaFeatures'\n", ").fit(df_scaled)\n", "\n", "df_pca = pca.transform(df_scaled)\n", "print('Explained Variance Ratio', pca.explainedVariance.toArray())\n", "df_pca.show(6)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice that unlike scikit-learn, we use `transform` on the dataframe at hand for all ML models' class after fitting it (calling `.fit` on the dataframe). This will return the result in a new column, where the name is specified by the `outputCol` argument in the ML models' class.\n", "\n", "We can convert it back to a numpy array by extracting the `pcaFeatures` column from each row, and use `collect` to bring the entire dataset back to a single machine." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# not sure if this is the best way to do it\n", "X_pca = df_pca.rdd.map(lambda row: row.pcaFeatures).collect()\n", "X_pca = np.array(X_pca)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# change default style figure and font size\n", "plt.style.use('fivethirtyeight')\n", "plt.rcParams['figure.figsize'] = 8, 6\n", "plt.rcParams['font.size'] = 12\n", "\n", "\n", "def plot_iris_pca(X_pca, y):\n", " \"\"\"a scatter plot of the 2-dimensional iris data\"\"\"\n", " markers = 's', 'x', 'o'\n", " colors = list(plt.rcParams['axes.prop_cycle'])\n", " target = np.unique(y)\n", " for idx, (t, m) in enumerate(zip(target, markers)):\n", " subset = X_pca[y == t]\n", " plt.scatter(subset[:, 0], subset[:, 1], s = 50,\n", " c = colors[idx]['color'], label = t, marker = m)\n", "\n", " plt.xlabel('PC 1')\n", " plt.ylabel('PC 2')\n", " plt.legend(loc = 'lower left')\n", " plt.tight_layout()\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": { "image/png": { "height": 419, "width": 564 } }, "output_type": "display_data" } ], "source": [ "plot_iris_pca(X_pca, y)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# stop the current sparkSession\n", "spark.stop()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Reference\n", "\n", "- [Tutorial: Introduction to Spark](http://people.duke.edu/~ccc14/sta-663-2016/21A_Introduction_To_Spark.html)\n", "- [Spark Documentation: Spark SQL, DataFrames and Datasets Guide](http://spark.apache.org/docs/latest/sql-programming-guide.html)" ] } ], "metadata": { "anaconda-cloud": {}, "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.6.4" }, "toc": { "nav_menu": { "height": "70px", "width": "254px" }, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": true, "toc_position": {}, "toc_section_display": "block", "toc_window_display": true }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 1 }