{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "**Chapter 6 – Decision Trees**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "_This notebook contains all the sample code and solutions to the exercises in chapter 6._"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Setup"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "First, let's make sure this notebook works well in both python 2 and 3, import a few common modules, ensure MatplotLib plots figures inline and prepare a function to save the figures:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "# To support both python 2 and python 3\n",
    "from __future__ import division, print_function, unicode_literals\n",
    "\n",
    "# Common imports\n",
    "import numpy as np\n",
    "import os\n",
    "\n",
    "# to make this notebook's output stable across runs\n",
    "np.random.seed(42)\n",
    "\n",
    "# To plot pretty figures\n",
    "%matplotlib inline\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "plt.rcParams['axes.labelsize'] = 14\n",
    "plt.rcParams['xtick.labelsize'] = 12\n",
    "plt.rcParams['ytick.labelsize'] = 12\n",
    "\n",
    "# Where to save the figures\n",
    "PROJECT_ROOT_DIR = \".\"\n",
    "CHAPTER_ID = \"decision_trees\"\n",
    "\n",
    "def image_path(fig_id):\n",
    "    return os.path.join(PROJECT_ROOT_DIR, \"images\", CHAPTER_ID, fig_id)\n",
    "\n",
    "def save_fig(fig_id, tight_layout=True):\n",
    "    print(\"Saving figure\", fig_id)\n",
    "    if tight_layout:\n",
    "        plt.tight_layout()\n",
    "    plt.savefig(image_path(fig_id) + \".png\", format='png', dpi=300)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Training and visualizing"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=2,\n",
       "            max_features=None, max_leaf_nodes=None,\n",
       "            min_impurity_split=1e-07, min_samples_leaf=1,\n",
       "            min_samples_split=2, min_weight_fraction_leaf=0.0,\n",
       "            presort=False, random_state=42, splitter='best')"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.datasets import load_iris\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "\n",
    "iris = load_iris()\n",
    "X = iris.data[:, 2:] # petal length and width\n",
    "y = iris.target\n",
    "\n",
    "tree_clf = DecisionTreeClassifier(max_depth=2, random_state=42)\n",
    "tree_clf.fit(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "from sklearn.tree import export_graphviz\n",
    "\n",
    "export_graphviz(\n",
    "        tree_clf,\n",
    "        out_file=image_path(\"iris_tree.dot\"),\n",
    "        feature_names=iris.feature_names[2:],\n",
    "        class_names=iris.target_names,\n",
    "        rounded=True,\n",
    "        filled=True\n",
    "    )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Saving figure decision_tree_decision_boundaries_plot\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fd217d6b5f8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from matplotlib.colors import ListedColormap\n",
    "\n",
    "def plot_decision_boundary(clf, X, y, axes=[0, 7.5, 0, 3], iris=True, legend=False, plot_training=True):\n",
    "    x1s = np.linspace(axes[0], axes[1], 100)\n",
    "    x2s = np.linspace(axes[2], axes[3], 100)\n",
    "    x1, x2 = np.meshgrid(x1s, x2s)\n",
    "    X_new = np.c_[x1.ravel(), x2.ravel()]\n",
    "    y_pred = clf.predict(X_new).reshape(x1.shape)\n",
    "    custom_cmap = ListedColormap(['#fafab0','#9898ff','#a0faa0'])\n",
    "    plt.contourf(x1, x2, y_pred, alpha=0.3, cmap=custom_cmap, linewidth=10)\n",
    "    if not iris:\n",
    "        custom_cmap2 = ListedColormap(['#7d7d58','#4c4c7f','#507d50'])\n",
    "        plt.contour(x1, x2, y_pred, cmap=custom_cmap2, alpha=0.8)\n",
    "    if plot_training:\n",
    "        plt.plot(X[:, 0][y==0], X[:, 1][y==0], \"yo\", label=\"Iris-Setosa\")\n",
    "        plt.plot(X[:, 0][y==1], X[:, 1][y==1], \"bs\", label=\"Iris-Versicolor\")\n",
    "        plt.plot(X[:, 0][y==2], X[:, 1][y==2], \"g^\", label=\"Iris-Virginica\")\n",
    "        plt.axis(axes)\n",
    "    if iris:\n",
    "        plt.xlabel(\"Petal length\", fontsize=14)\n",
    "        plt.ylabel(\"Petal width\", fontsize=14)\n",
    "    else:\n",
    "        plt.xlabel(r\"$x_1$\", fontsize=18)\n",
    "        plt.ylabel(r\"$x_2$\", fontsize=18, rotation=0)\n",
    "    if legend:\n",
    "        plt.legend(loc=\"lower right\", fontsize=14)\n",
    "\n",
    "plt.figure(figsize=(8, 4))\n",
    "plot_decision_boundary(tree_clf, X, y)\n",
    "plt.plot([2.45, 2.45], [0, 3], \"k-\", linewidth=2)\n",
    "plt.plot([2.45, 7.5], [1.75, 1.75], \"k--\", linewidth=2)\n",
    "plt.plot([4.95, 4.95], [0, 1.75], \"k:\", linewidth=2)\n",
    "plt.plot([4.85, 4.85], [1.75, 3], \"k:\", linewidth=2)\n",
    "plt.text(1.40, 1.0, \"Depth=0\", fontsize=15)\n",
    "plt.text(3.2, 1.80, \"Depth=1\", fontsize=13)\n",
    "plt.text(4.05, 0.5, \"(Depth=2)\", fontsize=11)\n",
    "\n",
    "save_fig(\"decision_tree_decision_boundaries_plot\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Predicting classes and class probabilities"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.        ,  0.90740741,  0.09259259]])"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tree_clf.predict_proba([[5, 1.5]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1])"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tree_clf.predict([[5, 1.5]])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Sensitivity to training set details"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 4.8,  1.8]])"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X[(X[:, 1]==X[:, 1][y==1].max()) & (y==1)] # widest Iris-Versicolor flower"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=2,\n",
       "            max_features=None, max_leaf_nodes=None,\n",
       "            min_impurity_split=1e-07, min_samples_leaf=1,\n",
       "            min_samples_split=2, min_weight_fraction_leaf=0.0,\n",
       "            presort=False, random_state=40, splitter='best')"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "not_widest_versicolor = (X[:, 1]!=1.8) | (y==2)\n",
    "X_tweaked = X[not_widest_versicolor]\n",
    "y_tweaked = y[not_widest_versicolor]\n",
    "\n",
    "tree_clf_tweaked = DecisionTreeClassifier(max_depth=2, random_state=40)\n",
    "tree_clf_tweaked.fit(X_tweaked, y_tweaked)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Saving figure decision_tree_instability_plot\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nIiIigfP/mHn28kDUpoAAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fd217d3dcf8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8, 4))\n",
    "plot_decision_boundary(tree_clf_tweaked, X_tweaked, y_tweaked, legend=False)\n",
    "plt.plot([0, 7.5], [0.8, 0.8], \"k-\", linewidth=2)\n",
    "plt.plot([0, 7.5], [1.75, 1.75], \"k--\", linewidth=2)\n",
    "plt.text(1.0, 0.9, \"Depth=0\", fontsize=15)\n",
    "plt.text(1.0, 1.80, \"Depth=1\", fontsize=13)\n",
    "\n",
    "save_fig(\"decision_tree_instability_plot\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Saving figure min_samples_leaf_plot\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxAAAAEYCAYAAADMNRC5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xt8HHW9//HXJ0nbpDd6b4HShgIVyl2OR1qRBhTBy9Fj\nFURARA4YoArqQSqXYwgitYgIyMUoUFSEwpGrgqAohQNU4SdyLVChpKX0Tu9t0jbN9/fHTMp2u5vM\nJrNz2X0/H488kp2dnfnsZPb72e9lvmPOOURERERERIKoiDsAERERERFJD1UgREREREQkMFUgRERE\nREQkMFUgREREREQkMFUgREREREQkMFUgREREREQkMFUgJBZm9lUzazezVWa2S9Zzlf5z348rvkL5\n7+drBb5mppnNL/A1k82sIcfysf4xO7WQ7YmIiIgUShUIidsuwLS4gwjBaUBBFQjgMuDzBb6mDvi+\nmWV/dpcAhwMPFbg9EZFY+I0eU+KOo9j8xqIH07wvM/u6mS0ws7Y0Ne5J8agCIXH7E/BNMxsR5U7N\nrHeU+8u1b+fc2865Fwt9edZv/G1tcc4965x7L4wYRUQiMAr4fdxBSOfMbBBwPTAD2A24KoJ9XuRX\nMK8r9r6ke1SBkDg54HK8L8MXd7Wymf27mT1mZuvNbIP/94cCvO5SvyDa38weMbP1wF0Zz08xszlm\nttHMVpvZ3Wa2R9Y2TjKz5/19rzGzl8zsTP+5x4HJwEf8/bSb2V/9507zH3/U3+5q4G/+c7eZ2dtZ\n++lrZj8yszfNrNXMlpjZ/5rZcH/oUkfLz1Z/u9v81+UcwmRmp5jZC2bWYmYrzOzXZjYqa523zew3\nZvYlM5vrH9vnzOwjWet9yMz+ZGYr/WP1lpld39XxFxHJxTm33Dm3Ne44pEu1QCXwkP8/21TMnZnZ\n4cAZQKENbBIhVSAkbkvwWja+nv2lPZOZHQTMxhvydCrwFWAg8ISZHdjFPpz/+35/G/8B/NTf7lnA\n74BXgC8AXwcOAGabWT9/nSOA3wCPA58Dvgj8Ahjkb/ds4J/AS8CH8YYSnZO179uB+f4+vpfxXMfz\nmFkv4DHgG8CtwKeBqcAqYDDwS+AWf/VJ/n4m5nvTZvZ14NfAq3hDpaYBx/rvrW/W6h8FvoNXkTsB\nL1n83swG+tvqBzwCbMU7/p8EGoGqfPsXkfJgZo+b2Y1mdpWZvWdmy83sm2bW28yu9xtmFpjZKVmv\n2z6EKaMRZIrfULHRzF41s48HjKHKzK4zs3f9xpcFZnZFxvMnm9mzZrbOzJb5DTq7ZTw/2d//cWb2\n/8xsk5k9aWa7+8+94Dcg/d7MBme8bqa/7GIzW+qvc6uZ9eki3gv8hqJNZvaimZ2c9fz3zaw5oyHp\ntiDHoZv7mm5mr/vPv21mM8zvKTezrwLP+6u+bWbbzGxMd2MJEOsuePnydGBNsfYjIXDO6Uc/kf8A\nXwW2AePwvhyvBm72n6sE2oHvZ6z/O7wv0gMylg0A3gN+18W+Gvx9fSNreT+8AuqXWcvHAJuBc/3H\n/w2s7GIfjwNP5nmf7cBVOZ6bCczPeHy6H+enA7yXiqzlY/39nOo/rgCWAo9lrfcRf71vZCx72z+O\nAzOWHeavd2LG423AAXGfO/rRj36S9eOXf2vwekj3Ar7tlx8PA9/0y/nLgFZgVMbr2oEp/t8dZdhc\n4FP+dm4DVgB9A8Tw38ACv4wbjdfA8tWM508DjsNrTf834C/A7IznJ/v7/xteA80BwMvAU8Cf/dd8\nEK8h6NqM180E1uH1ak8AjgEWAddkrfNgxuMfAq/5644FTgTWA5/0n/8CsNaPd7S/33MC/i8K2pe/\nzsX+8Rrj77MZaPSf6wN8wi//PwiMACzPvh/2t53vZ12A+O8Crsg4r66L+/zWT+4ftR5K7Jxzq83s\nJ3gXB8/AK6CzfRT4g3Nufcbr1pt3sdhnAu7q/qzHE/EqIXeYWWXG8sXA68CRwHXAc8BgM/sNMAt4\nyjm3NuA+wetlyN53LscAS51zYVwI/QG8gv6OHQJx7mkzW4CXLDOHH81xzq3LePyy/7ujpelfeF8Q\nfmFmNwBPOOcWhRCniJSGV51zl/l//9TMLgS2OOd+BmBml+H1gk4C7u1kO1c75x72X3MRXo/nIcAz\nXex/DDDPOfe0/3gR/nBRAOfcbRnrNpvZVGCume3mnFuc8dwlzrln/P3/HC8HfND516uZ2a/wvuBn\nagNOc861+NucBtxsZhf6y7bze3+/DRyTEesCM/swXo/zH/33shj4s3Num/9enqdAAfeFc+6HGS9b\naGbT8SpkDc65zWbWcW3dSufc8k52+V9ATaFxZsR7Jl5l86TubkOioyFMkhQ/xeuFuCzP80Pwhjtl\nW4rXgxFE9utH4F1/8Re8oTkdP1vwWp+GAjjnngSOx2sJuhdYYWZ/DjB0qrN95zIUeLeAbXZmSCf7\nXZrxfIdVmQ+cc1v8P6v9x+uAo/z4bsBLMi9bGcygIiKBvJT1eDnvN0TgnGvDK+O7mjAj8zUdX+yD\nTLJxG3Comc3zh019ysy2TzZhZh80s/v9YUHr8BqGHO83kuA/fjnj8TL/9ytZy7LjeSmrojAH6I3X\ni5JtAl65+og/3Gm9edflnYX35Rngf/G+iDeb2c1m9kXr3sQfQfaFv/3/84dKrcfLxwUPU3LOLXHO\nze/sJ99rzWw8Xm/JyX6lSRJOPRCSCM65jX6rx1XknuFhFd6MHdlGkfXlt7PdZD3uaFU5Fa/bPFtm\nb8e9wL1+i04dcCVe683obu47l5XA/gG315WOY5LvmD1X6Aadcy8Bx5s3hey/ARcCd5nZwc65XMdP\nRMpH9sXQLs+yrhouc11U3WVjp3Pun2Y2Fm8IztHAr4AXgGP8cvsRvFn/TsGr3AwH/g/vi36+/Tt/\n29uylgVpfLU8yzte+xngnVz7ds4t8r9Qfwz4OF5ObDCzf8/u0ehCl/sy74LlO/GGxz6K19P8OeDH\nBewHf1sP440WyMc55wbmeW4iXiPaqxn1vkrgSPOuVezndMF9oqgCIUlyI1536+Xs/IX7CeDTZtbP\nObcRwMwG4F0Q/ddu7u8ZvErCPs6524O8wHmzTzxsZnsB15jZUOdNnboZv8eiB/4EfMnMPt3JMKbN\n/u8aYGMn23oDr6XsRLwxsQCY2SS8cbAFJ4cOzrl24Fnz5gL/HLAfuStgIiKR8XPDPcA9/lCjv5nZ\n3ngTbgwFLnbOLQAwswMI1rATxIFmVpPx5X4iXln9Vo515/rP1TrnnujkvWzBa6T6oz+0dyne9R2P\nFRBXkH1NAhY55zIvOK8tYB+ZejKE6T52bti6DZgH/FCVh+RRBUISwzm3xcx+gDfDUXbB/gO8WYn+\n6hem4I2nrSH/sKeu9rfezL4LXG/efSj+iHfh2u541wg87pybZWaNwEi8C7oWA3sA5wL/dO/fd2Eu\ncLaZnYCXNNY75+YVGNLtwJnAnWb2I+DveInvE8BP/e11fFE/38z+CGxzzv0jx3vruJP3z/1rN27H\n6y25HK9ycVshgZnZp/FmqLof76Lr/njHYB1ed72ISGzM7Nt4QzZfwLsm4WS88nwRXnm1Ge+eQzfg\nDe3JlTfy9Rp0pQq41c9fuwPTgV/k6i1wzm0ws6uAq/ze3Cf9+A7HK89v9mc+qsLLARvwGoK24F2L\nFliQfeF9Qd/dzE7CK8uP8/eXrctj45wLMlQ332vXkdUQZWYbgVXOude6u10pHlUgJGlmAt8F9s5c\n6Jx72czq8MZI3oZXmM0BjnTOvULXcrY0Oed+YWYL/X1+GeiFN87/SbxEBF4h/k3garxrB5bjdfVm\n3o1zBjAeb6rV/ng9JkcXEpdzrs3MjsHrSj7T3/57wNO8PyTpD3g9NWcD/4N3HCqzt+Vv75d+Afxd\nvC/+G/DuVD3N7TiPt8t+bY7l/wI2AZcAu+L13DyHd3He4hyvFZHyka/86GpZV4/zLctlPe/nDoc3\ntfZxzrlWoNX/Un4F3hTbL+H1dj/SzX1lewJvuuzH8Rq1fofXwJWTc+5/zGwp3oXKN+I1xLyANzQW\nvGFE0/B6invhfbH+fEfvSSG62pdz7g9m9mO86x5q8HrC/8dfd4dNFbrvEMSxTwnInIv3/+PPhHAa\ncCBwh3Pu9DzrfRVvDvxNeF+aHPAZ/wJXEREpIcoNkgZmNhMY6pz7bNyxiEQpCT0Q7+INTzmWrsfO\nPeOcO7L4IYmISMyUG0REEir2aVydc/c75x4k+Ew6IiJS4pQbJJOZ3ZQ5FWnGzzozyx5uU5LMbI+M\n95zrOASdFVCkx5LQA1GIQ81sOV5CuR3vboXtMcckIiLxUm4off9D/tnj1uVZXnTOua9FuLvFwMFd\nPC8SiTRVIJ4ADnDOLTCz/YG78eYxnpFrZTPTxTciIj7nXHdnmEk65QYh494BZU3HQQrRk7yQmgqE\nc6454+9Xzewy4HzyJAmAbdu6PaNY0TU2XkVDw/lxh9GpYsY4d+6L/OpXj7JgbW+q9lxEhVWy7fW9\nmbDXSqZOPYtBg7q+uXTaj+GWLVu4+uoZvPjKblTu/wZf/tzxHDLhEABmPjCT1/75DtXvjOGoo7Zw\nyilTI48vTEuXLqap6Te88c4geu+7gHNO+Tq7j9o90Guvbrya7zR8p8gRdl/S4wMYU1nwTWVTQ7kh\nekmPUfH1XFQxPvLIXTz44ArWDFzDyPGVnH96sH2modxNeow9zQuxXwPRQ6pqi4hINuUGEZEiir0C\nYWaVZlaNN5d9lZn1MbPKHOsd59/sCzPbF28++vujjVZERKKg3CAiklyxVyDwCvtNeDdNOdn/++KM\n2QY6ZhX4GPCSma3Hu5nW7/Du9phKkydPijuELiU9xqTHB8mPMenxAUycPDHuEDqV9PhSTLkhoZIe\no+LruaTHmIZyNw0x9kTs10A45xqBxjxPD8hY77t4d5ksCXV1yf5wQvJjTHp8kPwYkx4fwMS6ZBfC\nSY8vrZQbkivpMSq+nkt6jGkod9MQY08koQdCRERERERSQhUIEREREREJTBUIEREREREJTBUIERER\nEREJTBUIEREREREJTBUIEREREREJTBUIEREREREJTBUIEREREREJTBUIEREREREJLPY7UUs4mpsX\n0tQ0g5aWpdTUjKK+fhq1tWPiDktERGKivCAixaIKRAlobl5IY+OXOPHEZmpqoKUFGhufp6HhLiUL\nEZEypLwgIsWkIUwloKlpxvYkAVBTAyee2ExT04x4AxMRkVgoL4hIMakCUQK87ukdl9XUQGvr0ngC\nEhGRWCkviEgxqQJRAmpqRtHSsuOylhaorh4VT0AiIhIr5QURKSZVIEpAff00Zs2q3Z4sWlpg1qxa\n6uunxRuYiIjEQnlBRIpJF1GXgNraMTQ03EVT0wxaW5dSXT2KhgbNtpFJs5GISDlRXghGuUGke1SB\nKBG1tWOYPv2GuMNIJM1GIiLlSHmhc8oNIt2nIUzSLc3NC7nwwql861tf4MILp9LcvDDukPLSbCQi\nItFQbhApD+qBkIKlrdVGs5GIiBSfcoNI+VAFQgrWWatNErvLO2YjyUwUcc1Gkjnetnfv4ZgNAHaL\nPA4RkbApN3SfrsWQtNEQJilY2lptkjIbSUfrXF3dvUyZ8gwf+9gDzJv3IBs3roo0DhGRYlBu6J7s\n3FBXdy+NjV9K9PAvEfVASMGCtNokqTUlKbOR5GqdO+usdVz+w8cYyMGRxiIiEjblhu5JW8+NCKgC\nId1QXz+NxsbndxjnOmtWLQ0NXqtNEsfBJmE2knytczU16+MJSEQkRMoN3ZO2nhsR0BAm6YaOVpvZ\ns6dw332TmD17yg4JQDNb5JbvzrAtLQPiCUhEJETKDd2ju4ZLGqkHQrqls1Ybtabklqt17uc/H8jg\noR8HVsQdnohIjyk3FK6rnhuRJFIFQkKXpJktkiR7vG2vXsMZP34AC98dgioQIlLqlBtyS8q1GCKF\nUAVCQqfWlPwyW+e2bNnC1VfPYOG7MQclIhIB5Yb8knAthkghVIGQ0Kk1RUREsik3iJQOVSCkKNSa\nIiIi2ZQbREqDZmESEREREZHAVIEQEREREZHAVIEQEREREZHAYr8GwsymAqcBBwJ3OOdO72TdbwMX\nANXAPcDZzrmtUcSZVs3NC2lqmuHPvz2K+vrSvGCtXN6nSLlQbiiucigzy+E9isQl9goE8C7wA+BY\noCbfSmZ2LF6COApYAtwPNAIXRRBjKjU3L6Sx8Us7TJnX2Pj8DncGLQXl8j5FyoxyQ5GUQ5lZDu9R\nJE6xD2Fyzt3vnHsQWNXFqqcCtzjnXnfOrcVLLF8reoAp1tQ0Y3vhCd7Ne048sZmmphnxBhaycnmf\nIuVEuaF4yqHMLIf3KBKnJPRABLU/XstShxeBEWY22Dm3OqaYEs3rtt1xWU0NtLYujSegIunO+1TX\ntkjJUG4oUDnkhu6+R+UGkWDSVIHoD6zNeLwWMGAAkDNJNDZetf3vyZMnUVc3qZjxJU5NzShaWtih\nEG1pgerqUfEFVQSFvs9CuraVTCSN5syew5wn5sQdRlSUGwpUDrmhO+8xaG5QXpA0CjsvpKkCsQEY\nmPF4IOCA9fle0NBwfrFjSrT6+mk0Nj6/Q2E4a1YtDQ3T4g4tVIW+z866tjNvcKQxtJJWE+smMrFu\n4vbH11x2TYzRFJ1yQ4HKITd05z0GyQ3KC5JWYeeFNFUgXgUOBn7nPz4EWFaKXdRhtW7U1o6hoeEu\nmppm0Nq6lOrqUTQ0lF5LSaHvM2jXdtCKhojEqixyQ5it3uWQG7rzHoPkBuUFEU/sFQgzqwR6AZVA\nlZn1Adqcc9uyVv01MNPM7gCWAhcDMyMNNgJht27U1o4pi0KtkPcZtGu7HMYJiySVcsP7itHqXQ65\nodD3GCQ3KC+IeGKvQACXAA14Xc4AJwONZjYTmAvs55xb5Jx71MyuBB7Hm+v7d8ClMcTbLUFbj9LS\nutGT1rDm5oUcf/wPWL68H1u3VdJrQF+qelXiNr3Fv0avYurU4sYetGu7HMYJiyRYyecG5YUdnXTS\nlTz99ELa27dQUdGb3XYbQ3V1NePHV9HUdE4RI/cEyQ3KCyKe2CsQzrlGvDm7cxmQte41QOoG8xbS\nepSG1o2etIZ1vLaqaiyrVj3qLcy4/LFv9clFjNwTtGu7HMYJiyRVqecG5YWdX//443NZvvyR7csW\nLer4K5pbegTJDcoLIp7YKxDloJDWozS0bvSkNazjtS++ODaCSPML0rVdDuOERSQeygs7v37EiFaW\nLy9yoF3oKjcoL4h4VIGIQCGtR2lo3ehJa1iu12Zas2YxJ5zwcb7//es54oiJ+VeMSDmMExaR6Ckv\n7Pz6yspeOZ975ZXnOOaYA9lnn8O44ILLYv+yrrwgogpEJAppPUpD60ZPWsM6XptPba3jv/97MdOn\nn8CFF94dWiVC83aLSJIoL+z8+m3b3sv53B57bOX881cyc+ajfPe7r/DjH98b2ntXbhDpnoq4AygH\n9fXTmDWrdvsX547Wo/r63K1HHa0bP/3pPUyffkPewqy5eSEXXjiVb33rC1x44VSamxcW6y3soND3\nk+u127LnUclQUwPnntvG5ZefF0q8HWNz6+ruZcqUZ6iru5fGxi9FdrxERLIpL+z8+uXLq/M+X1MD\nX/sa9O37Lk1NM8IIWblBpAfUAxGBYrQexXkzm56+n/79P8CaNc307380zvpQWdHKnrXeRCujR3sF\nd00NVFWt7WwzgaVlBhMRKR/KCzsbOrSFtrZj2LYNKiocY8a0ATvmhYqK8C4eV24Q6T5VICIS9pjJ\nuAu+7ryfzOR2/PHQ0vIG1/5sEEuWbWb65S07dX23te0SSqxpmMFERMqP8oKnIzf85CfvV3ymT+/H\nhRdu3CkvtLeHd/G4coNI92kIU0qlseDLldzO++YaKvsO5KfX2A5d39ddV8Ull1wbyn5zXXeRtBlM\nRER6Ko15AXLnhtNP38j119fskBdmzoRNm3YPPCyqK8oNIt2nHoiUSsO0ftnyJbehQ4FRx3DRxc8y\neNAmKiqGhToLUxpmMBER6ak05gXInRtqa2HEiP34wx+Gs2DBP2hpIfRZmJQbRLpPFYiUyiz41q6F\nhx6CZcv6sM8+G2luXpjIWSTyJbeWthpqa0cxtPU7TNhrJVOnnsWgQYND228aZjAJQrOFiEhnsr8Q\nNzfDrbf2Y999m7nwwqmJLTPy5YYRI2qLOvSqFHKD8oLERRWIlOoo+K688vssWjSbqVM3U1OzmZaW\nR2lsfCOSi+YKlau159qfDWLoAQcXfd9Rz9sddqEe58WRIpIOmV+Ily9vZsWKN/zrCJ6npeX5xJYZ\ncfYERJkblBeklOgaiBSrrR3DLrv08ysP3rLMi+aSpiO5zZ49hdtvP5irr96Xyl2+RL/B/eMOLVRB\npgZsbl7IJZecy7PP3s+ihXezcfX6TrfZ2cWRIiIdOr4QjxhRy9SpG1NRZmTmhvvum8Ts2VNK7ktw\n0CljC5mGV3lB4qQeiJSL+6K5lpYW/va3R9i8eXPg10ye/FGWLJnA1m2tbBi8iooKo71tG1tqlrF4\nSS8ef/x+ajq7XXVC7bffhxg7dq8uZ0LJbDX6zGegpWUx1940n+Xvfgom5N523P9nEUmXuMuMhQvn\nM3fuswW9ZvLkj27/+/XXn+H1158JO6zI9e7dh8MP/0SgGbIK7VGI+38s5U0ViJTrzkVzYXSjOud4\n9dUXmHnboyxaUYUzK+j126o2w6jlDBjUl68dfzr/Wv4mjz36OEvXG799oIKKlHWOOecY0Gshx31i\nOBs3Lu60UM85G9XZG/jtfb/lE8ccl3P7ab04UkTiUWiZEdbwms2bW3nwwbt45E/LWbfFsAJzQ6kx\n5/jDQz9j/brXu/yyX+g0vMoLEidVIFKu0LGjYY2ZfPzx+7n77n+xonITlePWUllZWVDcVQaHHHoI\nJxxzAr169WLv2r2ZtN9EmmbNZPnAxUC6ko5z7axrMe55oA8t61d3WqjnazWibVXe7Wu2EBEpRCFl\nRlh5YfPmVq6//lqe/Uc122qXUFXTjlm6GoPCtm3bNhas3IXVb7V3+WW/0B4F5QWJkyoQKVfoLBJh\n3Who2bJlbN06iJoRG9lzv705Y8oZBcVtZjtVOnYZsAsXnPkt2traCtpWEsxfOJ/b7rmdtqU1jN/1\ncO64YyMnnbQoZ6Ger9WIqiF5t18Ks4WISHQKKTPCygstLS20trZT2aeGPoN6c+qUk9indp+w3lIq\nzXxgJv96eQnDhx/HzTcv44wzVuf9sl9oj4LygsRJFYgSUMgsEqGPmTSorKykqiq8UynMbUUlM+ZB\ng3bhlFN+yV13/TJnoZ5zNqqb+nP81JM73UfUM0mJSLoFLTPCzgtmhgG9qnqlsjwPU0Wl1wPTv/8Q\nDjroZGbPXpz3y353ehSUFyQu5f3JLkMaMxmNMWNG5y3UO1qNbrzxCt588zlWrBzGsMPHMWJ3/Q9E\nJHrKC9EYNmww5513cd7n1aMgaaIKRJnRmMni+PGF9/Dc31twm+Yzp3orjz76K6qqejF+fBVNTefs\ntH5t7Rguv/w6rr56Bi++shuVg9+IIWoREeWFYplW38Qzzyxi04bNVGx+izlzHDfffF3evADqUZD0\nUAWizKiFozgWvV3B8rdnbX+8YEHHXxfFEo+ISFDKC8Uxf14bC+betv3xsmXwxhugvCClQBWICCTt\nVvNq4RARiV+ScoPygogUQhWIItOt5kVEJJtyg4ikmSoQRRbW9HjSuWn1Tcyft/P0r+PGVzGjqT6G\niERE8lNuiIZyg0hxqAJRZLrVfDTmz2vj70/+KMcz34s8FhGRrig3REO5QaQ4VIEoMk2PVx5G79nO\nkuUn4jZV07d6K7vvvtv2WZhERLIpN5S+ceOrWLryNH8Wpj4MGuQYOXJ35QUpCTqLi0zT45WH707/\nAjffdRttr+3JfuPe45xzvsqQIcNC30+SLroUke5Tbih9M5rqueX+W3jjhXepfmcMRx+9lZNPzj19\na08pN0jUVIEoMk2PJ2HRRZcipUO5QcKi3CBxUAUiApoeT8Kgiy5FSotyg4RBuUHioAqElIRx46vI\ndVHcuBIaa6qLLguj2VdERLlBsik3hKN0PkFS1srhQ6+LLguj2VdERLlBsik3hKMi7gBEJJj6+mnM\nmlVLS4v3uOOiy/p6XXQpIlKulBskDuqBEEkJXXQpIiLZlBskDomoQJjZYOBW4BhgBXCRc+7OHOs1\nABcDrYABDjjIOdccXbQi8Qn7ostiTP2Xa5vV1YkoaiRllBtEggkzNxRrSthc25X0SkpWvxGv4B8O\nfBB4yMxecM69lmPdWc65UyONTqQEFWPqv3zbPOec60KOXsqEcoNIhIo1JWy+7R511CkhRi9Rir0C\nYWZ9gSnABOdcC/C0mT0IfAW4KNbgREpYMab+y7fN3/72RgYP3jekyIMph9lXSplyg0j0ijUlbL7t\n3nHHH+nX77gQIg9OuSEcSTha44E259xbGcteBI7Ms/5/mNlKYAlwg3Pu58UOsIPu9CilpBhT/+Xb\n5pYtK7u9ze7Knn2lY+q++fPaOP6o9xNh0Kn7NPVf5FKRG5QXpJQUa0rYfNt1bm2Pttsdyg3hSEIF\noj+QfQatBQbkWPcuoAlYBhwO3GNmq51zdxU3RN3pUUpPMab+y7fN3r2H9SDScPR06j5N/Re5xOcG\n5QUpNcWaEjbfds126dF2w6Dc0D1JqEBsAAZmLRsIrM9e0Tn3esbDOWZ2LfBFvOSxk8bGq7b/PXny\nJOrqJnU7SN3pUUpNff00Ghuf3+HLz6xZtTQ0dP/CtnzbPOecc3j44b+GGH35CtLaNWf2HOY8MSfq\n0MKW+NygvCClphh5obPtfuxjn+Rvf3MhRV/eusoNYeeFJFQg5gFVZrZXRlf1wcCrAV7r8GbcyKmh\n4fwQwvPoTo8SxMYNq/jb3x5l6dI5DBiwR6KHMxRj6r982yzXWZiK0bUdpLVrYt1EJtZN3P74msuu\n6da+Ypb43KC8IEFt2LCK3//+MZ577i+JHupWrClh82339dfn4E2wVl7iyA1h54XYs7pzbpOZ3Qtc\nZmZnAoc1t4c+AAAgAElEQVQCnwV2ahIys88CTzrn1pjZvwPnElEfke70KF3ZsHo9WzY+wHnnrvZb\nWJ5L/HCGsKeFzbfNpUsXh7qPtCjXru0wpCE3KC9IEBvXrGPrhns599xVqRjqVoy8kG+7XgWi/JRC\nboi9AuGbijfX93JgJXCWc+41MzsCeNg519GNfSJwq5n1BhYB051zt0cRYLG69aR0rHzln1zkVx4g\n2HCG++5bQPOCTdiczbx0/6P07/s0AFt7v8X4iYOiCl0kqRKdG5QXJIj3/vUPLvErDxAsN9TX38i8\nHC3U48dX0dR0TjHDFQkkERUI59xq4PM5lj9FxhhY59xJUcaVSXd6lK7U9NrU6XCG7NlaTj/926xc\nOZCVK2bCCljR/P7rxk44LbK4y0VPp+7T1H/RS3puUF6QIArNDfX105g3r40nn7wix9Y0g3HYlBu6\np7TfXciK1a0npaFla9+8wxlyzdZyxRX/oK3tw/EFXGZ6Op1eKU/HJ92nvCBdKTQ3NDY+T2vrTvVm\nKRLlhu5RBUIkJMMOOJRrr1udcQ3E+8MZcs/WsoDf/36/eIOW1CnX1i6RtBq6z2Fcd93qHa6B6Dw3\nNPP1ry+MN2hJnahzgzKOSIhWrhpOY2MrQ4bUsOeeH6Kh4TJqa8fkna2lomJbPIFKtxQ6c0YxCvRy\nbe0SSbNVq4Zz+eWbGTy4hrFjD+syN7S3b4knUClYd2ZUKoXcEDhSM/s6MAz4APAbYCwwAjgAuMA5\n925RIiySIHcP1R1Gi6fU7ty4ZNFiWl/7Ez+4dL3fwtTCrFlvbH8+32wt7e2VMUQr3VXozBlpPJcL\nVUq5IWiZr9xQHKWWFwDWLF/Nlrf/yKXbc8PGQLmhoqJ3DNFKd3RnRqW0ns+ZAlUg/Cn0XnTO/d3M\nPgT8GfgqsBC4HPg1kKok0dXdQ3WH0eJK2xRmXSW2R2fdyrlnrc87y0bu2VrGMnr0Niqrvob128SI\nYcPp37c/AFt7bwQ0C5MkWynlhqBlvnJD8ZRaXgB448nHOe+cQnNDLR/5yBiWLNn5gunxGqooCRH0\nTBzqnPu7//dYYJtz7gEzqwHqnHP/B2BmU/znPwy85pxrDD3iEAS5e2gx7zCq1qv06SqxtW9d2eks\nG7lma7noom9zzz138uIru1G5/xt8+XPHcsiEQwCY+cBMXvvnO8V8SyJhKJncELTMV26QDkEqPL1Z\nX3Bu0ExekgaBKhDOucxPyJHAk/7yFqAjQYwDBjnnfmpm1cAbZjbPOXdnyDH3WJC7hxbrDqNqvSpN\nFb2GdXlDqezZWrZs0RhXSbdSyg1By3zlBinEFgYUnBtE0qCiG685CpidY/kBwKUAzrlW4FngI90N\nrJg6xhxmyv5AB1mnOzprvZL0OvbE07nu5wO2nzMd3dD19bqhlJSNVOeGoGW+coMU4gNHHsW1Nyo3\nSOnpsgfCzCqAo4G/AMOB/clIEmZ2gXPuSuBh4FMZL90deCLMYMMS5O6hxbrDaLFaryR8meNb576w\nuNN1dx29G9X7fYLLp89j2ODV7LnnQTQ0NARqOdy4cRVrnnmKu95+gT8N3Ysv158fSvwSPk2h+r5S\nyw1By3zlBunIDV3lBYBBIwbTe89PMn366+y661pqaw8LNERJw9nSo1zzQpB3Vw/cAOwLfALYBCwC\nMLPPAa8COOfagFf85YcCQ4Fbwg+554KMOSzWuMR8My70tPUqbdLwgdtxfOulXa7ff/AAqsd9kf3G\nvcc555zJkCHDunzN6tXraNs8i4vP65gf/GVuaPwnIyf9Z8+CT4m0zbqSxJhiVFK5IWiZr9xQPGnI\nC5CZGy4NtH6/QQMZutcXOfrorZx88jldrq/hbOnKDUmLJypBPpXPAHcAJwAv4SWNK82sGXjbOXd7\n5spm1gfvU/UJfxxsIgUZc1iMcYnFar1Km/R94KrpSBYDBs5nwiG7AT1PbHPn/p3z/MoDeF8eTjlx\nAT/7zV/ZZe/Sv0t12mZdkR2UXG4IWuYrNxRHmvMCvJ8bepoXinmhflooNyRfl2e5c+5F4JSsxb/t\n5CWXAFOdc4vMbG/n3Js9CbDUdNZ6pS7LeORr6Zg/b0nGo/cLrQmHfI//fXxq3u2tWbOWyy+fRnv7\nmi7/j716bcw5bKGXrS/oPURN56ooN4RLuSF5us4NO36Z7So3rFy5mgsvnNrl/zHNw9l0rpaPUPsF\n/RsKPQxsNbPdgY8DShJZcrVeqcsyPvlaOgYMPLXgbW3csIo3V93H2WevC/R/3Lq1X85hC1vdgIL3\nXSzZCeHTnz6FW275js5VCUy5IRjlhmQJMzds2LCKp576LWecsbrL/2NahrMpN5S37szClJOZTQJu\nBJ4CluDdSGh5WNsvdZqBozS8t/yv2ysP0PX/ccKED3PttUN2mKHj9llj2Xfy0RFF3LmOLy91dfcy\nZcoz1NXdyyWXfEXnqgSm3NAzyg2lYdmyv26vPEDn/8f6+mnMmlWb6JmblBsktB4I59wzYW6vXHTU\n4F9++TE++ckdn0tLl2Wpqu67gQmHFHZBX0115zcNyjZ48ECq+pzGD6+/j9pd+zN46F5MbTifx178\nC0ve3dij+MOQ68vL2LG5h13pXJVclBu6R7khubqVG2rWBS4303BzOeUGUaEeo8yu6eXLSUWXZTkZ\nN358p+NZc2lp7fqmQdn69RvCwP2P4EufO377nah5sTsRhy/XWNyqqvDO1bTMuiISJeWGZOtWbmgZ\nWND/Mek3l1NuEP0nYpRZgz/2WLjtNjjtNBI5A0f2WMfddhuNNxujZBo64mhuumnBDtdAJOn/WKhc\nY3EnT4YbbujH1Kkbe/we0zfrikjxpTU3VFYOpqJiGND1FNblZuTIo7n55nd2uAYiSf/HQik3iCoQ\nMcqswY8aBZ//PNx9NyxbNpADD/x4Yrosc13Ed/PNg6moOJVecQcXgjBbOvr1H8KuQz7Po4+uwLk1\niex6LkSuqSUff7yWCy64moceuj2x3esiaZbm3HDTTQOh9+nsEndwIQgzN/TvP4SDDjqZ2bMXl0S5\nqdwgqkDEKLsGP2oUnHACzJ798UR1XeYa63jGGauZPv2vjN53YrzBFSiKm9MMGrQL55xzfqAbySVd\nZ2NxjzgiXf97kbRIc244++x1XD79r+zCofEGV4DO8kKhQ5U6M2zYYM477+LQthcn5QZRBSJGablx\nUL45qaure36vgqjvNqmb0xQu6WNxRUpN2nNDTcpyg/JC9yg3lDdVIGKUhpkWIP+c1K2tPb9XgQpu\nEZEdpT03tCg3iJQ8VSBiloYafK7WsJtvHszIkUcDLXGHJyJSctKaG266aSBDRxwNrI47PBEpIlUg\nQlSqt3DP1Rp25JGjeeGFIWzm3bjDkzIS9ZA3kZ4q1bwAO+eGiorB7LPPMBa/NwRVICRKyg3RUwUi\nJLlmoyilW7hnt4bdeefPY4xGypWGNUialHpegB1zw5o1q7nhhp+z+L2Yg5Kyo9wQPVUgQpJrNoqO\nW7hH0Q1dyq1cYdLNaYpL56HI+5QX0kF5ofh0LpYefTpCkm82iihu4R5HK9fNN7/Ka6/1o73PZp7u\n18qfrveSYaHdhVEX3OrKzC2Mwr2z87C6WkWNlJ9yywsADzzwNgsXrcWebOWl++6npto7AEnODcoL\n+RU7N0h6KauHJN9sFN25hXuh4mjlWrq0H8uW3bb98cLXOv4qrLtQBXf8wvqi0dl5GOfc55ljY+fP\nm0frpv4AVPc1xo3fFdA4WSmOcssLACtXDmCFnxuWv535jHJD2kSRGyZPPrJI0XdNuaFnVIEISZzz\ndsfZyiXdt2DBQp5++s9s3tJG6zOw/N8+ChOijyOsLxpJPQ93HBt7qf8D69fBiu2haZyshE95QQqV\npKE+yg2g3JCfKhAhiXPe7jhbuaR7mpsXcsUVp/CNbyzY/sXi1l99n/32mcAeESeLsAr3KM5DjVWW\nNFFekEIk7aJ75QbpjI5siOKatzstdy2V93ktOwt2aNk5/StLubPpKi6Yfl2ksYRVuEdxHqorWdJG\neUGCivui+2xR5IbXX58TSqzKDdGriDsA6bmOVq7Zs6dw332TmD17SklNE1iK8rXsbG1dFnks9fXT\nmDWrlpaWjti8wr2+vrAvGjoPRZJDn8f0SdpQH+UG6Yx6IEpE1K1co0ZtZPXq02jvs5mafr3Zdfj7\nFxyVK9fezjbbwpYtsGLFMrZu3dLJ2gNztuz0qh75/vZoY8vWbbS0bGbZssVFi7umpoqpU6/j9ttv\nZOvWlfTqNYypU8+hpqaq4P3W1FTxrW/teMH0smWLWblyOVu3wjbbQnt7e5jhi0gecfR+DBu2nk2t\np2F9Wxk1fOQOszBJ55I27CzMIXhpuLO6FCYRn2gzGwzcChwDrAAucs7dmWfdGcB/AQ641TkXWn9s\nki5eSrozztifxx6rYPPod9n7oJGc+YUz4w4pVruN3I0hQ4exaPd/8erywVz540eoMJd3/Q0bRvOz\nn+3CN7+5dnuX7m/uHM03Lj0fgIMOPojX5r7Jpt3n8ednRvHss3dE8C72B2DLFmhqemKHZ5566k3W\nrh2w0yt22WU9Rxyxd5db3tZurO2ziYrdFjNiZC3Dhw4PJ+QAMsfGejNtnArsPNNGMejuqD2ThNyg\nvFCYz31uT+a+NYyqfd/i9BP+k71ruy4fxJPEYWddffGvr7+ReTnKuPHjq2hqOqeYofWYckPPJKIC\nAdwItALDgQ8CD5nZC8651zJXMrN64LPAgf6ix8zsLefcL3oaQNIuXpJ0qe5Tzfn/dR5/fv4x/vTH\nv7B2y2oM6/Q1bu0R/OC6V9h1RG92HTmBb1z63e0XUB9Wexj7fWs/fvXAr5nX503WtHe+rWJ7r7U3\n7y37zU7L2/qcwJpdF3X5eoejT59efOo/Pk3dgXWYRfd+4iyMdXfUHos1NygvSJTivOi+u+bNa+PJ\nJ6/I8cxFkcdSKOWGnom9AmFmfYEpwATnXAvwtJk9CHyFnc/AU4GfOOeW+K/9CXAG0OMKRJQXL6lF\nqzSZGZ847Bgm7TuRtxa8hSN/D0SHMbuNYcigITmf61vTl7NPPIsFixawet3qsMMtyBuPPsp7C3de\nPmrECE478dguX28Y++y5D31r+hYhOilFScgNygsSNQ31kbSIvQIBjAfanHNvZSx7Ech1d5H9/ecy\n19s/jCCiunhJLVqlr3+//hw84eDQtjd29FjGMja07XVH/75P51nen0MmHBJxNFImYs8NygsiIrkl\nYRam/sDarGVrgZ0HXO+87lp/WY91XLyUqRgXL3XWoiUiItvFnhuUF0REcktCD8QGYGDWsoHA+gDr\nDvSX5dTYeNX2vydPnkRd3aS8QUR18VLSpmkTkdIzZ/Yc5jwRzvzqMYo9NygviEipCDsvJKECMQ+o\nMrO9MrqqDwZezbHuq/5z/89/fEie9QBoaDg/cBBRXbyUtGnaRILQXT67J67jNrFuIhPrJm5/fM1l\n1xR1f0USe25QXhDp3PjxVeS6YHq8ckOn4sgNYeeF2P/DzrlNZnYvcJmZnQkcijebRq4moV8D3zGz\nP/qPvwNcG1YsUVy8lMRp2kS6kpZp5ZJGx637kpIblBdE8kv6VK1JVQq5IfYKhG8q3lzfy4GVwFnO\nudfM7AjgYefcQADnXJOZ7Qm8jDfX9y+dc7+MK+juSOM0bSIiMSmL3KC8ICJpk4gKhHNuNfD5HMuf\nImsMrHPue6Rpotwcetqipen+RKQclFNuCKOnQ7lBRKKSiAqEBKfp/kREJJtyg4hESRWIlInyxkal\noKe3iy+F282LSOlTbggujHJduUHKXUlXIB577HdxhxC6xYtfzjnd3+LFL0f6fufPX8uGrdVgG6iq\n2j3venEXsj29XXwp3G6+VMR9LknpUG4ojpaWFpYtr2BLzQqsfRuVlZV5143z8xxGuR50G1VVVbTZ\nJjZs3cRbb7WU5LnXE6+88i5rNlbSNnQdVVXDC3698kJ8SroC8Yvbm+MOIXSLmytzTvf3VnNlpO93\nW99NWO277L77Hkw5ekre9fQFXMKic0nCotxQHI522oevoGroNo448kjG7j4277rl8nn+fN3nWbFs\nLe9se4sXlw3mlRI893piW59N2JiVDBs5nJM+fVLBry+X8yiJSroCUbn34rhDCN2QYftw7U2LOO/s\nDdvHuV57U3+GfGgfKgdF9377VFVx7Kc+Q92BdZhZZPsVEekp5YbicDhGDhtJ/YlfY8igIZHsM+kG\n9h/If5/+TV6Y+wJ3/eEe2rbmug9i+epVUcGRRx3Npz78SSoqKuIORwpQ0hWIH373srhDKIpFC97h\n7pt/Stvm5VT1GcH3rvw2o8fuEWkMVVVVnXZPi4gklXJD8fTu3VuNSlnMjEP3P5SD9j2Itradh9uU\ns8rKSqqqSvqraMkq6f9anz594g6hKPYavzcXXqmL4spRuY73nFbfxNwXSq/VWOKh3CBxqKysLFrD\nW7nmhvnzlhS0XMJT0hUIkZ7eLj6O2813plzHe86f18b6dePiDkNESkAY5bpyQzK0bnIFLZfwqAIh\nRRV3IdvTlpdSbrlJn2rg0h2WDBg4n3HjNce9SNrEmRvCKNeVG5Khuu8G1q+7NOdyKS5VIKSoVMhK\neHb+sjHhkO/pHBNJIX1uJQzjxo9nxdJLcywv7Z6XJFAFQkpa2saFpi1eEZE0SltZm7Z4pfSpAiEl\nLW3jQtMWr4hIGqWtrE1bvFL6VIEQSZG4rymJS7m+bxGRIMq1jCzX950EOsIiKVKuXdUd7zu7G3/+\nvDaOP+qGRHTja4iBiMSlXMuYpOeGUs4LqkCISGokuRs/ybGJiJSypJa/SY0rDKpAiIQkjS0NaYxZ\nRCQt0ljGpjFmiZ4qEFLSohwfGUZLQ9TjOUu5dUREJJ+oytqwyti05TIpfapASElLW2tJ2uIVEUmj\ntJW1aYtXSl9F3AGIiIiIiEh6qAdCpMjmvrCY44+6YfvjYo4jLfWxq0mesi/JsYlIsigvhCup5W9S\n4wpD+t+BSMKtXzeOvz95acaS4o0jLfWxq8VOdj1JtKWSiEWk+JQXwpXU3FDKeUEVCJGQZLc0/GPO\nm7Rt7Q9sBC7dvnz+vHlRh5ZXWltHitWiVg6JVkSio7wQLeWG6CT/bBBJiezCaf/BF7N+6207rde6\n6dSIIupaWltHVJiLSBooL0RLuSE6uohaREREREQCUwVCREREREQC0xAmkSKp7musX5d7ebGkeeyq\niEipU16QUqGzR6RIxo3flRVLcy8vljSPXU0CJVoRKSblhXRSbthZ+b5zkSJTgVM8hRzbQmblUKIV\nkWJSXigu5Ybo6IwVKRIVOMVTyLHVrBwikhTKC8Wl3BAdVSBEpNva2tpYv3E9AO8uXMT9t93Ati3L\nqew9gv88bSq7jxkdc4RejPmWr167OuJootend5+4QxCRMvVO80LubLqKrS3L6FUzki/Xn88etWPi\nDktCoAqEiHTLG2+9wa/u/S2tLa1sXLOB9vmzOe/sDdTUQEsLXPs/T1Ixro5+g/rHGueCd7flWb6Q\nH1w7PeJoojdquJK1iETvneaF3NB4MqecuGB7Xrih8Z9MbfitKhElQBUIESnI5s2b+dXvf83cV96g\nfVV/eq0dzdrmh7jkIq/yAFBTA+edvYHLr3iLAXt+Ot6AW3JcsQjQ0oeK+aOijSUGvTYOjjsEESlD\ndzZdtb3yAF5eOOXEBdzZdBUXTL8u3uCkx2KvQJjZYOBW4BhgBXCRc+7OPOs2ABcDrYABDjjIOdcc\nTbQi8vIbLzPvjTeheU8+sNs6PnPiYdxyy8Pbk0SHmhoYv3cFZ575oXgC9c17eTYrl++8fPRuAzjv\nrHhji8KIEaP46VVxR1EY5QWR9NvasixnXtjauiyegCRUsVcggBvxCv7hwAeBh8zsBefca3nWn+Wc\nS84930XKTHt7O2YVVGzuz6BBa5k0qY7f//5/aWmZu0OyaGmBESM+wOGHHxlfsMC//dsrDBx40U7L\nx48fFntskpfygkjK9aoZSUsLO+WFXtUj4wsqg2bE6plYj5KZ9QWmABOccy3A02b2IPAVYOeMLyKJ\nVF8/jcbG5znxxObtY11nzaqloWFa3KHR1HRO3CFIAZQXRErDl+vP54bGf+5wDcTts8YyteH8uEMD\nNCNWT8VdzRoPtDnn3spY9iLQWbPgf5jZSmAJcINz7ufFDFAkl0Lmjy4HtbVjaGi4i6amGbS2LqW6\nehQNDdOo1YVyUjjlBUkt5Yb37VE7hqkNv/VmYWpdRq/qkUxt0CxMpSLuCkR/YG3WsrXAgDzr3wU0\nAcuAw4F7zGy1c+6u4oUosrN880fPfeFU5s+7YfvjckoatbVjmD79hq5XFOmc8oKkVpDcUE55YY/a\nMbpgukQVtQJhZo8Dk/Euasv2NHAusEvW8oHA+lzbc869nvFwjpldC3wRL4Hs5OrGq7f/PXHyRCbW\nTQwcu0h3rF83jr8/eWnGkvTdkEYtaOk3e/YzPPHEM3GHkVPceQGUGyR6O+aG9OUFUG5Iuzmz5zDn\niTmhba+oFQjn3FGdPe+Pda00s70yuqsPBl4Nugu8WTdy+k7DdwJuRkQ66O6c6VdXN4m6uknbH192\n2U9ijGZHcecFUG4Q6Q7lhnSbWLdjY8k1l13To+3FOoTJObfJzO4FLjOzM4FDgc8Ck3Ktb2afBZ50\nzq0xs3/Ha6nSmSuJplYbkeCUF6QcKC9I2sV9DQTAVLz5vpcDK4GzOqbqM7MjgIedcwP9dU8EbjWz\n3sAiYLpz7vYYYhbJ8iO8WSebgUu3L50/bx4wXq02IoVRXpAS0JEXIDM3KC9IKYi9AuGcWw18Ps9z\nT+GNfe14fFJUcYl0Jnv+6Oeeepv29p2HXLdu0tT0IoVSXpC0yswNygtSymKvQIikUXYX82G7X8KK\npTuvV92306HYIiJSQjJzg/KClDJVIERCMG78rjkTxbjxu0YfTA/p7pwiIj1XSnkBlBtkR/qvi8gO\ndAGfiIhkU26QTKpAiBSZWm1ERCST8oKknc5UkRB0lgzS1mqTOb3g/HlLaN3k3e+ruu8Gxo0fz/oN\n62m15Xxwr33jDFNEJNFKKS9A17kB0vvepHCqQIiEoJQKzHw3C1q/7lJWLL0UgOG1X4K9Ig5MRCRF\nSikvQLDcoGloy0dF3AGIiIiIiEh6qAIhIiIiIiKBqQIhIiIiIiKBqQIhIiIiIiKB6SJqEdlB5swh\nO8+08T1/FqbVMUYoIiJR6yo3vL+OlAP9p0VkB13NHPLsC8/yvw+vZdvLEQUkIiKxK7VZpaRnNIRJ\nREREREQCUwVCREREREQCUwVCREREREQCUwVCREREREQCUwVCREREREQCUwVCREREREQCUwVCRERE\nREQCUwVCREREREQCUwVCREREREQC052oRToxrb6J+fPadlo+bnyV7sopIlKmlBuk3KkCIdKJ+fPa\n+PuTP8rxzPcij0VERJJBuUHKnYYwiYiIiIhIYKpAiIiIiIhIYKpAiIiIiIhIYKpAiIiIiIhIYLqI\nWqQT48ZXkeuiOG+5iIiUI+UGKXc600U6oen4REQkm3KDlDsNYRIRERERkcBUgRARERERkcBUgRAR\nERERkcBirUCY2VQze87MWs3s1gDrf9vMlpjZajO72cx6RRGniIhER7lBRCTZ4u6BeBf4AXBLVyua\n2bHABcBRQC2wF9BYzOCKac7sOXGH0KWkx5j0+CD5MSY9PoDZs5+JO4ROJT2+lFJuSLCkx6j4ei7p\nMSY9PkhHjD0RawXCOXe/c+5BYFWA1U8FbnHOve6cW4uXXL5W1ACLaM4TyT+xkh5j0uOD5MeY9PgA\nnngi2V/Qkx5fGik3JFvSY1R8PZf0GJMeH6Qjxp6IuweiEPsDL2Y8fhEYYWaDY4pHRETip9wgIhKx\nNFUg+gNrMx6vBQwYEE84IuWpX99+9KseQP9+/Rg6dGDc4YgoN4iIRMycc8XZsNnjwGQg1w6eds4d\nmbHuD4DdnXOnd7K9F4DLnXO/8x8PAVYAw5xzq3OsX5w3JiKSQs45izsGUG4QEUmKnuSFot2J2jl3\nVMibfBU4GPid//gQYFmuBOHvPxHJUkRE3qfcICKSfnFP41ppZtVAJVBlZn3MrDLP6r8G/svM9vPH\ntl4MzIwqVhERiYZyg4hIssV9DcQlwCZgGnCy//fFAGa2h5mtM7PRAM65R4ErgceBt/2fS2OIWURE\niku5QUQkwYp2DYSIiIiIiJSeuHsgREREREQkRUqmAmFmU83sOTNrNbNbu1j3q2bW5neDr/d/H9nZ\na6KMz1//22a2xMxWm9nNZtarmPH5+xxsZveZ2QYze9vMvtzJug1mtiXrGNbGHNMMM1tpZivMbEbY\nsfQkvqiOV479FvK5iPycKyTGOD63/n57+8ej2czWmtk/zOy4TtaP9DgWEl9cxzAuSc8Lhcborx/1\n+aW8UMQYlRt6Fp/yQjgxduc4lkwFAngX7w6ktwRc/xnn3EDn3AD/95NFjA0KiM/MjgUuAI4CaoG9\ngMZiBue7EWgFhgOnADeZ2X6drD8r6xg2xxWTmdUDnwUOBA4CPmNmXy9CPN2KzxfF8coW6LyL8ZyD\nwj67UX9uwZutbiHwUefcLsD3gbvNbEz2ijEdx8Dx+eI4hnFJel6A5OcG5YUixuhTbtiZ8kKEMfoK\nOo4lU4Fwzt3vnHsQWBV3LLkUGN+pwC3Oudedc2vxPkRfK2Z8ZtYXmAJc4pxrcc49DTwIfKWY+w0x\nplOBnzjnljjnlgA/AU5LUHyxKOC8i/yc65CCz+4m59xlzrl3/McP4V2oe1iO1SM/jgXGV1aSfm5B\nsnNDEsu4pOeFbsQYi6TnhqR/dpOeF7oRY8FKpgLRDYea2XIze93MLjGzJB2L/YEXMx6/CIwwb4rC\nYhkPtDnn3sra7/6dvOY//K7hl83srJhjynXMOos9DIUes2Ifr56I45zrjtg/t2Y2EtgH7/4D2WI/\njktlSgAAAAUlSURBVF3EBwk4hgmW9GMT9fmlvNA9yg3Riv1zm/S8AOHnhqLdSC7hngAOcM4tMLP9\ngbuBrUBk4yO70B9Ym/F4LWDAACDnzZGKsM+O/Q7Is/5dQBOwDDgcuMfMVjvn7oopplzHrH+IseRS\nSHxRHK+eiOOcK1Tsn1szqwJuB25zzs3LsUqsxzFAfLEfwwRLw7GJ+vxSXuge5YboxP65TXpegOLk\nhqS1ruRkZo+bWbuZbcvxU/BYN+dcs3Nugf/3q8BlwBeTEh+wARiY8Xgg4ID1RYxxA7BL1ssG5tun\n3xW31HnmANfSg2OYR/Zx6CymXMdsQ8jxdLXPjv3uFF9Ex6snQj/nwhb257ZQZmZ4BfBm4Jt5Vovt\nOAaJL+5jGKak54VixEjI55fyQtEoN0Qk7jIt6XkBipcbUlGBcM4d5ZyrcM5V5vgJ62p7S1B8rwIH\nZzw+BFjmnOt2TTVAjPOASjPbK+NlB5O/q2unXdCDY5jHPLy70AaJKdcxCxp7dxUSX7ZiHK+eCP2c\ni0iUx/AWYBgwxTm3Lc86cR7HIPHlkqTzMLCk54UixRjq+aW8UDTKDfFSXthRUXJDKioQQZhZpZlV\nA5V4H9w+ZlaZZ93jzGyE//e+eHc9vT8p8QG/Bv7LzPbzx8hdDMwsZnzOuU3AvcBlZtbXzD6CN3vF\nb3Ktb2afNbNB/t//DpxLyMewwJh+DXzHzHYzs92A75CgYxbF8cqlgPMu8nOu0Bjj+Nxm7PvnwL7A\nZ51zWzpZNZbjGDS+OI9hHJKeFwqNkYjPL+WF4seo3NCz+JQXwomxW8fROVcSP0AD0A5sy/j5vv/c\nHsA6YLT/+MfAUrzuozf911YmJT5/2bf8GNcANwO9IjiGg4H78LrbmoEvZTx3BLAu4/EdwEo/7rnA\n1Chjyo7HX/Yj4D0/rukRnXeB4ovqeAU97/xzbn3c51whMcbxufX3O8aPb5O/7/X+//HLSfjsBogv\n9mMY10++c8t/Lva8UGiMMZ1fygtFjDGqYxb0vMsuM+I45wqJL8bPbaLzQsAYe3QczX+hiIiIiIhI\nl0pmCJOIiIiIiBSfKhAiIiIiIhKYKhAiIiIiIhKYKhAiIiIiIhKYKhAiIiIiIhKYKhAiIiIiIhKY\nKhAiIiIiIhKYKhAiIiIiIhKYKhAiIiIiIhKYKhAiIiIiIhKYKhAiIiIiIhJYVdwBiJQCM/s6MAz4\nAPAbYCwwAjgAuMA5926M4YmISAyUG6RUmXMu7hhEUs3MzgRecs793cw+BPwZ+CqwCXgE+JRz7tE4\nYxQRkWgpN0gp0xAmkZ4b6pz7u//3WGCbc+4B4CmgLjNBmNk4M7s1jiBFRCRSyg1SstQDIRIiM7sO\n2MM59/kcz30DOAwY65w7OvLgREQkFsoNUmrUAyESrqOA2bmecM5dD9wWZTAiIpIIyg1SUlSBEOkB\nM6sws4+bZwSwPxlJwswuiC04ERGJhXKDlDpVIER6ph74E7APcALexXGLAMzsc8Cr8YUmIiIxUW6Q\nkqZpXEV65hngDrwE8RJe0rjSzJqBt51zt8cYm4iIxEO5QUqaKhAiPeCcexE4JWvxb+OIRUREkkG5\nQUqdhjCJRMv8HxERkQ7KDZIqqkCIRMS/qdD5wIFmdrmZ7RN3TCIiEi/lBkkj3QdCREREREQCUw+E\niIiIiIgEpgqEiIiIiIgEpgqEiIiIiIgEpgqEiIiIiIgEpgqEiIiIiIgEpgqEiIiIiIgEpgqEiIiI\niIgEpgqEiIiIiIgE9v8BHhZ538w8t2UAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fd21582aa58>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.datasets import make_moons\n",
    "Xm, ym = make_moons(n_samples=100, noise=0.25, random_state=53)\n",
    "\n",
    "deep_tree_clf1 = DecisionTreeClassifier(random_state=42)\n",
    "deep_tree_clf2 = DecisionTreeClassifier(min_samples_leaf=4, random_state=42)\n",
    "deep_tree_clf1.fit(Xm, ym)\n",
    "deep_tree_clf2.fit(Xm, ym)\n",
    "\n",
    "plt.figure(figsize=(11, 4))\n",
    "plt.subplot(121)\n",
    "plot_decision_boundary(deep_tree_clf1, Xm, ym, axes=[-1.5, 2.5, -1, 1.5], iris=False)\n",
    "plt.title(\"No restrictions\", fontsize=16)\n",
    "plt.subplot(122)\n",
    "plot_decision_boundary(deep_tree_clf2, Xm, ym, axes=[-1.5, 2.5, -1, 1.5], iris=False)\n",
    "plt.title(\"min_samples_leaf = {}\".format(deep_tree_clf2.min_samples_leaf), fontsize=14)\n",
    "\n",
    "save_fig(\"min_samples_leaf_plot\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nkgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fd2157c6438>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "angle = np.pi / 180 * 20\n",
    "rotation_matrix = np.array([[np.cos(angle), -np.sin(angle)], [np.sin(angle), np.cos(angle)]])\n",
    "Xr = X.dot(rotation_matrix)\n",
    "\n",
    "tree_clf_r = DecisionTreeClassifier(random_state=42)\n",
    "tree_clf_r.fit(Xr, y)\n",
    "\n",
    "plt.figure(figsize=(8, 3))\n",
    "plot_decision_boundary(tree_clf_r, Xr, y, axes=[0.5, 7.5, -1.0, 1], iris=False)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Saving figure sensitivity_to_rotation_plot\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxAAAAEYCAYAAADMNRC5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X2cXFWd7/vPjwRJ59GIYIY8CuqoEBj0zMVENI1Hh8Fx\nlDSjqAOOithc4wODhJzmpbdvBzTEAwSZAW2OCGLUqGMiaHDwOENHHnKdBBRIBJyT0EQQCEFsSNJh\nSLLuH93VVDr1sKtq773W3vv7fr3yepHqqupfV5q99m+t3/otc84hIiIiIiISxSG+AxARERERkexQ\nAiEiIiIiIpEpgRARERERkciUQIiIiIiISGRKIEREREREJLKxvgNIipmpvZSISAOcc+Y7hqRpbBAR\naUylsSG3CQTAvn1PJPbePT2X0919YWLvn6Qsxw7Zjb+39wruuKONXz/2Q971oXexuHOx75AadmXP\nlVzQfYHvMJqW5fiTjn3WmFmJvXdokhobsnptKlH8/mQ5dsh2/FmOHZKPf8yYP6v4uEqYREREREQk\nMiUQIiIiIiISmRKIJi1YMN93CE3LcuyQ/fhfOfsI3yE0bd6Ceb5DaEmW489y7EWR9WuT4vcny7FD\ntuPPcuzgL35zLp/7yczMJbkHQqRRpT0Qe47ZzIyjpmdyD4Tk16wxswqziVpjg4hINGPG/FnFsUEr\nECIiIiIiEpkSCBERERERiUwJhIiIiIiIRKYEQkREREREIlMCISIiIiIikSmBEBERERGRyIJIIMxs\nqpmtMbOdZvaImX2oxnPfZGbrzOx5M3vCzD6TZqwiIpI8jQsiIuEa6zuAYdcCe4AjgDcBa83sN865\nB8ufZGaHAz8DPgf8C3AYMCPlWEVEJHkaF0REAuV9BcLMxgMdwBecc4POubuAW4CzKzz9AuBfnXOr\nnHN7nXO7nHMPpxmviIgkS+OCiEjYvCcQwOuAvc65LWWP3QccW+G5bwGeNbO7zOwpM7vZzGamEqWI\niKRF44JIDf392+jqWsT5559BV9ci+vu3+Q5JCiaEBGIiMDDqsQFgUoXnzgA+AnwGmAn0A99LMjgR\nEUmdxgWRKvr7t9HTcybt7avp6Lib9vbV9PScqSRCUhXCHoidwORRj00Gnq/w3EFgjXPuXgAz6wF2\nmNkk59xBz+/puXzkvxcsmE97+/zYghYRybL1fetZv2697zCqSWxcAI0Nkm29vcv54Af7aWsb+ntb\nG3zwg/309i5n2bJr/AYnmdfXdzfr1t1d93khJBC/A8aa2TFly9UnAJsrPPd+wI16zAFW6Y27uy+M\nLUgRkTyZ1z6Pee3zRv5+1dKrPEZzkMTGBdDYINk2OPjkSPJQ0tYGe/Y86ScgyZX29gMnVZYuvaLi\n87yXMDnndgOrgaVmNt7M3gq8F/h2haffACw0s+PN7FDgi8Cdzrnn0otYRESSpHFBpLq2tmkMDh74\n2OAgjBs3zU9AUkjeE4hhi4DxwHbgO8B5zrkHzexkMxsZBJxztwMXA7cCTwJHAx/2EK+IiCRL44JI\nBZ2dS1i1as5IEjE4CKtWzaGzc4nfwKRQzLnRK7/5YGZu374nfIchMqK39wruuKONPcdsZsZR01nc\nudh3SCIjZo2ZhXOuatlPXmhskDzo799Gb+9y9ux5knHjptHZuYQ5c2b5DktyaMyYP6s4NoSwB0JE\nREQkSKWb9aG9B2HcrM+ZM0sbpsUrJRAiIiIiFZRappa6Hg0OQk/PvXR3f997EiHiUyh7IERERESC\nUqtlap7oYDpplFYgRERERCooQstUrbJIM7QCISIiIlJBEVqmFmWVReKlBEJERESkgiK0TC3CKovE\nTyVMIiIiIhXMmTOL7u7vH9AytbvbfxemOJVWWcqTiLytskj8lECIiIiIVJH1lqn12tB2di6hp+fe\nA/ZArFo1h+7u/KyySPyUQIiIiIjkUJQN0kVYZZH4aQ+ESJmitLJzznHZ0sto5ST6ON5DRESSE3WD\ndGmVZcWKH7Fs2TVKHqQuJRAiw0ozNe3tq+nouJv29tX09JyZyyTi1p/cyk2338TPfvozr+8hIiLJ\n0QZpSYoSCElcVmb1s9jKrplVAOcc1628jp2n7KT3271NrSDE8R4iIpKsIrShFT+UQEiisjSrn8WZ\nmmZWAW79ya08PPlhMHh40sNNrSDE8R5JU4mViBRdEdrQih9KICRRWZrVz9pMTTOrAKXX7J61G4Dd\ns3c3vIIQx3ukQSVWIlKSlZXwuJU2SPf1dbBmzXz6+jp0wrTEQgmEJCpLs/pZm6lpZhWg/DVAUysI\ncbxH0lRiJSIlWVoJT4I2SEsS1MZV6vaIbkWWDqjJUiu7kVWA4w5cBTjtPadhZlVft/GejczdNxe2\nHvj4ho0bePffvjvS947jPZJWKbkKJTYRSVetlfAsn+9QSZLjuUg5JRAFF6VHdCuydkBNVg4MqrUK\nUOtGubunu+XvHcd7JKnZ5EpEwhD3TXCWVsJbkfR4LlJOJUwFl/QeBdVfJqO0CnDS1pNG/szdP5cN\nGzf4Ds27LJRYiUhlSZQbZW1/W7OytOdQsk8rEAWXxsxMVmb1syT0VYBKnHMsv2Q5S764JNGVgCyU\nWIlIZUmUG2VtJbxZRVlpkTAogSi4JPcoqBZTypW6Ih1/4vGJ3shnMbkSkSFJ3ARnaX9bK7K051Cy\nTwlEwSU1M6NaTCk3uiuS9iOISCVJ3QT7XglPekKtv38bAwO7+Od/PoxPf/qFXK+0SBi0B6Lgktqj\noFpMKRfKwXM6XE4kTKVzGp56qp9rrplwQDvtlSunMzCwK/EzHJI6KyLJNrL9/dv4zGc+ynnnvZ1d\nu27jr//6Bb77Xfjylw/jpz89VZN2kpggViDMbCrwTeBdwNPAxc6579V4/qHAA8B455z+z2hREjMz\nqsWUkpC6IqVVRiXx0NhQDKNXrPv7YdmyCbz+9a/n0ENfyZ49mzjrrNsSXc1OctU8qTaylWK+8UZY\nuBCmTHmBvr4JmUoeVPacLaGsQFwL7AGOAM4CvmZmb6jx/IsA3YkGrChdL6S+ULoi6XC5TNLYUACj\nb7DnzIGurl1MnTqbiRMn8IlPPJ74anaSq+ZJTahVivmjH4XbbsvehF3RD/vLIu8JhJmNBzqALzjn\nBp1zdwG3AGdXef6rgQ8Dy9KLUhqVtVOdJTmhtJwNpYxKotHYUBy1brDTWs2u9n0eeOAXLZczJTWh\nVi3m/fuzN2GnsufsCaGE6XXAXufclrLH7gPeXuX5VwNdDM1KSaCK0vVC6guhK1JIZVQSmcaGgqi3\ncTqNzkLVYnjVq54bng1vvpwpqWYl1WLevz97m6dV9pw93lcggInAwKjHBoBJo59oZguBMc65W9II\nTFpT2luxYsWPWLbsGiUP4k0oZVTSEI0NBVFrxTqt1exK3+fGG+HUU1ufDU+qWUmlmK+55jAmTMje\n5mmVPWdPCCsQO4HJox6bDDxf/sDwcvZy4LTSQ/XeuKfn8pH/XrBgPu3t81sKVFqnTVLigw6XO9j6\nvvWsX7fedxi1aGzIuKjX+3or1mmsZpfH8MADv+BVr3qOhQth2vD9a7Oz4aM/g899bkVssVf63K6+\nOptjalEO+8uCvr67Wbfu7rrPM98bCYcv/n8Eji0tVZvZt4DHnXMXlz3vBOA/gGcYGiBeBkwBtgNv\ncc5tG/W+bt++J9L5ISSSSh0jhi4Q2ZopaVZv7xXccUcbe47ZzIyjprO4c7HvkERGzBozC+dcMPVc\nGhuyLavX+/7+bZx33t/xqlf9nrFjh1Ygpk0bir+vr6OhrklZ/Qx8KSVbpWRIE4xhGDPmzyqODd4T\nCAAz+y7ggHOBE4GfAvOdcw+WPecQ4JVlL3sr8E/Dz9/hRv0gGiTC09W1iPb21QfVazZ6Uc4qJRAS\nstASCNDYkGVZvN5Xa4t62mlw++2N3/hn8TMQGa1aAhFCCRPAIoZ6fW8HdgDnOeceNLOTgVudc5Od\nc/uHvw6Amf0R2O+ce9pLxNIwbZISkQZpbMioZq73vktcq7VFXbFiJl//euOrBhrzJM+CSCCcc88C\nCys8ficH18CWvrYO0NpWhtTrtCEiUk5jQ3Y1er1P8iC3qKrd8L/hDTObiqHVMc93QiVSSwhdmKQg\nKnWMWLlyOgMDuzj//DNa7rUtIiJhaLR7UgjnAMTdCaiVDlI6WE1CF8QKhBTD6I4Re/dO4o9//DWH\nHHIbg4Pw7LOwePGv+J//c7VmWVLmnGP5JctZ8sUlOhdBRFrW6FlAjZb7xDU7X/4++/ZN4hvfmD5y\n8nWrnYBaOQ+pVkKl/RMSAiUQkqrS2RAAn/rUR5k0aTsf/jAjF+sbbnicr3zl/+Haa2/0G2jB3PqT\nW7np9ps4/sTjC9vWVETiVX69r6eRcp+4yp0qvc/KldO5+eZTOeyw52NpGdvIZ1BO+yckdEogxJv/\n/M97uPBCDphh+djH4PLL7/EbWMGUTmneecpOnc4sIl40cg5AXLPzld7nrLMep6/vJJYtuzGGn6p5\nae0ZdM7xm9+s47e//c9Y31fyYebM6VW/pgRCvGlro+IMy+jHJFnlpzSXTmfO8iqEyrFEsqeRcp+4\nZudDnuVP42C1Xbt2snLlDdz+q528OO6F2N5X8uPl4warfk0JREbloTvD7NlvZnDwtoNmWGbPfrO/\noAqmtPqw+7jdAOyevTvzqxAqxxLJpqjlPnHNzofcGbCV/RNRPPPM01x55f/ioe37YOaTjD10TIQz\n3KVoxh05purXlEBkUAjt7uLw+c8v5Ytf3MRZZz1+QP3pJZcs9R1aYZSvPgCZX4VQOZZI/sU1O5/G\nLH8rmt0/EcXTTz/FwMBYxk4d5GUTx7HorEW8cuor679QCmXMIWP4+nnXVvyaEogMykt3hjlzZnHJ\nJasPmGG55JLsraRk2cZ7NjJ331zYeuDjGzZuyGQCkbdyLBE5UGn1/bDDXsGKFfuYPv0IjjxyTlOz\n80nP8oduaG7FMDMmtE2gbZzqhyU6JRAZFHLdZqOSnGGR+rp7un2HEJs8lmOJyEsqrb6vWjWGzs6v\nNX3TrzFIpDk6SC6D4j7sRiQPapVjiUj2hXDYXD39/dvo6lqkw1El95RAZFArp1uK5FWpHOukrSeN\n/Jm7fy4bNm6I/B7OOS5behnOuQQjFZFmhL76rtOjpUhUwpRBIdRt5qELlORLHOVY6uAkEq6QuyZB\nOvsTNfbGT62/m6MEIqN81m0m1QVKF0bxSR2cRMIWetekpFdI8tKBMTSaOGqOSpikYUnUofpe+lXd\nqlTq4CQi4Sitvvf1dbBmzXz6+jqCunlOen9iFvaAZM3oiSOVr0anBEIalsQsi88Lo+/kRfwb6eA0\n68AOThpMRMJSWn1fseJHLFt2TTDJAyS/PzGusbe/fxtXX72MrVt/yOP3/Ts7n90ZS3xZpImj5imB\nkIYlMcvic3OcZnVEHZxEpFVJr5DEMfaWJsze975/Z8mSx/jiBVt44bf/xuPbHoslxizRxFFrlEBI\nw5KYZfHZmjb0zh6SvDg6OImIJLlCEsfYW2nC7LPn7eTmbxXvLAxNHLVGm6ilYfW6QDWzGdrn5rjy\nzh5PPgm33QZ798JTT/2e/v5tQS2RSzLydKCeiORTHB0Yq02Y7X3h6ZijDV9p4oitBz6+YeOGqpup\n1bHpJUogpCnVukA12yXCZ2vaUvJyyin9/Oxn8NGPMhz77+npOfOA2NUpKjm6MIuI1NZMB8byceuh\nh35Pfz/MmfPS1wcHYexhR8QaZxY0M3Gkjk0vsbzWepmZ27fvCd9hFE5X1yLa21cf1Ke7r68j8baz\nrdzc9/dv47zz/o5//MffV429UnI0tEoSrca1t/cK7rijjT3HbGbGUdNZ3Lm42R81l9bespbFKxZz\n+QWXF/7C7MOsMbNwzuU+c9PYIEVSady6+uqxnHnmXubMGf771yfymZ5VzD3+eN/hBs05x+lnns6v\nj/s1J246kR9//8eFmOyqNjZoD4TEytd+glY7Kc2ZM4vXv35mzdi12Tq6Rk90Vis9EZH4Vdzz8Nm9\nfOtbr2L58hlccuUxHPbG/870WTP8BpoB6th0ICUQORDSGQa+NkPHcXNfL/bQN1s3etOepNIyb9QL\nrC7MIiLxqzZuveY10zj66Pcz/YR3MHHqRD/BZYg6Nh1MCUTGhXaGQdJ9sKuJ4+a+Xuw+O0VF0ehN\ne1IaXU3QhVlEJBnVxq0xYw73E1BGqWPTwYJIIMxsqpmtMbOdZvaImX2oyvMuNLMHzOw5M9tiZhem\nHWtoWpl5T2LlwtdJoXHc3NeL3VdyFEVIJUCNriZk5cIc0gpPEWhcEGldpXFr5crpPP/8oA6Sa4Ba\nfR8slC5M1wJ7gCOANwFrzew3zrkHKzz3bOB+4DXAz81sm3PuB+mFGpZmZ95rdUsCWuo01EyXiFbF\n1Qa2Vuw+O0XVU+mm3cdG5JHVhOMOXE047T2nVd1s1kwrPR/UfSN1GhcKrlpjjKx1w/MZ7+hxa+/e\nSezZs4lPfGL9S5uqv/4Uj287l1e8/BWpxJRFavV9MO9dmMxsPPAs8Ebn3Jbhx24CHnPOXVzntV8F\ncM59rsLXCtFpo9muR9Ve99OfnsrOnQ833WnIp9JFunRzH9qgklQXpvLOEBjg8NYhYu0ta/n8LZ9n\n9+zdI4+N7x/Pladfmemb7iJ03wipC1NS48Lw13M7NmTtxrqWal3vzjnnSq6//oKGxqh6n0uSn1ur\n3fviVm3s//HPT+MLV/SmHk8RZL1FechdmF4H7C0NEsPuA46N8Nq3AZsTiSojmi2rqbZy8eij92S2\n01CSJ4CGLKQSoLwu82qTd+o0LjQotP1wrapWnnvppZ9raIyq97kk/bmF1r1PB8mlL5T9iXELoYRp\nIjAw6rEBYFKtF5lZD0O3TDdUe05Pz+Uj/71gwXza2+c3H2Wgmi2rKT99uWRwkAMeK53KvH8/PPbY\nL3Uqc6BCOk0ziWVe37M3zZRlZcH6vvWsX7fedxjVJDYuQD7Hhlo3qmmXlMah2o3u2LEDDZXt1vtc\nkv7cQuveV23sL+JBcmkYvT8xC+NG1LEhhARiJzB51GOTgeervcDMPg2cBZzsnHux2vO6u4uxl66Z\nPQfV9gy89rV/zuDgbQwMwJo15acy7zjoVGYJQ95P0/Qda60VntA/u1rmtc9jXvu8kb9ftfQqj9Ec\nJLFxAfI5NoR2o9qqaje6e/dOYXDwuYMer9Ywo97nkvTnVu3n8NW9r9LYP3SQ3CIv8eRdKPsTGxF1\nbAihhOl3wFgzO6bssROosgRtZh8HLgLe4ZzLZyFrCqp1HLrooqWsWjWHtWtfSh4guWXXkM6wCFmc\nHYBC6thUTwix5rUsK3AaFxoUepvpRlUrz/3CF77aUNluvc8l6c8ttO59pbH/5pvfoYPkEpb3FuXe\nVyCcc7vNbDWw1MzOBU4E3gsctKZsZn8PfAlod849mm6k+VNt5aK7+/t89rN/Q1vbjgMej3s2q1Yn\nKK1yHCjOWfgszYiEEKu6b6RP48KQRjb3xtWJLhS1ynNnzIhetlvvc0n6cwuxe9+cObP47Ge7uOaa\nW9netpPDpu6u/yJpWF5Xr0u8d2GCoX7fwDeBdwE7gCXOue+b2cnArc65ycPP2wpMB15gpN8MK51z\nn6rwnrnttJGGZrs7hfY9QtJsF6Y4OwCF1LGpnpBi9b0PIw0hdWGCZMaF4ednYmxopntP6J3ofKn3\nuRTxc3vooU0vJRBH7mbxJxarjWvMerp72LRt00GPHzfruExNTFUbG7yvQAA4554FFlZ4/E7K6mCd\nc0enGVeRpTGblbea3aTEOQufpRmRkGL1vQ+jiIo+LjSzudfHGTxZUO9z0ecmSchSktCMIBIICc/o\nZdcXXpjExIlw1VX/GFuf7NA2l4Uo7g5AWTm0DcKJNYtdNCT7NMEiIiFTAhGgUA4DKs3KJLVXIW81\nu0mIexY+SzMiocQawj4MKR5NsIhIyELowiRlohxqk3bnoqQOwqnWCSrvtaeNUAcgv/LeRUPCFVr3\nHhGRclqBCEy9ulcfnYuSXEpX7WltoczCF1VI+zCkWELs3iOSFUVofOGbEojA1LtZ93HaaFaW0kMp\n/aoWz6RJhwNtdV8n4QhlH4YUkyZYRJoTQuOLvCcxSiACU+1mfdOm39HVtYinnupPfWNdFvYqhHam\nRKV4rrtuCvv3n82Y1KPJlzQvyloBEhHJllAaX4SQxCRJeyACU6nu9YYb4Nxzd9DevpodOx6mv//A\n1yS9GpCFvQpJ7dOIM55PfnKAZ57p8xJPnpQuyj/76c98hyIiIoGp1PgibaOTmDzum9MKRGDK6143\nb/4lU6fuoKMDpg3nB4sW7WLZsgl0de1KdTUg9KX00FoeVounre15L/HkRSgzSyKSbNloaCWpkg1x\ntz5vVhG69ymBCFDpZv3888+go2PHAV9ra4PXv/719PXNbnpjXR4vzKHt06gWz+DgJCZ5iSgfinBR\nlmLK2nU5ybLR0EpSsyBrvz9JCaHxRShJTNJUwhSw0k1oucFBmDp1NsuWXcOKFT9i2bJrGk4e6rWJ\nzaLQWh5Wiue666Zw+OHtiX5f5xyXLb0sl8ulaqkqeZXF63KSZaOhlaSGLou/P0kJofV5rSQmT7QC\nEbAkNi/76OKUhtBaHlaK581vPpzf/nYqe/hDYt83z5u2QphZEklCFq/LSZaNhlaSGroQf398dSAK\nofFFUbr3KYEIWBI3xXm+MIe2T2N0PL29Vxz0nDgvsnnfH1CUi7IUTxavy0mWjYZWkhq6JH9/mh2j\n8jyZVU8ISUwalEAErpGb4ig1kLowhyXOi2ze9wcU5aIsxZPF63KS7b2z0Do8JEn+/jQzRuV9MkuG\nRN4DYWafNLOLzexbZvZOMzvHzLrM7DtmNj3JIKW+qDWQlWrzv/GN6ezcuYvzzz+Drq5Fhayb9CHO\nNm/aHyC+aGxoXWh7uKJIsr13FlqHhySp359mx6gQ2qgWjY/9j5FWIMzsXOA+59yvzOwvgf8N/AOw\nDbgUuAl4PLEopa6oNZCjy6JeeGES48Zt4j3vuU3dLlIW54pB0fcH5P3Ez1AVbWxIqtNNaHu4okqy\nbDS0ktSQJfX708wYVZQORKHxUTIWtYTpcOfcr4b/ezawzzl3s5m1Ae3OuTsAzKxj+OsnAQ8653pi\nj1gqaqQGsvzC3NW1iPe97/GgNl8VQdwX2aLvDyhyva1nhRkbkm4tqhtmaUXjvz+1Z6qbHaOKPpnl\ng6+SsUgJhHPusrK/vh345fDjg0BpgDgaeLlzboWZjQMeNrPfOee+F3PMhdHIbFezNZChbd4rSi/r\nLZu3xHqRLfL+ANXb+lOksSHETjeSrIGBZ1m58iaefHKX71Bit2v3fv7wwj7sFX9kzJgJtI078Eag\n2USg6JNZPvja/9jMJupTgG9UePw44P8Fvumc22Nm/wG8FcjUIBGKRme7mt10FtLmvSIdHvSHx/7A\n3Jdn8yIbWrlQ3jePZ0iux4bQJlskOc45Nmz4BTfceA/bxw5A2wu+Q6rJOcdvN9zHG//yhOjX5Jft\nw47ay/TZR/GpMz91UALRbCJQ5MksH3yWjNVNIMzsEOAdwL8BRwDHAn1lX7/IOfcV4Fag/LdqOrAu\nzmCLpNHZrmZrIEPqdlGkGb63//XbWdy52HcYTQmpXEj1tv4UbWwIabJFknXPPf/O9df/hh2TnuGQ\nyYNMecVkjHCvJ49sfoT+F/8PM3ZO49VvfHWk15gZ8+fN550nvrPitVKJQDb4LBmLsgLRCVwDvB74\nK2A38BiAmb0P2AzgnNsLbBp+/ETgcOD6+EMuhmZmu5qpoQ1p855m+MIXWrmQ6m29KtTYENJkiyTr\nuecG2LdvHGMnGOMmttHz6XC37DjnOP3M03nxr17kT5v+RPeibk2eFIjPkrEoCcTdwHeBDwD3MzRo\nfMXM+oFHnHMry59sZocxtFz9V8N1sNKENGe7fGzeq7TXQTN84QutXEj1tl4VamwIabJFpCS0a/Jo\noZW85o3PlaK6CYRz7j7grFEPf6fGS74ALHLOPWZmr3HO/Z9WAiyqPM92VdvrcM45V3L99fn8mfMg\nxHIhLbP7U8SxQZ2SmlOU5hhpC/GaPFpIJa8Sr8gHyUVhZp9kqN71xeEDhN4Z8XVTzWyNme00s0fM\n7EM1nrvczHaY2dNmtjym0IOT54N0qu11WLt2ZW5/5jyoVS4kUovGhuKKesipNC70a3Kch6WKn8Pi\nammmC1NFZjYfuJahX2VjqMnw+yO+/FpgD0Mb8d4ErDWz3zjnHhz1PTqB9wJzhx/6hZltcc5dF8OP\nEJy8znbV2uuQ1585D1QuJM3Q2FBsRWqOkbbQr8mhl1dlTWirObElEM65u5t5PzMbD3QAbxyui73L\nzG4BzgYuHvX0jwBXOOeeGH7tFcAnAA0SGaK9DtnUaLmQal8FNDYUnZpjJCfkEs4slFdlSWgNTCDm\nEqYmvQ7Y65zbUvbYfQy1BBzt2OGv1XueeNLfv42urkWcf/4ZdHUtqrhM3dm5hFWr5jA4vI2ytNeh\ns1N7HfKkNFsSynK6ZI7GhhwoTRiV04RR/oVeXpU1lVZzfAshgZgIDIx6bACYFOG5A8OPSQCi1rrm\neX9HPc45Nt29KZgaxqSo9lVioLEhBzRhVF0oNe1JxFEqrzpp60kjf+bun8uGjRti+x4QzmeYpJHV\nnFkHrub4/pljK2FqwU5g8qjHJgPPR3ju5OHHKurpuXzkvxcsmE97+/zmo5S6Gql1Lepeh98/9RCP\n7N7Kls1b6j85Br7KiFT7Gr71fetZv2697zBq0diQA2p/W10oNe1JxJFWeVUon2GS0j7vKOrYEEIC\n8TtgrJkdU7ZUfQLDhxCNsnn4axuH//4XVZ4HQHf3hXHGKVWUWvQ98MAvOO20A7+mWteXOOd46I/r\n2Xv6Xu79t3txziV+U+/j4qra12yY1z6Pee3zRv5+1dKrPEZTkcaGnCjqhFEtodS0hxJHM7IceyPS\n3iwfdWzwnkA453ab2WpgqZmdC5zIUDeNSlNCNwEXmFmp+OsC4KvpRCqVlJ/psH072hxdw683/44/\nHbsdDJ7mpXTpAAAezElEQVSZ80zis/K+Lq46HVrioLFB8iyUVdpQ4mhGlmNvRKib5UPYAwGwCBgP\nbGfoIKLznHMPmtnJZvZc6UnOuV7gJ8ADDJ18+hPn3P/yEbAMKS9bOvVUuPFGVOtagXOOX9y/kX2v\nfRGAvcfsTbyG0demq7RqX6UQNDZI7oRS0x5KHM3IQux535/hfQUCwDn3LLCwwuN3MqoG1jn3P4D/\nkVJoUkd5i75p02DhQvjBD+CppyYzd+47Ves6bPVP1vKHV+9IbVbeZxlRqLMlkj0aGySPQlmlDSWO\nZjQbe5r7AvO+PyOIBEKya/SZDtOmwQc+AH1971TNa5m77vkPZj3xKgYeOoT9bbs47GWHMfOomYnV\nMGZ5YBAR8aG0n++JJx7g0UdfxoQJr2XclPibeYVyAFwocTSj2djTuqkvwv4My+vSipm5ffue8B1G\n7pXvgWhre6lsqShtWRvR23sFd9zRxp5jNjPjqOks7lyc2Pfq6e5h07ZNBz1+3KzjtEIgFc0aMwvn\nXL5GuAo0Nkgllcayr147kbbj/ztXX/JPvsOTGDjnOP3M0/n1cb/mxE0n8uPv/zixm/q1t6zl87d8\nnt2zdzO+fzxXnn5l8ElZNdXGBq1ASEvUoi9MShJERKKr1Ib8c5/ayZe/dl/tF0pmpLXpuiidCJVA\nSMvUok9ERLKsfD9fSVsbjBs7WPkFkilp3tQXpYQ4lC5MIiIimdLfv42urkWcf/4ZdHUtor9/m++Q\npEml/XzlBgdhz962yi+IKO+deLKi1k193IrSiVArECKB8HVqtIg0rlLNfE/PvU3v/ypt4B2aCZ9G\nZ2c8paBJvW/edHYuoafn3oP2QLzy+BNaet+8d+LJijQ3jBelhFgJhEggNNAcTEmVhKpSzfwHP9hP\nb+/yhks6405G6r3vOedcydq1K5VUlCnfz/fEE5t49NFDmXD8a5k4tfkuTEXoxJMVRbmpT5NKmMQr\nlQAMGT3QaLl7SCmpSvIQPJUYSDOq1czv2fNkw+9VKxlpRaX3PeWUfr7ylbNpb19NR8fdtLevpqfn\nzMJee8uV9vN95COf45hj3seEl09q6f18HeYpkgYlEOJNaXZMA1nxBpooN+1pJVVpJCmSP9Vq5seN\nm9bwe8WZjNR733XrYNGiXbEnK3KgNE9K1iRIZfpckqUEQrxJatYta9IcaEIR5aY9jaRKKz/SrM7O\nJaxaNWckiSidgdPZuaTh94ozGan3vnv3kkiyIgdKc9OuJkEqC+1zyVtCowRCvElq1i1r0hxoQhDl\npj2tpKpoKz8Sn1LNfF9fB2vWzKevr6PpPQtxJiP13vfRRyckkqzIgdLqxKNJkMpC/FxCS2hapU3U\n4k1pdqw8iSjiQJZmd4gQRDnMJ40+2kU57EeSE9cZOEkdyFnpfS+99Cyuv/6CAzZWr1o1h+7u1pKV\nSvLSAaqZZg5pbdpN63A0yFZTizQ/lyjyuKFeCYR4U6ltXlIDWRLiGhyL1B0i6k17GklVUQ77kWxI\n6kDOSu87Y0b8ycpoSXWW8iFqh7y0b7DTngTJSqfAECeHQkto4qAEQrxJatYtDWkMjlma7Ykq6k17\nGklV0VZ+REqSSlbKRW1zm/YqRaPfr5GZ47RvsNOcBMnSDHpok0MhJjRxUAIhXqUxkCUhzh7w1WRl\ntqcRId20F2nlRyRtUfa4pb1K0cz32/bwtkgzxz5usNO8nmZpBj2kcQbCS2jiogRCpAlJbwDP0mxP\nI7J+057HVSGRJETZ45bGREy5Rr+fc47fPvhbdr+r/syxjxvstK6nWZtBD22cCS2hiYsSCJEmJL0B\nPEuzPXlSL0HI46qQhC+Lm5Gj7HFLuxNfo9/v8a3b+NPRf6o7c5y1G+xG5XUGPS2hJTRxURtXkSbE\n0XaxWk/oIp4LEYpabfZCbAso+dPfv42urkWcf/4ZdHUt4s4712fywM0obW6TOv+imka/347t2zn8\n8cPrtmLNeyvutFrSSrZoBUKkCXFsAK82m63ZHj/qlY1pVUiSVqlG/ytfuY2/+7vKJ0eHvn+s3h63\ntDvxNfr9/mLeXzJuiuPLF3y55vvmtUSlJMQZdJWT+qcEQlqWxeX1OLSyAbzWzWreB6O0RR1oaiUI\neS9RkDBUqtFftGgXP/gBzJnz0vNqld1k6Xqcdie+pL5fiDfYeadyUv+UQEhL8tTrO01bNm+perOq\nwSheUQaaegmCVoUkDdVq9PfuHf28ymU3Wbwep92JL6ud/+QleW0ykjXaA5Exo+tjfdfB1upqIZU5\n57j3/nu1xyEFUfct1KthVg2wpKFajf6jj06ItN9K12NJUrV9e2mrtFos6fO6AmFmU4FvAu8CngYu\nds59r8pzLwT+AZg9/NyvOecuTyvWEIQ4u5R2F408eHzr4zzz6mc0m52CqPsW6pWNaVUoXUUdG6rV\n6F966ZWsXbuybtmNrseSpBDKhkItJy3ingzfJUzXAnuAI4A3AWvN7DfOuQerPP9s4H7gNcDPzWyb\nc+4H6YTqX9o9s6NIup1pHv1x+zMcaUcy02Ye8Lj2OMSrkYFGCUJwCjk21KrRP/nkeXVfr+uxJCWU\nsqFQy0lDSK7S5i2BMLPxQAfwRufcIHCXmd3C0EBw8ejnj5pR+p2Z3Qy8FcjcINGsEGeXkuiikaVN\ngLWM/jkmTTocaOP4eScw46jpLO5c7DvEXAt1oJHaij42tFKjn3ZXIymOULrQhdhkJJTkKm0+VyBe\nB+x1zm0pe+w+4O0RX/824OuxRxWwEGeX4u5qEWKZVjMq/RzXXTeF/fvPZozv4AoixIFGItHY0KS0\nuxpJMYRUNhTianEoyVXafCYQE4GBUY8NAJPqvdDMehiaV7whgbiCFersUpxdLUIs02pGpZ/jk58c\n4Etf6uNIXuc3uIIIcaCRSDQ2tMBnl6G8rB7LgXyu5oa+tyCk5CptiSUQZnY7sACotF3/LuCzwJRR\nj08Gnq/zvp8GzgJOds69WOu5PT0vrWwvWDCf9vb59QMPWBFml0Is02pGtZ+jra3mr3duhT4IFNH6\nvvWsX7c+9e+rscGvpG7y87J6LAfzuZobwt6CWuNXHktlo44NiSUQzrlTan19uM51jJkdU7ZUfQKw\nucZrPg5cBLzNOfdEvRi6uy9sIOJsyHsP6xDLtJpR7ecYHJxUfxo1h1odBJSAxG9e+zzmtb+0Mfeq\npVel8n01NviT5E1+XlaP5WC+VnND2VtQa/zKY6ls1LHB2zkQzrndwGpgqZmNN7O3Au8Fvl3p+Wb2\n98CXgHc55x5NL1JJU2fnElatmhOp53nIKv0c1103hcMPb/caVz1J9PmOehZDLaULuPp955/GhuQk\neU5EXlaPJRwhnPdQb/zq7unmhzf88KA/RSih9X2Q3CJgPLAd+A5wXqlNn5mdbGbPlT33EuAVwAYz\ne97MnjOza1OPWBJVKtPq6+tgzZr59PV1ZHIJvNLP8eY3f4AJE6b6Dq2mJG7UWx0E4khAJHM0NiQg\nyZv8aofgZW31WMIwsrfA84GrISQxofJ6DoRz7llgYZWv3clQ3Wvp70enFVeIirQ5LS9lWqN/jt7e\nKzxGU18Sy8VxbDAraoeLItPYkIwkS0SrNfk455yz6OpaVIixS+ITwt6CIm+QjsL3CoREUKpbbW9f\nTUfH3bS3r6an50z6+7f5Dk1yJImZllqDQBQ+Z6GSKOcS8SnJEtFKq67nnHMl119/gcYuaVhpb8FJ\nW08a+TN3/1w2bNyQWgytjl955/skaolAm9MkaUnNtLS6wcznLFQI3T9E4pR0J7/Rq65dXYs0dklT\nQthDkMcN0nFSApEB2pwmSUvqRr3VQcDXBTyU7h8icUuzRFRjl2RZCElMyJRAZEBeWptKuEKdafF1\nAde+C5HWaewKm9pjSyuUQGRAqCdQS35opuUl2jiXf1u3/s53CIVw2mnv57rr/j/OPvsPI2PXt799\nFJ/85PuD/jfYvn0H/7V3P469wBjf4SRGZZrSCiUQGVCEE6hDUaRuV1JZCN0/JFlfvOTHvkMojF0v\n/DWXLrubtnE7GdwzkcOPmE/vDf/hO6yaXrAXcdOfZMxYx1v+r5rnHtYU8gy/yjSlVUogMiIvrU1D\nluQprZIdoZZzSXxemK0uQGkZC7yKY4FS790BXmDAY0RROCa/fBL/9wfPY/q06U2/S8gz/FHLNENO\ngsQvJRAiw9TtSkDlXEVw5t++33cIErDDXnYYJ7zhBMaObf4WKeQZ/kbKNENOgsQvJRBSGPXKk9Qx\nRKQY5r95vu8QJOdCbsQQtUwz5CRI/FMCkROq3a8tSnmSOoaIiEirQm/EELVMM+QkSPxTApEDqt2v\nL0p5krpdiYhIq0JvxBClTDP0JEj8O8R3ANK6WjfHMiRKeVKp21VfXwdr1synr69DSVhgnHNctvQy\nnHO+QxERqag0w3/S1pNG/szdP5cNGzf4Di2yWkmQCGgFIhdUu19f1PIkdbsKmzb0iRRXVjoC5aER\ng7rRST1KIHJAtfv1qTwp+7ShT6TYNIGQnjwkQZIslTDlQGfnElatmsPg4NDfSzfHnZ26OS5ReVL2\nVdrQJyLFMHoCQWWMIn4pgcgB3RxHUypPWrHiRyxbdo0+nwwZ2dA368ANfaWbCO2NEMm3Ik8g6Pom\nIVIJU06odl/yrF5XE5U2iORX0TsC6fomIdIKhASjv38bXV2LOP/8M+jqWkR//zbfIUkganU1UWmD\nSL4VuSOQrm8SKq1ASBB0loXUUmtD39pb1uqwI5EcK3JHIB3mJqFSAiFBiHLQm8hoRS9tECmConYE\nysv1LSvtd6UxKmESb8pLljZv/qXOspCGFbm0QUTyLS/Xt9IejqzFLbVpBUK8GF2ydP31BHeWRX//\nNnp7lw8f1DeNzs4lKqcKTJFLG0Qk3/JwfdP5PfmlBEK8GF2y9Dd/AzfcAB/7GEEc9BZ1T0aaSYaW\ngQ9W1NIGEcm/PFzftIcjv7yXMJnZVDNbY2Y7zewRM/tQhNccamYPmZna9GTU0A33S3+fNg06OuDy\ny18ZxFkWtfZklJSSjPb21XR03E17+2p6es5MrHuUloGlKDQuiDQutPMi6p3fI9nmPYEArgX2AEcA\nZwFfM7M31HnNRYCK4zOsrW3ayMnZJVOmwH/7b28P4qC30QkOHLwnI0qSERe18pOC0bhQcKHdDGdB\n3JNMrf4b5GUPh1TmNYEws/FAB/AF59ygc+4u4Bbg7BqveTXwYWBZOlH6k+dzETo7l7Bq1ZyRJKJU\nstTZ6adkabRKCc7oPRlRkoy4FPkUVikWjQsCWnFtVBKTTK3+G9Q6v0eyz/ceiNcBe51zW8oeuw94\ne43XXA10MTQ7lVt5PxdhzpxZdHd/n97e5ezZ8yTjxk2juzucTcqdnUvo6bn3gM9/9J6MUpKR9Mbv\nvLTyE4lI40LBaeNt4+LeaxDHv0Ee9nBIdb4TiInAwKjHBoBJlZ5sZguBMc65W8xsQb037+m5fOS/\nFyyYT3v7/BZCTVcRzkWYM2dWsD9LlAQnSpIRh1rLwD42o2kzdz6s71vP+nXrfYdRSaLjAsCVPVeO\n/Pe8BfOY1z6vyVAlCdp425gkJpka/TfQuJAfUceGRBMIM7sdWABUWku7C/gsMGXU45OB5yu813hg\nOXBa6aF637+7+8JGwg1KmuUxUlm9BCetVZTQWvmVlrWPP/F4DeoZNq/9wBvnq5Zelcr39T0uAFzQ\nfUHUcCVlWnFtXNyTTM38G2hcyI+oY0OiCYRz7pRaXx+++I8xs2PKlqtPADZXePprgdnAHTb0G/wy\nYIqZ/QF4i3MuPxsESK88RlqTxipKSMvAKi2QVmlckFpCW3HNgrgnmRr9N9C4UExeS5icc7vNbDWw\n1MzOBU4E3gtUqjV6AJhZ9ve3Av80/JodSceatrTKY5qlQ9aKqYilBVqaT5fGhWILbcU1C+KeZGr0\n36DWuKDrZ3753gMBsAj4JrCdoQv+ec65BwHM7GTgVufcZOfc/uHnMPy1PwL7nXNPe4g5cSFvMvax\nwVsJi39FLS3Q0rwXGhcKKq0VV93YVtfIv0G9cUHXz/zyfg6Ec+5Z59xC59xE59wc59z3y752p3Nu\ncpXXrXPO5foOslQeE8K5COXSPP8A0j+wTSorYk9vnb/hh8YFSZraxMaj1rig62e+hbACIRmT9gbv\nVjpSaeUiPkUsLShiyZZI3qlmPz61xgXnnK6fOaYEQhoW1wbvqDf3zSYseT9Lo5qkluZ9bOb2WWZQ\n1JItkbzTxEB8qo0LzjlOP/N0XT9zzHsJk2RPHKdIN1KWFOVU6ErSLrUKRZ6W5n3+LEUs2RLJu5GJ\ngVkH3tiGUl7jnOOypZcFE0+zdP3MPyUQ0rDSBu++vg7WrJlPX19Hw7P6jdzcN5uwFPEsjTzVnPr+\nWUpL8ydtPWnkz9z9c9mwcUOqcYhIfEK/sc3LBJCun/mnEiZpSivnH/T3b2Pjxl/y5JNwyCFw6qkw\nbVr1m/tmO1IV8SyNPC3N+/5ZQjp/Q0TiEfJerjztzdD1M/+UQEiqSqVLF164Y2Rfwo03wsKFMGVK\n9Zv7ZhKW0M/SiFueavbz9LOISDhCvrH1PWki0giVMAn9/dvo6lrE+eefQVfXokTbo1YqXfroR2Ht\n2sb3UdQTR6lVloS+NN+IPP0sIiL1hL43Q2Q0rUAUXNqdiqrtS3j22Vdy9dXxf89WSq2yJuSl+Ubl\n6WcREamn1qRJWtc8Ha4njVACUXCtnLHQjGr7Eo499u25XRlIS8hL843K088iIlJPadLEbXH8/sHf\nM/MNMzGzVCdNdGq0NEIlTAWXdqeiOFrAioiI5El3Tzc/vOGHfKzjYzw//nk+fsbH+eENP0xtMsV3\n1zvJHiUQBdfsGQvNKtq+BBERkSh83sRX2sAtUosSiILzsSJQ2pewYsWPWLbsGiUPIiJSeL5u4rWB\nW5qhBKLgtCIgIiLil8+beHW9k2ZoE7UUqlORiIhIaHx2YVLXO2mGEggRERERj3zexKvrnTRDCYSI\niIiIR7qJl6zRHggRERGRGpxzXLb0Mm0sFhmmBEJERESkhtIha9pYLDJECYSIiIhIFTpkTeRgSiBE\nREREqtAhayIHUwIhIiIiUoEOWROpTAmEiIiISAU6ZE2kMq8JhJlNNbM1ZrbTzB4xsw/Vef6bzGyd\nmT1vZk+Y2WfSilVERNKhsUFCUTqf4aStJ438mbt/Lhs2bvAdmohXvs+BuBbYAxwBvAlYa2a/cc49\nOPqJZnY48DPgc8C/AIcBM1KMVURE0qGxQYKg8xlEKvO2AmFm44EO4AvOuUHn3F3ALcDZVV5yAfCv\nzrlVzrm9zrldzrmH04pXRESSp7FBRCR8PkuYXgfsdc5tKXvsPuDYKs9/C/Csmd1lZk+Z2c1mNjPx\nKEVEJE0aG0REAuczgZgIDIx6bACYVOX5M4CPAJ8BZgL9wPeSCk5ERLzQ2CAiErjE9kCY2e3AAqBS\nr7O7gM8CU0Y9Phl4vspbDgJrnHP3Dr9/D7DDzCY55yq+pqfn8pH/XrBgPu3t8xv6GURE8mp933rW\nr1uf+vcNYWy4sufKkf+et2Ae89rnNfQziIjkVdSxwXz1Mh6uc/0jcGxpqdrMvgU87py7uMLzbwL+\nyzn3ieG/vwJ4GpjqnHuuwvPdvn1PJPkjiDSkt/cK7rijjT3HbGbGUdNZ3LnYd0giI2aNmYVzzuo/\nM1lpjA3b9m1L8kcQEcmNamODtxIm59xuYDWw1MzGm9lbgfcC367ykhuAhWZ2vJkdCnwRuLPSACEi\nItmksUGKzjnHZUsv02F1EjTfB8ktAsYD24HvAOeV2vSZ2clmNjIAOOduBy4GbgWeBI4GPpx6xCIi\nkjSNDVJYt/7kVm66/SYdVidB83oOhHPuWWBhla/dyVDda/ljvUBvCqGJiIgnGhukqJxzXLfyOnae\nspPeb/dy2ntOw8x7ZaHIQXyvQIiIiIgIQ6sPD09+GAwenvSwViEkWEogRERERDwrrT7snrUbgN2z\nd9P77V7thZAgKYEQERER8ax89QHQKoQEzeseCBERERGBjfdsZO6+ubD1wMc3bNzAu//23X6CEqlC\nCYSIiIiIZ9093b5DEIlMJUwiIiIiIhKZEggREREREYlMCUST+vru9h1C07IcO2Q//qf7n/YdQtPW\n9633HUJLshx/lmMviqz/Gyl+f7IcO2Q7/izHDv7iVwLRpHXrsnsTm+XYIfvx73g0wwnEuoxfaDMc\nf5ZjL4qs/xspfn+yHDtkO/4sxw7+4lcCISIiIiIikSmBEBERERGRyCyvJxyaWT5/MBGRhDjnrP6z\nsk1jg4hIYyqNDblNIEREREREJH4qYRIRERERkciUQIiIiIiISGRKIEREREREJDIlECIiIiIiEpkS\niIjMbKqZrTGznWb2iJl9qM7z32Rm68zseTN7wsw+k1asFWJpKPbh1xxqZg+Z2bY0YqwTS+T4zexC\nM3vAzJ4zsy1mdmGasQ7H0Ei8y81sh5k9bWbL04yzSjyRYg/hc66kif9Pg/k9h4Z/d4K5xhRVlseF\n4XgyOzZoXEiXxgZ/Qh0Xxib1xjl0LbAHOAJ4E7DWzH7jnHtw9BPN7HDgZ8DngH8BDgNmpBjraJFj\nL3MR8CRwdArx1dNo/GcD9wOvAX5uZtuccz9IJ1QgYrxm1gm8F5g7/NAvzGyLc+66FGMdrZHP2vfn\nXEmjvysh/Z5D9N+d0K4xRZXlcQGyPTZoXEiXxgZ/whwXnHP6U+cPMB54ATim7LGbgC9Xef6XgG/5\njruZ2Ie//mpgM3AqsC1r8Y96/VeBr4YYL3AX8Imyv38cuDuLn3Xan3Mc8Yf0e97E704w15ii/sny\nuNBM/MNfD+L/GY0L2fm8NTak+ruT6jVGJUzRvA7Y65zbUvbYfcCxVZ7/FuBZM7vLzJ4ys5vNbGbi\nUVbWaOwAVwNdDGW8vjUTf7m3MXQhSEsj8R47/LV6z0tLK5912p9zJY3GH9LvOTQWf0jXmKLK8rgA\n2R4bNC6kS2ODP8GOC0ogopkIDIx6bACYVOX5M4CPAJ8BZgL9wPeSCq6OhmI3s4XAGOfcLUkHFlGj\nn/0IM+sBDLghgbiqaSTe0c8dGH7Ml6Y+a0+fcyWR4w/w9xwa+/xDusYUVZbHBcj22KBxIV0aG/wJ\ndlxQAgGY2e1mtt/M9lX480tgJzBl1MsmA89XectBYI1z7l7n3H8BPcB8M6t7cfMZu5mNB5Yz9MsH\nQ//jJyqBz770vp8GzgLe7Zx7MZnoK9rJUHzlqsU7+rmThx/zpZHYAa+fcyWR4vfxex5RI59/ateY\nosryuBB3/Gn/P6NxIahxATQ2+BTsuKBN1IBz7pRaXx/+pRpjZseULSOdQPVlufsBN/rbkMAvY8yx\nvxaYDdxhZga8DJhiZn8A3uKci70bQQKfPWb2cYY2QL3NOfdEbMFG8ztgbMR4Nw9/bePw3/+iyvPS\n0kjsvj/nSqLGn/rveUSNfP6pXWOKKsvjAmR7bNC4ENS4ABobfI4N4Y4LPjeHZOkP8F3gOwxtaHkr\n8CzwhirPPQV4BjgeOBRYAawLPXaGVqSOLPuzEHiMoZ3/Fnr8w8/9e+AJ4M9DjxfoZOgicNTwn03A\nub7ibjB2759zs/GH+nve4Ocf1DWmqH+yPC40En+I/89oXAg2fu+fdbPxh/h73uBnn+o1xvs/alb+\nAFOBNQwtJ/UDZ5Z97WTguVHP7xz+xXsGuBmYnpXYy762gDC600SOH9jKUMeC5xha4nsOuDaEeKv8\nnlw2/DuyA1gW6mcd4ufc6mdf9pogfs+b+N0J5hpT1D9ZHheaib/sa97/n9G4EMbnHeJn3ernX/Ya\n77/nTfzupHaNseFvKCIiIiIiUpc2UYuIiIiISGRKIEREREREJDIlECIiIiIiEpkSCBERERERiUwJ\nhIiIiIiIRKYEQkREREREIlMCISIiIiIikSmBEBERERGRyJRAiIiIiIhIZEogREREREQkMiUQIiIi\nIiIS2VjfAYjklZl9Engl8OfAt4HZwJHAccBFzrnHPYYnIiIp07ggeWHOOd8xiOSOmZ0L3O+c+5WZ\n/SXwv4F/AHYD/wq82zl3m88YRUQkPRoXJE9UwiSSjMOdc78a/u/ZwD7n3M3AnUB7+SBhZkeb2Td9\nBCkiIqnRuCC5oRUIkYSZ2dXATOfcwgpf+zTwZmC2c+4dqQcnIiKp07ggWacVCJHknQL0VfqCc+6f\ngRvTDEZERLzTuCCZpgRCJGZmdoiZvdOGHAkcS9lAYWYXeQtORERSp3FB8kYJhEj8OoGfA68FPsDQ\nBrnHAMzsfcBmf6GJiIgHGhckV9TGVSR+dwPfZWiQuJ+hgeMrZtYPPOKcW+kxNhERSZ/GBckVJRAi\nMXPO3QecNerh7/iIRURE/NO4IHmjEiYR/2z4j4iICGhckMApgRDxaPhgoQuBuWZ2qZm91ndMIiLi\nj8YFyQKdAyEiIiIiIpFpBUJERERERCJTAiEiIiIiIpEpgRARERERkciUQIiIiIiISGRKIERERERE\nJDIlECIiIiIiEpkSCBERERERiUwJhIiIiIiIRPb/A5WlZmi5oL6mAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fd2155f7a20>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "np.random.seed(6)\n",
    "Xs = np.random.rand(100, 2) - 0.5\n",
    "ys = (Xs[:, 0] > 0).astype(np.float32) * 2\n",
    "\n",
    "angle = np.pi / 4\n",
    "rotation_matrix = np.array([[np.cos(angle), -np.sin(angle)], [np.sin(angle), np.cos(angle)]])\n",
    "Xsr = Xs.dot(rotation_matrix)\n",
    "\n",
    "tree_clf_s = DecisionTreeClassifier(random_state=42)\n",
    "tree_clf_s.fit(Xs, ys)\n",
    "tree_clf_sr = DecisionTreeClassifier(random_state=42)\n",
    "tree_clf_sr.fit(Xsr, ys)\n",
    "\n",
    "plt.figure(figsize=(11, 4))\n",
    "plt.subplot(121)\n",
    "plot_decision_boundary(tree_clf_s, Xs, ys, axes=[-0.7, 0.7, -0.7, 0.7], iris=False)\n",
    "plt.subplot(122)\n",
    "plot_decision_boundary(tree_clf_sr, Xsr, ys, axes=[-0.7, 0.7, -0.7, 0.7], iris=False)\n",
    "\n",
    "save_fig(\"sensitivity_to_rotation_plot\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Regression trees"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "# Quadratic training set + noise\n",
    "np.random.seed(42)\n",
    "m = 200\n",
    "X = np.random.rand(m, 1)\n",
    "y = 4 * (X - 0.5) ** 2\n",
    "y = y + np.random.randn(m, 1) / 10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DecisionTreeRegressor(criterion='mse', max_depth=2, max_features=None,\n",
       "           max_leaf_nodes=None, min_impurity_split=1e-07,\n",
       "           min_samples_leaf=1, min_samples_split=2,\n",
       "           min_weight_fraction_leaf=0.0, presort=False, random_state=42,\n",
       "           splitter='best')"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.tree import DecisionTreeRegressor\n",
    "\n",
    "tree_reg = DecisionTreeRegressor(max_depth=2, random_state=42)\n",
    "tree_reg.fit(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Saving figure tree_regression_plot\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n3H///bz77rusWbMmoceyE584+PxfA/ulobJzJOMWT1V8/fuqD3PhQpian5/U46fbiH26/R9BSDSx\n1hm36EB6dSCuvtrS6gVAjwi/R52sw+Np7EAIQhJp0aIFLVq08D9or127lnfeeYdp06YltRzdunXj\n/vvv5/vvv+eWW27h0ksv5dChQ9x77738/e9/p6amhkGDBvHUU09xwgknADBixAgGDhzIunXrqKys\npLS0lN/+9recf/75LF++nAkTJnD06FEKCwtRSjF//nz/8V555RUmT57Mrl27OPfcc3nuuecoKCiw\nXO7rr78egJUrV9pzIpJEJHHwjah/9ZXz2TlShcJCOPWMFsaXo0eb/W7XhE2CIAh24RYdyFgXpmiY\nMgNlZye9XIIAUFBQwLPPPsvDDz/Mo48+yuOPP86BAwcYOnSoI+UZO3YsW7dupaqqivHjx1NVVcXH\nH3/M9u3bOf3007nooouor290EXnuueeYOHEi+/bt4+677+ayyy5j06ZNDB48mGeeeYbjjz8ej8dD\nTU2NP6ajrq6OhQsX8uWXX1JVVcVnn33GjBkzmpSjffv2FBUV0b59+yafi4qKmDt3blLPSaxE8l+N\nlMIvWZ55aYc3tqbiwIEmixPtCpBuI/bp9n8EIdGEqzPRYhjcogOOdCCUUu2VUq8rpfYrpdYrpa4J\ns14LpdQzSqntSqmdSqk3lFLHJqOMpibryMkx4ifuvjsZRRKEJlx33XW89NJL3HnnnXTp0oWOHTty\nyimnOFKWrl27ArB9+3bmzp3LzJkz6dixIzk5Odx77718//33rFixwr/+mDFjGDlyJFlZWYwbN47T\nTjuNl156KeIxlFI88sgj5OfnU1xczJgxY/wWBK01Wmv27NnD7t272bNnT5PPu3fvZuzYsYk7ATYR\n7aE1mjj4POZSofPgGh3wBefXN42BMDthk+/eEwTBOdKlHpoZuHCLDjjlwjQTqAWKgVOAt5RS/9Fa\nfx203q3A6UAZUAP8GXgKuJIEY8oM5LNA1EvwnZBc7r33Xs444wxGjx6N1pq5c+dy8803Jzx2IBxb\ntmwBINtbJ/r37+//TWtNXV0dmzdv9i8rLS1tsn1paal/H+HIzs6mqKjI/72goABPmkUKm/FfTVb4\nThJwhw74LBANDUb2NG8dSrQrQLqN2Kfb/xGERFMxeDD87//C9u3QujXs38/BQ6259/P97KM1bT/f\n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\nRKSw/wfNcWzGNde2NgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fd2154ecf60>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.tree import DecisionTreeRegressor\n",
    "\n",
    "tree_reg1 = DecisionTreeRegressor(random_state=42, max_depth=2)\n",
    "tree_reg2 = DecisionTreeRegressor(random_state=42, max_depth=3)\n",
    "tree_reg1.fit(X, y)\n",
    "tree_reg2.fit(X, y)\n",
    "\n",
    "def plot_regression_predictions(tree_reg, X, y, axes=[0, 1, -0.2, 1], ylabel=\"$y$\"):\n",
    "    x1 = np.linspace(axes[0], axes[1], 500).reshape(-1, 1)\n",
    "    y_pred = tree_reg.predict(x1)\n",
    "    plt.axis(axes)\n",
    "    plt.xlabel(\"$x_1$\", fontsize=18)\n",
    "    if ylabel:\n",
    "        plt.ylabel(ylabel, fontsize=18, rotation=0)\n",
    "    plt.plot(X, y, \"b.\")\n",
    "    plt.plot(x1, y_pred, \"r.-\", linewidth=2, label=r\"$\\hat{y}$\")\n",
    "\n",
    "plt.figure(figsize=(11, 4))\n",
    "plt.subplot(121)\n",
    "plot_regression_predictions(tree_reg1, X, y)\n",
    "for split, style in ((0.1973, \"k-\"), (0.0917, \"k--\"), (0.7718, \"k--\")):\n",
    "    plt.plot([split, split], [-0.2, 1], style, linewidth=2)\n",
    "plt.text(0.21, 0.65, \"Depth=0\", fontsize=15)\n",
    "plt.text(0.01, 0.2, \"Depth=1\", fontsize=13)\n",
    "plt.text(0.65, 0.8, \"Depth=1\", fontsize=13)\n",
    "plt.legend(loc=\"upper center\", fontsize=18)\n",
    "plt.title(\"max_depth=2\", fontsize=14)\n",
    "\n",
    "plt.subplot(122)\n",
    "plot_regression_predictions(tree_reg2, X, y, ylabel=None)\n",
    "for split, style in ((0.1973, \"k-\"), (0.0917, \"k--\"), (0.7718, \"k--\")):\n",
    "    plt.plot([split, split], [-0.2, 1], style, linewidth=2)\n",
    "for split in (0.0458, 0.1298, 0.2873, 0.9040):\n",
    "    plt.plot([split, split], [-0.2, 1], \"k:\", linewidth=1)\n",
    "plt.text(0.3, 0.5, \"Depth=2\", fontsize=13)\n",
    "plt.title(\"max_depth=3\", fontsize=14)\n",
    "\n",
    "save_fig(\"tree_regression_plot\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "export_graphviz(\n",
    "        tree_reg1,\n",
    "        out_file=image_path(\"regression_tree.dot\"),\n",
    "        feature_names=[\"x1\"],\n",
    "        rounded=True,\n",
    "        filled=True\n",
    "    )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Saving figure tree_regression_regularization_plot\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nkfsAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fd2154ec908>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "tree_reg1 = DecisionTreeRegressor(random_state=42)\n",
    "tree_reg2 = DecisionTreeRegressor(random_state=42, min_samples_leaf=10)\n",
    "tree_reg1.fit(X, y)\n",
    "tree_reg2.fit(X, y)\n",
    "\n",
    "x1 = np.linspace(0, 1, 500).reshape(-1, 1)\n",
    "y_pred1 = tree_reg1.predict(x1)\n",
    "y_pred2 = tree_reg2.predict(x1)\n",
    "\n",
    "plt.figure(figsize=(11, 4))\n",
    "\n",
    "plt.subplot(121)\n",
    "plt.plot(X, y, \"b.\")\n",
    "plt.plot(x1, y_pred1, \"r.-\", linewidth=2, label=r\"$\\hat{y}$\")\n",
    "plt.axis([0, 1, -0.2, 1.1])\n",
    "plt.xlabel(\"$x_1$\", fontsize=18)\n",
    "plt.ylabel(\"$y$\", fontsize=18, rotation=0)\n",
    "plt.legend(loc=\"upper center\", fontsize=18)\n",
    "plt.title(\"No restrictions\", fontsize=14)\n",
    "\n",
    "plt.subplot(122)\n",
    "plt.plot(X, y, \"b.\")\n",
    "plt.plot(x1, y_pred2, \"r.-\", linewidth=2, label=r\"$\\hat{y}$\")\n",
    "plt.axis([0, 1, -0.2, 1.1])\n",
    "plt.xlabel(\"$x_1$\", fontsize=18)\n",
    "plt.title(\"min_samples_leaf={}\".format(tree_reg2.min_samples_leaf), fontsize=14)\n",
    "\n",
    "save_fig(\"tree_regression_regularization_plot\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Exercise solutions"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "## 1. to 6."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "See appendix A."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "source": [
    "## 7."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "_Exercise: train and fine-tune a Decision Tree for the moons dataset._"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "a. Generate a moons dataset using `make_moons(n_samples=10000, noise=0.4)`."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Adding `random_state=42` to make this notebook's output constant:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "from sklearn.datasets import make_moons\n",
    "\n",
    "X, y = make_moons(n_samples=10000, noise=0.4, random_state=42)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "b. Split it into a training set and a test set using `train_test_split()`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "c. Use grid search with cross-validation (with the help of the `GridSearchCV` class) to find good hyperparameter values for a `DecisionTreeClassifier`. Hint: try various values for `max_leaf_nodes`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 3 folds for each of 294 candidates, totalling 882 fits\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[Parallel(n_jobs=-1)]: Done 882 out of 882 | elapsed:    4.4s finished\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=None, error_score='raise',\n",
       "       estimator=DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None,\n",
       "            max_features=None, max_leaf_nodes=None,\n",
       "            min_impurity_split=1e-07, min_samples_leaf=1,\n",
       "            min_samples_split=2, min_weight_fraction_leaf=0.0,\n",
       "            presort=False, random_state=42, splitter='best'),\n",
       "       fit_params={}, iid=True, n_jobs=-1,\n",
       "       param_grid={'max_leaf_nodes': [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99], 'min_samples_split': [2, 3, 4]},\n",
       "       pre_dispatch='2*n_jobs', refit=True, return_train_score=True,\n",
       "       scoring=None, verbose=1)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import GridSearchCV\n",
    "\n",
    "params = {'max_leaf_nodes': list(range(2, 100)), 'min_samples_split': [2, 3, 4]}\n",
    "grid_search_cv = GridSearchCV(DecisionTreeClassifier(random_state=42), params, n_jobs=-1, verbose=1)\n",
    "\n",
    "grid_search_cv.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None,\n",
       "            max_features=None, max_leaf_nodes=17, min_impurity_split=1e-07,\n",
       "            min_samples_leaf=1, min_samples_split=2,\n",
       "            min_weight_fraction_leaf=0.0, presort=False, random_state=42,\n",
       "            splitter='best')"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grid_search_cv.best_estimator_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "d. Train it on the full training set using these hyperparameters, and measure your model's performance on the test set. You should get roughly 85% to 87% accuracy."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "By default, `GridSearchCV` trains the best model found on the whole training set (you can change this by setting `refit=False`), so we don't need to do it again. We can simply evaluate the model's accuracy:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.86950000000000005"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import accuracy_score\n",
    "\n",
    "y_pred = grid_search_cv.predict(X_test)\n",
    "accuracy_score(y_test, y_pred)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "## 8."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "_Exercise: Grow a forest._"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "a. Continuing the previous exercise, generate 1,000 subsets of the training set, each containing 100 instances selected randomly. Hint: you can use Scikit-Learn's `ShuffleSplit` class for this."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "from sklearn.model_selection import ShuffleSplit\n",
    "\n",
    "n_trees = 1000\n",
    "n_instances = 100\n",
    "\n",
    "mini_sets = []\n",
    "\n",
    "rs = ShuffleSplit(n_splits=n_trees, test_size=len(X_train) - n_instances, random_state=42)\n",
    "for mini_train_index, mini_test_index in rs.split(X_train):\n",
    "    X_mini_train = X_train[mini_train_index]\n",
    "    y_mini_train = y_train[mini_train_index]\n",
    "    mini_sets.append((X_mini_train, y_mini_train))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "b. Train one Decision Tree on each subset, using the best hyperparameter values found above. Evaluate these 1,000 Decision Trees on the test set. Since they were trained on smaller sets, these Decision Trees will likely perform worse than the first Decision Tree, achieving only about 80% accuracy."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.80544949999999993"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.base import clone\n",
    "\n",
    "forest = [clone(grid_search_cv.best_estimator_) for _ in range(n_trees)]\n",
    "\n",
    "accuracy_scores = []\n",
    "\n",
    "for tree, (X_mini_train, y_mini_train) in zip(forest, mini_sets):\n",
    "    tree.fit(X_mini_train, y_mini_train)\n",
    "    \n",
    "    y_pred = tree.predict(X_test)\n",
    "    accuracy_scores.append(accuracy_score(y_test, y_pred))\n",
    "\n",
    "np.mean(accuracy_scores)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "c. Now comes the magic. For each test set instance, generate the predictions of the 1,000 Decision Trees, and keep only the most frequent prediction (you can use SciPy's `mode()` function for this). This gives you _majority-vote predictions_ over the test set."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "Y_pred = np.empty([n_trees, len(X_test)], dtype=np.uint8)\n",
    "\n",
    "for tree_index, tree in enumerate(forest):\n",
    "    Y_pred[tree_index] = tree.predict(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "from scipy.stats import mode\n",
    "\n",
    "y_pred_majority_votes, n_votes = mode(Y_pred, axis=0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "d. Evaluate these predictions on the test set: you should obtain a slightly higher accuracy than your first model (about 0.5 to 1.5% higher). Congratulations, you have trained a Random Forest classifier!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.872"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "accuracy_score(y_test, y_pred_majority_votes.reshape([-1]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "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.5.3"
  },
  "nav_menu": {
   "height": "309px",
   "width": "468px"
  },
  "toc": {
   "navigate_menu": true,
   "number_sections": true,
   "sideBar": true,
   "threshold": 6,
   "toc_cell": false,
   "toc_section_display": "block",
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
