{ "metadata": { "name": "", "signature": "sha256:f47cdb88b392068632307f333229ec83e8305108b83c91e0efc2ff0062f3b3c2" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Introduction" ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Sections" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- [Cross Validation](Cross-validation)\n", "- [Bootstrapping](#Bootstrapping)\n", "- [Jackknifing](#Jackknifing)\n", "- [A K-fold Cross Validation Example](#A-K-fold-Cross-Validation-Example)\n", " - [Reading in the Wine dataset](#Reading-in-the-Wine-dataset)\n", " - [Resampling into Test and Training datasets](#Resampling-into-Test-and-Training-datasets)\n", " - [Cross Validation](#Cross-Validation)\n", " - [Training the classifier](#Training-the-classifier)\n", " - [Standardization](#Standardization)\n", " - [Dimensionality Reduction: Linear Discriminant Analysis (LDA)](Dimensionality-Reduction:-Linear-Discriminant-Analysis-(LDA))\n", " - [Naive Bayes Classifier](#Naive-Bayes-Classifier)\n", " - [Evaluation](#Evaluation)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Cross Validation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[[back to top](#Sections)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Bootstrapping" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[[back to top](#Sections)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Jackknifing" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[[back to top](#Sections)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "A K-fold Cross Validation Example" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[[back to top](#Sections)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Reading in the Wine dataset" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[[back to top](#Sections)]" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import pandas as pd\n", "\n", "df = pd.io.parsers.read_csv(\n", " filepath_or_buffer='https://raw.githubusercontent.com/rasbt/pattern_classification/master/data/wine_data.csv', \n", " header=None, \n", " sep=',', \n", " )\n", "df.tail()" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
012345678910111213
173 3 13.71 5.65 2.45 20.5 95 1.68 0.61 0.52 1.06 7.7 0.64 1.74 740
174 3 13.40 3.91 2.48 23.0 102 1.80 0.75 0.43 1.41 7.3 0.70 1.56 750
175 3 13.27 4.28 2.26 20.0 120 1.59 0.69 0.43 1.35 10.2 0.59 1.56 835
176 3 13.17 2.59 2.37 20.0 120 1.65 0.68 0.53 1.46 9.3 0.60 1.62 840
177 3 14.13 4.10 2.74 24.5 96 2.05 0.76 0.56 1.35 9.2 0.61 1.60 560
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 4, "text": [ " 0 1 2 3 4 5 6 7 8 9 10 11 \\\n", "173 3 13.71 5.65 2.45 20.5 95 1.68 0.61 0.52 1.06 7.7 0.64 \n", "174 3 13.40 3.91 2.48 23.0 102 1.80 0.75 0.43 1.41 7.3 0.70 \n", "175 3 13.27 4.28 2.26 20.0 120 1.59 0.69 0.43 1.35 10.2 0.59 \n", "176 3 13.17 2.59 2.37 20.0 120 1.65 0.68 0.53 1.46 9.3 0.60 \n", "177 3 14.13 4.10 2.74 24.5 96 2.05 0.76 0.56 1.35 9.2 0.61 \n", "\n", " 12 13 \n", "173 1.74 740 \n", "174 1.56 750 \n", "175 1.56 835 \n", "176 1.62 840 \n", "177 1.60 560 " ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "from matplotlib import pyplot as plt\n", "import numpy as np\n", "import math\n", "\n", "X = df.values[:,1:] # feature vectors\n", "y = df.values[:,0] # class labels\n", "\n", "fig, axes = plt.subplots(nrows=4, ncols=4, figsize=(12,10))\n", "\n", "for ax,cnt in zip(axes.ravel(), range(13)):\n", "\n", " # set bin sizes\n", " min_b = math.floor(np.min(X[:,cnt]))\n", " max_b = math.ceil(np.max(X[:,cnt]))\n", " bins = np.linspace(min_b, max_b, 25)\n", "\n", " # plottling the histograms\n", " for lab,col in zip(range(1,4), ('blue', 'red', 'green')):\n", " ax.hist(X[y==lab, cnt],\n", " color=col, \n", " label='class %s' %col, \n", " bins=bins,\n", " alpha=0.5,)\n", " ylims = ax.get_ylim()\n", "\n", " # plot annotation\n", " leg.get_frame().set_alpha(0.5)\n", " ax.set_ylim([0, max(ylims)+2])\n", " ax.set_xlabel('feature column %s' %cnt)\n", " ax.set_title('Wine histogram #%s' %str(cnt+1))\n", "\n", " # hide axis ticks\n", " ax.tick_params(axis=\"both\", which=\"both\", bottom=\"off\", top=\"off\", \n", " labelbottom=\"on\", left=\"off\", right=\"off\", labelleft=\"on\")\n", "\n", " # remove axis spines\n", " ax.spines[\"top\"].set_visible(False) \n", " ax.spines[\"right\"].set_visible(False) \n", " ax.spines[\"bottom\"].set_visible(False) \n", " ax.spines[\"left\"].set_visible(False)\n", "\n", "# set y-axis labels\n", "for ax in axes:\n", " ax[0].set_ylabel('count')\n", "\n", "\n", "# hide subplots that are not being used\n", "for i, ax in enumerate(axes.ravel()):\n", "\n", " if i == 12:\n", " ax.legend(loc='upper right', fancybox=True, fontsize=8)\n", " if i > 12:\n", " ax.axis('off')\n", "\n", "fig.tight_layout()\n", "\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nh5hOhFYAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 39 }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Resampling into Test and Training datasets" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[[back to top](#Sections)]" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.cross_validation import train_test_split\n", "\n", "X_train, X_test, y_train, y_test = train_test_split(df.values[:,1:], df.values[:,0],\n", " test_size=0.30, random_state=123)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 40 }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Cross Validation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[[back to top](#Sections)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Accuracy is calculated as the number of correct predictions divided by the number of total predictions" ] }, { "cell_type": "code", "collapsed": false, "input": [ "X_train[:,0:1].shape" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 66, "text": [ "(124, 1)" ] } ], "prompt_number": 66 }, { "cell_type": "code", "collapsed": false, "input": [ "np.concatenate((X_train[:,0].reshape(X_train.shape[0],1), X_train[:,0].reshape(X_train.shape[0],1)), axis=1).shape" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 63, "text": [ "(124, 2)" ] } ], "prompt_number": 63 }, { "cell_type": "code", "collapsed": false, "input": [ "class ColumnExtractor(object):\n", " \n", " def __init__(self, cols):\n", " self.cols = cols\n", " def transform(self, X):\n", " col_list = []\n", " for c in self.cols:\n", " col_list.append(X[:, c:c+1])\n", " return np.concatenate(col_list, axis=1)\n", "\n", " def fit(self, X, y=None):\n", " return self\n", " \n", "#ColumnExtractor(cols=(1,6)).transform(X_train)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 82 }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.cross_validation import cross_val_score, KFold\n", "from sklearn.pipeline import Pipeline\n", "from sklearn.naive_bayes import GaussianNB\n", "from sklearn.neighbors import KNeighborsClassifier\n", "from sklearn.preprocessing import StandardScaler\n", "from sklearn.lda import LDA\n", "from sklearn.decomposition import PCA\n", "\n", "clf_all = Pipeline(steps=[\n", " ('scaler', StandardScaler()),\n", " ('reduce_dim', ColumnExtractor(cols=(0,5))), \n", " ('classification', GaussianNB()) \n", " ])\n", "\n", "clf_pca = Pipeline(steps=[\n", " ('scaler', StandardScaler()), \n", " ('reduce_dim', PCA(n_components=2)),\n", " ('classification', GaussianNB()) \n", " ])\n", "\n", "clf_lda = Pipeline(steps=[\n", " ('scaler', StandardScaler()), \n", " ('reduce_dim', LDA(n_components=2)),\n", " ('classification', GaussianNB()) \n", " ])\n", "\n", "# Constructing the k-fold cross validation iterator (k=10) \n", "\n", "cv = KFold(n=X_train.shape[0], # total number of samples\n", " n_folds=10, # number of folds the dataset is divided into\n", " shuffle=True,\n", " random_state=123)\n", "\n", "scores = [\n", " cross_val_score(clf, X_train, y_train, cv=cv, scoring='accuracy')\n", " for clf in [clf_all, clf_pca, clf_lda]\n", " ]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 79 }, { "cell_type": "code", "collapsed": false, "input": [ "print('Scores (all samples):', scores[0])\n", "print(\"Accuracy: {:.2%} (+/- {:.2%})\".format(scores[0].mean(), scores[0].std()))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Scores (all samples): [ 0.84615385 0.84615385 1. 0.92307692 0.66666667 0.75\n", " 0.83333333 0.83333333 0.91666667 0.91666667]\n", "Accuracy: 85.32% (+/- 8.99%)\n" ] } ], "prompt_number": 80 }, { "cell_type": "code", "collapsed": false, "input": [ "for score,label in zip(scores, \n", " ['all samples', \n", " 'PCA dim. red. (n=2)', \n", " 'LDA dim. red. (n=2)', \n", " ]\n", " ):\n", " print(\"Accuracy: {:.2%} (+/- {:.2%}), {:}\".format(score.mean(), score.std(), label))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Accuracy: 85.32% (+/- 8.99%), all samples\n", "Accuracy: 95.90% (+/- 5.55%), PCA dim. red. (n=2)\n", "Accuracy: 97.50% (+/- 3.82%), LDA dim. red. (n=2)\n" ] } ], "prompt_number": 81 }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Training the classifier" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[[back to top](#Sections)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Standardization" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[[back to top](#Sections)]" ] }, { "cell_type": "code", "collapsed": false, "input": [ "std_scale = StandardScaler().fit(X_train)\n", "X_train = std_scale.transform(X_train)\n", "X_test = std_scale.transform(X_test)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 18 }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Dimensionality Reduction: Linear Discriminant Analysis (LDA)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[[back to top](#Sections)]" ] }, { "cell_type": "code", "collapsed": false, "input": [ "sklearn_lda = LDA(n_components=2).fit(X_train, y_train)\n", "X_train = sklearn_lda.transform(X_train)\n", "X_test = sklearn_lda.transform(X_test)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 19 }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Naive Bayes Classifier" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[[back to top](#Sections)]" ] }, { "cell_type": "code", "collapsed": false, "input": [ "gnb_clf = GaussianNB()\n", "gnb_clf.fit(X_train, y_train)\n", "\n", "pred_test = gnb_clf.predict(X_test)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 20 }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Evaluation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[[back to top](#Sections)]" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn import metrics\n", "\n", "pred_test = gnb_clf.predict(X_test)\n", "\n", "print('Prediction accuracy for the test dataset')\n", "print('{:.2%}'.format(metrics.accuracy_score(y_test, pred_test)))\n", "\n", "print('Confusion Matrix of the GNB-classifier')\n", "print(metrics.confusion_matrix(y_test, gnb_clf.predict(X_test)))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Prediction accuracy for the test dataset\n", "98.15%\n", "Confusion Matrix of the GNB-classifier\n", "[[14 0 0]\n", " [ 0 18 0]\n", " [ 0 1 21]]\n" ] } ], "prompt_number": 21 } ], "metadata": {} } ] }