"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "AFJ1qoZPlQcs",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Feature Crosses\n",
+ "\n",
+ "Crossing two (or more) features is a clever way to learn non-linear relations using a linear model. In our problem, if we just use the feature `latitude` for learning, the model might learn that city blocks at a particular latitude (or within a particular range of latitudes since we have bucketized it) are more likely to be expensive than others. Similarly for the feature `longitude`. However, if we cross `longitude` by `latitude`, the crossed feature represents a well defined city block. If the model learns that certain city blocks (within range of latitudes and longitudes) are more likely to be more expensive than others, it is a stronger signal than two features considered individually.\n",
+ "\n",
+ "Currently, the feature columns API only supports discrete features for crosses. To cross two continuous values, like `latitude` or `longitude`, we can bucketize them.\n",
+ "\n",
+ "If we cross the `latitude` and `longitude` features (supposing, for example, that `longitude` was bucketized into `2` buckets, while `latitude` has `3` buckets), we actually get six crossed binary features. Each of these features will get its own separate weight when we train the model."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "-Rk0c1oTYaVH",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Task 2: Train the Model Using Feature Crosses\n",
+ "\n",
+ "**Add a feature cross of `longitude` and `latitude` to your model, train it, and determine whether the results improve.**\n",
+ "\n",
+ "Refer to the TensorFlow API docs for [`crossed_column()`](https://www.tensorflow.org/api_docs/python/tf/feature_column/crossed_column) to build the feature column for your cross. Use a `hash_bucket_size` of `1000`."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "-eYiVEGeYhUi",
+ "colab_type": "code",
+ "cellView": "both",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def construct_feature_columns():\n",
+ " \"\"\"Construct the TensorFlow Feature Columns.\n",
+ "\n",
+ " Returns:\n",
+ " A set of feature columns\n",
+ " \"\"\" \n",
+ " households = tf.feature_column.numeric_column(\"households\")\n",
+ " longitude = tf.feature_column.numeric_column(\"longitude\")\n",
+ " latitude = tf.feature_column.numeric_column(\"latitude\")\n",
+ " housing_median_age = tf.feature_column.numeric_column(\"housing_median_age\")\n",
+ " median_income = tf.feature_column.numeric_column(\"median_income\")\n",
+ " rooms_per_person = tf.feature_column.numeric_column(\"rooms_per_person\")\n",
+ " \n",
+ " # Divide households into 7 buckets.\n",
+ " bucketized_households = tf.feature_column.bucketized_column(\n",
+ " households, boundaries=get_quantile_based_boundaries(\n",
+ " training_examples[\"households\"], 7))\n",
+ "\n",
+ " # Divide longitude into 10 buckets.\n",
+ " bucketized_longitude = tf.feature_column.bucketized_column(\n",
+ " longitude, boundaries=get_quantile_based_boundaries(\n",
+ " training_examples[\"longitude\"], 10))\n",
+ " \n",
+ " # Divide latitude into 10 buckets.\n",
+ " bucketized_latitude = tf.feature_column.bucketized_column(\n",
+ " latitude, boundaries=get_quantile_based_boundaries(\n",
+ " training_examples[\"latitude\"], 10))\n",
+ "\n",
+ " # Divide housing_median_age into 7 buckets.\n",
+ " bucketized_housing_median_age = tf.feature_column.bucketized_column(\n",
+ " housing_median_age, boundaries=get_quantile_based_boundaries(\n",
+ " training_examples[\"housing_median_age\"], 7))\n",
+ " \n",
+ " # Divide median_income into 7 buckets.\n",
+ " bucketized_median_income = tf.feature_column.bucketized_column(\n",
+ " median_income, boundaries=get_quantile_based_boundaries(\n",
+ " training_examples[\"median_income\"], 7))\n",
+ " \n",
+ " # Divide rooms_per_person into 7 buckets.\n",
+ " bucketized_rooms_per_person = tf.feature_column.bucketized_column(\n",
+ " rooms_per_person, boundaries=get_quantile_based_boundaries(\n",
+ " training_examples[\"rooms_per_person\"], 7))\n",
+ " \n",
+ " # YOUR CODE HERE: Make a feature column for the long_x_lat feature cross\n",
+ " long_x_lat = tf.feature_column.crossed_column(set([bucketized_longitude, bucketized_latitude]), hash_bucket_size=1000) \n",
+ " \n",
+ " feature_columns = set([\n",
+ " bucketized_longitude,\n",
+ " bucketized_latitude,\n",
+ " bucketized_housing_median_age,\n",
+ " bucketized_households,\n",
+ " bucketized_median_income,\n",
+ " bucketized_rooms_per_person,\n",
+ " long_x_lat])\n",
+ " \n",
+ " return feature_columns"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "xZuZMp3EShkM",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 622
+ },
+ "outputId": "19d668cb-9424-424e-cbbf-9deda637966a"
+ },
+ "cell_type": "code",
+ "source": [
+ "_ = train_model(\n",
+ " learning_rate=1.0,\n",
+ " steps=500,\n",
+ " batch_size=100,\n",
+ " feature_columns=construct_feature_columns(),\n",
+ " training_examples=training_examples,\n",
+ " training_targets=training_targets,\n",
+ " validation_examples=validation_examples,\n",
+ " validation_targets=validation_targets)"
+ ],
+ "execution_count": 14,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 163.90\n",
+ " period 01 : 135.83\n",
+ " period 02 : 118.74\n",
+ " period 03 : 107.43\n",
+ " period 04 : 99.49\n",
+ " period 05 : 93.63\n",
+ " period 06 : 89.08\n",
+ " period 07 : 85.43\n",
+ " period 08 : 82.49\n",
+ " period 09 : 80.02\n",
+ "Model training finished.\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGACAYAAACz01iHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xd0VAX+/vH3TCa994QeQDqEFiSA\n9BKaqJS1IaKra0FRcS1n1dXVtaxfGyrYRUBXAQFBKYr0Tgi9l0BCEtJ7T+b+/mDND0RCgoSZJM/r\nHM5hZu7ceSafyeHhtjEZhmEgIiIiUouYbR1AREREpLpUYERERKTWUYERERGRWkcFRkRERGodFRgR\nERGpdVRgREREpNax2DqAiD1r3bo1TZo0wcHBAYDy8nIiIiJ47rnncHNzu+L1zps3jwkTJlx0/8KF\nC3n22Wf56KOPGDBgQMX9RUVF9OrVi6FDh/L6669f8etWVVxcHK+++iqxsbEAuLq6MmXKFAYPHlzj\nr10dM2bMIC4u7qKfybZt27j33ntp1KjRRc9ZsWLFtYr3p5w5c4ZBgwYRFhYGgGEYBAQE8I9//IN2\n7dpVa11vvfUWDRo04Lbbbqvyc3744QcWLFjAnDlzqvVaIteKCozIZcyZM4eQkBAASkpKePzxx/n4\n4495/PHHr2h9qampfPbZZ39YYABCQ0P58ccfLygwa9aswcvL64pe70o8+eSTjBkzho8++giAPXv2\nMGnSJJYvX05oaOg1y/FnhIaG1pqycikODg4XvIdly5bx8MMPs3LlSpycnKq8nmnTptVEPBGb0i4k\nkWpwcnLihhtu4NChQwAUFxfzwgsvMGzYMIYPH87rr79OeXk5AIcPH+bWW28lKiqKMWPGsGHDBgBu\nvfVWEhMTiYqKoqSk5KLX6Nq1K9u2baOwsLDivmXLltG7d++K2yUlJbzyyisMGzaMgQMHVhQNgF27\ndnHLLbcQFRXFiBEj2Lx5M3Duf/R9+vRh9uzZjB49mhtuuIFly5b94fs8evQo4eHhFbfDw8NZuXJl\nRZH74IMP6NevHzfddBOffPIJAwcOBOCZZ55hxowZFc87//blcr366qvceeedAOzcuZOxY8cyZMgQ\nJkyYQHx8PHBuS9Rjjz3GgAEDuPPOOzl79uxlJvbHFi5cyJQpU5g0aRL/+c9/2LZtG7feeitTp06t\n+Md++fLljBo1iqioKO666y7i4uIAeP/993nuuecYN24cs2bNumC9U6dO5Ysvvqi4fejQIfr06YPV\nauWdd95h2LBhDBs2jLvuuovk5ORq5x4xYgRFRUWcPHkSgO+++46oqCgGDhzIE088QVFREXDu5/7a\na68xevRoli9ffsEcLvW5tFqt/Otf/6J///6MGzeOw4cPV7zu9u3bufnmmxkxYgTDhw9n+fLl1c4u\nctUZInJJrVq1MpKSkipuZ2VlGXfccYcxY8YMwzAM4+OPPzbuu+8+o7S01CgsLDTGjh1rLF682Cgv\nLzeGDx9uLF261DAMw9i7d68RERFh5ObmGlu3bjUGDx78h6/3/fffG08//bTx5JNPVjw3NzfXGDRo\nkDF//nzj6aefNgzDMD744ANj0qRJRnFxsZGfn2/cdNNNxurVqw3DMIxRo0YZP/74o2EYhrFo0aKK\n14qPjzfatWtnzJkzxzAMw1i2bJkxZMiQP8zxyCOPGAMGDDC++uor4/jx4xc8duTIEaN79+5GSkqK\nUVpaajz44IPGgAEDDMMwjKefftr48MMPK5Y9/3Zludq3b28sXLiw4v1GREQYGzduNAzDMJYuXWrc\nfPPNhmEYxty5c4077rjDKC0tNTIyMowBAwZU/EzOV9nP+Lefc+fOnY3Y2NiK5Tt27Ghs3rzZMAzD\nSEhIMLp162acOnXKMAzD+Pzzz41JkyYZhmEY06dPN/r06WOkp6dftN6ffvrJuOOOOypuv/fee8bL\nL79sHD161Bg6dKhRUlJiGIZhzJ4921i0aNEl8/32c2nbtu1F90dERBgnTpwwduzYYURGRhpnz541\nDMMwnn/+eeP11183DOPcz3306NFGUVFRxe0PP/yw0s/l2rVrjaFDhxp5eXlGYWGhMW7cOOPOO+80\nDMMwbrnlFmPbtm2GYRhGbGys8cQTT1SaXeRa0BYYkcuYOHEiUVFRDBo0iEGDBtGzZ0/uu+8+ANau\nXcuECROwWCy4uLgwevRoNm3axJkzZ0hLS2PkyJEAdOzYkQYNGrBv374qvebIkSP58ccfAVi1ahUD\nBgzAbP7/v65r1qzh9ttvx8nJCTc3N8aMGcPPP/8MwOLFixk+fDgA3bp1q9h6AVBWVsYtt9wCQPv2\n7UlMTPzD13/zzTe54447WLp0KaNGjWLgwIH897//Bc5tHYmIiCAwMBCLxcKoUaOq9J4qy1VaWsqQ\nIUMq1h8cHFyxxWnUqFHExcWRmJhIdHQ0Q4YMwWKx4Ovre8Futt9LSkoiKirqgj/nHyvTrFkzmjVr\nVnHbxcWFyMhIADZt2sT1119P06ZNARg/fjzbtm2jrKwMOLdFys/P76LX7N+/PwcPHiQrKwuAX375\nhaioKLy8vMjIyGDp0qVkZ2czceJEbrrppir93H5jGAbfffcdwcHBNGvWjNWrVzNixAiCg4MBuO22\n2yo+AwCRkZE4OztfsI7KPpc7duygX79+uLu74+LiUjErAH9/fxYvXsyJEydo1qwZb731VrWyi9QE\nHQMjchm/HQOTkZFRsfvDYjn3q5ORkYG3t3fFst7e3qSnp5ORkYGnpycmk6nisd/+EQsICLjsa/bu\n3ZvnnnuOrKwsfvrpJx566KGKA2oBcnNzee2113j77beBc7uUOnXqBMDSpUuZPXs2+fn5WK1WjPO+\n7szBwaHi4GOz2YzVav3D13d2dubee+/l3nvvJScnhxUrVvDqq6/SqFEjsrOzLzgex9/f/7Lvpyq5\nPDw8AMjJySE+Pp6oqKiKx52cnMjIyCA7OxtPT8+K+728vMjPz//D17vcMTDnz+33tzMzMy94j56e\nnhiGQWZm5h8+9zdubm706tWLtWvX0q1bN3JycujWrRsmk4n333+fL774gpdffpmIiAheeumlyx5P\nVF5eXvFzMAyDli1bMmPGDMxmM7m5ufzyyy9s3Lix4vHS0tJLvj+g0s9ldnY2QUFBF9z/m1dffZWZ\nM2cyefJkXFxceOKJJy6Yj4gtqMCIVJGfnx8TJ07kzTffZObMmQAEBARU/G8bICsri4CAAPz9/cnO\nzsYwjIp/LLKysqr8j72joyMDBgxg8eLFnD59mi5dulxQYIKCgrjnnnsu2gKRnJzMc889x/z582nb\nti2nTp1i2LBh1XqfGRkZHDp0qGILiJeXFxMmTGDDhg0cPXoUT09PcnNzL1j+N78vRdnZ2dXOFRQU\nRPPmzVm4cOFFj3l5eV3yta8mf39/du3aVXE7Ozsbs9mMr6/vZZ87bNgwfvnlFzIzMxk2bFjF/Hv2\n7EnPnj0pKCjgjTfe4P/+7/8uuyXj9wfxni8oKIibb76Zp59+ulrv61Kfy8p+tgEBATz//PM8//zz\nbNy4kUceeYQbbrgBd3f3Kr+2yNWmXUgi1TB58mR27drF9u3bgXO7DBYsWEB5eTkFBQX88MMP9OvX\nj0aNGhESElJxkGxMTAxpaWl06tQJi8VCQUFBxe6ISxk5ciSffvrpH566PGjQIObPn095eTmGYTBj\nxgzWr19PRkYGbm5uNG/enLKyMr777juAS26l+CNFRUU8+uijFQd3Apw+fZo9e/bQvXt3unTpQnR0\nNBkZGZSVlbF48eKK5QIDAysO/oyPjycmJgagWrnCw8NJTU1lz549Fev5+9//jmEYdO7cmdWrV1Ne\nXk5GRgbr16+v8vuqjt69exMdHV2xm+vbb7+ld+/eFVveKjNgwAB27drFqlWrKnbDbNy4kZdeegmr\n1Yqbmxtt2rS5YCvIlRg4cCA///xzRdFYtWoVn3zySaXPqexz2aVLFzZu3EhhYSGFhYUVxam0tJSJ\nEyeSkpICnNv1aLFYLtilKWIL2gIjUg0eHh7cf//9vPHGGyxYsICJEycSHx/PyJEjMZlMREVFMXz4\ncEwmE2+//Tb//Oc/+eCDD3B1deW9997Dzc2N1q1b4+3tTe/evVm0aBENGjT4w9fq0aMHJpOJESNG\nXPTY7bffzpkzZxg5ciSGYdChQwcmTZqEm5sbffv2ZdiwYfj7+/PMM88QExPDxIkTmT59epXeY4MG\nDZg5cybTp0/nlVdewTAMPDw8ePbZZyvOTPrLX/7CzTffjK+vL0OHDuXYsWMATJgwgSlTpjB06FDa\ntWtXsZWlTZs2Vc7l4uLC9OnTefnll8nPz8fR0ZGpU6diMpmYMGEC0dHRDB48mAYNGjB48OALthqc\n77djYH7vP//5z2V/BiEhIbzyyis89NBDlJaW0qhRI15++eUq/fw8PDxo3749R44coXPnzgBERETw\n008/MWzYMJycnPDz8+PVV18F4Kmnnqo4k6g62rdvzwMPPMDEiROxWq34+/vz0ksvVfqcyj6XAwYM\nYO3atURFRREQEEC/fv2Ijo7G0dGRcePGcffddwPntrI999xzuLq6ViuvyNVmMs7fES0iUk3R0dE8\n9dRTrF692tZRRKQe0TZAERERqXVUYERERKTW0S4kERERqXW0BUZERERqHRUYERERqXVq5WnUqal/\nfNrk1eDr60ZmZkGNrV+unGZjnzQX+6XZ2C/NpmoCAz0v+Zi2wPyOxeJg6whyCZqNfdJc7JdmY780\nmz9PBUZERERqHRUYERERqXVUYERERKTWUYERERGRWkcFRkRERGodFRgRERGpdVRgREREpNZRgRER\n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\nrkJggg==\n",
+ "text/plain": [
+ "
"
+ ],
+ "text/plain": [
+ " longitude latitude housing_median_age total_rooms total_bedrooms \\\n",
+ "count 17000.0 17000.0 17000.0 17000.0 17000.0 \n",
+ "mean -119.6 35.6 28.6 2643.7 539.4 \n",
+ "std 2.0 2.1 12.6 2179.9 421.5 \n",
+ "min -124.3 32.5 1.0 2.0 1.0 \n",
+ "25% -121.8 33.9 18.0 1462.0 297.0 \n",
+ "50% -118.5 34.2 29.0 2127.0 434.0 \n",
+ "75% -118.0 37.7 37.0 3151.2 648.2 \n",
+ "max -114.3 42.0 52.0 37937.0 6445.0 \n",
+ "\n",
+ " population households median_income median_house_value \n",
+ "count 17000.0 17000.0 17000.0 17000.0 \n",
+ "mean 1429.6 501.2 3.9 207.3 \n",
+ "std 1147.9 384.5 1.9 116.0 \n",
+ "min 3.0 1.0 0.5 15.0 \n",
+ "25% 790.0 282.0 2.6 119.4 \n",
+ "50% 1167.0 409.0 3.5 180.4 \n",
+ "75% 1721.0 605.2 4.8 265.0 \n",
+ "max 35682.0 6082.0 15.0 500.0 "
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 4
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "Lr6wYl2bt2Ep",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Build the First Model\n",
+ "\n",
+ "In this exercise, we'll try to predict `median_house_value`, which will be our label (sometimes also called a target). We'll use `total_rooms` as our input feature.\n",
+ "\n",
+ "**NOTE:** Our data is at the city block level, so this feature represents the total number of rooms in that block.\n",
+ "\n",
+ "To train our model, we'll use the [LinearRegressor](https://www.tensorflow.org/api_docs/python/tf/estimator/LinearRegressor) interface provided by the TensorFlow [Estimator](https://www.tensorflow.org/get_started/estimator) API. This API takes care of a lot of the low-level model plumbing, and exposes convenient methods for performing model training, evaluation, and inference."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "0cpcsieFhsNI",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Step 1: Define Features and Configure Feature Columns"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "EL8-9d4ZJNR7",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "In order to import our training data into TensorFlow, we need to specify what type of data each feature contains. There are two main types of data we'll use in this and future exercises:\n",
+ "\n",
+ "* **Categorical Data**: Data that is textual. In this exercise, our housing data set does not contain any categorical features, but examples you might see would be the home style, the words in a real-estate ad.\n",
+ "\n",
+ "* **Numerical Data**: Data that is a number (integer or float) and that you want to treat as a number. As we will discuss more later sometimes you might want to treat numerical data (e.g., a postal code) as if it were categorical.\n",
+ "\n",
+ "In TensorFlow, we indicate a feature's data type using a construct called a **feature column**. Feature columns store only a description of the feature data; they do not contain the feature data itself.\n",
+ "\n",
+ "To start, we're going to use just one numeric input feature, `total_rooms`. The following code pulls the `total_rooms` data from our `california_housing_dataframe` and defines the feature column using `numeric_column`, which specifies its data is numeric:"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "rhEbFCZ86cDZ",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "# Define the input feature: total_rooms.\n",
+ "my_feature = california_housing_dataframe[[\"total_rooms\"]]\n",
+ "\n",
+ "# Configure a numeric feature column for total_rooms.\n",
+ "feature_columns = [tf.feature_column.numeric_column(\"total_rooms\")]"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "K_3S8teX7Rd2",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "**NOTE:** The shape of our `total_rooms` data is a one-dimensional array (a list of the total number of rooms for each block). This is the default shape for `numeric_column`, so we don't have to pass it as an argument."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "UMl3qrU5MGV6",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Step 2: Define the Target"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "cw4nrfcB7kyk",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Next, we'll define our target, which is `median_house_value`. Again, we can pull it from our `california_housing_dataframe`:"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "l1NvvNkH8Kbt",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "# Define the label.\n",
+ "targets = california_housing_dataframe[\"median_house_value\"]"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "4M-rTFHL2UkA",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Step 3: Configure the LinearRegressor"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "fUfGQUNp7jdL",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Next, we'll configure a linear regression model using LinearRegressor. We'll train this model using the `GradientDescentOptimizer`, which implements Mini-Batch Stochastic Gradient Descent (SGD). The `learning_rate` argument controls the size of the gradient step.\n",
+ "\n",
+ "**NOTE:** To be safe, we also apply [gradient clipping](https://developers.google.com/machine-learning/glossary/#gradient_clipping) to our optimizer via `clip_gradients_by_norm`. Gradient clipping ensures the magnitude of the gradients do not become too large during training, which can cause gradient descent to fail. "
+ ]
+ },
+ {
+ "metadata": {
+ "id": "ubhtW-NGU802",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "# Use gradient descent as the optimizer for training the model.\n",
+ "my_optimizer=tf.train.GradientDescentOptimizer(learning_rate=0.0000001)\n",
+ "my_optimizer = tf.contrib.estimator.clip_gradients_by_norm(my_optimizer, 5.0)\n",
+ "\n",
+ "# Configure the linear regression model with our feature columns and optimizer.\n",
+ "# Set a learning rate of 0.0000001 for Gradient Descent.\n",
+ "linear_regressor = tf.estimator.LinearRegressor(\n",
+ " feature_columns=feature_columns,\n",
+ " optimizer=my_optimizer\n",
+ ")"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "-0IztwdK2f3F",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Step 4: Define the Input Function"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "S5M5j6xSCHxx",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "To import our California housing data into our `LinearRegressor`, we need to define an input function, which instructs TensorFlow how to preprocess\n",
+ "the data, as well as how to batch, shuffle, and repeat it during model training.\n",
+ "\n",
+ "First, we'll convert our *pandas* feature data into a dict of NumPy arrays. We can then use the TensorFlow [Dataset API](https://www.tensorflow.org/programmers_guide/datasets) to construct a dataset object from our data, and then break\n",
+ "our data into batches of `batch_size`, to be repeated for the specified number of epochs (num_epochs). \n",
+ "\n",
+ "**NOTE:** When the default value of `num_epochs=None` is passed to `repeat()`, the input data will be repeated indefinitely.\n",
+ "\n",
+ "Next, if `shuffle` is set to `True`, we'll shuffle the data so that it's passed to the model randomly during training. The `buffer_size` argument specifies\n",
+ "the size of the dataset from which `shuffle` will randomly sample.\n",
+ "\n",
+ "Finally, our input function constructs an iterator for the dataset and returns the next batch of data to the LinearRegressor."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "RKZ9zNcHJtwc",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def my_input_fn(features, targets, batch_size=1, shuffle=True, num_epochs=None):\n",
+ " \"\"\"Trains a linear regression model of one feature.\n",
+ " \n",
+ " Args:\n",
+ " features: pandas DataFrame of features\n",
+ " targets: pandas DataFrame of targets\n",
+ " batch_size: Size of batches to be passed to the model\n",
+ " shuffle: True or False. Whether to shuffle the data.\n",
+ " num_epochs: Number of epochs for which data should be repeated. None = repeat indefinitely\n",
+ " Returns:\n",
+ " Tuple of (features, labels) for next data batch\n",
+ " \"\"\"\n",
+ " \n",
+ " # Convert pandas data into a dict of np arrays.\n",
+ " features = {key:np.array(value) for key,value in dict(features).items()} \n",
+ " \n",
+ " # Construct a dataset, and configure batching/repeating.\n",
+ " ds = Dataset.from_tensor_slices((features,targets)) # warning: 2GB limit\n",
+ " ds = ds.batch(batch_size).repeat(num_epochs)\n",
+ " \n",
+ " # Shuffle the data, if specified.\n",
+ " if shuffle:\n",
+ " ds = ds.shuffle(buffer_size=10000)\n",
+ " \n",
+ " # Return the next batch of data.\n",
+ " features, labels = ds.make_one_shot_iterator().get_next()\n",
+ " return features, labels"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "wwa6UeA1V5F_",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "**NOTE:** We'll continue to use this same input function in later exercises. For more\n",
+ "detailed documentation of input functions and the `Dataset` API, see the [TensorFlow Programmer's Guide](https://www.tensorflow.org/programmers_guide/datasets)."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "4YS50CQb2ooO",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Step 5: Train the Model"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "yP92XkzhU803",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "We can now call `train()` on our `linear_regressor` to train the model. We'll wrap `my_input_fn` in a `lambda`\n",
+ "so we can pass in `my_feature` and `target` as arguments (see this [TensorFlow input function tutorial](https://www.tensorflow.org/get_started/input_fn#passing_input_fn_data_to_your_model) for more details), and to start, we'll\n",
+ "train for 100 steps."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "5M-Kt6w8U803",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "_ = linear_regressor.train(\n",
+ " input_fn = lambda:my_input_fn(my_feature, targets),\n",
+ " steps=100\n",
+ ")"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "7Nwxqxlx2sOv",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Step 6: Evaluate the Model"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "KoDaF2dlJQG5",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Let's make predictions on that training data, to see how well our model fit it during training.\n",
+ "\n",
+ "**NOTE:** Training error measures how well your model fits the training data, but it **_does not_** measure how well your model **_generalizes to new data_**. In later exercises, you'll explore how to split your data to evaluate your model's ability to generalize.\n"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "pDIxp6vcU809",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 51
+ },
+ "outputId": "024312e6-f1e9-4544-8f72-3fbf92e6c756"
+ },
+ "cell_type": "code",
+ "source": [
+ "# Create an input function for predictions.\n",
+ "# Note: Since we're making just one prediction for each example, we don't \n",
+ "# need to repeat or shuffle the data here.\n",
+ "prediction_input_fn =lambda: my_input_fn(my_feature, targets, num_epochs=1, shuffle=False)\n",
+ "\n",
+ "# Call predict() on the linear_regressor to make predictions.\n",
+ "predictions = linear_regressor.predict(input_fn=prediction_input_fn)\n",
+ "\n",
+ "# Format predictions as a NumPy array, so we can calculate error metrics.\n",
+ "predictions = np.array([item['predictions'][0] for item in predictions])\n",
+ "\n",
+ "# Print Mean Squared Error and Root Mean Squared Error.\n",
+ "mean_squared_error = metrics.mean_squared_error(predictions, targets)\n",
+ "root_mean_squared_error = math.sqrt(mean_squared_error)\n",
+ "print(\"Mean Squared Error (on training data): %0.3f\" % mean_squared_error)\n",
+ "print(\"Root Mean Squared Error (on training data): %0.3f\" % root_mean_squared_error)"
+ ],
+ "execution_count": 10,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Mean Squared Error (on training data): 56367.025\n",
+ "Root Mean Squared Error (on training data): 237.417\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "AKWstXXPzOVz",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Is this a good model? How would you judge how large this error is?\n",
+ "\n",
+ "Mean Squared Error (MSE) can be hard to interpret, so we often look at Root Mean Squared Error (RMSE)\n",
+ "instead. A nice property of RMSE is that it can be interpreted on the same scale as the original targets.\n",
+ "\n",
+ "Let's compare the RMSE to the difference of the min and max of our targets:"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "7UwqGbbxP53O",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 85
+ },
+ "outputId": "aabd70bd-91e3-47ed-bfb2-8b9fba4ae957"
+ },
+ "cell_type": "code",
+ "source": [
+ "min_house_value = california_housing_dataframe[\"median_house_value\"].min()\n",
+ "max_house_value = california_housing_dataframe[\"median_house_value\"].max()\n",
+ "min_max_difference = max_house_value - min_house_value\n",
+ "\n",
+ "print(\"Min. Median House Value: %0.3f\" % min_house_value)\n",
+ "print(\"Max. Median House Value: %0.3f\" % max_house_value)\n",
+ "print(\"Difference between Min. and Max.: %0.3f\" % min_max_difference)\n",
+ "print(\"Root Mean Squared Error: %0.3f\" % root_mean_squared_error)"
+ ],
+ "execution_count": 11,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Min. Median House Value: 14.999\n",
+ "Max. Median House Value: 500.001\n",
+ "Difference between Min. and Max.: 485.002\n",
+ "Root Mean Squared Error: 237.417\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "JigJr0C7Pzit",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Our error spans nearly half the range of the target values. Can we do better?\n",
+ "\n",
+ "This is the question that nags at every model developer. Let's develop some basic strategies to reduce model error.\n",
+ "\n",
+ "The first thing we can do is take a look at how well our predictions match our targets, in terms of overall summary statistics."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "941nclxbzqGH",
+ "colab_type": "code",
+ "cellView": "both",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 297
+ },
+ "outputId": "e5ee8305-0cad-4709-c927-106fa502a399"
+ },
+ "cell_type": "code",
+ "source": [
+ "calibration_data = pd.DataFrame()\n",
+ "calibration_data[\"predictions\"] = pd.Series(predictions)\n",
+ "calibration_data[\"targets\"] = pd.Series(targets)\n",
+ "calibration_data.describe()"
+ ],
+ "execution_count": 12,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
predictions
\n",
+ "
targets
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
count
\n",
+ "
17000.0
\n",
+ "
17000.0
\n",
+ "
\n",
+ "
\n",
+ "
mean
\n",
+ "
0.1
\n",
+ "
207.3
\n",
+ "
\n",
+ "
\n",
+ "
std
\n",
+ "
0.1
\n",
+ "
116.0
\n",
+ "
\n",
+ "
\n",
+ "
min
\n",
+ "
0.0
\n",
+ "
15.0
\n",
+ "
\n",
+ "
\n",
+ "
25%
\n",
+ "
0.1
\n",
+ "
119.4
\n",
+ "
\n",
+ "
\n",
+ "
50%
\n",
+ "
0.1
\n",
+ "
180.4
\n",
+ "
\n",
+ "
\n",
+ "
75%
\n",
+ "
0.2
\n",
+ "
265.0
\n",
+ "
\n",
+ "
\n",
+ "
max
\n",
+ "
1.9
\n",
+ "
500.0
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " predictions targets\n",
+ "count 17000.0 17000.0\n",
+ "mean 0.1 207.3\n",
+ "std 0.1 116.0\n",
+ "min 0.0 15.0\n",
+ "25% 0.1 119.4\n",
+ "50% 0.1 180.4\n",
+ "75% 0.2 265.0\n",
+ "max 1.9 500.0"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 12
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "E2-bf8Hq36y8",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Okay, maybe this information is helpful. How does the mean value compare to the model's RMSE? How about the various quantiles?\n",
+ "\n",
+ "We can also visualize the data and the line we've learned. Recall that linear regression on a single feature can be drawn as a line mapping input *x* to output *y*.\n",
+ "\n",
+ "First, we'll get a uniform random sample of the data so we can make a readable scatter plot."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "SGRIi3mAU81H",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "sample = california_housing_dataframe.sample(n=300)"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "N-JwuJBKU81J",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Next, we'll plot the line we've learned, drawing from the model's bias term and feature weight, together with the scatter plot. The line will show up red."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "7G12E76-339G",
+ "colab_type": "code",
+ "cellView": "both",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 361
+ },
+ "outputId": "8c41b7a5-21fc-47b7-a927-4cbe01c261ab"
+ },
+ "cell_type": "code",
+ "source": [
+ "# Get the min and max total_rooms values.\n",
+ "x_0 = sample[\"total_rooms\"].min()\n",
+ "x_1 = sample[\"total_rooms\"].max()\n",
+ "\n",
+ "# Retrieve the final weight and bias generated during training.\n",
+ "weight = linear_regressor.get_variable_value('linear/linear_model/total_rooms/weights')[0]\n",
+ "bias = linear_regressor.get_variable_value('linear/linear_model/bias_weights')\n",
+ "\n",
+ "# Get the predicted median_house_values for the min and max total_rooms values.\n",
+ "y_0 = weight * x_0 + bias \n",
+ "y_1 = weight * x_1 + bias\n",
+ "\n",
+ "# Plot our regression line from (x_0, y_0) to (x_1, y_1).\n",
+ "plt.plot([x_0, x_1], [y_0, y_1], c='r')\n",
+ "\n",
+ "# Label the graph axes.\n",
+ "plt.ylabel(\"median_house_value\")\n",
+ "plt.xlabel(\"total_rooms\")\n",
+ "\n",
+ "# Plot a scatter plot from our data sample.\n",
+ "plt.scatter(sample[\"total_rooms\"], sample[\"median_house_value\"])\n",
+ "\n",
+ "# Display graph.\n",
+ "plt.show()"
+ ],
+ "execution_count": 14,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "t0lRt4USU81L",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "This initial line looks way off. See if you can look back at the summary stats and see the same information encoded there.\n",
+ "\n",
+ "Together, these initial sanity checks suggest we may be able to find a much better line."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "AZWF67uv0HTG",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Tweak the Model Hyperparameters\n",
+ "For this exercise, we've put all the above code in a single function for convenience. You can call the function with different parameters to see the effect.\n",
+ "\n",
+ "In this function, we'll proceed in 10 evenly divided periods so that we can observe the model improvement at each period.\n",
+ "\n",
+ "For each period, we'll compute and graph training loss. This may help you judge when a model is converged, or if it needs more iterations.\n",
+ "\n",
+ "We'll also plot the feature weight and bias term values learned by the model over time. This is another way to see how things converge."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "wgSMeD5UU81N",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def train_model(learning_rate, steps, batch_size, input_feature=\"total_rooms\"):\n",
+ " \"\"\"Trains a linear regression model of one feature.\n",
+ " \n",
+ " Args:\n",
+ " learning_rate: A `float`, the learning rate.\n",
+ " steps: A non-zero `int`, the total number of training steps. A training step\n",
+ " consists of a forward and backward pass using a single batch.\n",
+ " batch_size: A non-zero `int`, the batch size.\n",
+ " input_feature: A `string` specifying a column from `california_housing_dataframe`\n",
+ " to use as input feature.\n",
+ " \"\"\"\n",
+ " \n",
+ " periods = 10\n",
+ " steps_per_period = steps / periods\n",
+ "\n",
+ " my_feature = input_feature\n",
+ " my_feature_data = california_housing_dataframe[[my_feature]]\n",
+ " my_label = \"median_house_value\"\n",
+ " targets = california_housing_dataframe[my_label]\n",
+ "\n",
+ " # Create feature columns.\n",
+ " feature_columns = [tf.feature_column.numeric_column(my_feature)]\n",
+ " \n",
+ " # Create input functions.\n",
+ " training_input_fn = lambda:my_input_fn(my_feature_data, targets, batch_size=batch_size)\n",
+ " prediction_input_fn = lambda: my_input_fn(my_feature_data, targets, num_epochs=1, shuffle=False)\n",
+ " \n",
+ " # Create a linear regressor object.\n",
+ " my_optimizer = tf.train.GradientDescentOptimizer(learning_rate=learning_rate)\n",
+ " my_optimizer = tf.contrib.estimator.clip_gradients_by_norm(my_optimizer, 5.0)\n",
+ " linear_regressor = tf.estimator.LinearRegressor(\n",
+ " feature_columns=feature_columns,\n",
+ " optimizer=my_optimizer\n",
+ " )\n",
+ "\n",
+ " # Set up to plot the state of our model's line each period.\n",
+ " plt.figure(figsize=(15, 6))\n",
+ " plt.subplot(1, 2, 1)\n",
+ " plt.title(\"Learned Line by Period\")\n",
+ " plt.ylabel(my_label)\n",
+ " plt.xlabel(my_feature)\n",
+ " sample = california_housing_dataframe.sample(n=300)\n",
+ " plt.scatter(sample[my_feature], sample[my_label])\n",
+ " colors = [cm.coolwarm(x) for x in np.linspace(-1, 1, periods)]\n",
+ "\n",
+ " # Train the model, but do so inside a loop so that we can periodically assess\n",
+ " # loss metrics.\n",
+ " print(\"Training model...\")\n",
+ " print(\"RMSE (on training data):\")\n",
+ " root_mean_squared_errors = []\n",
+ " for period in range (0, periods):\n",
+ " # Train the model, starting from the prior state.\n",
+ " linear_regressor.train(\n",
+ " input_fn=training_input_fn,\n",
+ " steps=steps_per_period\n",
+ " )\n",
+ " # Take a break and compute predictions.\n",
+ " predictions = linear_regressor.predict(input_fn=prediction_input_fn)\n",
+ " predictions = np.array([item['predictions'][0] for item in predictions])\n",
+ " \n",
+ " # Compute loss.\n",
+ " root_mean_squared_error = math.sqrt(\n",
+ " metrics.mean_squared_error(predictions, targets))\n",
+ " # Occasionally print the current loss.\n",
+ " print(\" period %02d : %0.2f\" % (period, root_mean_squared_error))\n",
+ " # Add the loss metrics from this period to our list.\n",
+ " root_mean_squared_errors.append(root_mean_squared_error)\n",
+ " # Finally, track the weights and biases over time.\n",
+ " # Apply some math to ensure that the data and line are plotted neatly.\n",
+ " y_extents = np.array([0, sample[my_label].max()])\n",
+ " \n",
+ " weight = linear_regressor.get_variable_value('linear/linear_model/%s/weights' % input_feature)[0]\n",
+ " bias = linear_regressor.get_variable_value('linear/linear_model/bias_weights')\n",
+ "\n",
+ " x_extents = (y_extents - bias) / weight\n",
+ " x_extents = np.maximum(np.minimum(x_extents,\n",
+ " sample[my_feature].max()),\n",
+ " sample[my_feature].min())\n",
+ " y_extents = weight * x_extents + bias\n",
+ " plt.plot(x_extents, y_extents, color=colors[period]) \n",
+ " print(\"Model training finished.\")\n",
+ "\n",
+ " # Output a graph of loss metrics over periods.\n",
+ " plt.subplot(1, 2, 2)\n",
+ " plt.ylabel('RMSE')\n",
+ " plt.xlabel('Periods')\n",
+ " plt.title(\"Root Mean Squared Error vs. Periods\")\n",
+ " plt.tight_layout()\n",
+ " plt.plot(root_mean_squared_errors)\n",
+ "\n",
+ " # Output a table with calibration data.\n",
+ " calibration_data = pd.DataFrame()\n",
+ " calibration_data[\"predictions\"] = pd.Series(predictions)\n",
+ " calibration_data[\"targets\"] = pd.Series(targets)\n",
+ " display.display(calibration_data.describe())\n",
+ "\n",
+ " print(\"Final RMSE (on training data): %0.2f\" % root_mean_squared_error)"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "kg8A4ArBU81Q",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Task 1: Achieve an RMSE of 180 or Below\n",
+ "\n",
+ "Tweak the model hyperparameters to improve loss and better match the target distribution.\n",
+ "If, after 5 minutes or so, you're having trouble beating a RMSE of 180, check the solution for a possible combination."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "UzoZUSdLIolF",
+ "colab_type": "code",
+ "cellView": "both",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 955
+ },
+ "outputId": "9c816bae-fce4-4363-8b1b-6acef05259e9"
+ },
+ "cell_type": "code",
+ "source": [
+ "train_model(\n",
+ " learning_rate=0.00001,\n",
+ " steps=100,\n",
+ " batch_size=1\n",
+ ")"
+ ],
+ "execution_count": 16,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 236.32\n",
+ " period 01 : 235.11\n",
+ " period 02 : 233.90\n",
+ " period 03 : 232.70\n",
+ " period 04 : 231.50\n",
+ " period 05 : 230.31\n",
+ " period 06 : 229.13\n",
+ " period 07 : 227.96\n",
+ " period 08 : 226.79\n",
+ " period 09 : 225.63\n",
+ "Model training finished.\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " predictions targets\n",
+ "count 17000.0 17000.0\n",
+ "mean 13.2 207.3\n",
+ "std 10.9 116.0\n",
+ "min 0.0 15.0\n",
+ "25% 7.3 119.4\n",
+ "50% 10.6 180.4\n",
+ "75% 15.8 265.0\n",
+ "max 189.7 500.0"
+ ],
+ "text/html": [
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "M8H0_D4vYa49",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "This is just one possible configuration; there may be other combinations of settings that also give good results. Note that in general, this exercise isn't about finding the *one best* setting, but to help build your intutions about how tweaking the model configuration affects prediction quality."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "QU5sLyYTqzqL",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Is There a Standard Heuristic for Model Tuning?\n",
+ "\n",
+ "This is a commonly asked question. The short answer is that the effects of different hyperparameters are data dependent. So there are no hard-and-fast rules; you'll need to test on your data.\n",
+ "\n",
+ "That said, here are a few rules of thumb that may help guide you:\n",
+ "\n",
+ " * Training error should steadily decrease, steeply at first, and should eventually plateau as training converges.\n",
+ " * If the training has not converged, try running it for longer.\n",
+ " * If the training error decreases too slowly, increasing the learning rate may help it decrease faster.\n",
+ " * But sometimes the exact opposite may happen if the learning rate is too high.\n",
+ " * If the training error varies wildly, try decreasing the learning rate.\n",
+ " * Lower learning rate plus larger number of steps or larger batch size is often a good combination.\n",
+ " * Very small batch sizes can also cause instability. First try larger values like 100 or 1000, and decrease until you see degradation.\n",
+ "\n",
+ "Again, never go strictly by these rules of thumb, because the effects are data dependent. Always experiment and verify."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "GpV-uF_cBCBU",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Task 2: Try a Different Feature\n",
+ "\n",
+ "See if you can do any better by replacing the `total_rooms` feature with the `population` feature.\n",
+ "\n",
+ "Don't take more than 5 minutes on this portion."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "YMyOxzb0ZlAH",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 955
+ },
+ "outputId": "763b1dff-dc53-48b5-8a55-9ac69709dc5f"
+ },
+ "cell_type": "code",
+ "source": [
+ "# YOUR CODE HERE\n",
+ "train_model(\n",
+ " learning_rate=0.00002,\n",
+ " steps=5000,\n",
+ " batch_size=5,\n",
+ " input_feature=\"population\"\n",
+ ")"
+ ],
+ "execution_count": 18,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 189.12\n",
+ " period 01 : 176.29\n",
+ " period 02 : 177.66\n",
+ " period 03 : 180.87\n",
+ " period 04 : 182.92\n",
+ " period 05 : 183.85\n",
+ " period 06 : 184.30\n",
+ " period 07 : 183.87\n",
+ " period 08 : 184.15\n",
+ " period 09 : 184.59\n",
+ "Model training finished.\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " predictions targets\n",
+ "count 17000.0 17000.0\n",
+ "mean 168.1 207.3\n",
+ "std 135.0 116.0\n",
+ "min 0.4 15.0\n",
+ "25% 92.9 119.4\n",
+ "50% 137.2 180.4\n",
+ "75% 202.3 265.0\n",
+ "max 4195.2 500.0"
+ ],
+ "text/html": [
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "NqIbXxx222ea"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Train the Neural Network\n",
+ "\n",
+ "Next, we'll train the neural network."
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "6k3xYlSg27VB",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def construct_feature_columns(input_features):\n",
+ " \"\"\"Construct the TensorFlow Feature Columns.\n",
+ "\n",
+ " Args:\n",
+ " input_features: The names of the numerical input features to use.\n",
+ " Returns:\n",
+ " A set of feature columns\n",
+ " \"\"\" \n",
+ " return set([tf.feature_column.numeric_column(my_feature)\n",
+ " for my_feature in input_features])"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "De9jwyy4wTUT",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def my_input_fn(features, targets, batch_size=1, shuffle=True, num_epochs=None):\n",
+ " \"\"\"Trains a neural network model.\n",
+ " \n",
+ " Args:\n",
+ " features: pandas DataFrame of features\n",
+ " targets: pandas DataFrame of targets\n",
+ " batch_size: Size of batches to be passed to the model\n",
+ " shuffle: True or False. Whether to shuffle the data.\n",
+ " num_epochs: Number of epochs for which data should be repeated. None = repeat indefinitely\n",
+ " Returns:\n",
+ " Tuple of (features, labels) for next data batch\n",
+ " \"\"\"\n",
+ " \n",
+ " # Convert pandas data into a dict of np arrays.\n",
+ " features = {key:np.array(value) for key,value in dict(features).items()} \n",
+ " \n",
+ " # Construct a dataset, and configure batching/repeating.\n",
+ " ds = Dataset.from_tensor_slices((features,targets)) # warning: 2GB limit\n",
+ " ds = ds.batch(batch_size).repeat(num_epochs)\n",
+ " \n",
+ " # Shuffle the data, if specified.\n",
+ " if shuffle:\n",
+ " ds = ds.shuffle(10000)\n",
+ " \n",
+ " # Return the next batch of data.\n",
+ " features, labels = ds.make_one_shot_iterator().get_next()\n",
+ " return features, labels"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "W-51R3yIKxk4",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def train_nn_regression_model(\n",
+ " my_optimizer,\n",
+ " steps,\n",
+ " batch_size,\n",
+ " hidden_units,\n",
+ " training_examples,\n",
+ " training_targets,\n",
+ " validation_examples,\n",
+ " validation_targets):\n",
+ " \"\"\"Trains a neural network regression model.\n",
+ " \n",
+ " In addition to training, this function also prints training progress information,\n",
+ " as well as a plot of the training and validation loss over time.\n",
+ " \n",
+ " Args:\n",
+ " my_optimizer: An instance of `tf.train.Optimizer`, the optimizer to use.\n",
+ " steps: A non-zero `int`, the total number of training steps. A training step\n",
+ " consists of a forward and backward pass using a single batch.\n",
+ " batch_size: A non-zero `int`, the batch size.\n",
+ " hidden_units: A `list` of int values, specifying the number of neurons in each layer.\n",
+ " training_examples: A `DataFrame` containing one or more columns from\n",
+ " `california_housing_dataframe` to use as input features for training.\n",
+ " training_targets: A `DataFrame` containing exactly one column from\n",
+ " `california_housing_dataframe` to use as target for training.\n",
+ " validation_examples: A `DataFrame` containing one or more columns from\n",
+ " `california_housing_dataframe` to use as input features for validation.\n",
+ " validation_targets: A `DataFrame` containing exactly one column from\n",
+ " `california_housing_dataframe` to use as target for validation.\n",
+ " \n",
+ " Returns:\n",
+ " A tuple `(estimator, training_losses, validation_losses)`:\n",
+ " estimator: the trained `DNNRegressor` object.\n",
+ " training_losses: a `list` containing the training loss values taken during training.\n",
+ " validation_losses: a `list` containing the validation loss values taken during training.\n",
+ " \"\"\"\n",
+ "\n",
+ " periods = 10\n",
+ " steps_per_period = steps / periods\n",
+ " \n",
+ " # Create a DNNRegressor object.\n",
+ " my_optimizer = tf.contrib.estimator.clip_gradients_by_norm(my_optimizer, 5.0)\n",
+ " dnn_regressor = tf.estimator.DNNRegressor(\n",
+ " feature_columns=construct_feature_columns(training_examples),\n",
+ " hidden_units=hidden_units,\n",
+ " optimizer=my_optimizer\n",
+ " )\n",
+ " \n",
+ " # Create input functions.\n",
+ " training_input_fn = lambda: my_input_fn(training_examples, \n",
+ " training_targets[\"median_house_value\"], \n",
+ " batch_size=batch_size)\n",
+ " predict_training_input_fn = lambda: my_input_fn(training_examples, \n",
+ " training_targets[\"median_house_value\"], \n",
+ " num_epochs=1, \n",
+ " shuffle=False)\n",
+ " predict_validation_input_fn = lambda: my_input_fn(validation_examples, \n",
+ " validation_targets[\"median_house_value\"], \n",
+ " num_epochs=1, \n",
+ " shuffle=False)\n",
+ "\n",
+ " # Train the model, but do so inside a loop so that we can periodically assess\n",
+ " # loss metrics.\n",
+ " print(\"Training model...\")\n",
+ " print(\"RMSE (on training data):\")\n",
+ " training_rmse = []\n",
+ " validation_rmse = []\n",
+ " for period in range (0, periods):\n",
+ " # Train the model, starting from the prior state.\n",
+ " dnn_regressor.train(\n",
+ " input_fn=training_input_fn,\n",
+ " steps=steps_per_period\n",
+ " )\n",
+ " # Take a break and compute predictions.\n",
+ " training_predictions = dnn_regressor.predict(input_fn=predict_training_input_fn)\n",
+ " training_predictions = np.array([item['predictions'][0] for item in training_predictions])\n",
+ " \n",
+ " validation_predictions = dnn_regressor.predict(input_fn=predict_validation_input_fn)\n",
+ " validation_predictions = np.array([item['predictions'][0] for item in validation_predictions])\n",
+ " \n",
+ " # Compute training and validation loss.\n",
+ " training_root_mean_squared_error = math.sqrt(\n",
+ " metrics.mean_squared_error(training_predictions, training_targets))\n",
+ " validation_root_mean_squared_error = math.sqrt(\n",
+ " metrics.mean_squared_error(validation_predictions, validation_targets))\n",
+ " # Occasionally print the current loss.\n",
+ " print(\" period %02d : %0.2f\" % (period, training_root_mean_squared_error))\n",
+ " # Add the loss metrics from this period to our list.\n",
+ " training_rmse.append(training_root_mean_squared_error)\n",
+ " validation_rmse.append(validation_root_mean_squared_error)\n",
+ " print(\"Model training finished.\")\n",
+ "\n",
+ " # Output a graph of loss metrics over periods.\n",
+ " plt.ylabel(\"RMSE\")\n",
+ " plt.xlabel(\"Periods\")\n",
+ " plt.title(\"Root Mean Squared Error vs. Periods\")\n",
+ " plt.tight_layout()\n",
+ " plt.plot(training_rmse, label=\"training\")\n",
+ " plt.plot(validation_rmse, label=\"validation\")\n",
+ " plt.legend()\n",
+ "\n",
+ " print(\"Final RMSE (on training data): %0.2f\" % training_root_mean_squared_error)\n",
+ " print(\"Final RMSE (on validation data): %0.2f\" % validation_root_mean_squared_error)\n",
+ "\n",
+ " return dnn_regressor, training_rmse, validation_rmse"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "KueReMZ9Kxk7",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 656
+ },
+ "outputId": "51400684-5042-4668-bfa2-7729096449c0"
+ },
+ "cell_type": "code",
+ "source": [
+ "_ = train_nn_regression_model(\n",
+ " my_optimizer=tf.train.GradientDescentOptimizer(learning_rate=0.0007),\n",
+ " steps=5000,\n",
+ " batch_size=70,\n",
+ " hidden_units=[10, 10],\n",
+ " training_examples=training_examples,\n",
+ " training_targets=training_targets,\n",
+ " validation_examples=validation_examples,\n",
+ " validation_targets=validation_targets)"
+ ],
+ "execution_count": 7,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 164.46\n",
+ " period 01 : 163.46\n",
+ " period 02 : 157.68\n",
+ " period 03 : 152.85\n",
+ " period 04 : 142.68\n",
+ " period 05 : 133.05\n",
+ " period 06 : 117.41\n",
+ " period 07 : 102.04\n",
+ " period 08 : 103.30\n",
+ " period 09 : 99.68\n",
+ "Model training finished.\n",
+ "Final RMSE (on training data): 99.68\n",
+ "Final RMSE (on validation data): 102.75\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGACAYAAACz01iHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xd4FPX69/H3bja990ILHRJSIITe\nawARFUVFIqLiUQQ9oo/ld8Sj4lHxKCoiKKggoAcBQUUQFBEpSgkBkgChl5BCem+b3Xn+iK4gEDaQ\nzU6S+3VdXLA7uzP37meG3Jn5zoxGURQFIYQQQogGRGvtAoQQQgghaksaGCGEEEI0ONLACCGEEKLB\nkQZGCCGEEA2ONDBCCCGEaHCkgRFCCCFEg6OzdgFCqFnHjh1p2bIlNjY2ABgMBqKjo3nxxRdxcnK6\n4fmuWrWKCRMmXPH82rVreeGFF/joo48YPHiw6fny8nL69OnDiBEjePPNN294ueY6f/48r7/+OmfO\nnAHA0dGR6dOnM2zYMIsvuzYWLFjA+fPnr/hO9uzZw0MPPUTz5s2veM+mTZvqq7ybcuHCBYYOHUrr\n1q0BUBQFHx8f/vWvfxESElKreb3zzjsEBQVx7733mv2eb7/9ljVr1rB8+fJaLUuI+iINjBDXsXz5\ncgICAgCorKzkqaee4uOPP+app566ofllZWXxySefXLWBAQgMDOT777+/rIH55ZdfcHNzu6Hl3Yhn\nnnmGcePG8dFHHwFw6NAhJk+ezA8//EBgYGC91XEzAgMDG0yzci02NjaXfYaNGzfy+OOPs3nzZuzs\n7Myez9NPP22J8oSwKjmEJEQt2NnZ0b9/f44ePQpARUUFL730EiNHjmTUqFG8+eabGAwGAJKTk7nn\nnnuIiYlh3Lhx7NixA4B77rmHtLQ0YmJiqKysvGIZ3bp1Y8+ePZSVlZme27hxI3379jU9rqys5LXX\nXmPkyJEMGTLE1GgAHDhwgDvuuIOYmBhGjx7Nb7/9BlT/Rt+vXz+WLVvG2LFj6d+/Pxs3brzq5zx+\n/DgRERGmxxEREWzevNnUyM2fP5+BAwdy2223sWjRIoYMGQLA888/z4IFC0zvu/Tx9ep6/fXXmTRp\nEgD79+9n/PjxDB8+nAkTJpCSkgJU74n65z//yeDBg5k0aRIZGRnXSezq1q5dy/Tp05k8eTJvvfUW\ne/bs4Z577uHJJ580/bD/4YcfuOWWW4iJieH+++/n/PnzAHzwwQe8+OKL3HnnnSxduvSy+T755JN8\n9tlnpsdHjx6lX79+GI1G3n33XUaOHMnIkSO5//77uXjxYq3rHj16NOXl5Zw+fRqAr776ipiYGIYM\nGcLMmTMpLy8Hqr/3N954g7Fjx/LDDz9clsO11kuj0cirr77KoEGDuPPOO0lOTjYtd+/evdx+++2M\nHj2aUaNG8cMPP9S6diHqnCKEuKYOHToo6enppsf5+fnKfffdpyxYsEBRFEX5+OOPlalTpyp6vV4p\nKytTxo8fr3zzzTeKwWBQRo0apaxfv15RFEVJSEhQoqOjlaKiImX37t3KsGHDrrq8r7/+WnnuueeU\nZ555xvTeoqIiZejQocrq1auV5557TlEURZk/f74yefJkpaKiQikpKVFuu+02ZevWrYqiKMott9yi\nfP/994qiKMq6detMy0pJSVFCQkKU5cuXK4qiKBs3blSGDx9+1TpmzJihDB48WPn888+VkydPXjbt\n2LFjSvfu3ZXMzExFr9crjz32mDJ48GBFURTlueeeUz788EPTay99XFNdoaGhytq1a02fNzo6Wtm5\nc6eiKIqyfv165fbbb1cURVFWrFih3HfffYper1dyc3OVwYMHm76TS9X0Hf/5PUdGRipnzpwxvT4s\nLEz57bffFEVRlNTUVCUqKko5e/asoiiK8umnnyqTJ09WFEVR5s2bp/Tr10/Jycm5Yr4bNmxQ7rvv\nPtPj999/X5k9e7Zy/PhxZcSIEUplZaWiKIqybNkyZd26ddes78/vpXPnzlc8Hx0drZw6dUrZt2+f\n0rt3byUjI0NRFEWZNWuW8uabbyqKUv29jx07VikvLzc9/vDDD2tcL7dt26aMGDFCKS4uVsrKypQ7\n77xTmTRpkqIoinLHHXcoe/bsURRFUc6cOaPMnDmzxtqFqA+yB0aI64iNjSUmJoahQ4cydOhQevXq\nxdSpUwHYtm0bEyZMQKfT4eDgwNixY9m1axcXLlwgOzubMWPGABAWFkZQUBCJiYlmLXPMmDF8//33\nAGzZsoXBgwej1f61uf7yyy9MnDgROzs7nJycGDduHD/++CMA33zzDaNGjQIgKirKtPcCoKqqijvu\nuAOA0NBQ0tLSrrr8//73v9x3332sX7+eW265hSFDhvC///0PqN47Eh0dja+vLzqdjltuucWsz1RT\nXXq9nuHDh5vm7+/vb9rjdMstt3D+/HnS0tKIi4tj+PDh6HQ6PD09LzvM9nfp6enExMRc9ufSsTLB\nwcEEBwebHjs4ONC7d28Adu3aRc+ePWnVqhUAd911F3v27KGqqgqo3iPl5eV1xTIHDRrEkSNHyM/P\nB+Cnn34iJiYGNzc3cnNzWb9+PQUFBcTGxnLbbbeZ9b39SVEUvvrqK/z9/QkODmbr1q2MHj0af39/\nAO69917TOgDQu3dv7O3tL5tHTevlvn37GDhwIM7Ozjg4OJiyAvD29uabb77h1KlTBAcH884779Sq\ndiEsQcbACHEdf46Byc3NNR3+0OmqN53c3Fzc3d1Nr3V3dycnJ4fc3FxcXV3RaDSmaX/+EPPx8bnu\nMvv27cuLL75Ifn4+GzZsYNq0aaYBtQBFRUW88cYbzJ07F6g+pBQeHg7A+vXrWbZsGSUlJRiNRpRL\nbndmY2NjGnys1WoxGo1XXb69vT0PPfQQDz30EIWFhWzatInXX3+d5s2bU1BQcNl4HG9v7+t+HnPq\ncnFxAaCwsJCUlBRiYmJM0+3s7MjNzaWgoABXV1fT825ubpSUlFx1edcbA3Npbn9/nJeXd9lndHV1\nRVEU8vLyrvrePzk5OdGnTx+2bdtGVFQUhYWFREVFodFo+OCDD/jss8+YPXs20dHRvPLKK9cdT2Qw\nGEzfg6IotGvXjgULFqDVaikqKuKnn35i586dpul6vf6anw+ocb0sKCjAz8/vsuf/9Prrr7Nw4UKm\nTJmCg4MDM2fOvCwfIaxBGhghzOTl5UVsbCz//e9/WbhwIQA+Pj6m37YB8vPz8fHxwdvbm4KCAhRF\nMf2wyM/PN/uHva2tLYMHD+abb77h3LlzdO3a9bIGxs/PjwcffPCKPRAXL17kxRdfZPXq1XTu3Jmz\nZ88ycuTIWn3O3Nxcjh49atoD4ubmxoQJE9ixYwfHjx/H1dWVoqKiy17/p783RQUFBbWuy8/PjzZt\n2rB27dorprm5uV1z2XXJ29ubAwcOmB4XFBSg1Wrx9PS87ntHjhzJTz/9RF5eHiNHjjTl36tXL3r1\n6kVpaSlz5szh7bffvu6ejL8P4r2Un58ft99+O88991ytPte11suavlsfHx9mzZrFrFmz2LlzJzNm\nzKB///44OzubvWwh6pocQhKiFqZMmcKBAwfYu3cvUH3IYM2aNRgMBkpLS/n2228ZOHAgzZs3JyAg\nwDRINj4+nuzsbMLDw9HpdJSWlpoOR1zLmDFjWLx48VVPXR46dCirV6/GYDCgKAoLFixg+/bt5Obm\n4uTkRJs2baiqquKrr74CuOZeiqspLy/niSeeMA3uBDh37hyHDh2ie/fudO3albi4OHJzc6mqquKb\nb74xvc7X19c0+DMlJYX4+HiAWtUVERFBVlYWhw4dMs3n//2//4eiKERGRrJ161YMBgO5ubls377d\n7M9VG3379iUuLs50mGvlypX07dvXtOetJoMHD+bAgQNs2bLFdBhm586dvPLKKxiNRpycnOjUqdNl\ne0FuxJAhQ/jxxx9NjcaWLVtYtGhRje+pab3s2rUrO3fupKysjLKyMlPjpNfriY2NJTMzE6g+9KjT\n6S47pCmENcgeGCFqwcXFhUceeYQ5c+awZs0aYmNjSUlJYcyYMWg0GmJiYhg1ahQajYa5c+fy73//\nm/nz5+Po6Mj777+Pk5MTHTt2xN3dnb59+7Ju3TqCgoKuuqwePXqg0WgYPXr0FdMmTpzIhQsXGDNm\nDIqi0KVLFyZPnoyTkxMDBgxg5MiReHt78/zzzxMfH09sbCzz5s0z6zMGBQWxcOFC5s2bx2uvvYai\nKLi4uPDCCy+Yzky6++67uf322/H09GTEiBGcOHECgAkTJjB9+nRGjBhBSEiIaS9Lp06dzK7LwcGB\nefPmMXv2bEpKSrC1teXJJ59Eo9EwYcIE4uLiGDZsGEFBQQwbNuyyvQaX+nMMzN+99dZb1/0OAgIC\neO2115g2bRp6vZ7mzZsze/Zss74/FxcXQkNDOXbsGJGRkQBER0ezYcMGRo4ciZ2dHV5eXrz++usA\nPPvss6YziWojNDSURx99lNjYWIxGI97e3rzyyis1vqem9XLw4MFs27aNmJgYfHx8GDhwIHFxcdja\n2nLnnXfywAMPANV72V588UUcHR1rVa8QdU2jXHogWgghaikuLo5nn32WrVu3WrsUIUQTIvsAhRBC\nCNHgSAMjhBBCiAZHDiEJIYQQosGRPTBCCCGEaHCkgRFCCCFEg9MgT6POyrr6aZN1wdPTiby8UovN\nX9w4yUadJBf1kmzUS7Ixj6+v6zWnyR6Yv9HpbKxdgrgGyUadJBf1kmzUS7K5edLACCGEEKLBkQZG\nCCGEEA2ONDBCCCGEaHCkgRFCCCFEgyMNjBBCCCEaHGlghBBCCNHgSAMjhBBCiAZHGhghhBCikdm2\n7WezXvf++++QlpZ6zenPPz+zrkqqc9LACCGEEI1IenoaW7ZsNuu1Tz75NEFBza45/c0359ZVWXWu\nQd5KQAghhBBXN3fuHI4ePUz//tGMGDGK9PQ03ntvAW+88SpZWZmUlZXx4IOP0Ldvf6ZPf4SZM5/l\nl19+pqSkmPPnz5GaeoEnnnia3r37MmbMUDZs+Jnp0x8hOron8fFx5OfnM2fOu/j4+PDqq7PIyEgn\nLCycrVu3sG7dxnr7nNLACCGEEBayautJ9iVnXvG8jY0Gg0G5oXlGd/JjwpB215x+772xrF27itat\n23L+/FkWLPiEvLxcevToxahRt5CaeoFZs56nb9/+l70vM/Mib789j927f+Pbb7+md+++l013dnbm\n/fcXsnDhB2zfvpWgoOZUVlawaNFSdu3awapV/7uhz3OjpIG5RE5ZLvtP7KekuBIbjRbt3/7YaLRo\n/vj7atNq81oNl0/TaDTW/vhCCCEamc6dQwFwdXXj6NHDfPfdWjQaLYWFBVe8Njw8EgA/Pz+Ki4uv\nmB4R0dU0vaCggHPnzhAWFgFA7959sbGp3/s7SQNziU1nt/Jb+l6rLFuD5oaapsum8cff2urn7LR2\n9AzsTohXB2mQhBDCCiYMaXfVvSW+vq5kZRVZfPm2trYA/PTTJgoLC/nww08oLCzk4Ydjr3jtpQ2I\noly5d+jv0xVFQautfk6j0dT7zxlpYC4xrt0oerWOIK+gBKNiNP0xKEaUP/42/u3PVafxx2PjX4+N\ntXn/NaZVGSsxKsol8zJgRDG9/mr2Zx4i2K0lo1sPI8SrozQyQgjRyGm1WgwGw2XP5efnExgYhFar\n5ddft6LX6296Oc2aNTed7bR37+4rlmlp0sBcwsXWmdZB3chysHxXXNeUPxqbvxoaA1mlOWw+t5WD\nWUksOPQZrVxbMLr1MEK9O0kjI4QQjVSrVq05diyZwMAgPDw8ABg0aAjPPz+TI0eSGDPmVvz8/Fiy\nZPFNLadPn/5s2PAdjz32EF27RuHm5l4X5ZtNo1xtP5HKWXK3W33t1qtPqcXp/HBmCweyEgFo6dqc\n0a2H0cW7c4NqZBpjNo2B5KJeko16NYZsCgsLiI+PY9CgoWRlZfLkk4/x5Zdf1+kyfH1drzlN9sA0\nAc1cAnk4LLa6kTn7MwczE/koYSktXJsxOngYYT4hDaqREUIIYX1OTs5s3bqFL79cjqIYmTGjfi96\nJ3tg/qYxdMXXk1acwaazPxOfmYCCQguXIEa1Hka4T6iqG5mmkE1DJLmol2SjXpKNeay2B+b48eNM\nmzaNBx54gEmTJvHEE0+Ql5cHVA8oioyMZPbs2XzyySds2rQJjUbD9OnTGThwoCXLavKCXAJ4sMt9\njCoZxqazP7P/4iEWJS6jmUsgo4OHEe4bilYjF2kWQgihXhZrYEpLS5k9eza9e/c2PTdv3jzTv194\n4QXuuusuUlJS2LhxIytXrqS4uJiJEyfSr1+/ej+fvCkKdPZnSuhERgVXNzJxFw+yOGk5zVwCiQke\nSqRvF2lkhBBCqJLFfjrZ2dmxePFi/Pz8rph2+vRpioqKCA8PZ8+ePfTv3x87Ozu8vLxo1qwZJ0+e\ntFRZ4ioCnP14IPReZvV8mmj/bqQVZ/Bp0gre2Pse8ZkJ1zxFWwghhLAWizUwOp0OBweHq05btmwZ\nkyZNAiA7OxsvLy/TNC8vL7KysixVlqiBv7MfD4Tew6xez9AzIIr0kot8mrSC1/e+y/6LB6WREUII\noRr1fhZSZWUl+/fv5+WXX77qdHPGFHt6OqHTWe4QU02DhpoCX1zp0qoNGUWZrD2yie3n9vDZ4S9p\nlrKV8SGj6dMiCq3WOoeWmno2aiW5qJdko17WzmbIkCGsX7+eL774gujoaLp27WqaVlJSwtixY9m6\ndes1379582ZGjhzJ2rVrcXV1Zfjw4fVRtkm9NzD79u0jPDzc9NjPz48zZ86YHl+8ePGqh50ulZdX\narH6ZGT4X2xw5K42tzMoYACbzv3M3ox45u3+jK8SvicmeAjd/SPrdYyMZKNOkot6STbqpYZsDAYj\n2dnF3H77vcDlZ/iWlpZiMBivWWN6ehpr135Dt2596N9/+BXvryuqug5MYmIinTp1Mj3u1asXS5Ys\nYcaMGeTl5ZGZmUm7dte+y6aof75O3sR2nsCo4KFsPruV3Rn7+fzISn44u4VRwcOI8ovARiuDroUQ\nQg0efPA+Xn/9HQICAsjISOeFF57G19ePsrIyysvLeeqp/0dISBfT6//zn5cZNGgokZFd+de/nqWy\nstJ0Y0eAH3/8gTVrvsLGRktwcFuee+5fzJ07h6NHD7NkyWKMRiMeHh6MH383Cxa8T2LiIaqqDIwf\nP4GYmDFMn/4I0dE9iY+PIz8/nzlz3iUgIOCmP6fFGpikpCTmzJlDamoqOp2OzZs388EHH5CVlUXL\nli1NrwsKCmLChAlMmjQJjUbDyy+/bLXDE6JmPo7e3Nf5LkYGD+XHc1v5PT2uupE5s4WY4KF094+U\nRkYIIS6x9uT3HMhMvOJ5G60Gg/HGLsPW1S+MO9rdcs3pAwYMZteu7YwfP4EdO35lwIDBtG3bngED\nBrF//z6++OJz/vOf/17xvs2bf6BNm7Y88cTT/Pzzj2zZshmAsrIy3nnnA1xdXXn88amcOnWSe++N\nZe3aVUyZMpVPP/0YgIMH4zl9+hQLF35GWVkZkyffw4ABgwBwdnbm/fcXsnDhB2zfvpUJEybe0Ge/\nlMUamC5durB8+fIrnp81a9YVz8XGxhIbe+WdMYU6+Th6MbHTnYxs9Vcjs+zoV/xwdgsjg4fSw7+r\nNDJCCGElAwYMZv789xg/fgI7d/7K9OlPsXLlcv73v+Xo9fprnmBz9uxpIiOjAOjaNcr0vJubGy+8\n8DQA586doaAg/6rvT04+QmRkNwAcHR0JDm5DSkoKABER1eNr/Pz8KCgoqJPPKbcSEDfM29GTezuN\nZ2TwEDaf+4Xf0/ax4ugqNv2xR6ZHQDdpZIQQTdod7W656t4SS46BadOmLTk5WVy8mEFRURE7dmzD\nx8ePWbNmk5x8hPnz37vq+xQFtNrqq7Eb/9g7pNfrmTv3LZYu/RJvbx+effaf11yuRqPh0vNwqqr0\npvldem23uroBgByrETfNy8GTezvewSu9n2NAs97kVxSwInk1r+z+L7+l7cVgrN9brAshRFPXu3c/\nFi1aQP/+AykoyKdZs+YA/PrrL1RVVV31PS1btiI5+SgA8fFxAJSWlmBjY4O3tw8XL2aQnHyUqqoq\ntFotBsPl/7d36hTKgQP7/3hfKampF2jevCWWIg2MqDOeDh7c3fF2Xu79HAOb96GgspAvktfwyu63\n2JW6hyrj1TcaIYQQdWvgwMFs2bKZQYOGEhMzhq+++oKnnnqc0NAu5OTksGHDd1e8JyZmDIcPJ/Lk\nk4+RknIOjUaDu7sH0dE9efjh+1myZDETJ8Yyb95cWrVqzbFjycyb947p/RERkXTs2InHH5/KU089\nzqOPTsfR0dFin1Fu5vg3aji1rbHIryjgx3Pb2JVW3bx4OXgyotVgegd2R6et/dFLyUadJBf1kmzU\nS7IxT02nUUsD8zeyUtW9/IoCtpz7lZ1pu9Ebq/C092Bk8GB6BUZjW4tGRrJRJ8lFvSQb9ZJszCMN\nTC3ISmU5BRWFbDn/KztSd6M36vGwd2dkq8H0DuphViMj2aiT5KJeko16STbmkQamFmSlsryCiiJ+\nPv8r21N/NzUyw1sNom9gD2xtbK/5PslGnSQX9ZJs1EuyMY80MLUgK1X9Kawsqt4jc+F3Ko163O3c\nqhuZoJ7YXaWRkWzUSXJRL8lGvSQb80gDUwuyUtW/ospifj6/nV9Tf6PSUIm7nSvDWw2+opGRbNRJ\nclEvyUa9JBvzSANTC7JSWU9RZTFbU3bw64VdVBgqcbNzZXjLgfRr1gs7GzvJRqUkF/WSbNRLsjGP\nNDC1ICuV9RVXlvBzynZTI+Nq58KwlgO5LXwYxfl6a5cn/ka2GfWSbNRLsjGPNDC1ICuVehTrS/jl\n/A62XdhFuaECnVZHB8+2hPuEEubTGQ97d2uXKJBtRs0kG/WSbMwjDUwtyEqlPiX6UrZf+J3EvMOc\ny79ger6VWwvCfUII9wkl0NkfjUZjxSqbLtlm1EuyUS/JxjzSwNSCrFTq5evrSvL5cyRkHyEx+wgn\n8k9jVIwA+Dh4Ee4bSrhPCG3cg+UmkvVIthn1kmzUS7IxT00NjNyNWjQo3o5eDG7Rj8Et+lGqL+Vw\nzjESsg9zJOcYW1N2sDVlB862TnTx7ky4TwidvDrgoLO3dtlCCCHqmDQwosFysnUiOqAr0QFd0Rur\nOJF3yrR3Zk/GfvZk7Een1dHRsx3hPiGE+YTgbu9m7bKFEELUATmEdInsgjJScsow6g24Otni4miL\ni5MtLg62aLUyvsLazN3lqigK54sukJB9hISsw6SVZJimBbu1rB434xtKgJOfjJupA7IrXL0kG/WS\nbMwjh5DM9P1vZ9l+KP2K5zWAk4MOVyc7XJxscXX8q7lxdbTDxdG2uuExTbPD0d5GfjhaiUajoZVb\nC1q5tWBsm5Fkl+WSkH2YhKzDnCo4y9nC83x3ehO+jt6E+4QS7htKG/dWaDVaa5cuhBDCTLIH5hJF\npZWczSol/WIhRWV6isv0FJfqL/l3JUVlesz5xmy0mkuaHFtcnOz+1vhc2QDZ2crA05rUxW8sJfpS\nDuckk5B1mCO5x6gwVAL8NW7GN5TOXh2wt7Gri5KbBPlNUr0kG/WSbMwjZyHVwvVWKqOiUFpedUlz\nU0lxaXWDU/THc8Vleor+aHaKS/WUVlSZtWw7W61pD86le3qq9+5c2QA5O9qis2k6ew3qeoPXG/Qc\nzz9FQtZhErOPUFBZPW9brY6Onu0J960eN+Nmd+0NSMh/xGom2aiXZGMeaWBqwRIrVZXBSEl5FcWl\nlX80N39rci7d0/PHtAq9wax5O9rrcL3aYS0nW9yd7Yhs74Ozw7Xv8NyQWHKDNyrG6nEzWUdIyD5M\neslFADRoqsfN+FZfbybA2c8iy2/I5D9i9ZJs1EuyMY80MLWglpWqUm+4vNm55p6ev6YZjFdGaW9n\nw8CIIIZ3b4G3u4MVPkndqc9sskpzSMiu3jNzMv8MCtXfrZ+TD2F/XDxPxs1UU8s2I64k2aiXZGMe\naWBqoaGuVIqiUF5puKS5qSQls5if918gv7gSrUZDj85+xPRsSUv/hnlIxFrZFOtLOJydXH29mdzj\nVP4xbsbF1pkuPp0J9wmls1d77JrouJmGus00BZKNekk25pEGphYa20pVZTCy58hFNu09T2pWCQAh\nwZ7E9GxJaLBXgzpTSg3Z6A16juWdrD6rKfsIRZXFANhqbenk1d50nyZXOxer1lmf1JCLuDrJRr0k\nG/NIA1MLjXWlUhSFxNO5bNpzjuTz+QC08HMhpkdLojv7NYjBwGrLxqgYOVeYYrreTEZpJlA9bqa1\ne6s/7tMUgn8jHzejtlzEXyQb9ZJszCMNTC00hZXqbEYhm/acZ19yJooCXm72DO/eggERQTjaq/fS\nQGrPJrM0y9TMnC44Zxo34+/k+8f1ZkIIdmvZ6MbNqD2XpkyyUS/JxjzSwNRCU1qpsvPL+HFfCtsT\n0qjUG3G01zGoaxDDolrg6aq++wc1pGyKKotJykkmMat63IzeqAfA1daFMJ/O9AjoRnvPtlausm40\npFyaGslGvSQb80gDUwtNcaUqLtPzy4FUfo5LobBUj41WQ69Qf2J6tKSZr3rGcjTUbCoNeo7lnfjj\nejNHKdJXj5u5u8PtDGje28rV3byGmktTINmol2RjHmlgaqEpr1T6KgO/JWWwaW8KF3NLAQhv601M\nj5Z0bOlh9QG/jSEbo2LkRN5plhz+kiJ9Mbe1Hc3wVoOsXdZNaQy5NFaSjXpJNuapqYGxefnll1+u\nv1LqRmlppcXm7exsb9H5q5mNVktwgBtDujWjlb8ruUUVHD2Xx66kDBJO5eBoryPA2wmtlRqZxpCN\nRqPBx9GLMJ/OHMo+zMGsJIxGAx0821q9QbxRjSGXxkqyUS/JxjzOztceziANzN/ISlX9QzbQ25n+\n4UGEtvaitLyK5HN5xB3L4vekDLRaDc18nOv9zKXGlI2LnTORvmEk5hwlIfsIpVVldPbq0CCbmMaU\nS2Mj2aiXZGMeaWBqQVaqy3m5OdCjsz+9QvwxGBVOXCjg4Mlsth1IpaLSQDMfZ+zt6ucmlI0tGydb\nR7r5hXMk9xhJOUfJq8gnzKd6ByAJAAAgAElEQVRzg2tiGlsujYlko16SjXms1sAcP36cu+++G61W\nS3h4OHq9nmeffZbFixezYcMGhgwZgoODA9999x3/93//x5o1a9BoNISGhtY4X2lg6p+Loy0R7XwY\nGBGEna2WsxlFJJ3J5ef4C+QVluPv5YSLo2XvudQYs3HQ2dPNP4Ljeac4nJNMRmkm4T4hDepU68aY\nS2Mh2aiXZGOemhoYi/0vWVpayuzZs+nd+6+zLFatWoWnpydr1qxh9OjRxMXFUVpayocffsjSpUtZ\nvnw5n3/+Ofn5+ZYqS9wkN2c7buvfhv9O68N9wzvg4WLHtoNp/GvRbj74OoGTFwqsXWKD42LrzBNd\nH6Gte2sOZCawKHEZlQa9tcsSQghVs1gDY2dnx+LFi/Hz++sqpL/88gu33norAHfffTdDhw7l0KFD\nhIWF4erqioODA926dSM+Pt5SZYk6Ym9rw9Co5rzxSG8eu60LwYGuHDiRzesr9vP68v3EH8/C2PBO\ncLMaR50D0yMfIsSrI4dzkllw6FPKq8qtXZYQQqiWxRoYnU6Hg8Pldz9OTU1l+/btxMbG8tRTT5Gf\nn092djZeXl6m13h5eZGVlWWpskQd02o1RHfy48X7u/PcxK5EtPXmZGoB89cm8q/Fe9h2MBV9lcHa\nZTYIdjZ2PBI+mUjfME7kn2bewcWU6EutXZYQQqhSvV43XlEUWrduzfTp01mwYAEff/wxISEhV7zm\nejw9ndDpLDdwtKbzzsW1+fm50S+qJeczCvnm11P8sv8CyzYd47udZ7mlX2tG9WmNm/PN3bG5KWTz\nnO8/WLhvOdvP7mF+wmJeHDgDD0d3a5dVo6aQS0Ml2aiXZHNz6rWB8fHxITo6GoB+/frxwQcfMGjQ\nILKzs02vyczMJDIyssb55OVZ7rdSubjQzXO00XDvkHaM6tGCLXEX+OVAKis2JbPq5+P0Dw9iRHQL\nfD0caz3fppTNXa1vB70N21N/48Wf3mZG16l4OXhau6yrakq5NDSSjXpJNuapqcmr11MdBgwYwI4d\nOwA4fPgwrVu3JiIigsTERAoLCykpKSE+Pp7u3bvXZ1nCQjxc7LlzUFventaHe4a0w8XRlp/3X+D5\nj3/no2+TOJNeaO0SVUur0TKhwzhGtBpMZlk2c/cvJLNUDq0KIcSfLHYrgaSkJObMmUNqaio6nQ5/\nf3/efvtt/vOf/5CVlYWTkxNz5szBx8eHTZs28emnn6LRaJg0aZJpoO+1yK0EGqYqg5F9yZls2nOe\nlMzq+wF1aulBTM+WhLXxvu71T5pqNpvPbuW705twtXNhRuRUmrkEWrukyzTVXBoCyUa9JBvzyL2Q\nakFWKstTFIUjZ/PYtOcch8/mAdDMx5mRPVrSK9T/mlf4bcrZbLuwi9XHv8VJ58jjkQ8R7NbS2iWZ\nNOVc1E6yUS/JxjxyL6RakIsLWZ5Go8HP05E+XQLp2t6HCr2BYyn5xB/PYkdCGkajQjMfF2x1lzcy\nTTmbYLeWeDt4Ep+ZQNzFg7Rxb4W3o9f131gPmnIuaifZqJdkYx65lUAtyEpVv9xd7Inq6Ee/sOrD\nIifTCkk4lcPW+AsUl+kJ8nbG0b56rHlTz6a5axABzv5/NDEHaOHaDD8nH2uX1eRzUTPJRr0kG/PU\n1MDIIaS/kd161lVarmfbwTR+ikuhoLgSG62GHp39ienZkm6hgZINcDgnmcWJyzAqCg+E3ks3v3Cr\n1iPbjHpJNuol2ZhHxsDUgqxU6qCvMrL7SAab96aQll0CQFhbH3p29iWqox/2tvVzA0m1OpF3mo8S\nllBhqOS+znfRO9B6Z+7JNqNeko16STbmkQamFmSlUhejopB0OofNe1M4eq56wK+DnQ09OvvTPzyQ\nNkFuDe7uzXXlXGEKHx78lJKqUu5qP45BLfpapQ7ZZtRLslEvycY80sDUgqxU6mXQavlu20l2JaWT\nW1gBQKC3E/3CA+kTGoC7y7WPlTZWacUZzDu4iKLKYsa2iSEmeEi91yDbjHpJNuol2ZhHzkKqBRlY\npV7+Pi609HVmWFQL2jf3wGA0ciq1kKTTufy07wJnM4qw1Wnx9XBEq20ae2Vc7VwI9wkhIesIh7KT\nqDJW0dGzXb3ulZJtRr0kG/WSbMxT0yDeer2VgBB1QavVENrai9DWXhSX6dlz5CI7E9M5eDKbgyez\ncXOypXeXAPqFBdLM18Xa5Vqcn5MvM6Me44MDi/nx3C+UV5VzV4dxaDX1eqFtIYSoV3II6W9kt556\nXS+b8xeL2JmYzu7DFyku0wPQOtCN/uGB9Ojsj5ND4+7XCyuL+ODAYtJKMugZEMV9ne7ERmv5wc6y\nzaiXZKNeko15ZAxMLchKpV7mZqOvMnLoZDY7E9NJPJ2DooCtTktUR1/6hwXSsZUn2kY68LdEX8qC\nQ59xtvA8kb5deCB0IrZayzZuss2ol2SjXpKNeaSBqQVZqdTrRrLJK6rgt6R0diakczGvDAAfdwf6\nhQXSJywAH/fa3xVb7cqryvkoYSkn8k/T2asDj4Tdj52NncWWJ9uMekk26iXZmEcamFqQlUq9biYb\nRVE4caGAnQnp7EvOpEJvQAN0DvakX3gg3dr7YteIri1TadDzadJyknKSaevemsciHsBRZ5lmTbYZ\n9ZJs1EuyMY80MLUgK5V61VU25ZVV7EvOZGdCOicuFADgZK+jZ4g//cIDCQ5wbRTXlqkyVvH5kZXE\nZybQ0rUZj0c+jIutc50vR7YZ9ZJs1EuyMY80MLUgK5V6WSKbjNxSdiWmszMxnYLi6lMam/s60y88\niF6h/rg5We7QS30wKka+TP6a39P3Eejsz4zIqbjbu9XpMmSbUS/JRr0kG/NIA1MLslKplyWzMRiN\nHD6Ty46EdA6eyMZgVLDRaohs50O/8EC6tPHCRtswT0s2KkbWnvieXy7sxMfRmycip9bpnaxlm1Ev\nyUa9JBvz1NTANO7zSoUwk41WS3hbH8Lb+lBUWsnuwxfZkZDG/uNZ7D+ehbuLHX3+uLZMoHfdH4ax\nJK1Gy/j2Y7HX2bPp7M/MjV/IE5FT8Xf2s3ZpQghxw2QPzN9IV6xe9Z2Noiicu1jEzoTqa8uUVlQB\n0K65O/3CAonu5IejfcP6HeCnc9v45tRGXGydmRE5leauQTc9T9lm1EuyUS/JxjxyCKkWZKVSL2tm\no68yEH88m50JaRw5m4cC2Nlqie7kR7+wQDq08GgwA393pP7OV8e+wUHnwOMRD9LavdVNzU+2GfWS\nbNRLsjGPNDC1ICuVeqklm5yCcnb9cW2Z7IJyAPw8HauvLdMlAC83BytXeH17M+JZfnQVOq2OR8Me\noKNXuxuel1pyEVeSbNRLsjGPNDC1ICuVeqktG6OicOx8PjsT0tl/LJPKKiMaDYS29qJ/eBCR7Xyw\n1al34O/BrCSWJH0BGg0Pd5lEmE/IDc1HbbmIv0g26iXZmEcamFqQlUq91JxNaXkVe5MvsishnVNp\nhQA4O+joHRpAv/BAWvpfeyO0pqM5x/k48XMMioEHQu4hyj+y1vNQcy5NnWSjXpKNeaSBqQVZqdSr\noWSTml3CroR0fktKp7C0+qaSLf1d6B8eRM8Qf1wcba1c4eVO5p9h4aElVBgqmNhpPH2CetTq/Q0l\nl6ZIslEvycY80sDUgqxU6tXQsqkyGEk8ncPOhHQOnczBqCjobDR0be/LkG7N6NjS09olmpwvusD8\ng59Qoi9lfPuxDGnR3+z3NrRcmhLJRr0kG/PU1MDYvPzyyy/XXyl1o7S00mLzdna2t+j8xY1raNlo\ntRoCvZ3pGeLPwMgg3J3tyS4o51hKPrsSM1AUhQ4t1XH2kru9G118OnMoK4kDWYlo0dDOo7VZtTW0\nXJoSyUa9JBvzODvbX3OaekcYCtGIuLvYE9OzJa893JPn7+uGj7sD3+06y/yvEyn74/oy1hbo7M/M\nqGl4O3jy/ZkfWXdqAw1wB60QoomQBkaIeqTRaOjQwoOXHogmJNiTgyezeW1ZHOk5JdYuDQAfR29m\nRk3D38mPn89vZ+WxtRgVo7XLEkKIK0gDI4QVuDja8tSECEb2aEF6TimvLYvj4Mlsa5cFgIe9O091\ne5TmLkHsTNvD50dWYjAarF2WEEJcRhoYIazERqvl7iHteWRsCFUGhQ/WJLB+1xmMKjhs42rnwpNd\n/0Frt1bEXTzIJ0kr0BvVcahLCCFAGhghrK5XaAD/NykKLzd71u04w4J1SaoYF+Nk68j0yIfp6NmO\nhOzDfHRoCRUGGXQohFAHaWCEUIFWAa7MeiCaTi09iD+exX+W7+diXqm1y8JBZ89j4VMI8wkhOe8E\n8w8uplRfZu2yhBBCGhgh1MLNyY6Zd0cyrHtz0rJLmL00jsTTOdYuC1sbW6Z2iaW7fySnC84x78DH\nFFUWW7ssIUQTJw2MECqis9EycVgHHhrTmcoqI++tOsSG389a/XRmG60Nk0PuoW9QD1KK03gv/iPy\nKwqsWpMQommzaANz/Phxhg0bxooVKwB4/vnnGTt2LLGxscTGxrJt2zYAvvvuO8aPH89dd93F6tWr\nLVmSEA1C37BAXpjUDQ9Xe77+9TQLvz1MRaV1zwTSarTc23E8Q1sMIKM0k7n7F5JdZv09REKIpkln\nqRmXlpYye/ZsevfufdnzM2fOZPDgwZe97sMPP2TNmjXY2tpy5513Mnz4cDw8PCxVmhANQutAN156\nIJqF6xKJS84kI6eE6ePD8fNwtFpNGo2G29uNwUFnz4YzPzF3/0L+7fFP7HGxWk1CiKbJYntg7Ozs\nWLx4MX5+fjW+7tChQ4SFheHq6oqDgwPdunUjPj7eUmUJ0aC4O9vxzL1dGdKtGReySpi9dB+Hz+Ra\ntSaNRsPo1sMZ3+4WCioL+ffWuZwvvGDVmoQQTY/F9sDodDp0uitnv2LFCpYsWYK3tzezZs0iOzsb\nLy8v03QvLy+ysrJqnLenpxM6nU2d1/ynmm4eJayrqWbz1H3dCW3ny8KvE3h31UEmjwnl9kFtrXof\npbt9x+Dt4c7iuC95/+DHPNvvUbr4d7JaPeLqmuo20xBINjfHYg3M1YwbNw4PDw86d+7MokWLmD9/\nPl27dr3sNeYMVsyz4OmlcodQ9Wrq2XRt48VzE7vy4bpElnx/mCOns3lgVCfsbS3XzF9PhFsET/Vx\nYt7vn/H6r/OZHHov3fzCrVaPuFxT32bUTLIxT01NXr2ehdS7d286d+4MwJAhQzh+/Dh+fn5kZ/91\nCfXMzMzrHnYSoqlq28ydlx6Ipl0zd/Ycucgby/eTnW/d67L0atGNaREPYaO14bOkL9iR+rtV6xFC\nNA312sDMmDGDlJQUAPbs2UP79u2JiIggMTGRwsJCSkpKiI+Pp3v37vVZlhANioeLPc9O7MqgyCDO\nZxbz6udxHD1r3XExHb3a8c+uj+Js68TKY+v44cwWq5/6LYRo3DSKhf6XSUpKYs6cOaSmpqLT6fD3\n92fSpEksWrQIR0dHnJyceOONN/D29mbTpk18+umnaDQaJk2axK233lrjvC25201266mXZHOlbQdS\n+eKn4ygKTBjSjuHdm9f7uJhLc8kszWL+wU/IKc9jYPM+3Nn+VrQaudyUtcg2o16SjXlqOoRksQbG\nkqSBaZokm6s7cSGfBeuSKCippHdoAJNjOmJXj+Ni/p5LfkUBHx78lLSSDKL8Irg/5G502nodbif+\nINuMekk25lHNGBghRN1r39yDlx6Ipk2QG78fzuCNL+LJKSi3Wj0e9u481e1R2rgHsz/zEB8lLKW8\nqsJq9QghGidpYIRoBDxd7XluYjf6hQdyLqOIVz/fx7HzeVarx8nWiRmRD9PFuzNHc48z7+AiiitL\nrFaPEKLxkQZGiEbCVqdlyqhO3De8A6XlVby98iA/779gtcG0djZ2PBJ2Pz0DojhXmMLc+AXklluv\nqRJCNC7SwAjRiGg0GoZGNeeZeyJxdtDxxU/HWbIxGX2Vde6jZKO1IbbzBIa2HMDF0ize2b+A9JKL\nVqlFCNG4SAMjRCPUsaUnLz0QTasAV3YmpvPmFwfIK7LOOBSNRsMd7W7htrajya8o4N39CzlTcM4q\ntQghGg9pYIRopLzcHHjhvm706RLAmfRCXlm6jxMX8q1Wz/BWg5jUeQJlhnLmHVjE4ZxjVqtFCNHw\nSQMjRCNmZ2vDQ2M6c+/Q9hSX6nnrywNsO5BqtXp6B3bnkbD7UVD4KGEJ+zIOWK0WIUTDJg2MEI2c\nRqNheHQLnr4nEkd7Hcs2H+PzTcnoq4xWqSfMJ4TpkVOxt7Fj6ZH/8UvKTqvUIYRo2KSBEaKJ6NzK\nk5cmd6elnwu/Hkzjrf/Fk19snXEx7Txa81S3x3C3c2XNie/47tQmufWAEKJWpIERognx8XDkhdgo\neoX4cyq1elzMqdQCq9TSzCWQmVGP4+vozeZzW/ky+WsMRuucLSWEaHikgRGiibG3tWHq2BAmDG5H\nYUklc76MZ/uhNKvU4uPoxdNRj9PCtRm/pe/l08NfoDforVKLEKJhkQZGiCZIo9EQ07MlMydEYm9r\nw9Ifkln+4zGqDPU/LsbVzoUnu/6DDh5tOZSVxIeHPqWsqqze6xBCNCzSwAjRhIW29mLWA9E093Xm\nl/hU/vu/AxSUVNZ7HY46B6ZFPEikbxgn8k/zXvzHFFbKje6EENcmDYwQTZyfhyP/iu1OdCc/Tlwo\n4NWl+ziTXljvddja2PJQl/voF9STC8VpvLN/AdllOfVehxCiYZAGRgiBvZ0Nj44L5c5BbckvquCN\nFfHsSkyv9zq0Gi33dLyDUcFDyS7L4Z39C7hQZJ3xOUIIdZMGRggBVI+LGd2rFf+cEIGdTsunG47y\n5U/H631cjEaj4ZY2I7mr/TgKK4t4N/4jTuSdrtcahBDqJw2MEOIyYW28mfVAd5r5OLNl/wXeWXmQ\nwtL6HxczqEVfpoTcS6WxkvmHPuFQ1uF6r0EIoV7SwAghruDv6cT/xUYR1cGXYyn5zF66j3MZ9T+o\ntntAVx4Ln4IWDYsTl/Fb2r56r0EIoU7SwAghrsrRXsdjt3fh9gFtyC2s4PUV+/n9cEa91xHi3ZEn\nuv4DJ50jXySv5qdz2+SqvUIIaWCEENem1WgY2yeYGXeGo7PRsHj9EVb+fAKDsX7HxbR2b8nMqMfw\nsHfnm1MbWXdyA0bFOvdyEkKogzQwQojrimznw4v3dyfQ24kf96Uw96tDFJfV7xVzA5z9eSbqcfyd\n/Pg5ZTsrjq6WWw8I0YRJAyOEMEugtzMv3t+dyHY+HD2Xx6tL93H+Yv2Oi/F08GBm1GMEu7VkT8Z+\nFiV+TqWh/gcYCyGsTxoYIYTZHO11TB8fxq19g8kuKOf15fvZcSC1XmtwsXVmRuRUOnt1ICknmQ8O\nLqZUX1qvNQghrE8aGCFErWg1Gm7r34bpd4Sh0Wp4a0Uc/9tyol6vF+Ogs+fR8Afo7h/J6YJzvBv/\nEfkV1rmrthDCOqSBEULckG4dfJl1f3ea+7nwU1wKc76MJ7ewvN6Wr9PqmBxyDwOb9yWtJIN39i/g\nYmlWvS1fCGFd0sAIIW5YkI8zc/85kF4h/pxKLeTlJftIPF1/9y/SarTc1f5WxrYZSW55HnP3L+Bc\nYUq9LV8IYT3SwAghboqjvY6pY0OIHdmR8soq3lt1iLXbT2M01s+1WjQaDTHBQ7m34x2U6Et5/8DH\nJOeeqJdlCyGsRxoYIcRN02g0DO7ajP+LjcLb3YHvfzvL2ysPUFBcUW819GvWi4e7TMJgNLDw0GfE\nZybU27KFEPVPGhghRJ0JDnDj31Oi6dreh+Tz+by8ZB/HzufV2/Ij/cJ4PPIhdFodnyV9wfYLv9fb\nsoUQ9UsaGCFEnXJ2sGX6HWFMGNyOolI9b/3vABt+P4uxni7/38GzHf/s9iguts58dXwdG8/8JLce\nEKIRkgZGCFHnNBoNMT1b8tx9XfFwsefrX08zb01CvV29t4VrM2ZGTcPbwYsNZ35i1fFv5dYDQjQy\nFm1gjh8/zrBhw1ixYsVlz+/YsYOOHTuaHn/33XeMHz+eu+66i9WrV1uyJCFEPWrf3IN/T4kmNNiT\nhFM5vLJkL6fTCutl2X5OPjwdNY1mLoFsT/2NJYe/RG+sqpdlCyEsz2INTGlpKbNnz6Z3796XPV9R\nUcGiRYvw9fU1ve7DDz9k6dKlLF++nM8//5z8/HxLlSWEqGduTnY8NSGS2/q1JrewgjdW7GdLXEq9\nHNZxt3fjn10fpa17a+IzE/jo0BLKq+rvWjVCCMuxWANjZ2fH4sWL8fPzu+z5jz76iIkTJ2JnZwfA\noUOHCAsLw9XVFQcHB7p160Z8fLylyhJCWIFWq+HWfq2ZeU8kTg46vtxygoXfHqaswvJ7RJxsHZke\n+TBhPp1JzjvBvAOLKaostvhyhRCWZbEGRqfT4eDgcNlzZ86cITk5mVGjRpmey87OxsvLy/TYy8uL\nrCy5mqYQjVFosBcvT+lB++buxCVn8urSfaRkWr6ZsLOxZWqX++kV0J1zRSm8G7+QnLL6OztKCFH3\ndPW5sDfeeIMXX3yxxteYs1vZ09MJnc6mrsq6gq+vq8XmLW6OZKNOtcnF19eVt54YwIofjvL1Lyf5\nz7I4Hr0jnOE9W1mwwmpP+T3IFwlefJf8I+8dXMi/Bs6ghXuQxZdrTbLNqJdkc3PqrYG5ePEip0+f\n5plnngEgMzOTSZMmMWPGDLKzs02vy8zMJDIyssZ55eVZ7s6zvr6uZGUVWWz+4sZJNup0o7mM6dmS\nIC9HPv3+KPNWHWT/0QwmjeiIva3lfjkBGBk0DJsqW9ad3MCsLW/zWMSDtHG3fPNkDbLNqJdkY56a\nmrwbPoR09uzZWr3e39+fLVu2sGrVKlatWoWfnx8rVqwgIiKCxMRECgsLKSkpIT4+nu7du99oWUKI\nBqRre1/+PSWa4ABXdiVm8NqyONJzSiy+3GEtBxLbeQLlhgrmHVjE4Zxkiy9TCFG3amxgpkyZctnj\nBQsWmP790ksv1TjjpKQkYmNjWbduHcuWLSM2NvaqZxc5ODjw9NNP89BDDzFlyhQef/xxXF1lt5oQ\nTYWvhyMvTIpicLdmpGaV8Orncew9etHiy+0V2J1Hwu4HFD5KWMreDDl5QIiGpMZDSFVVl58hsHv3\nbqZNmwZcf6xKly5dWL58+TWnb9261fTvmJgYYmJirlusEKJxstVpiR3RkQ7NPVi6KZmPvj3M8ZR8\n7h7SHlud5S5XFeYTwvTIqXyUsJTPj6ykWF/CkBb9LbY8IUTdqfF/Bo1Gc9njS5uWv08TQoib1TPE\nn5cmd6eZrzNb41N584v9ZOeXWXSZ7Txa81S3R3G3c+XrE+vZfHbr9d8khLC6Wv1qI02LEMLSAr2d\nefH+7vTtEsCZ9CJeXrKPgyeyr//Gm9DMJZCnox7H096D9ac3k5R91KLLE0LcvBobmIKCAn7//XfT\nn8LCQnbv3m36txBCWIK9rQ0PjunMlFGd0BuMzPs6gdW/nMRgtNz9jLwdvXgk/H5stDYsPbKS7LIc\niy1LCHHzNEoNg1liY2NrfHNNY1wsyZKnnsmpbeol2aiTpXM5f7GIBd8kkZlXRofm7vxjXBc8Xe0t\ntrzf0/axInk1zV2CeDpqGnY2dhZblqXJNqNeko15ajqNusYGRq2kgWmaJBt1qo9cyiqqWLLxKHHH\nsnB1suWRW0MJDfa6/htv0JfJX7MrbQ89A6KI7TyhwR4+l21GvSQb89zwdWCKi4tZunSp6fHKlSsZ\nN24cTzzxxGUXnxNCCEtytNfx2G1duHdYe0rLq5i78iDf7TyD0UK/f93VYRytXFuwJ2M/O1J3W2QZ\nQoibU2MD89JLL5GTU30c+MyZM8ydO5fnnnuOPn368J///KdeChRCCKg+iWB49xY8P6kbXm72fLPz\nDO+uOkRhaWWdL8tWq+PhsEm42Dqz5sR3nCk4V+fLEELcnBobmJSUFJ5++mkANm/eTExMDH369OGe\ne+6RPTBCCKtoG+TOv6f0ILytN4fP5PLKkn2cuHDlRTJvlpeDJ1NCJ2JUjHyStILCStndL4Sa1NjA\nODk5mf69d+9eevXqZXrcUI8JCyEaPhdHW564M5zxA9uQX1zBW18eYPPe82bdDLY2Onm159a2MeRX\nFPBZ0hcYjIY6nb8Q4sbV2MAYDAZycnI4f/48Bw4coG/fvgCUlJRQVmbZi0sJIURNtBoNY3oH8+y9\nXXFxtOWrrSeZvzaR0nJ9nS5neMtBRPh24UT+ab47valO5y2EuHE1NjBTp05l9OjRjB07lmnTpuHu\n7k55eTkTJ07ktttuq68ahRDimjq29OTlKdF0aunBgRPZvLJ0H+cy6u5wj0ajIbbzBPycfNhy/lfi\nMxPqbN5CiBt33dOo9Xo9FRUVuLi4mJ7buXMn/fr1s3hx1yKnUTdNko06qSUXo1Hhm52n+f63c+hs\ntEwc1p6BkUF1drg7rTiD/+6fjwZ4tvsMApz962S+lqSWbMSVJBvz3PBp1GlpaWRlZVFYWEhaWprp\nT5s2bUhLS6vzQoUQ4kZptRruGNCWf94Vgb2tlmWbj7F4/RHKK6uu/2YzBLkEMKnTXVQYKlmUuJzy\nqvI6ma8Q4sbUeDfqIUOG0Lp1a3x9fYErb+a4bNkyy1YnhBC1FN7Wm5en9OCjb5PYfeQi5y4WMe32\nMJr5ON/0vKP8IzhbeJ6tKTtYfnQ1D3eZJCc0CGElNR5C+vbbb/n2228pKSlhzJgx3HLLLXh5We7q\nl+aSQ0hNk2SjTmrNpcpgZPUvp/gpLgU7Wy2TR3aid5eAm56vwWhg3sFFnMw/w21tRzO81aCbL9ZC\n1JqNkGzMddO3EkhPT2fdunWsX7+eZs2aMW7cOIYPH46Dg0OdFmouaWCaJslGndSeS1xyJkt+OEpZ\nhYGBkUFMHNYeW53NTc2zsLKIN/e+T2FlETMip9LRq10dVVu31J5NUybZmKdO74W0evVq3n77bQwG\nA3FxcTdd3I2QBqZpkvmyJjwAACAASURBVGzUqSHkcjGvlAXrkkjJLKalnwvTbu+Cn6fT9d9Yg9MF\nZ3kv/mMcdQ48H/0kng4edVRt3WkI2TRVko15bngQ758KCwtZsWIFd9xxBytWrOAf//gHGzdurLMC\nhRDCkvw9nfhXbBQDIoI4n1nMK0v3sf9Y5k3Ns417MOPbj6VYX8InSSvQG+tmsLAQwjw1DuLduXMn\nX3/9NUlJSYwYMYI333yTDh061FdtQghRZ+xsbXhgVCc6tHBn2eZjfLguieHdW3DX4LbobMz6Xe4K\nA5r15kzBefZdjOfrE+u5p+PtdVy1EOJaajyE1KlTJ4KDg4mIiECrvXIDf+ONNyxa3LXIIaSmSbJR\np4aYS2pWMQu+SSI9p5S2zdx4bFwXvNxubExfpaGSt/d/SGpxOrGdJ9ArsHsdV3vjGmI2TYVkY56a\nDiHVuAfmz9Ok8/Ly8PT0vGzahQsX6qA0IYSof818XZg1uTvLNh1j95GLvLxkH1PHhhDWxrvW87Kz\nsWNql/uZE/c+K4+tpZlLIC1cm1mgaiHEpWrcb6rVann66aeZNWsWL730Ev7+/vTo0YPjx4/z3nvv\n1VeNQghR5xzsdEwdG0LsyI6UV1bx3qpDrN1+GqOx9jeE9HXyZnLIPeiNVSxOXE6JvtQCFQshLlXj\nHph3332XpUuX0rZtW37++WdeeukljEYj7u7urF69ur5qFEIIi9BoNAzu2ozWga4sWJfE97+dJTOv\nlH/cGlrrC9SF+YQwKngYP5zdwtLD/+OxiCloNTc2tkYIcX3X3QPTtm1bAIYOHUpqair3338/8+fP\nx99f/fcBEUIIcwQHuPHylGjaNXNn79FMNu4+d0PzGd16GCFeHTmSe4wfzmyp4yqFEJeqsYH5+28g\ngYGBDB8+3KIFCSGENTg52PL4HWF4utqz9tfTHDqZXet5aDVaHgi9F28HTzae3UJS9lELVCqEADOv\nA/MnueeHEKIxc3e2Y/odYeh0WhatP0x6Tkmt5+Fs68TUsPux1epYemQlWaU5FqhUCFFjA3PgwAEG\nDRpk+vPn44EDBzJo0KB6KlEIIepP68D/3969B0RZ5/sDfz9zY4AZ7oOKXAQUURhExTZN7aaZW3m/\nC+amne1kdbbjbut2aqtje37Hzp7djpetzUwJcjUvmXbRLDPdNEtRmAEVBa+A3G8zAwww8/sDJCmF\nGeVhnoH36x9inO/DBz8+8eb7PM/364PFD8eirqEZa3YYYKl3foG6MG1/zBs8A3VNdVhvfB/WZqsI\nlRL1bh3exLt3797uqoOISDJGx/fF5ZJa7Pv+Ct7Zk43nZiZAJnNuBvrufkm4UHMZ/yz4DpvP7MTj\nQ+dyFpuoC3UYYPr351oGRNQ7zbovGldLTMjKK8dHh/Mx895o548xaAqu1hbih+IMRPqG497QMSJU\nStQ78Rk/IqKbkMtk+PXUeOj81Pj06CX8cMb5vZOUMgWWxidDo/TG9nO7kV99sesLJeqlGGCIiG5B\n46nEszMT4KGUY8OnObhc7PzS7/5qPzwRtxB2ux3vGtJRY+Xy8URdgQGGiKgDoToNlj46FNZGG9bu\nNKDW4vwNuYMDBmJq9GRUW2vwnvEDNNuaRaiUqHcRNcDk5uZiwoQJSE9PB9DyVNP8+fORkpKCJUuW\noKKiAgCwe/duzJw5E7Nnz+YKv0QkOSMH6zDlngEoq67HW7uMaGq2OX2MCeH3IlGnx7mqfHyc97kI\nVRL1LqIFGIvFgpUrV2L06NFtr23cuBFvvPEG0tLSMHz4cHz44YewWCxYt24dNm3ahLS0NKSmpqKq\nqkqssoiIbsuUsZEYPigIZy5X4cMD550eLwgCUobMRh+vYHx15RBOFGeKUCVR7yFagFGpVFi/fj2C\ng4PbXlu9ejXCwsJgt9tRXFyMvn37IjMzE3q9HlqtFmq1GiNGjEBGRoZYZRER3RaZIGDpo0MREuSN\nL09cxeGsQqePoVao8S/6FHjIVUg/sw1F5mIRKiXqHTp8jPqODqxQQKH4+eEPHTqEP/3pT4iKisKU\nKVPw6aefIiAgoO3PAwICUFpa2uGx/f29oFDIu7zm63Q6rWjHpjvD3khTb+rLK0/ejX9/8xDS9uUi\nbqAOgyMCOh90A51Oi6fli/DXI+9iQ04a/t/EFfBSeopUbe/qjbthb+6MaAHmVsaPH49x48bhz3/+\nM955552frTVjt3e+lX1lpXhb1et0WpSW8ikBKWJvpKm39UUJ4NePDcVft2Vi5XvH8MfHR8Ff6+HU\nMQaqY/Bg+Hh8dfkQ/nr4PTwZnyLKIne9rTfuhL1xTEchr1ufQtq/fz+AlmvBkyZNwokTJxAcHIyy\nsh83TSspKWl32YmISGriowIx+76BqDZZ8bePDGhscv6m3qlRkzHILwqZpUZ8efkbEaok6tm6NcCs\nWbMGp0+37M6amZmJyMhIDBs2DAaDATU1NTCbzcjIyEBSUlJ3lkVE5LRJd4Xh7rg+yCusQdoXZx2a\nPb6RXCbHE/EL4efhi4/zPseZinMiVUrUM4l2CcloNGLVqlUoKCiAQqHAvn378Prrr+O1116DXC6H\nWq3GG2+8AbVajeXLl2PJkiUQBAHLli2DVsvrgkQkbYIgYPHDsSgqs+CfWUWI6KPFgyNDnTqGj0qL\npfHJ+GvG29iYvRkrRv0b/NV+IlVM1LMIdmd/bZAAMa8b8rqkdLE30tTb+1JeXY//TP0B5rom/HZe\nImIj/J0+xqGrR7E19yNE+ITh+RH/CqWsa3637O29kTL2xjGSuQeGiKinCfRVY9l0PQQB+NsuI8qq\n6pw+xrj+d+MXfUfiUs0VbM/9WIQqiXoeBhgiojsUE+aHBRNjYKprxJqdBjRYndsqQBAEzBs8Hf01\n/fDPwmM4WviDSJUS9RwMMEREXeD+4f1xb2IIrpSYsPHz007f1KuSq/Av+kXwVHhiS+5HuFx7VaRK\niXoGBhgioi6ycGIMBob64vvTJfjsu0tOjw/yDMTiofPQbGvGu4Y0mBrNIlRJ1DMwwBARdRGFXIZl\n0/Xw13pg5zf5yMor63zQT8QHDcHkyAkor6/Epux/wGZ3fo0Zot6AAYaIqAv5eqvwzAw9FAoZ/r47\nB0Xlzs+iTB7wIOICY3G6IhefXdgvQpVE7o8Bhoioi0X288Hih2NR19CENTsMsNQ3OTVeJsiweOg8\nBKkD8PnFr2AoyxGpUiL3xQBDRCSC0fF98dCoMFyrsGD9nmzYnLyp10vphaX6RVDKFEjN2YISi/OX\no4h6MgYYIiKRzL4/GnED/JGZV45dh/OdHh+mDcH8wTNR11SP9Yb30dBsFaFKIvfEAENEJBK5TIZf\nT42Hzk+NT45cwvEzJU4f4xf9RmJ8/9EoNF/D5jPbnX48m6inYoAhIhKRxlOJZ2cmwEMpx7uf5uBK\nicnpY8wc9BgifcJxvPgUvik4IkKVRO6HAYaISGShOg2WPjoU1kYb1uzIQq3FuUtBCpkCS+KToVVq\nsOPcHuRVXRSnUCI3wgBDRNQNRg7WYco9A1BWXY+3P85Gs8259V381X54In4hAGCDMQ3VDdwIkHo3\nBhgiom4yZWwkhg8KwulLldh64LzT42P8ozE1ejKqrbXYYExHs825PZeIehIGGCKibiITBCx9dChC\ngrzx5fGr+NZQ5PQxHgwbj+HBCcirvoBdeZ+JUCWRe2CAISLqRp4eCjw7Uw8vDwVS955FXmG1U+MF\nQUBy7Cz09QrGgSuHcbz4lEiVEkkbAwwRUTfr4++Fp6bGodlmw7qdBlSZGpwar1ao8aR+ETzkKnxw\nehsKTddEqpRIuhhgiIhcID4qELPui0aVyYp1Ow1obHLupt6+3sFIGTIXVlsj1hvfR11TnUiVEkkT\nAwwRkYs8fFc47h7aB3mFNUj/4qzTi9QND9ZjYvh9KLGUIS3nQ+5cTb0KAwwRkYsIgoDFk2MR0UeL\nw1lFOJBR4PQxHouahBi/aGSWZePLS9+IUCWRNDHAEBG5kEopxzMz9NB6KbHlq3M4c6nSqfFymRxP\nxC+En4cvdufvxZmKcyJVSiQtDDBERC4W6KvGsul6AMDfdhlRVu3c/SxalQZL41MgF2R4L/sDVNQ7\nF4KI3BEDDBGRBMSE+WHBhEEw1TVi7Q4DGhqdW6Qu0jccs2KmwtxowXpDGhqbG0WqlEgaGGCIiCTi\nvuH9cW9iCC6XmLDxs9NO39Q7NuQXuLtvEi7XXsW2cx+LVCWRNDDAEBFJhCAIWDgxBgNDffH96RJ8\nfuyy0+PnDp6OME0Ivi38HgfyvxWpUiLXY4AhIpIQhVyGZdPi4a/1wI6DecjKK3NqvEquxFL9Ingp\nPLHhxBZcrr0qUqVErsUAQ0QkMb4aDzwzQw+5XIa/787BtQqLU+ODPAOwOG4+Gm1NeNeQDkujc+OJ\n3AEDDBGRBEX288HiyYNR19CENTuyUNfQ5NT4uMBYzBg6GeX1FXj/9FYuckc9DgMMEZFEjYnvh4dG\nhaGo3IL1e3Jgc/Km3jlxjyLWfxAMZafx5WUuckc9CwMMEZGEzb4/GnED/HHqfBl2Hb7g1FiZTIbF\ncfNbFrnL24vcyjyRqiTqfgwwREQSJpfJ8Oup8dD5qfHJkYs4fqbEqfFalQZL4hdCEAS8l/0Bqhtq\nRKqUqHuJGmByc3MxYcIEpKenAwCKioqwePFiJCcnY/HixSgtLQUA7N69GzNnzsTs2bOxbds2MUsi\nInI7Gk8lnp2ZAA+lHO9+moMrJSanxkf5DsD0gY+g1mrCBuMHaLY5t0gekRSJFmAsFgtWrlyJ0aNH\nt7325ptvYs6cOUhPT8fEiROxceNGWCwWrFu3Dps2bUJaWhpSU1NRVVUlVllERG4pVKfB0keHwNpo\nw5odWTDVObfS7v2hYzE8OAF51RewO3+vSFUSdR/RAoxKpcL69esRHBzc9torr7yCSZMmAQD8/f1R\nVVWFzMxM6PV6aLVaqNVqjBgxAhkZGWKVRUTktkYODsaUewagrLoeb+0yotnm+JNFgiBgYewsBHsF\n4cvL3yCz1ChipUTiEy3AKBQKqNXqdq95eXlBLpejubkZmzdvxmOPPYaysjIEBAS0vScgIKDt0hIR\nEbU3ZWwkhg8KwulLlfjwgHM35Xoq1FganwKlTIn3cz5EicW5RfKIpETR3V+wubkZL7zwAu6++26M\nHj0ae/bsaffnjuz94e/vBYVCLlaJ0Om0oh2b7gx7I03sS/dasfgu/Hb1Iew/fgVxA4Pw4KjwW773\np73R6bT4tbAQa49twqYzm/GnB38HlUIldsl0Ezxv7ky3B5g//OEPiIiIwDPPPAMACA4ORlnZj78F\nlJSUIDExscNjVFaKt6qkTqdFaWmtaMen28feSBP74hpPT43HytTjWLstExqVHFEhPj97z616M8R7\nKMaG/AL/LDyGdUfSkTxkdneUTDfgeeOYjkJetz5GvXv3biiVSjz33HNtrw0bNgwGgwE1NTUwm83I\nyMhAUlJSd5ZFROR2+gR44ampcWi22bB2ZxaqTA1OjZ81aArCtP1xtOgHHCn8QaQqicQj2J3dr91B\nRqMRq1atQkFBARQKBfr06YPy8nJ4eHhAo9EAAKKjo/Hqq69i79692LBhAwRBQHJyMqZMmdLhscVM\nrUzF0sXeSBP74lqfH7uEbV/nIbq/D16YPwJKxY+/l3bWm7K6Cqz64f/QaGvE8pHPIEwb0h0lE3je\nOKqjGRjRAoyYGGB6J/ZGmtgX17Lb7XhnTw6O5RRj/LB+ePzhWAiCAMCx3hjLTuOtrI0I8gzE75Oe\ng5fSszvK7vV43jhGMpeQiIioawmCgMWTYxHeR4NDmUX4+mSBU+Pjg4ZgUsQDKKsrR/rpDx16kIJI\nChhgiIjcnIdSjmdnJEDrpcQ/vjyHs5crnRr/SORExPhFI7Msm5s+kttggCEi6gECfdVYNl0PAFj3\nkRFl1XUOj5XL5PhV/AL4qrTYnb8X5yrzxSqTqMswwBAR9RAxYX5YMGEQTHWNWLvTgHprk8NjfVRa\nPBGfDACtmz7y/gySNgYYIqIe5L7h/TF+WAguF5uwZuspp+5pGegXianRk1FjrcXGbG76SNLGAENE\n1IMIgoDkh2IwMNQXh04V4NOjl5wa/2DYeCTq4nGuKh+fXPhCpCqJ7hwDDBFRD6OQy7Bsuh5Bfp7Y\neSgfJ3Md319OEAQkD5kNnWcgvrj0NbJKs0WslOj2McAQEfVAvt4qvPSru6BSyvDOnhxcLTE5PNZT\n4Ykn9YuglCnw/umtKKsrF7FSotvDAENE1ENFh/ph6SND0dDYjNU7slBrsTo8tr+mH+YOnoG6pnq8\na0hDY3OjiJUSOY8BhoioB0uKDcaUewagrLoef/vIiKZmm8NjR/dLwph+d+GKqRDbzn0sYpVEzmOA\nISLq4aaMjcTIwTqcvVKFzftznXoyaU7MVIRpQvBt4ff4rui4iFUSOYcBhoioh5MJApY+MhThwRoc\nPFWIAxmObzeglCuxVJ8CT4UaW87uRIGpSMRKiRzHAENE1At4qOR4dmYCfFq3G8i5WOHw2CDPQCwa\nMheNtiasN7yPuibHV/klEgsDDBFRLxHoq8ayGXoIAvDWLiOKKy0Oj03QxWFi+H0orStH+ult3PSR\nXI4BhoioFxkU6odFDw+Gub4Jq7dnwVLv+HYDj0VNwiC/KJwqNeLAlcMiVknUOQYYIqJeZlxCCB4a\nFYaicgve2ZMNm82x2RS5TI5fxS2Ej0qLXXmf4XzVBZErJbo1Bhgiol5o9v3RiI8MQFZeObZ/k+fw\nOF8PLZ6IWwgAeM+YjhorN30k12CAISLqheQyGZ6aGoe+AV7Ye+wyvjU4/nTRIP8oTIl6GNXWWmzM\n/gdsdsfXliHqKgwwRES9lJdaiedmJcDLQ4HUvWeQV1Dt8NgJ4fdiWFAccivP45N8bvpI3Y8Bhoio\nF+sb4IWnpsWh2WbHmp0GVNTUOzSuZdPHOQjyDMS+SwdgKMsRuVKi9hhgiIh6ufjIQMx7YBBqzFas\n2WFAQ2OzQ+O8lJ5YGp8CpUyB1JytKKtzfG0ZojvFAENERJiQFIqxCf1wqbgWGz877fA6L2HaEMyJ\nmY66pjpsMHLTR+o+DDBERARBEJDy0GAMDPXF96dL8MmRiw6PHRMyCnf3S8Ll2gJsP7dbvCKJbsAA\nQ0REAAClQoZnpusR6OOBjw5fwImzpQ6PnRszHf01/fDPwmM4VnRCxCqJWjDAEBFRGx9vFZ6dmQCV\nUoZ3P8nBlRKTQ+NUciWWxqdALVfjH2d3otB0TeRKqbdjgCEionbC+2jx5KND0dDYjNXbs1Bjtjo0\nLtgrCIuGzkGjrRHrje+jrsmxJ5qIbgcDDBER/czIwcGYNjYS5TX1+NtHBjQ1O7ZY3TBdPB4MH48S\nSxk+4KaPJCIGGCIiuqnH7hmApNhg5F6tRvoXZx0OI1OjJiPaNxInSw04ePVbkauk3ooBhoiIbkoQ\nBCx5ZAjC+2hwKLMIX5646tA4uUyOJfELoVVpsPP8J8ivvihuodQrMcAQEdEteSjleG5mAny8Vdjy\n1TlkX3BssTpfDx88EbcQdrsdG4wfoNbq2M3ARI5igCEiog4F+KjxzAw95DIBb+0y4lqFxaFxMf7R\nmBL1MKoaqrGJmz5SF2OAISKiTg3s74vHH46FpaEJq7dnwVLf5NC4CRH3Qh80BGcqz+GzC/tFrpJ6\nE1EDTG5uLiZMmID09PS2195//33ExcXBbDa3vbZ7927MnDkTs2fPxrZt28QsiYiIbtM9+n6YdFcY\nrlVY8PZuI2y2zm/qlQkyLBoyF4HqAHx+8Stkl5/phkqpNxAtwFgsFqxcuRKjR49ue23Xrl0oLy9H\ncHBwu/etW7cOmzZtQlpaGlJTU1FVVSVWWUREdAdm3zcQ+qhAGPMrsO3geYfGeCm9sFSfDIVMgdTs\nLSivqxS5SuoNRAswKpUK69evbxdWJkyYgOeffx6CILS9lpmZCb1eD61WC7VajREjRiAjI0OssoiI\n6A7IZAJ+PSUO/QK9sO/7K/jWUOTQuHBtKOYMmgpzkwUbjOlotDl2CYroVhSiHVihgELR/vAajeZn\n7ysrK0NAQEDb5wEBASgt7Xj/DX9/LygU8q4p9CZ0Oq1ox6Y7w95IE/siXWL15tUnR+Pf/+8QUvee\nxeDIIAyJDOh0zNSgB1HQUIBvLn6Hz67uxdKR80WpzV3wvLkzogWY2+XIQkmVlY7dAX87dDotSktr\nRTs+3T72RprYF+kSszdKAE9NicNfP8zE6xuP4Y+PJyHAR93puGkRj+Jc6UV8cf4QQlT9MarvcFHq\nkzqeN47pKOS5/Cmk4OBglJWVtX1eUlLS7rITERFJU1xkAOY+OBA1ZitW78hCg7W50zEquQpL9SlQ\nyz2w+cx2FJmLu6FS6olcHmCGDRsGg8GAmpoamM1mZGRkICkpydVlERGRAyaMDMX4Yf1wudiEDZ+d\ndmgWvY+XDilD5sBqa8R6Qxrquekj3QbRLiEZjUasWrUKBQUFUCgU2LdvH8aMGYMjR46gtLQUTz75\nJBITE/HCCy9g+fLlWLJkCQRBwLJly6DV8rogEZE7EAQByQ8NxrVyC46fKcGeIG9MGRvZ6bjEYD0e\nCBuHA1cOY/OZHfhV3IJ2D3gQdUawu+FWoWJeN+R1Selib6SJfZGu7uxNjcWKlZuOo7ymHk9Pi0dS\nbOe3AjTbmvHmyb8jv/oiZg+aivvC7umGSqWB541jJH0PDBERuT8fLxWem5UAD6Uc736ag8vFnf9w\nbtv0Udmy6eOF6kvdUCn1FAwwRETUJcKCNVj66FBYG21YsyMLNWZrp2P8PHyxOG4+bHYbNhg/gMlq\n7nQMEcAAQ0REXWjkYB2mj4tEeU0D1n5kQGNT5xs4xgYMwqNRD6GyoQqbcrjpIzmGAYaIiLrUo2MG\n4K4hwTh/tRppX5x16MmkhyLuR3xgLE5X5OLzi191Q5Xk7hhgiIioSwmCgF/9cggi+mrxz6wi7D9+\ntdMxMkGGRUPnIVDtj88vfImc8rPdUCm5MwYYIiLqch5KOZ6doYevtwpbD5yDMb+80zHeSi8siU+G\nXJBhU84/UFHPTR/p1vgY9U/w0TbpYm+kiX2RLin0Jq+gGqs2n4RSIcNLi0aiX6B3p2MOFxzFlrMf\nYYBPOJ4f8RQUMsntenNL1uZGmBpNMFnNqG00w2Q1wdRoRm3rR1OjCebGOkQFhSFWMxgx/tGQy8Tb\n28/ddfQYNQPMT0jhhKebY2+kiX2RLqn05oixCO9+chp9Arzw0qKR8FYrO3y/3W5Has5W/FCcgXtD\n78GcmKndVOnPWZutqLW2BI92QcRqRm1bUGn5aGo0oaG58yevbuSl8IQ+aCgSdfEYEhADpbzjv5ve\npqMA4z6xloiI3NKY+H64WmrG3mOX8fbH2fjN7ATIZbe+g0EQBMyPnYGrpgJ8c/VbRPlGIKlPYpfU\n0tBshclquiF83GSWpDWM1FpNsNoaOz2mQpBDo9JA5xkEjdIbWpUGGpU3NEoNtEpvaFStrylbXvOQ\nq1AhlODrc98js9SIY9dO4Ni1E/CQqxAXGItEnR5xgYOhVnS+OWZvxhmYn5DKbyz0c+yNNLEv0iWl\n3thsdqzekYWsvHJMTArD/AmDOh1TbC7BquOrYQfw+6Rn0de7T7s/t9vtLYGk0fTjLEm7GZEbZkla\nw0mjI4FEpmgJIkpvaFSaliCi8v4xnLS97g2tyhtqudrpbRCu98Zmt+FSzVVklhpxstSAsrrythqG\nBMQgURePhKCh8FJ6OXX8noKXkJwgpROe2mNvpIl9kS6p9aauoQmvv38cReUW/GpyLMYNC+l0TEZJ\nFjYY06HzDESkb8TPZkkabU2dHkMpU9wQQlpmR7TKG2ZJfhJOPOQeou/LdLPe2O12FJiKcKrUiFOl\nhradumWCDDF+0UgM1mOYLg4+qt6zXyADjBOkdsLTj9gbaWJfpEuKvSmutOD11OOotzbjd/OHIybM\nr9MxO87twYErh9s+V8mUN8yAXJ8RaQ0lP7mE0xJIVJLbKNKR3hSbS1rDjBGXa1seRRcgIMp3AIa3\nhpkAtX93lOsyDDBOkOIJTy3YG2liX6RLqr3JuViBv2zNhLenAi8/noQgX89Ox5RYSiEXFNCqvKGS\nq7qhSnE525vyukpklhlxqsSA/OpLsKPlR3eENgyJungkBscj2EsnVrkuwwDjBKme8MTeSBX7Il1S\n7s1XJ67ig/25CAvW4MXkkfBQ9a5Hie+kN9UNtcgqM+JUiRG5VXltWy+EePdtDTN6hHj3ldys0+1g\ngHGClE/43o69kSb2Rbqk3Bu73Y73953FN6cKMXKwDv86LR6yHvAD11Fd1RtzowVZZTnILDXgdMU5\nNLXeE6TzDESiTo/E4HhEaMPcNszwMWoiIpIUQRCwcGIMisotOHG2FLv/eQHTxkW5uiy34630wuh+\nSRjdLwn1TfXILj+Dk6VGZJefwf7LB7H/8kH4efi2zMzo9Ij2GwCZ0DMW4ecMzE9I+TeW3o69kSb2\nRbrcoTe1FitWph5HWXU9/nVaPEbFBru6pG4hdm+szY04XZGLU6UGGMpyUNdUDwDQKjVI0MUhUReP\nGP9oya9yzEtITnCHE763Ym+kiX2RLnfpzdUSE/6UfgJ2mx1/SB6JiL49/zHh7uxNk60JuZV5OFVq\nRFZpNmobTQAAT4Un9EFDkKjTY0hADFQSXAWYAcYJ7nLC90bsjTSxL9LlTr05mVuKtTsN8PfxwMuP\nj4Kvt/s/adQRV/XGZrchr+oiTpUacKrUiKqGagCAqnUV4OG6eMQFxkpmFWAGGCe40wnf27A30sS+\nSJe79eaTIxex81A+ovv74IX5I6BU9Ix7NW5GCr2x2+24VHsFp0paFs4rbbcK8CAM0+mREDQU3i5c\nBZgBxglS+EdFN8feSBP7Il3u1hu73Y539uTgWE4x7tH3xRO/HOK2T89cZ7PbYaprRFVtA6rNVlSZ\nGlBjtmJwZCD6wT5n8gAADW9JREFU+3vC00Ma96DY7XYUmq/hVEnLzEyh+RqAG1cBjkdCUDx8Pbr3\n8h4DjBPc7YTvTdgbaWJfpMsde2NtbMZ/f5CBi9dqMfeBgZh0V7irS7opm90Ok6URVaYGVJlagkn1\nDf9dZbKi2tyAapMVzbab/5iVywQMCvWFPjoQ+qhA9A/ylkxgK7aUIrOkZRXgS7VXAFxfBTgCibp4\nDNPpEegp/irADDBOcMcTvrdgb6SJfZEud+1NZW0D/jP1B9SYrfi3WcOQEB3YbV/bZrOj1mL9MZSY\nraiqbUBV68dqc0s4qTHfOpgALeHET6OCn8YDvhoP+GlUbR81nkqU1ljxnaEQF6/92J8AHw/oo1rC\nzJAIf8nMzlTUVyKzNBsnSwzIr77YtgpwuLY/EnV63NV3BPzVnW8JcTsYYJzgrid8b8DeSBP7Il3u\n3Jv8whr89wcZUCoEvLQoCf0Cve/oeDabHTUW609mTKw/mTVpQI25EbYOfiwq5EJrKGkJJ37eHvDT\nquDr7XFDYGkJKR3NplzvTY3ZCuOFcmTllSP7QgXM9S0L0cllAmLC/FoDTQBCJDI7U2OtRWZpNk6V\nGNpWAe7n3Qcv/WK5KF+PAcYJ7nzC93TsjTSxL9Ll7r05mn0N6/fkoI+/J156PAne6p8/5ttss6HG\n3NgWSK4Hkaobw4m55b6Tjn7aKeSytgBy42xJy+c/BhZvtaJLgsTNemOz2ZFfVANDXjmy8stx6YbZ\nmcAbZ2cG+EOtcv3sjLnRAmPZafh4aDEkIEaUr8EA4wR3P+F7MvZGmtgX6eoJvdl28Dw+/+4yYkJ9\nMTjcv+0SzvWQUmu2oqMfYiqFrC18tA8l10NKy397eXRNMHGUI72pNlthzC+HIb+D2ZnoQIQEekli\ndkYMDDBO6AknfE/F3kgT+yJdPaE3Npsda3ZkITOvvN3rKqWs9RJO+yDS7vKORgXPbg4mjnK2N802\nGy4U1iIrvxyGvHJcKr5xdkbdeiNwAIZESGN2pqswwDihJ5zwPRV7I03si3T1lN40NtmQc7ECKqW8\nLaSoVXJJBhNH3Wlvqk0NMF6oaLt3xtLQMjujkAsYFOqHhNYnm/q5+ewMA4wTesoJ3xOxN9LEvkgX\neyNdXdmbZpsN+YU1MOS33Ax8udjU9meBPuq2MDMkwh8eKnmXfM3uwt2oiYiIeii5TIZBoX4YFOqH\nGeOjUWVqgDG/Almt9858fbIAX58sgELecu9MQuu9M30D3Ht2hgGGiIioB/HTeGBsQj+MTeiHZpsN\neQUtszOGvHLkXKxEzsVKbDlwHkG+6rYbgYeEu9/sjKgBJjc3F08//TQWL16M5ORkFBUV4YUXXkBz\nczN0Oh3+53/+ByqVCrt370ZqaipkMhnmzJmD2bNni1kWERFRryCXyRAT5oeYMD/MvLdlduZ6mMm+\nWNludmbwDU82ucPsjGgBxmKxYOXKlRg9enTba6tXr8aCBQswefJk/OUvf8H27dsxbdo0rFu3Dtu3\nb4dSqcSsWbMwceJE+PmJs6ofERFRb+Wn8cC4hBCMSwhBU3P7e2eyL1Yi+8bZmev3zkh0dka0AKNS\nqbB+/XqsX7++7bVjx47htddeAwDcf//9eO+99xAZGQm9Xg+ttuVGnREjRiAjIwMPPPCAWKURERH1\negp5+9mZytqGH9eduViBrzMK8HVGARRyGQaHt8zOJEQHoo+/pyRmZ0QLMAqFAgpF+8PX1dVBpVIB\nAAIDA1FaWoqysjIEBAS0vScgIAClpaVilUVEREQ34a/1wLhhIRg3rGV2Jq+gGob8Hx/Vzr5QgS1f\nnYPOT922KnBshD88lK6ZnXHZTby3enrbkae6/f29oFCI9xfW0WNb5FrsjTSxL9LF3kiX1HvTr68v\nxo5s2Q28vLoOJ86U4MSZYpzKLcWBjAIcyCiAUiHDI/dEYsmU+G6vr1sDjJeXF+rr66FWq1FcXIzg\n4GAEBwejrKys7T0lJSVITEzs8DiVlRbRauS6CdLF3kgT+yJd7I10uWNvhkcFYHhUAJomDUZeQTWy\n8sthzK9AYUmtaN9LRyFPJspXvIUxY8Zg3759AIAvvvgC48aNw7Bhw2AwGFBTUwOz2YyMjAwkJSV1\nZ1lERETkoJZ7Yvwx+76BeO2Ju/DU1O6ffQFEnIExGo1YtWoVCgoKoFAosG/fPvz5z3/GihUrsHXr\nVoSEhGDatGlQKpVYvnw5lixZAkEQsGzZsrYbeomIiIhuhlsJ/IQ7Tuv1FuyNNLEv0sXeSBd74xjJ\nXEIiIiIi6goMMEREROR2GGCIiIjI7TDAEBERkdthgCEiIiK3wwBDREREbocBhoiIiNwOAwwRERG5\nHQYYIiIicjsMMEREROR2GGCIiIjI7bjlXkhERETUu3EGhoiIiNwOAwwRERG5HQYYIiIicjsMMERE\nROR2GGCIiIjI7TDAEBERkdthgLnBf/3Xf2Hu3LmYN28esrKyXF0O3eCNN97A3LlzMXPmTHzxxReu\nLoduUF9fjwkTJmDnzp2uLoVusHv3bkyZMgUzZszAwYMHXV0OATCbzXjmmWeQkpKCefPm4fDhw64u\nya0pXF2AVHz//fe4dOkStm7diry8PLz44ovYunWrq8siAN999x3OnTuHrVu3orKyEtOnT8dDDz3k\n6rKo1VtvvQVfX19Xl0E3qKysxLp167Bjxw5YLBasWbMG9913n6vL6vU++ugjREZGYvny5SguLsbj\njz+OvXv3urost8UA0+ro0aOYMGECACA6OhrV1dUwmUzQaDQuroxGjRqFhIQEAICPjw/q6urQ3NwM\nuVzu4sooLy8P58+f5w9HiTl69ChGjx4NjUYDjUaDlStXurokAuDv74+zZ88CAGpqauDv7+/iitwb\nLyG1Kisra/ePKSAgAKWlpS6siK6Ty+Xw8vICAGzfvh3jx49neJGIVatWYcWKFa4ug37i6tWrqK+v\nx1NPPYUFCxbg6NGjri6JADzyyCMoLCzExIkTkZycjN///veuLsmtcQbmFrjDgvR8+eWX2L59O957\n7z1Xl0IAdu3ahcTERISFhbm6FLqJqqoqrF27FoWFhVi0aBG+/vprCILg6rJ6tY8//hghISHYsGED\nzpw5gxdffJH3jt0BBphWwcHBKCsra/u8pKQEOp3OhRXRjQ4fPoy3334b7777LrRaravLIQAHDx7E\nlStXcPDgQVy7dg0qlQp9+/bFmDFjXF1arxcYGIjhw4dDoVAgPDwc3t7eqKioQGBgoKtL69UyMjIw\nduxYAEBsbCxKSkp4OfwO8BJSq3vuuQf79u0DAGRnZyM4OJj3v0hEbW0t3njjDfz973+Hn5+fq8uh\nVm+++SZ27NiBDz/8ELNnz8bTTz/N8CIRY8eOxXfffQebzYbKykpYLBbebyEBERERyMzMBAAUFBTA\n29ub4eUOcAam1YgRIxAXF4d58+ZBEAS88sorri6JWn322WeorKzEb37zm7bXVq1ahZCQEBdWRSRd\nffr0waRJkzBnzhwAwEsvvQSZjL+vutrcuXPx4osvIjk5GU1NTXj11VddXZJbE+y82YOIiIjcDCM5\nERERuR0GGCIiInI7DDBERETkdhhgiIiIyO0wwBAREZHbYYAhIlFdvXoV8fHxSElJaduFd/ny5aip\nqXH4GCkpKWhubnb4/fPnz8exY8dup1wichMMMEQkuoCAAKSlpSEtLQ1btmxBcHAw3nrrLYfHp6Wl\nccEvImqHC9kRUbcbNWoUtm7dijNnzmDVqlVoampCY2Mj/vjHP2Lo0KFISUlBbGwsTp8+jdTUVAwd\nOhTZ2dmwWq14+eWXce3aNTQ1NWHq1KlYsGAB6urq8Pzzz6OyshIRERFoaGgAABQXF+O3v/0tAKC+\nvh5z587FrFmzXPmtE1EXYYAhom7V3NyM/fv3Y+TIkfjd736HdevWITw8/Geb23l5eSE9Pb3d2LS0\nNPj4+OB///d/UV9fj1/+8pcYN24cjhw5ArVaja1bt6KkpAQPPvggAODzzz9HVFQUXnvtNTQ0NGDb\ntm3d/v0SkTgYYIhIdBUVFUhJSQEA2Gw2JCUlYebMmVi9ejX+4z/+o+19JpMJNpsNQMv2Hj+VmZmJ\nGTNmAADUajXi4+ORnZ2N3NxcjBw5EkDLxqxRUVEAgHHjxmHz5s1YsWIF7r33XsydO1fU75OIug8D\nDBGJ7vo9MDeqra2FUqn82evXKZXKn70mCEK7z+12OwRBgN1ub7fXz/UQFB0djU8//RQ//PAD9u7d\ni9TUVGzZsuVOvx0ikgDexEtELqHVahEaGopvvvkGAHDhwgWsXbu2wzHDhg3D4cOHAQAWiwXZ2dmI\ni4tDdHQ0Tp48CQAoKirChQsXAAB79uyBwWDAmDFj8Morr6CoqAhNTU0ifldE1F04A0NELrNq1Sq8\n/vrreOedd9DU1IQVK1Z0+P6UlBS8/PLLWLhwIaxWK55++mmEhoZi6tSpOHDgABYsWIDQ0FDo9XoA\nwMCBA/HKK69ApVLBbrfjySefhELB/+0R9QTcjZqIiIjcDi8hERERkdthgCEiIiK3wwBDREREbocB\nhoiIiNwOAwwRERG5HQYYIiIicjsMMEREROR2GGCIiIjI7fx/3MSmALmgnjYAAAAASUVORK5CYII=\n",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "flxmFt0KKxk9"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Linear Scaling\n",
+ "It can be a good standard practice to normalize the inputs to fall within the range -1, 1. This helps SGD not get stuck taking steps that are too large in one dimension, or too small in another. Fans of numerical optimization may note that there's a connection to the idea of using a preconditioner here."
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "Dws5rIQjKxk-",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def linear_scale(series):\n",
+ " min_val = series.min()\n",
+ " max_val = series.max()\n",
+ " scale = (max_val - min_val) / 2.0\n",
+ " return series.apply(lambda x:((x - min_val) / scale) - 1.0)"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "MVmuHI76N2Sz"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Task 1: Normalize the Features Using Linear Scaling\n",
+ "\n",
+ "**Normalize the inputs to the scale -1, 1.**\n",
+ "\n",
+ "**Spend about 5 minutes training and evaluating on the newly normalized data. How well can you do?**\n",
+ "\n",
+ "As a rule of thumb, NN's train best when the input features are roughly on the same scale.\n",
+ "\n",
+ "Sanity check your normalized data. (What would happen if you forgot to normalize one feature?)\n"
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "yD948ZgAM6Cx",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 656
+ },
+ "outputId": "397dd3f0-5a22-428b-96db-e4f4dbdb9408"
+ },
+ "cell_type": "code",
+ "source": [
+ "def normalize_linear_scale(examples_dataframe):\n",
+ " \"\"\"Returns a version of the input `DataFrame` that has all its features normalized linearly.\"\"\"\n",
+ " #\n",
+ " # Your code here: normalize the inputs.\n",
+ " #\n",
+ " processed_features = pd.DataFrame()\n",
+ " processed_features[\"latitude\"] = linear_scale(examples_dataframe[\"latitude\"])\n",
+ " processed_features[\"longitude\"] = linear_scale(examples_dataframe[\"longitude\"])\n",
+ " processed_features[\"housing_median_age\"] = linear_scale(examples_dataframe[\"housing_median_age\"])\n",
+ " processed_features[\"total_rooms\"] = linear_scale(examples_dataframe[\"total_rooms\"])\n",
+ " processed_features[\"total_bedrooms\"] = linear_scale(examples_dataframe[\"total_bedrooms\"])\n",
+ " processed_features[\"population\"] = linear_scale(examples_dataframe[\"population\"])\n",
+ " processed_features[\"households\"] = linear_scale(examples_dataframe[\"households\"])\n",
+ " processed_features[\"median_income\"] = linear_scale(examples_dataframe[\"median_income\"])\n",
+ " processed_features[\"rooms_per_person\"] = linear_scale(examples_dataframe[\"rooms_per_person\"])\n",
+ " return processed_features\n",
+ "\n",
+ "normalized_dataframe = normalize_linear_scale(preprocess_features(california_housing_dataframe))\n",
+ "normalized_training_examples = normalized_dataframe.head(12000)\n",
+ "normalized_validation_examples = normalized_dataframe.tail(5000)\n",
+ "\n",
+ "_ = train_nn_regression_model(\n",
+ " my_optimizer=tf.train.GradientDescentOptimizer(learning_rate=0.007),\n",
+ " steps=1000,\n",
+ " batch_size=50,\n",
+ " hidden_units=[10, 10],\n",
+ " training_examples=normalized_training_examples,\n",
+ " training_targets=training_targets,\n",
+ " validation_examples=normalized_validation_examples,\n",
+ " validation_targets=validation_targets)"
+ ],
+ "execution_count": 10,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 217.11\n",
+ " period 01 : 126.87\n",
+ " period 02 : 113.74\n",
+ " period 03 : 106.71\n",
+ " period 04 : 97.54\n",
+ " period 05 : 86.28\n",
+ " period 06 : 78.31\n",
+ " period 07 : 76.00\n",
+ " period 08 : 74.73\n",
+ " period 09 : 73.36\n",
+ "Model training finished.\n",
+ "Final RMSE (on training data): 73.36\n",
+ "Final RMSE (on validation data): 75.50\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGACAYAAACz01iHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xl4VOX5//H3JJOQPWSysWdhCYth\nT2UR2RTCYgVF3KC0Veu3QrVKq7VFq0VRtLV1w7VuUH+lUhdQFKWIgsoaRAgkYUkgBLKvZCHJ5Pz+\nCBkJkDCBTGaSfF7X5SWznHPumfvMxc15nvs8JsMwDERERERaETdnByAiIiLSVCpgREREpNVRASMi\nIiKtjgoYERERaXVUwIiIiEirowJGREREWh2zswMQcWUxMTH06NEDd3d3AKxWK3FxcSxatAgfH5+L\n3u9//vMfZs+efc7z77//Pg8++CAvv/wy48ePtz1fUVHBqFGjmDRpEk8++eRFH9deR48eZcmSJaSm\npgLg7e3NggULuOqqqxx+7KZYtmwZR48ePec72bp1K7fddhvdunU7Z5vPPvuspcK7JMeOHWPixIlE\nRUUBYBgGISEh/OlPf6J///5N2tff/vY3unTpws0332z3Nh999BGrVq1i+fLlTTqWSEtRASNyAcuX\nL6dTp04AVFZWcu+99/LKK69w7733XtT+cnJyeP31189bwAB07tyZjz/+uF4B8+WXXxIQEHBRx7sY\nv/vd77j22mt5+eWXAdi9ezfz5s3j008/pXPnzi0Wx6Xo3LlzqylWGuLu7l7vM6xdu5b58+ezbt06\nPD097d7PwoULHRGeiFNpCEmkCTw9PRkzZgz79+8H4NSpUzz88MNMnjyZKVOm8OSTT2K1WgFISkri\npptuIj4+nmuvvZZNmzYBcNNNN3H8+HHi4+OprKw85xhDhw5l69atlJeX255bu3Yto0ePtj2urKzk\nscceY/LkyUyYMMFWaADs2rWL6667jvj4eKZOncq3334L1P6L/oorruCdd97hmmuuYcyYMaxdu/a8\nnzMlJYVBgwbZHg8aNIh169bZCrkXXniBsWPHMmPGDF599VUmTJgAwB/+8AeWLVtm2+7MxxeKa8mS\nJcyZMweAnTt3cv3113P11Vcze/Zs0tPTgdorUb/97W8ZP348c+bMITMz8wIZO7/333+fBQsWMG/e\n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\nIiIirY4KGBEREWl1VMCIiIi0MRs3/s+u9z377N84fjyjwdf/8If7miukZqcCRkREpA05ceI469ev\ns+u999yzkC5dujb4+pNPPtNcYTW7VrmUgIiIiJzfM88sZf/+RMaMiWPSpCmcOHGcf/xjGU888Rdy\ncrIpLy/nl7/8FaNHj2HBgl9x33338+WX/6O09CRHjx4hI+MYd9+9kJEjRzNt2kQ++eR/LFjwK+Li\nLichYQeFhYUsXfp3QkJC+MtfHiIz8wSxsQPZsGE9H3ywtsU+pwoYERERB/nPhoNsT8o+53l3dxNW\nq3FR+4zrG8bsCb0afP3mm+fy/vv/ISqqJ0ePprFs2esUFOTzk5+MYMqU6WRkHOOhh/7A6NFj6m2X\nnZ3FX//6HFu2fMtHH/2XkSNH13vd19eXZ599iZdeep6vv95Aly7dqKw8xauvvsU332ziP//5fxf1\neS6WCpgz5JXnk5N9glBTZ2eHIiIicsn69RsAgL9/APv3J7J69fuYTG4UFxed896BAwcDEBYWxsmT\nJ895fdCgIbbXi4qKOHIkldjYQQCMHDkad/eWXd/JoQXMU089xc6dO6murubOO+8kNjaWBx98kOrq\nasxmM08//TShoaGsXr2at99+Gzc3N2bPns0NN9zgyLAa9HHq5+zI+p7HRv2RwA4BTolBRETajtkT\nep33akloqD85OSUOP76HhwcAX3zxGcXFxbz44usUFxdz++1zz3nvmQWIYZx7dejs1w3DwM2t9jmT\nyYTJZGru8BvlsAJmy5YtHDhwgJUrV1JQUMDMmTO5/PLLmT17NlOnTuVf//oXb775JgsWLODFF19k\n1apVeHh4MGvWLK6++mo6duzoqNAa1M2vC9syE9iXl8zILnEtfnwREZFL5ebmhtVqrfdcYWEhnTt3\nwc3Nja++2kBVVdUlH6dr1262bqdt27acc0xHc1gXUlxcHM8++ywAAQEBlJeX8+c//5nJkycDEBQU\nRGFhIbt37yY2NhZ/f3+8vLwYOnQoCQkJjgqrUQOCYwBIzE92yvFFREQuVUREFMnJSZSW/jgMNG7c\nBL79dhP33PNrvL29CQsL4803X7uk44waNYbS0lJ+/evb2L17FwEBgZcaepOYjPNdJ2pmK1euZMeO\nHTz99NMAWK1W5s2bx/z588nNzWXPnj388Y9/BOAf//gHnTt35sYbb2xwf9XVVszm5h9rMwyDBR8v\n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\ndmoNI4mIiNRqtICprq6u93jLli22P7fC+9+1Oj+uTh2Au8mdRK1OLSIiAlyggDGZTPUen1m0nP2a\nNL+6dur9qSX07BhFekkGxZW6c6OIiEiT5sCoaGlZ3h3M9OnekSOZJfQ83U69P0/t1CIiIo0u5lhU\nVMR3331ne1xcXMyWLVswDIPiYt1YrSXERgez/0iBrZ06MS+JyzsPc3JUIiIiztVoARMQEFBv4q6/\nvz8vvvii7c/ieLHRFv7zJRw9Ch1DAknKP0CNUYObSR3wIiLSfjVawCxfvryl4pAGnNlOPaJPDN+e\n2EZacTrRgRHODk1ERMRpGv1n/MmTJ3nrrbdsj//9739z7bXXcvfdd5Obm+vo2ISz2qlRO7WIiAhc\noIB5+OGHycvLAyA1NZVnnnmGBx54gFGjRvH444+3SIByxurU2YG4mdxI1OrUIiLSzjVawKSnp7Nw\n4UIA1q1bR3x8PKNGjeKmm27SFZgWVK+dOjCSoyXHKKk86eywREREnKbRAsbHx8f2523btjFixAjb\nY7VUt5zztlNrdWoREWnHGi1grFYreXl5HD16lF27djF69GgASktLKS8vb5EApVbdMJLbyXCgtp1a\nRESkvWq0C+mOO+5g6tSpVFRUsGDBAgIDA6moqOCWW25h9uzZLRWjcG479f78FLVTi4hIu9VoATN2\n7Fg2b97MqVOn8PPzA8DLy4vf//73XHHFFS0SoNQ6s536J717syVzB0eKjxEV2MPZoYmIiLS4Rv/5\nfvz4cXJyciguLub48eO2/6Kjozl+/HhLxSjUb6cOMdXeA0bt1CIi0l41egVmwoQJREVFERpaexv7\nsxdzfOeddxwbndQzMDqYr74/Tkm2f207dX4y06InOTssERGRFtdoAbN06VI++ugjSktLmTZtGtOn\nT8disbRUbHKWvnXt1IdLiR4UwaHCNE5WluLn6evs0ERERFpUo0NI1157LW+88Qb/+Mc/OHnyJLfe\neiu33347a9asoaKioqVilNNs7dRZJfT064WBoXZqERFpl+xqYencuTN33XUXn376KZMnT+axxx7T\nJF4nsbVTl9a1U+uuvCIi0v40OoRUp7i4mNWrV/P+++9jtVq58847mT59uqNjk/Ooa6dOP2oiMNif\n/fnJaqcWEZF2p9ECZvPmzfz3v/9l7969TJo0iSeffJI+ffq0VGxyHme2U8f17sPWzJ2kl2QQEdDd\n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\nQgghks7/AfYqbva9FhIBAAAAAElFTkSuQmCC\n",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "jFfc3saSxg6t"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below for one possible solution."
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "Ax_IIQVRx4gr"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Since normalization uses min and max, we have to ensure it's done on the entire dataset at once. \n",
+ "\n",
+ "We can do that here because all our data is in a single DataFrame. If we had multiple data sets, a good practice would be to derive the normalization parameters from the training set and apply those identically to the test set."
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "D-bJBXrJx-U_",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 656
+ },
+ "outputId": "47430111-2bb9-442c-aa72-8638a6259e52"
+ },
+ "cell_type": "code",
+ "source": [
+ "def normalize_linear_scale(examples_dataframe):\n",
+ " \"\"\"Returns a version of the input `DataFrame` that has all its features normalized linearly.\"\"\"\n",
+ " processed_features = pd.DataFrame()\n",
+ " processed_features[\"latitude\"] = linear_scale(examples_dataframe[\"latitude\"])\n",
+ " processed_features[\"longitude\"] = linear_scale(examples_dataframe[\"longitude\"])\n",
+ " processed_features[\"housing_median_age\"] = linear_scale(examples_dataframe[\"housing_median_age\"])\n",
+ " processed_features[\"total_rooms\"] = linear_scale(examples_dataframe[\"total_rooms\"])\n",
+ " processed_features[\"total_bedrooms\"] = linear_scale(examples_dataframe[\"total_bedrooms\"])\n",
+ " processed_features[\"population\"] = linear_scale(examples_dataframe[\"population\"])\n",
+ " processed_features[\"households\"] = linear_scale(examples_dataframe[\"households\"])\n",
+ " processed_features[\"median_income\"] = linear_scale(examples_dataframe[\"median_income\"])\n",
+ " processed_features[\"rooms_per_person\"] = linear_scale(examples_dataframe[\"rooms_per_person\"])\n",
+ " return processed_features\n",
+ "\n",
+ "normalized_dataframe = normalize_linear_scale(preprocess_features(california_housing_dataframe))\n",
+ "normalized_training_examples = normalized_dataframe.head(12000)\n",
+ "normalized_validation_examples = normalized_dataframe.tail(5000)\n",
+ "\n",
+ "_ = train_nn_regression_model(\n",
+ " my_optimizer=tf.train.GradientDescentOptimizer(learning_rate=0.005),\n",
+ " steps=2000,\n",
+ " batch_size=50,\n",
+ " hidden_units=[10, 10],\n",
+ " training_examples=normalized_training_examples,\n",
+ " training_targets=training_targets,\n",
+ " validation_examples=normalized_validation_examples,\n",
+ " validation_targets=validation_targets)"
+ ],
+ "execution_count": 11,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 158.29\n",
+ " period 01 : 110.84\n",
+ " period 02 : 98.37\n",
+ " period 03 : 83.45\n",
+ " period 04 : 76.19\n",
+ " period 05 : 73.93\n",
+ " period 06 : 72.32\n",
+ " period 07 : 71.55\n",
+ " period 08 : 71.06\n",
+ " period 09 : 70.32\n",
+ "Model training finished.\n",
+ "Final RMSE (on training data): 70.32\n",
+ "Final RMSE (on validation data): 72.59\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "MrwtdStNJ6ZQ"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Task 2: Try a Different Optimizer\n",
+ "\n",
+ "** Use the Adagrad and Adam optimizers and compare performance.**\n",
+ "\n",
+ "The Adagrad optimizer is one alternative. The key insight of Adagrad is that it modifies the learning rate adaptively for each coefficient in a model, monotonically lowering the effective learning rate. This works great for convex problems, but isn't always ideal for the non-convex problem Neural Net training. You can use Adagrad by specifying `AdagradOptimizer` instead of `GradientDescentOptimizer`. Note that you may need to use a larger learning rate with Adagrad.\n",
+ "\n",
+ "For non-convex optimization problems, Adam is sometimes more efficient than Adagrad. To use Adam, invoke the `tf.train.AdamOptimizer` method. This method takes several optional hyperparameters as arguments, but our solution only specifies one of these (`learning_rate`). In a production setting, you should specify and tune the optional hyperparameters carefully."
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "61GSlDvF7-7q",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 656
+ },
+ "outputId": "da6fbce1-b5ff-41a0-bc0a-5873cb154f50"
+ },
+ "cell_type": "code",
+ "source": [
+ "#\n",
+ "# YOUR CODE HERE: Retrain the network using Adagrad and then Adam.\n",
+ "#\n",
+ "_, adagrad_training_losses, adagrad_validation_losses = train_nn_regression_model(\n",
+ " my_optimizer=tf.train.AdagradOptimizer(learning_rate=0.05),\n",
+ " steps=5000,\n",
+ " batch_size=50,\n",
+ " hidden_units=[10, 10],\n",
+ " training_examples=normalized_training_examples,\n",
+ " training_targets=training_targets,\n",
+ " validation_examples=normalized_validation_examples,\n",
+ " validation_targets=validation_targets)"
+ ],
+ "execution_count": 13,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 110.31\n",
+ " period 01 : 92.95\n",
+ " period 02 : 76.54\n",
+ " period 03 : 73.03\n",
+ " period 04 : 71.89\n",
+ " period 05 : 71.18\n",
+ " period 06 : 70.53\n",
+ " period 07 : 70.01\n",
+ " period 08 : 69.69\n",
+ " period 09 : 69.46\n",
+ "Model training finished.\n",
+ "Final RMSE (on training data): 69.46\n",
+ "Final RMSE (on validation data): 71.53\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGACAYAAACz01iHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xl4U2XePvD7JGmaLmnplu4tm+y0\nhbbQfaeU7eeCMgyIvOo476g4vsiMyow6Ku6+MiOjOOqMovg6Kg6CKMjWQltKC6WlrAXE0n3f9yU5\nvz+QKDYpLTSnabk/1+V1mZxvcr7pU+T2yTnPI4iiKIKIiIhoGJENdQNEREREA8UAQ0RERMMOAwwR\nERENOwwwRERENOwwwBAREdGwwwBDREREw45iqBsgMmcTJ06Ej48P5HI5AECr1SI4OBhPPfUUrK2t\nr/t9v/jiCyxZsqTX81u3bsXatWvxj3/8A7GxsfrnOzo6EBYWhsTERLzyyivXfd7+KioqwksvvYSC\nggIAgJWVFVatWoWEhASTn3sgNm7ciKKiol4/k6ysLNx///3w8vLq9ZrvvvtOqvZuSElJCeLj4zFm\nzBgAgCiKcHZ2xp///GdMmTJlQO/1xhtvwMPDA7/+9a/7/Zrt27fjyy+/xObNmwd0LiKpMMAQXcPm\nzZvh5uYGAOjq6sLq1avx7rvvYvXq1df1ftXV1fjnP/9pMMAAgLu7O7755purAkxKSgrs7Oyu63zX\n4w9/+ANuvfVW/OMf/wAA5OXlYeXKldi1axfc3d0l6+NGuLu7D5uwYoxcLr/qM+zcuRMPP/wwdu/e\nDaVS2e/3WbNmjSnaIxpS/AqJaACUSiUiIyNx9uxZAEBnZyeeeeYZzJ07F/PmzcMrr7wCrVYLAMjP\nz8fSpUuRlJSEW2+9FWlpaQCApUuXoqysDElJSejq6up1jpkzZyIrKwvt7e3653bu3Inw8HD9466u\nLrzwwguYO3cu4uLi9EEDAHJzc3HHHXcgKSkJ8+fPR0ZGBoDL/0cfERGBjz/+GIsWLUJkZCR27txp\n8HOeP38e/v7++sf+/v7YvXu3Psi99dZbiI6Oxm233Yb33nsPcXFxAIAnn3wSGzdu1L/u54+v1ddL\nL72Eu+++GwBw7NgxLF68GHPmzMGSJUtQXFwM4PJM1P/8z/8gNjYWd999NyoqKq4xYoZt3boVq1at\nwsqVK/Haa68hKysLS5cuxaOPPqr/y37Xrl1YuHAhkpKScM8996CoqAgA8Pe//x1PPfUU7rzzTmza\ntOmq93300UfxwQcf6B+fPXsWERER0Ol0+Otf/4q5c+di7ty5uOeee1BZWTngvufPn4+Ojg788MMP\nAIDPP/8cSUlJiIuLw2OPPYaOjg4Al3/uL7/8MhYtWoRdu3ZdNQ7Gfi91Oh2ef/55xMTE4M4770R+\nfr7+vEeOHMHtt9+O+fPnY968edi1a9eAeycadCIRGTVhwgSxvLxc/7ihoUFcvny5uHHjRlEURfHd\nd98VH3jgAbG7u1tsb28XFy9eLG7btk3UarXivHnzxB07doiiKIonTpwQg4ODxebmZjEzM1NMSEgw\neL7//Oc/4hNPPCH+4Q9/0L+2ublZjI+PF7ds2SI+8cQToiiK4ltvvSWuXLlS7OzsFFtbW8XbbrtN\nTE5OFkVRFBcuXCh+8803oiiK4ldffaU/V3FxsThlyhRx8+bNoiiK4s6dO8U5c+YY7OORRx4RY2Nj\nxY8++kj8/vvvrzp27tw5MSgoSKyqqhK7u7vFBx98UIyNjRVFURSfeOIJ8e2339bX/vxxX31NnTpV\n3Lp1q/7zBgcHi+np6aIoiuKOHTvE22+/XRRFUfzkk0/E5cuXi93d3WJdXZ0YGxur/5n8XF8/4ys/\n54CAALGgoEBfP336dDEjI0MURVEsLS0VAwMDxUuXLomiKIr/+te/xJUrV4qiKIobNmwQIyIixNra\n2l7v++2334rLly/XP37zzTfFdevWiefPnxcTExPFrq4uURRF8eOPPxa/+uoro/1d+blMnjy51/PB\nwcHixYsXxaNHj4qhoaFiRUWFKIqi+PTTT4uvvPKKKIqXf+6LFi0SOzo69I/ffvvtPn8vDxw4ICYm\nJootLS1ie3u7eOedd4p33323KIqieMcdd4hZWVmiKIpiQUGB+Nhjj/XZO5EUOANDdA0rVqxAUlIS\n4uPjER8fj5CQEDzwwAMAgAMHDmDJkiVQKBRQqVRYtGgRDh06hJKSEtTU1GDBggUAgOnTp8PDwwMn\nT57s1zkXLFiAb775BgCwb98+xMbGQib76Y9rSkoKli1bBqVSCWtra9x6663Ys2cPAGDbtm2YN28e\nACAwMFA/ewEAPT09uOOOOwAAU6dORVlZmcHzv/7661i+fDl27NiBhQsXIi4uDv/+978BXJ4dCQ4O\nhouLCxQKBRYuXNivz9RXX93d3ZgzZ47+/V1dXfUzTgsXLkRRURHKysqQnZ2NOXPmQKFQwMHB4aqv\n2X6pvLwcSUlJV/3z82tlRo8ejdGjR+sfq1QqhIaGAgAOHTqE2bNnw9fXFwBw1113ISsrCz09PQAu\nz0g5Ojr2OmdMTAzOnDmDhoYGAMDevXuRlJQEOzs71NXVYceOHWhsbMSKFStw22239evndoUoivj8\n88/h6uqK0aNHIzk5GfPnz4erqysA4Ne//rX+dwAAQkNDYWlpedV79PV7efToUURHR8PGxgYqlUo/\nVgDg5OSEbdu24eLFixg9ejTeeOONAfVOZAq8BoboGq5cA1NXV6f/+kOhuPxHp66uDvb29vpae3t7\n1NbWoq6uDmq1GoIg6I9d+UvM2dn5mucMDw/HU089hYaGBnz77bd46KGH9BfUAkBzczNefvllrF+/\nHsDlr5T8/PwAADt27MDHH3+M1tZW6HQ6iD/b7kwul+svPpbJZNDpdAbPb2lpifvvvx/3338/mpqa\n8N133+Gll16Cl5cXGhsbr7oex8nJ6Zqfpz992draAgCamppQXFyMpKQk/XGlUom6ujo0NjZCrVbr\nn7ezs0Nra6vB813rGpifj9svH9fX11/1GdVqNURRRH19vcHXXmFtbY2wsDAcOHAAgYGBaGpqQmBg\nIARBwN///nd88MEHWLduHYKDg/Hcc89d83oirVar/zmIoojx48dj48aNkMlkaG5uxt69e5Genq4/\n3t3dbfTzAejz97KxsREajeaq56946aWX8M477+Dee++FSqXCY489dtX4EA0FBhiifnJ0dMSKFSvw\n+uuv45133gEAODs76/9vGwAaGhrg7OwMJycnNDY2QhRF/V8WDQ0N/f7L3sLCArGxsdi2bRsKCwsx\nY8aMqwKMRqPBfffd12sGorKyEk899RS2bNmCyZMn49KlS5g7d+6APmddXR3Onj2rnwGxs7PDkiVL\nkJaWhvPnz0OtVqO5ufmq+it+GYoaGxsH3JdGo8HYsWOxdevWXsfs7OyMnnswOTk5ITc3V/+4sbER\nMpkMDg4O13zt3LlzsXfvXtTX12Pu3Ln68Q8JCUFISAja2trw6quv4n//93+vOZPxy4t4f06j0eD2\n22/HE088MaDPZez3sq+frbOzM55++mk8/fTTSE9PxyOPPILIyEjY2Nj0+9xEg41fIRENwL333ovc\n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\nJJW4ZXT69GmcOnWK/zk6zMGDB/GFL3wBfr8ffr8fP/zhD0vdJAJQVVWFjz/+GAAwNDSEqqqqEreo\nvPESkq2vry/vw1RdXY3e3t4StogyJEmC1+sFAOzevRu33XYbw4tDbN++HVu2bCl1M2iEtrY2JBIJ\nfOtb38LGjRtx8ODBUjeJAHzpS19CR0cH7rrrLmzatAnf//73S92kssYemIvgDAvO88Ybb2D37t34\n3e9+V+qmEIBXXnkF119/PebNm1fqptAYBgYG8Nxzz6GjowNf//rX8fbbb0MQhFI3a1b761//iqam\nJvz2t7/FyZMnsXXrVo4dmwIGGFtdXR36+vqy2z09PaitrS1hiyjXgQMH8Mtf/hK/+c1vEAgESt0c\nArB//36cP38e+/fvR1dXF1RVRUNDA1avXl3qps16NTU1uOGGGyDLMlpaWuDz+dDf34+amppSN21W\ne//997FmzRoAwKJFi9DT08PL4VPAS0i2W265Ba+99hoA4Pjx46irq+P4F4cIh8N49tln8atf/QqV\nlZWlbg7Zfvazn+Hll1/Gn/70Jzz66KN47LHHGF4cYs2aNTh06BAMw0AoFEIsFuN4CweYP38+jh49\nCgBob2+Hz+djeJkC9sDYbrzxRixZsgQbNmyAIAjYtm1bqZtEtn/84x8IhUL4zne+k923fft2NDU1\nlbBVRM5VX1+Pe+65B1/5ylcAAE888QREkX+vltr69euxdetWbNq0Cbqu4+mnny51k8qaYHKwBxER\nEZUZRnIiIiIqOwwwREREVHYYYIiIiKjsMMAQERFR2WGAISIiorLDAENE06qtrQ1Lly5Fa2trdhbe\nzZs3Y2hoqOB/o7W1Fel0uuDjv/rVr+Lw4cOX0lwiKhMMMEQ07aqrq7Fz507s3LkTL774Iurq6vD8\n888X/P6dO3fygV9ElIcPsiOiolu5ciV27dqFkydPYvv27dB1HZqm4amnnsLixYvR2tqKRYsW4cSJ\nE3jhhRewePFiHD9+HKlUCk8++SS6urqg6zoefPBBbNy4EfF4HN/97ncRCoUwf/58JJNJAEB3dze+\n973vAQASiQTWr1+PL3/5y6X80YnoMmGAIaKiSqfTeP3117F8+XI8/vjj2LFjB1paWkZNbuf1evH7\n3/8+7707d+5EMBjET3/6UyQSCdx///249dZb8c9//hNutxu7du1CT08P7rzzTgDAnj17sGDBAjzz\nzDNIJpN46aWXiv7zEtH0YIAhomnX39+P1tZWAIBhGFixYgUeeeQR/PznP8cPfvCD7HGRSASGYQCw\npvcY6ejRo3j44YcBAG63G0uXLsXx48fxySefYPny5QCsiVkXLFgAALj11lvxhz/8AVu2bMHatWux\nfv36af05iah4GGCIaNplxsDkCofDUBRl1P4MRVFG7RMEIW/bNE0IggDTNPPm+smEoIULF+Lvf/87\n3n33XezduxcvvPACXnzxxan+OETkABzES0QlEQgE0NzcjHfeeQcAcObMGTz33HPjvue6667DgQMH\nAACxWAzHjx/HkiVLsHDhQnzwwQcAgM7OTpw5cwYA8Le//Q0ffvghVq9ejW3btqGzsxO6rk/jT0VE\nxcIeGCIqme3bt+NHP/oRfv3rX0PXdWzZsmXc41tbW/Hkk0/ia1/7GlKpFB577DE0NzfjwQcfxFtv\nvYWNGzeiubkZ1157LQDgqquuwrZt26CqKkzTxDe/+U3IMn/tEc0EnI2aiIiIyg4vIREREVHZYYAh\nIiKissMAQ0RERGWHAYaIiIjKDgMMERERlR0GGCIiIio7DDBERERUdhhgiIiIqOz8P7Ic5FKLRvjD\nAAAAAElFTkSuQmCC\n",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "UySPl7CAQ28C"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Task 3: Explore Alternate Normalization Methods\n",
+ "\n",
+ "**Try alternate normalizations for various features to further improve performance.**\n",
+ "\n",
+ "If you look closely at summary stats for your transformed data, you may notice that linear scaling some features leaves them clumped close to `-1`.\n",
+ "\n",
+ "For example, many features have a median of `-0.8` or so, rather than `0.0`."
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "QWmm_6CGKxlH",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 715
+ },
+ "outputId": "43788863-9ec7-404d-cd1d-3a78371f66ff"
+ },
+ "cell_type": "code",
+ "source": [
+ "_ = normalized_training_examples.hist(bins=20, figsize=(18, 12), xlabelsize=10)"
+ ],
+ "execution_count": 18,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAABB8AAAK6CAYAAABxOfTPAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3XtclGX+//H3MDBL6JCijLuWWVmp\n5SnXMvFQYCTSQTJPsNqJbTPRskgl0rS1DVLx4SHK1iOrq7FOVmQumIlbJrIZrattW9l+2/XsYCgq\nEIjz+8OH89MEZMYZbg6v51/ONXPfn+u6h/nM7Weu675NTqfTKQAAAAAAAB/xM7oDAAAAAACgcaP4\nAAAAAAAAfIriAwAAAAAA8CmKDwAAAAAAwKcoPgAAAAAAAJ+i+AAAAAAAAHyK4gN8at++fbr55psN\ni79w4UK9+OKLbm2Tn5+vyMjIKp978cUXtXDhQm90DQBqVBf585///Kfi4+N9GsObbr75Zu3bt08f\nffSRXnjhBaO7AwD1Vk3ns+fs3LlT//73vyVJq1at0rx58y5qd0dkZKTy8/Pd7yyaDH+jOwAAAIzR\nrVs3LV261OhuuC0yMvKSJ9UAgJq98847+vWvf61OnTpp9OjRVbYD3kTxAXXCbrcrIyNDxcXFmjRp\nkqKjozV//nzl5ORIknr06KGXXnpJQUFBioiI0KxZs9SrVy9Jcj3u0aOHpk+frh07dujMmTPq2LGj\nUlNT1bx5c23atEnz589XSUmJ2rdvrzlz5igkJESSVF5erueee07/+Mc/1Lp1ay1cuFBt2rTRgQMH\nNG3aNO3bt08BAQH67W9/q5iYmAv6XVRUpMTERP3www+64YYbFBgYqF/+8peSzlaI//znP8vpdKp5\n8+ZKSUnRjTfeWIdHFUBT4Mv8+dVXX2nq1Kn66KOPtHDhQhUVFenw4cP697//rZYtW+qNN96QzWbT\nV199pWeffVaS9MADDygnJ0dTp05V7969q+33woULVVhYqEOHDumrr75Snz59FB0drYULF+rIkSOa\nOXOmwsPDVV5erlmzZunTTz9VRUWFRowYobFjx0qS/va3v+mVV16Rv7+/HnroIde+161bp6ysLK1Y\nsUKFhYWaMmWK9u/fr/Lyco0ZM0aPPfaYa/y/+93vZLfbdejQId13331KSkqq8XiXlpbqhRde0Ndf\nf62KigoNGjRIU6ZMkaQaj0NN30MAYJTqctqaNWv0/vvva/Pmzfrxxx918uRJHTp0SF26dKmy/Q9/\n+IOks7n93OPdu3drypQpOn36tO68884L4pITURWWXcDnzpw5o4qKCn3wwQd64YUXNG/ePP31r3/V\nJ598onXr1unDDz9UcXGxVqxYUeN+tm7dqn379ik7O1sbN27UDTfcoC+//FJ79+7V5MmTlZaWpo8/\n/li9e/fWjBkzXNvl5eUpMTFRmzdvVkhIiOx2uyRp2rRpuv3225WTk6O33npLr7zyivbt23dBzMWL\nF6tly5bavHmzXnrpJW3dulWSdPLkSc2fP19r165Vdna24uPjtWXLFm8eNgDwef78uezsbCUnJ2vT\npk1q1aqV3nnnHUln8+Wjjz6qjRs3qnnz5vrhhx9q1f8tW7bo1Vdf1QcffKDs7GxXv8eOHavFixdL\nOptn9+zZow8++EDr169XTk6OcnNzVVlZqRdffFHTp0/XX//6V/n5+amysvKiGG+++aauvvpqZWdn\nKyMjQ2lpaTp48KDr+c8//1yZmZl65513tGrVKh06dKjGPq9Zs0anTp1Sdna23n33Xa1bt047duyo\n8Thc6nsIAIxSXU6LjY1Vt27dNGnSJFfBVlK17VWZMWOGHn74YeXk5OjWW291nUeTE1Edig/wOafT\n6ZpRcPPNN+vQoUPasmWLYmJiFBQUJLPZrKFDh+qzzz6rcT8hISH6/vvv9dFHH6m0tFQTJ05U//79\n9cknn+j222/XTTfdJEkaNWqUNm/e7DpJ/fWvf62rrrpKktSpUycdPnxYFRUV2rZtm+Li4iRJV111\nlXr37q3t27dfEHPHjh0aPHiwJOnqq6/W7bffLkn6xS9+IZPJJLvdrsLCQg0ePFhPPPGEl44YAJzl\n6/z5c7169dJVV10lk8mkzp076+DBgyorK9NXX32l++67T5L0m9/8Rk6ns1b9v/XWW9WqVSu1bNlS\noaGhGjBggCTppptu0pEjRyRJubm5iouLk8ViUVBQkIYMGaKNGzfqhx9+UHl5ufr16ydJevDBB6uM\nMXXqVE2bNk2S1K5dO4WGhl5QSL7//vtlNpvVpk0btWrV6oLCRFUef/xxvfHGGzKZTLryyit14403\nat++fTUeh0t9DwGAUarLaZfrp59+0q5duxQdHS1JioqK0hVXXCGJnIjqsewCPmc2m13JyM/PT2fO\n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\nYr355pv6/e9/73q+VatWcjgcatGihUJCQlztISEhcjgc6tixY7X7btkySP7+7s+MCA21ur2NtxgZ\n2xN10d/6ekwaW7+MHg+fOwBAXfK4+PDaa69p2rRpeu+99yRJpaWlslgskv7/iWthYWGVJ67nt/v5\n+clkMqm8vNy1fVXq6wntpfbflL/Yic9731Tj13fvv/++2rZtq6VLl+rf//63EhISXEViSXI6nVVu\nV137+YqKStzuT2ioVQ7HCbe38wYjY3uqLvpbX49JY+qX0X97Rsd3NzZ5HQAaPo+KD++995569OhR\n7XUa3D1xbcgntDXtvymfUBOf976hxG+KJ7QFBQXq16+fJKlTp0766aefdPr0adfzhw8fls1mk81m\n0//93/9d1A4AAAC4y6NrPmzZskUff/yxRowYobVr1+qNN95QUFCQysrKJF144lpYWOja7siRI652\nh8MhSaqoqJDT6axx1gMAwHvat2+vnTt3SpL279+vZs2aqUOHDtqxY4ckaePGjerfv7/uuOMObdmy\nReXl5Tp8+LCOHDmiG264wciuAwAAoIHyaObDvHnzXP9euHChrrrqKn355ZfKycnRkCFDXCeu3bt3\n19SpU1VcXCyz2ayCggIlJyfr5MmTys7OVv/+/ZWbm6vevXt7bUAAgJqNHDlSycnJGj16tE6fPq0Z\nM2YoNDRUL730ks6cOaPu3bsrLCxMkjRixAiNHj1aJpNJM2bMkJ/fZV2nGAAAAE3UZd1q83wTJkzQ\nlClTlJmZqbZt2yomJkYBAQFKTExUfHy8TCaTa11xdHS0tm3bptjYWFksFqWmpnqrGwCAS2jWrJnm\nz59/Ufvq1asvahszZozGjBlTF90CAABAI3bZxYcJEya4/r18+fKLno+KilJUVNQFbWazWSkpKZcb\nGgAAAEAj8XjqZqO7AMCHvDbzAQAAoCny5D9MH6QN8UFPAACov1i8CwAAAAAAfIriAwAAAAAA8CmK\nDwAAAAAAwKe45gMAAA0IF2QDAAANEcUHAAAAwECzZs3SF198odOnT+vJJ59U165dNXnyZFVWVio0\nNFSzZ8+WxWJRVlaWMjIy5OfnpxEjRmj48OGqqKhQUlKSDhw44LqjXLt27YweEgBchOIDAAAAYJDt\n27fru+++U2ZmpoqKivTggw+qT58+iouL0+DBgzV37lzZ7XbFxMQoPT1ddrtdAQEBGjZsmCIjI5Wb\n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\nuhM/PDzcefLkSbe28Wb8cyoqKpyjRo1ynjx58rLe7587deqUc/To0c6pU6dW+fnx9fsPzzTlPF3b\n+OTqxpOrydPk6YaKXG1crjYiTzudxuZqzqmbZq5u8MsuQkND9frrr8tqtVb5/M6dO9W1a1dZrVYF\nBgaqZ8+eKigoUF5eniIjIyWdrRoVFBR4FN+d/SxdulSPPPKI/Py8c9g9HUNdjf2KK65QVlaWmjdv\nLpPJpBYtWujYsWMexTo/5t133y1J6tChg44fP66TJ09KOlsVvPLKK/WrX/1Kfn5+uvPOO5WXl1fj\nNt6ML0nr1q3TL3/5S0lSSEiIioqKPB6rJ/G9tc3l7uvdd9/VoEGD1KxZM4/iVMdisWjx4sWy2WwX\nPVcX7z8805TztLvxvbGdu/shV3s3V5OnydMNFbnauFxtRJ4+F9eoXM05ddPM1Q2++HDFFVe4psNU\npbCwUCEhIa7HISEhcjgcF7T7+fnJZDKpvLzc7fi13U9ZWZm2bt2qgQMHutqys7P12GOP6cknn9Te\nvXt9Eru8vFyJiYkaNWqUli9f7lafvRH/3H2mv/nmG+3fv1/du3eXdHZaX3x8vB555BH961//citm\ny5YtXY/PvZ+S5HA4qn2vq9vGXZfa17nxHjlyRJ999pnuvPNOSWenBo4dO1axsbH67LPPPIpdm/iS\nNH36dMXGxmrOnDlyOp11Ov5z1q5dq2HDhrkee/p+/5y/v78CAwOrfK4u3n94pinn6drGJ1c3nlxN\nniZPN1TkauNytRF5+lxco3I159RNM1c3qGs+rF27VmvXrr2gbcKECerfv3+t9+Gs5s6i1bVfKv7O\nnTtrtZ9NmzbprrvuclVo77zzTt1xxx267bbb9OGHH+qVV17RW2+95fXYkydP1gMPPCCTyaTRo0er\nV69eF73G12P/4Ycf9PzzzystLU0BAQHq3r27QkJCdNddd+nLL7/UlClT9MEHH1yyD1WpTd+9sY07\n+zp69KjGjh2r6dOnq2XLlrr22ms1fvx4DR48WHv37tXDDz+sjRs3ymKxeD3+008/rf79++vKK69U\nQkKCcnJyatVnb8WXpC+//FLXX3+960vDm++3N3hz/LhYU87TlxOfXO2dbdzZV13lavK0+8jTvkeu\nNi5X19c8XZu+e2ub2u6Hc+rGl6sbVPFh+PDhbl9AxmazqbCw0PX4yJEj6tGjh2w2mxwOhzp16qSK\nigo5nc5L/uFWFT8pKalW+8nNzVVsbKzr8c8vaDJnzhyfxD4/5h133KFvv/22Tsd+6NAhJSQkaNas\nWercubOks9N0OnToIEm69dZb9eOPP6qysrLGavs5Vb2foaGhVT53+PBh2Ww2BQQEVLuNu2qKL0kn\nT57UE088oYkTJ6pfv36SpDZt2ig6OlqSdM0116h169Y6fPiwRxdjulT8mJgY178HDBjger/ravyS\ntGXLFvXp08f1+HLe78vpmy/ef1xaU87TlxOfXN14cjV5uvZ9I08bh1xtXK6uL3laMjZXc07dNHN1\ng192cSndu3fXrl27VFxcrFOnTqmgoEC9evVS3759lZ2dLelsEuvdu7dH+6/tfnbv3q1OnTq5Hr/y\nyivasWOHpLPTZ85dtdWbsf/zn/8oMTFRTqdTp0+fVkFBgW688cY6HfuLL76oGTNm6JZbbnG1LV68\nWOvXr5d09iqrISEhtf7Q9O3b11V5/Oqrr2Sz2VzVwKuvvlonT57Uvn37dPr0aeXm5qpv3741buPJ\nmGvaV2pqqh555BENGDDA1ZaVlaWlS5dKOjuN6ejRo64rMnsz/okTJxQfH++apvf555+73u+6Gr8k\n7dq164K/9ct5v91RF+8/fKMx5+naxCdXN65cTZ6uHnm6YSNX+y5XG5Gnz8U1KldzTt00c7XJ2cDn\ntm3ZskVLly7Vf/7zH4WEhCg0NFTLli3TH//4R91222269dZblZ2draVLl7qmSD3wwAOqrKzU1KlT\n9cMPP8hisSg1NVW/+tWv3I5f3X7Ojy9Jffr0UV5enmu7b775RtOnT5e/v79MJpNeeeUVtW/f3uux\nZ8+ere3bt8vPz08RERF66qmn6mzsLVq0UExMzAUV6UcffVS33HKLJk2a5Ere7t6mZc6cOdqxY4dM\nJpOmT5+uf/3rX7JarYqMjNTnn3/uqnjfc889io+Pr3Kb8z/I7qoufr9+/S54zyXpvvvu07333qvn\nn39excXFqqio0Pjx413r1rwZPzIyUhkZGXrvvff0i1/8QjfffLOmTZsmk8lUJ+M/d6Gk+++/X8uX\nL1fr1q0lna3UX877fb5zt9nav3+//P391aZNG0VEROjqq6+us/cf7mvKebq28cnVjStXk6fJ0w0R\nudq4XG1UnpaMzdWcUze9XN3giw8AAAAAAKB+a/TLLgAAAAAAgLEoPgAAAAAAAJ+i+AAAAAAAAHyK\n4gMAAAAAAPApig8AAAAAAMCnKD4AAAAAAACfovgAAAAAAAB8iuIDAAAAAADwKYoPAAAAAADApyg+\nAAAAAAAAn6L4AAAAAAAAfIriAwAAAAAA8CmKDwAAAAAAwKcoPgAAAAAAAJ+i+AAAAAAAAHyK4gMA\nAAAAAPApig8AAAAAAMCnKD4AAAAAAACfovgAAAAAAAB8iuIDAAAAAADwKYoPAAAAAADApyg+AAAA\nAAAAn6L4AAAAAAAAfIriAwAAAAAA8CmKDzBEfn6+IiMjvb7ftLQ0rVmzRpL06aef6sCBA27v4+ab\nb9a+ffu83TUAAACgwRgzZozef//9S77uL3/5i+vfUVFRKiws9GW30IBRfECjkpiYqNjYWEnSihUr\nPCo+AAAu9OKLL2rhwoWSfHdi+c9//lPx8fFe3y8AwHccDoeWLFniepydna3WrVsb2CPUZxQfYKif\nfvpJL730kgYNGqTBgwcrNTVVlZWVkqSIiAi9/fbbGjZsmPr166fU1FTXdosWLVKfPn300EMP6c9/\n/rMiIiIkSUlJSXrjjTc0b948bd++XZMmTdKGDRtc7eec//hvf/ubIiMjNXjw4AuSpyRlZmYqKipK\nEREReu6551RWVubrQwIA9ZqvTiy7deumpUuXen2/ANDY5Ofn6/7771dqaqoGDRqkiIgI/eMf/6jx\nvLpjx47605/+pCFDhqhPnz6umcLr1q3To48+6tr3zx+f8/HHH+v+++/XoEGDNHToUH399deSpFGj\nRunAgQOKiopSeXm5OnbsqEOHDkmS/vSnPyk6OlpRUVF66qmn9OOPP0o6ex6+YMECPfbYYwoPD9dj\njz2m0tJSHx4x1BcUH2CojIwMHTp0SB9++KHeffdd7dixQ+vXr3c9//nnnyszM1PvvPOOVq1apUOH\nDum7777TkiVL/h979x8WZZn3//85/Jib0EEdYixLK1tL71TMj2mClKgE0l1hCgpptdkPNzQtSsms\nbGuDNFz1zl3NFDl0LVayjdoWzMI9MpFdm11X2za13crUYFAUFAjE+f7ht7klUGCc4eLH63EcHYdz\nzlzX+3zPwDlXb87rPHn33XfZuHEjeXl5Dc47Z84cevbsyeLFi4mNjT1v/Lq6Op555hmef/55/vSn\nP+Hj4+MapHft2sWyZcvIysri448/pmvXrixbtszzb4KIiId99913jBo1itWrVxMdHU10dDR///vf\nefjhh4mIiODpp58GYOvWrdxxxx2MHTuWBx54wHVhWFZWxgMPPMCYMWN4+OGHqaiocJ373AvLFStW\nEB0dzbhx43jkkUcoLy8H4H//93/55S9/SXJyMmPHjmXSpEmUlJRcsM/n3o53oeMPHjzIPffcQ1RU\nFBMnTuTzzz8H4PDhwzEWrJsAACAASURBVEyfPp3o6Gj+53/+hz/84Q8tei8u9H6IiLQ1X331FYMH\nDyY/P59f/OIXLFy4sMnr6m+++YZ3332X3/3ud7z88suUlZU1K9bp06dJTU3lxRdfJD8/nzFjxvDK\nK68A8PLLL3P55ZeTl5eH2Wx2HfP3v/+dNWvWsH79evLy8ujVqxcZGRmu5/Py8vj1r3/Nhx9+yLFj\nx/jwww899M5IW6bigxhq27ZtJCQk4OfnR0BAAHfccQeffvqp6/k77rgDX19fevbsSXBwMEeOHOGv\nf/0rw4cPx2az8V//9V9MnDjR7fhff/01NTU1jBo1CoAJEya4nvv444+JjY2lZ8+eACQmJrJlyxa3\nY4mItKaysjJCQkLIz8/n+uuv5/HHHyc9PZ3c3Fzef/99vv32W+bOnUtGRgYfffQRI0aMYOHChQCs\nXr2aHj168PHHH/Pcc8+xffv2Buffu3cvv/vd73j77bfZsmULNTU1bNiwwfV8Xl4e8+fPZ+vWrQQH\nB/P222+3qP/nO/7ZZ5/l9ttv58MPP+QXv/gFc+fOdbUPHz6c/Px8Vq1axUsvveRav6c578XBgwfP\n+36IiLQ1gYGBjB8/HoDbbruNL774gvz8/AteV/94zdy3b1+uueYa/vGPfzQrlp+fHzt27GDIkCEA\nDBs2jIMHD17wmG3bthEdHU1wcDAA8fHx9fpy66230r17d/z8/Ljuuus4cuRI85OXdsvP6A5I53bs\n2DG6devmetytWzeOHj3qety1a1fXv319famrq6O8vLzeMT8WB9xx4sSJejHOPW9FRQUffvih66Lb\n6XRSW1vrdiwRkdZ0+vRpYmJiALjuuusAsFqtAISEhJCbm8vw4cNdz02ZMoXw8HDq6urYtWsXDz/8\nMABXXnklw4cPb3D+gQMHsm3bNtdfum688cZ6F6PDhg3jiiuuAGDAgAEtvrBs7PgffviBoqIili9f\nDsDYsWMZOXIktbW17Nixg6VLlwJwxRVXMGLECHbu3MnNN9/c5HtRUlLCl19+ed73w9fXt0V9FxHx\ntqCgIEwmk+vfACdPnrzgdfVPn/txtlpzrF+/nnfeeYeamhpqampcsc/n2LFj2Gy2ev09ty8Wi8X1\n7x+v8aXjU/FBDHXppZdy/Phx1+Pjx483eS9x165dqaysdD1uaiovgI+PD2fOnHE9PnHiBHB24D15\n8qSr/dwptjabjQkTJjBv3rymExERaWN8fX0JCAgAzo6BgYGB9Z7z8/Nj165drv8ph7Pj6/Hjxzlx\n4kS9C8MfL2zPVVVVRVpaGkVFRcDZcXX06NGu5y/2wrKx448fP86ZM2dcz5lMJrp06YLD4cDpdDbo\n849jelPvRV1dHRUVFed9P378y52ISFtx7vXzj9e1QUFBF7yuLisrcxV1jx8/Trdu3Th27Fi98bmx\ngoTdbmf16tVs2rSJK6+8kk8//ZRnn332gv1z5xpfOj7ddiGGGj16NDk5OdTV1VFZWcm7777Lrbfe\nesFjBg8eTFFREceOHaOmpsZ1X+9P+fn5ue5TDgkJ4V//+hdw9n5hu90OQJ8+ffD19XVdPG/evNlV\nyR0zZgxbtmxxXbxu3bqV119//eKTFhFpA2w2G2FhYeTl5bn+27lzJ8HBwQQFBdVb56GxtQ+ysrL4\n+uuv2bx5M/n5+UyePNnrfe7Rowcmk8l1n7LT6eSbb76he/fu+Pj4uC7AgRYXDS70foiItDXV1dVs\n3boVgPz8fAYOHEh0dPQFr6v/+Mc/AmfXi/jmm28IDQ3FZrPxn//8hx9++IGqqqpG11I7duwYwcHB\n9OrVi6qqKt555x0qKytxOp34+flRWVnJ6dOn6x0zevRoPvzwQ9d4/dZbbzV5jS8dn4oPYqhp06Zx\n2WWXcfvttzNx4kRGjx7tun/tfAYPHsyECROYMGEC9957L5GRkY2+Ljo6mieeeILMzEwSEhI4dOgQ\nt912GxkZGURHRwPg7+/Piy++yPz58xk/fjwmk8n1F7EbbriBGTNmMG3aNMaPH8+6desYO3asZ98A\nERGDmM1mdu3a5bpV4h//+AcvvfQSAEOGDHFd1H777bd89tlnDY4/evQoffv2pUuXLhw6dIg///nP\n9WaleavP4eHhvPPOOwB88sknPPzww/j7+zNq1Ciys7Ndfd61axdhYWHNPveoUaPO+36IiLQ1V1xx\nBZ999hnR0dGsWrWK559/vsnraqvVyl133cU999zDggUL6NatGyNGjCA0NJTo6GgeeuihRq91IyIi\nsNlsjBs3jgceeID77rsPi8XCY489xvXXX0+3bt0IDw+vt8X94MGDefjhh7nnnnuIiYmhoqKCxx9/\nvFXeG2m7TE6n02l0J0Rayul0umYobNu2jaVLl553BoSISGfz3Xffcdttt/HPf/4TgN/85jd8++23\nri2Lo6KieOmllzh58iTLli2jtraWLl26MH/+fIYOHUppaSmPP/44hw4d4tprr8VqtXLllVcya9Ys\nrr/+ev785z9z6tQpHnvsMU6fPs31119PUlISs2bNIjk5mYqKCr7//nt+9atfAWd3rzj3cWOKiopY\nsGABH374YYPXn/v4+++/58knn+TIkSN069aNF154gUGDBnHkyBEWLFjAoUOH8Pf3Z+bMmURHRzf7\nvRgxYgQfffRRo++HiEhbcu542Vw/jt2XXXaZF3smcmEqPki7c+zYMcaPH8/mzZvp1asXqampXHLJ\nJVqVXEREREQ6PBUfpL3SgpPS7litVubMmcP999+PyWSib9++rq3WREREREREpO3RzAcRERFpFcnJ\nyXz11VeNPrdixQquvfbaVu6RiPFOnTrFvHnzOHHiBLW1tSQnJxMSEuKa0Xn99dfzwgsvAPDGG2+Q\nl5eHyWRi5syZ3HrrrVRUVJCSkkJFRQWBgYFkZGTQvXt3AzMSEWmcig8iIiIiIgbZsGEDxcXFpKSk\nUFxczH333UdISAhPPfUUgwcPJiUlhTvvvJO+ffsye/Zs3nrrLU6ePElSUhJ//OMf+e1vf0tAQAAP\nPvgg2dnZfPvttzz11FNGpyUi0kC7ue3C4aho+kU/0aNHIGVl3l15W/Hbdh8UXz8DTcUPCbG0Ym86\nvvY2Vrf1n0/F75ixO3t8d2J35LG6R48efPnllwCUl5fTvXt3Dh06xODBgwGIjIyksLAQh8NBREQE\nZrMZq9XKFVdcwYEDBygsLOTll192vXbGjBlNxmzpWN2Zf16Njt+Zc+/s8dtj7k2N1R16q00/P1/F\nN5jRfVB8/QwYHV+aZuRnZPTPh+Lrs++M8Y3Ova25/fbbOXz4MFFRUUydOpW5c+cSFBTkej44OBiH\nw0FpaSlWq9XVbrVaG7QHBwdTUlLi8T4a/Zl15vidOffOHr8j5t5uZj6IiIiIiHQ07777Lr169WLN\nmjX861//Ijk5GYvl//56eL47pBtrb+7d1D16BLb4fyyMnn3SmeN35tw7e/yOlruKDyIiIiIiBrHb\n7YwaNQqA/v3788MPP3D69GnX88XFxdhsNmw2G//5z38abXc4HFgsFldbU9yZSu3ObXWe0pnjd+bc\nO3v89ph7p77tQkRERESkLbvqqqvYvXs3AIcOHaJLly5ce+217Nq1C4AtW7YQERHBzTffzLZt26ip\nqaG4uJiSkhJ+9rOfER4eTl5eXr3Xioi0RZr5ICIiIiJikMmTJzN//nymTp3K6dOnWbhwISEhITz3\n3HOcOXOG0NBQwsLCAEhISGDq1KmYTCYWLlyIj48P06ZN46mnniIpKYmgoCAWL15scEYiIo1T8UFE\nRERExCBdunRh2bJlDdo3btzYoG3atGlMmzatwfG/+c1vvNY/ERFP0W0XIiIiIiIiIuJVKj6IiIiI\niIiIiFfptgsRNz2Q/nGLj1mbOsYLPRERb2jp77h+v0Wko7oj5d0WH6MxUUR+yq3iQ1VVFampqRw9\nepQffviBRx99lP79+zN37lzq6uoICQlh8eLFmM1mcnNzycrKwsfHh4SEBOLj46mtrSU1NZXDhw/j\n6+tLWloavXv39nRuIiIiIiIiItIGuHXbRUFBAQMHDmTDhg0sXbqU9PR0li9fTlJSEhs3buSqq64i\nJyeHyspKVqxYwbp161i/fj1ZWVkcP36c999/n6CgIN58801mzJhBRkaGp/MSERERERERkTbCreJD\nbGwsDz30EABHjhyhZ8+eFBUVMXbsWAAiIyMpLCxk9+7dDBo0CIvFQkBAAEOHDsVut1NYWEhUVBQA\nYWFh2O12D6UjIiIiIiIiIm3NRa35MGXKFL7//ntWrlzJz3/+c8xmMwDBwcE4HA5KS0uxWq2u11ut\n1gbtPj4+mEwmampqXMeLiIiIiIiISMdxUcWHt956iy+++IKnnnoKp9Ppaj/33+dqafu5evQIxM/P\nt8V9DAmxtPgYT+rs8dtCH4yOfy4j+tIW8je6D0bHFxERERHp7NwqPuzdu5fg4GAuv/xyBgwYQF1d\nHV26dKG6upqAgACKi4ux2WzYbDZKS0tdx5WUlDBkyBBsNhsOh4P+/ftTW1uL0+lsctZDWVlli/sZ\nEmLB4aho8XGe0tnjt4U+GB3/p1q7L20hf6P70FR8FSZERERERLzPrTUfdu3axdq1awEoLS2lsrKS\nsLAw8vPzAdiyZQsRERGEhoayZ88eysvLOXXqFHa7nWHDhhEeHk5eXh5wdvHKESNGeCgdERERERER\nEWlr3Jr5MGXKFJ555hmSkpKorq7mueeeY+DAgcybN4/s7Gx69epFXFwc/v7+pKSkMH36dEwmE8nJ\nyVgsFmJjY9mxYweJiYmYzWbS09M9nZeIiIiIiIiItBFuFR8CAgIa3R4zMzOzQVtMTAwxMTH12nx9\nfUlLS3MntIiIiIiIiIi0M27ddiEiIiIiIiIi0lwXtduFiIhIe/BA+sdGd0FERESkU1PxQURERETE\nIJs2bSI3N9f1eO/evbz55pssXLgQgOuvv54XXngBgDfeeIO8vDxMJhMzZ87k1ltvpaKigpSUFCoq\nKggMDCQjI4Pu3bsbkYqIyAWp+CAiIiIiYpD4+Hji4+MB+Mtf/sKf/vQnfvWrXzF//nwGDx5MSkoK\nf/7zn+nbty8ffPABb731FidPniQpKYlRo0aRlZXF8OHDefDBB8nOzmb16tU89dRTBmclItKQ1nwQ\nEREREWkDVqxYwUMPPcShQ4cYPHgwAJGRkRQWFlJUVERERARmsxmr1coVV1zBgQMHKCwsJCoqqt5r\nRUTaIs18EBHpwBYtWsRnn33G6dOneeSRRxg0aBBz586lrq6OkJAQFi9ejNlsJjc3l6ysLHx8fEhI\nSCA+Pp7a2lpSU1M5fPiwa5ei3r17G52SiEiH9I9//IPLL78cX19fgoKCXO3BwcE4HA66d++O1Wp1\ntVutVhwOB6Wlpa724OBgSkpKmozVo0cgfn6+nk/iHCEhljZ9vvYUvzPn3tnjd7TcVXwQEemgdu7c\nyf79+8nOzqasrIwJEyYwcuRIkpKSGD9+PEuWLCEnJ4e4uDhWrFhBTk4O/v7+TJo0iaioKAoKCggK\nCiIjI4Pt27eTkZHB0qVLjU5LRKRDysnJYcKECQ3anU5no69vrP18r/2psrLKlnXODQ5HhcfOFRJi\n8ej52lP8zpx7Z4/fHnNvqlih4oOISAd10003uabtBgUFUVVVRVFRkWvhssjISNauXcs111zDoEGD\nsFjOfmEMHToUu91OYWEhcXFxAISFhTF//nxjEmkn3NlR472Mu7zQExFpj4qKiliwYAEmk4njx4+7\n2ouLi7HZbNhsNv7zn/802u5wOLBYLK42EZG2SGs+iIh0UL6+vgQGBgJn/6J2yy23UFVVhdlsBv5v\nKu+5U3ah8am8Pj4+mEwmampqWj8REZEOrri4mC5dumA2m/H396dv377s2rULgC1bthAREcHNN9/M\ntm3bqKmpobi4mJKSEn72s58RHh5OXl5evdeKiLRFmvkgItLBbd26lZycHNauXcttt93mam/JVN4L\ntZ/L3fuIjb6n0UhG596Z43fm3I2Ob3TubY3D4ahXBJ4/fz7PPfccZ86cITQ0lLCwMAASEhKYOnUq\nJpOJhQsX4uPjw7Rp03jqqadISkoiKCiIxYsXG5WGiMgFqfggItKBffLJJ6xcuZI33ngDi8VCYGAg\n1dXVBAQE1JuyW1pa6jqmpKSEIUOGuKby9u/fn9raWpxOp2vWxPm4cx+x0fc0Gq293c/ZUeJ35tyN\nju+N+4jbu4EDB/LGG2+4Hv/sZz9j48aNDV43bdo0pk2bVq+tS5cu/OY3v/F6H0VELpZuuxAR6aAq\nKipYtGgRq1atonv37sDZtRvy8/OB/5ueGxoayp49eygvL+fUqVPY7XaGDRtWbypvQUEBI0aMMCwX\nEREREWnfNPNBRKSD+uCDDygrK2POnDmutvT0dBYsWEB2dja9evUiLi4Of39/UlJSmD59OiaTieTk\nZCwWC7GxsezYsYPExETMZjPp6ekGZiMiIiIi7ZmKDyIiHdTkyZOZPHlyg/bMzMwGbTExMcTExNRr\n8/X1JS0tzWv9ExEREZHOQ7ddiIiIiIiIiIhXqfggIiIiIiIiIl6l4oOIiIiIiIiIeJWKDyIiIiIi\nIiLiVSo+iIiIiIiIiIhXub3bxaJFi/jss884ffo0jzzyCB9//DGff/65ay/56dOnM3r0aHJzc8nK\nysLHx4eEhATi4+Opra0lNTWVw4cPu1ZT7927t8eSEhEREREREZG2w63iw86dO9m/fz/Z2dmUlZUx\nYcIEbr75Zp544gkiIyNdr6usrGTFihXk5OTg7+/PpEmTiIqKoqCggKCgIDIyMti+fTsZGRksXbrU\nY0mJiIiIiIiISNvh1m0XN910E8uWLQMgKCiIqqoq6urqGrxu9+7dDBo0CIvFQkBAAEOHDsVut1NY\nWEhUVBQAYWFh2O32i0hBRERERERERNoyt2Y++Pr6EhgYCEBOTg633HILvr6+bNiwgczMTIKDg3n2\n2WcpLS3FarW6jrNarTgcjnrtPj4+mEwmampqMJvN543Zo0cgfn6+Le5rSIilxcd4UmeP3xb6YHT8\ncxnRl7aQv9F9MDq+iIiIiEhn5/aaDwBbt24lJyeHtWvXsnfvXrp3786AAQN4/fXXee2117jxxhvr\nvd7pdDZ6nvO1n6usrLLF/QsJseBwVLT4OE/p7PHbQh+Mjv9Trd2XtpC/0X1oKr4KEyIiIiIi3uf2\nbheffPIJK1euZPXq1VgsFkaOHMmAAQMAGDNmDPv27cNms1FaWuo6pqSkBJvNhs1mw+FwAFBbW4vT\n6bzgrAcRERERkY4qNzeXO++8k7vvvptt27Zx5MgRpk2bRlJSErNnz6ampsb1uokTJxIfH8+mTZuA\ns9fSKSkpJCYmMnXqVA4ePGhkKiIi5+VW8aGiooJFixaxatUq1+4Ws2bNcg12RUVF9OvXj9DQUPbs\n2UN5eTmnTp3CbrczbNgwwsPDycvLA6CgoIARI0Z4KB0RERERkfajrKyMFStWsHHjRlauXMlHH33E\n8uXLSUpKYuPGjVx11VXk5OS4FnJft24d69evJysri+PHj/P+++8TFBTEm2++yYwZM8jIyDA6JRGR\nRrl128UHH3xAWVkZc+bMcbXdfffdzJkzh0suuYTAwEDS0tIICAggJSWF6dOnYzKZSE5OxmKxEBsb\ny44dO0hMTMRsNpOenu6xhERERERE2ovCwkJGjhxJ165d6dq1Ky+++CJjxozhhRdeACAyMpK1a9dy\nzTXXuBZyB+ot5B4XFwecXch9/vz5huUiInIhbhUfJk+ezOTJkxu0T5gwoUFbTEwMMTEx9dp8fX1J\nS0tzJ7SIiIiISIfx3XffUV1dzYwZMygvL2fWrFlUVVW5bkkODg5usGA7GLOQe0t4ek0lo9doMjJ+\nZ869s8fvaLlf1IKTIiIiIiJycY4fP85rr73G4cOHuffee+stxt7SBdu9tZB7S3lysem2vnh1R42t\n+PrsWxq/qWKF2wtOioiIiIjIxQkODubGG2/Ez8+PPn360KVLF7p06UJ1dTUAxcXFrgXbtZC7iLRn\nKj6IiIiIiBhk1KhR7Ny5kzNnzlBWVkZlZSVhYWHk5+cDsGXLFiIiIrSQu4i0e7rtQkRERETEID17\n9iQ6OpqEhAQAFixYwKBBg5g3bx7Z2dn06tWLuLg4/P39tZC7iLRrKj6IiIiIiBhoypQpTJkypV5b\nZmZmg9dpIXcRac9024WIiIiIiIiIeJWKDyIiIiIiIiLiVSo+iIiIiIiIiIhXqfggIiIiIiIiIl6l\n4oOIiIiIiIiIeJWKDyIiIiIiIiLiVSo+iIiIiIiIiIhXqfggIiIiIiIiIl6l4oOIiIiIiIiIeJWK\nDyIiIiIiIiLiVSo+iIiIiIiIiIhXqfggItKB7du3j3HjxrFhwwYAUlNTueOOO5g2bRrTpk1j27Zt\nAOTm5jJx4kTi4+PZtGkTALW1taSkpJCYmMjUqVM5ePCgUWmIiIiISDvnZ3QHRETEOyorK3nxxRcZ\nOXJkvfYnnniCyMjIeq9bsWIFOTk5+Pv7M2nSJKKioigoKCAoKIiMjAy2b99ORkYGS5cube00RERE\nRKQD0MwHEZEOymw2s3r1amw22wVft3v3bgYNGoTFYiEgIIChQ4dit9spLCwkKioKgLCwMOx2e2t0\nW0REREQ6ILdnPixatIjPPvuM06dP88gjjzBo0CDmzp1LXV0dISEhLF68GLPZTG5uLllZWfj4+JCQ\nkEB8fDy1tbWkpqZy+PBhfH19SUtLo3fv3p7MS0Sk0/Pz88PPr+Ewv2HDBjIzMwkODubZZ5+ltLQU\nq9Xqet5qteJwOOq1+/j4YDKZqKmpwWw2nzdmjx6B+Pn5trivISGWFh/TEdyR8m6Lj3kv4y6P9sHo\n997I+J05d6PjG517W1JUVMTs2bPp168fANdddx0PPvigrqtFpMNxq/iwc+dO9u/fT3Z2NmVlZUyY\nMIGRI0eSlJTE+PHjWbJkCTk5OcTFxWkqr4hIG3LXXXfRvXt3BgwYwOuvv85rr73GjTfeWO81Tqez\n0WPP136usrLKFvcpJMSCw1HR4uM6K0++V0a/90bG78y5Gx3fndgdvVgxfPhwli9f7nr89NNP67pa\nRDoct267uOmmm1i2bBkAQUFBVFVVUVRUxNixYwGIjIyksLBQU3lFRNqYkSNHMmDAAADGjBnDvn37\nsNlslJaWul5TUlKCzWbDZrPhcDiAs4tPOp3OC856EBERz9B1tYh0RG7NfPD19SUwMBCAnJwcbrnl\nFrZv3+66KA0ODm4wZRc651Tezh6/LfTB6PjnMqIvbSF/o/tgdPy2ZNasWcydO5fevXtTVFREv379\nCA0NZcGCBZSXl+Pr64vdbmf+/PmcPHmSvLw8IiIiKCgoYMSIEUZ3X0SkQzpw4AAzZszgxIkTzJw5\nk6qqqjZ5Xd0Snv7uNfq7vDPfpqT4+uw95aJ2u9i6dSs5OTmsXbuW2267zdXe0im7HXUqb2eP3xb6\nYHT8n2rtvrSF/I3uQ1PxjR7UvWnv3r288sorHDp0CD8/P/Lz85k6dSpz5szhkksuITAwkLS0NAIC\nAkhJSWH69OmYTCaSk5OxWCzExsayY8cOEhMTMZvNpKenG52SiEiHc/XVVzNz5kzGjx/PwYMHuffe\ne6mrq3M931auq1tKt4i1/9iKr8/e07fIuV18+OSTT1i5ciVvvPEGFouFwMBAqqurCQgIoLi42DVl\n96dTeYcMGeKaytu/f39N5RUR8ZKBAweyfv36Bu3R0dEN2mJiYoiJianX9uPCZSIi4j09e/YkNjYW\ngD59+nDppZeyZ88eXVeLSIfj1poPFRUVLFq0iFWrVtG9e3fg7D1m+fn5AGzZsoWIiAhCQ0PZs2cP\n5eXlnDp1CrvdzrBhwwgPDycvLw9AU3lFREREpNPKzc1lzZo1ADgcDo4ePcrdd9+t62oR6XDcmvnw\nwQcfUFZWxpw5c1xt6enpLFiwgOzsbHr16kVcXBz+/v6ayisiIiIich5jxozhySef5KOPPqK2tpaF\nCxcyYMAA5s2bp+tqEelQ3Co+TJ48mcmTJzdoz8zMbNCmqbwiIiIiIo3r2rUrK1eubNCu62oR6Wjc\nuu1CRERERERERKS5VHwQEREREREREa9S8UFEREREREREvErFBxERERERERHxKhUfRERERERERMSr\n3NrtQlrfA+kft+j1a1PHeKknIiIiIiIiIi2jmQ8iIiIiIiIi4lUqPoiIiIiIiIiIV6n4ICIiIiIi\nIiJepeKDiIiIiIiIiHiVig8iIiIiIiIi4lUqPoiIiIiIiIiIV6n4ICIiIiIiIiJepeKDiIiIiIiB\nqqurGTduHJs3b+bIkSNMmzaNpKQkZs+eTU1NDQC5ublMnDiR+Ph4Nm3aBEBtbS0pKSkkJiYydepU\nDh48aGQaIiIXpOKDiIiIiIiBfvvb39KtWzcAli9fTlJSEhs3buSqq64iJyeHyspKVqxYwbp161i/\nfj1ZWVkcP36c999/n6CgIN58801mzJhBRkaGwZmIiJyfig8iIiIiIgb56quvOHDgAKNHjwagqKiI\nsWPHAhAZGUlhYSG7d+9m0KBBWCwWAgICGDp0KHa7ncLCQqKiogAICwvDbrcblYaISJP8jO6AiIiI\niEhn9corr/Dss8/yhz/8AYCqqirMZjMAwcHBOBwOSktLsVqtrmOsVmuDdh8fH0wmEzU1Na7jz6dH\nj0D8/Hy9lNFZISGWNn2+9hS/M+fe2eN3tNxVfBARERERMcAf/vAHhgwZQu/evRt93ul0eqT9p8rK\nKpvXwYvgcFR47FwhIRaPnq89xe/MuXf2+O0x96aKFSo+iIiIiIgYYNu2bRw8eJBt27bx/fffYzab\nCQwMpLq6moCAAIqLi7HZbNhsNkpLS13HlZSUMGTIEGw2Gw6Hg/79+1NbW4vT6Wxy1oOIiFEuas2H\nffv2MW7cODZsXXLmoAAAIABJREFU2ABAamoqd9xxB9OmTWPatGls27YN0Oq8IiIiIiI/tXTpUt5+\n+21+//vfEx8fz6OPPkpYWBj5+fkAbNmyhYiICEJDQ9mzZw/l5eWcOnUKu93OsGHDCA8PJy8vD4CC\nggJGjBhhZDoiIhfk9syHyspKXnzxRUaOHFmv/YknniAyMrLe61asWEFOTg7+/v5MmjSJqKgoCgoK\nCAoKIiMjg+3bt5ORkcHSpUvdz0REREREpJ2bNWsW8+bNIzs7m169ehEXF4e/vz8pKSlMnz4dk8lE\ncnIyFouF2NhYduzYQWJiImazmfT0dKO7LyJyXm4XH8xmM6tXr2b16tUXfN25q/MC9VbnjYuLA86u\nzjt//nx3uyIiIiIi0q7NmjXL9e/MzMwGz8fExBATE1OvzdfXl7S0NK/3TUTEE9wuPvj5+eHn1/Dw\nDRs2kJmZSXBwMM8++6zHVud1d1XejrZCaEvjGp1/W+iD0fHPZURf2kL+RvfB6PgiIiIiIp2dRxec\nvOuuu+jevTsDBgzg9ddf57XXXuPGG2+s9xp3V+d1Z1Xe9rhCqKc4HBWG5w+d+zNoTGv3pS3kb3Qf\nmoqvwoS0Nw+kf9yi169NHeOlnoiIiIg0n0eLD+eu/zBmzBgWLlxIdHS0VucVERGPaen/fIuIiIiI\n8S5qt4ufmjVrlmvXiqKiIvr166fVeUVEREREREQ6ObdnPuzdu5dXXnmFQ4cO4efnR35+PlOnTmXO\nnDlccsklBAYGkpaWRkBAgFbnFRExyL59+3j00Ue5//77mTp1KkeOHGHu3LnU1dUREhLC4sWLMZvN\n5ObmkpWVhY+PDwkJCcTHx1NbW0tqaiqHDx92LWrWu3dvo1MSERERkXbI7eLDwIEDWb9+fYP26Ojo\nBm1anVdEpPU1tiXy8uXLSUpKYvz48SxZsoScnBzi4uK0JbKIiIiIeJVHb7sQEZG248ctkW02m6ut\nqKiIsWPHAhAZGUlhYWG9LZEDAgLqbYkcFRUFnN0S2W63G5KHiIiIiLR/Hl1wUkRE2o7GtkSuqqpy\nLe4bHBzcYOtjcH9LZGi/2yJ3ZE29t0a/90bG78y5Gx3f6NxFRKT1qfggItJJtXTr46a2RIb2uS1y\nR9fUVrNteSvcjhq7s8d3J7aKFe2POzsTaWtgkY5NxQeRNq6lX9764pYLCQwMpLq6moCAAIqLi7HZ\nbNhsNm2JLCIiIiJepTUfREQ6kbCwMPLz8wHYsmULERER2hJZRERERLxOMx9ERDqoxrZEfvXVV0lN\nTSU7O5tevXoRFxeHv7+/tkQWEREREa9S8UFEpIM635bImZmZDdq0JbKIiIiIeJNuuxARERERERER\nr9LMBxERERERg1RVVZGamsrRo0f54YcfePTRR+nfvz9z586lrq6OkJAQFi9ejNlsJjc3l6ysLHx8\nfEhISCA+Pp7a2lpSU1M5fPiwa8Za7969jU5LRKQBzXwQERERETFIQUEBAwcOZMOGDSxdupT09HSW\nL19OUlISGzdu5KqrriInJ4fKykpWrFjBunXrWL9+PVlZWRw/fpz333+foKAg3nzzTWbMmEFGRobR\nKYmINErFBxERERERg8TGxvLQQw8BcOTIEXr27ElRURFjx44FIDIyksLCQnbv3s2gQYOwWCwEBAQw\ndOhQ7HY7hYWFREVFAWd3NLLb7YblIiJyIbrtQkRERETEYFOmTOH7779n5cqV/PznP8dsNgMQHByM\nw+GgtLQUq9Xqer3Vam3Q7uPjg8lkoqamxnV8Y3r0CMTPz9e7CbkhJMTi1nOtwcj4nTn3zh6/o+Wu\n4oOIiIiIiMHeeustvvjiC5566imcTqer/dx/n6ul7ecqK6t0r5Ne5nBUNNoeEmI573Otwcj4nTn3\nzh6/PebeVLFCt12IiIiIiBhk7969HDlyBIABAwZQV1dHly5dqK6uBqC4uBibzYbNZqO0tNR1XElJ\niavd4XAAUFtbi9PpvOCsBxERo6j4ICIiIiJikF27drF27VoASktLqaysJCwsjPz8fAC2bNlCREQE\noaGh7Nmzh/Lyck6dOoXdbmfYsGGEh4eTl5cHnF28csSIEYblIiJyIbrtQkRERETEIFOmTOGZZ54h\nKSmJ6upqnnvuOQYOHMi8efPIzs6mV69exMXF4e/vT0pKCtOnT8dkMpGcnIzFYiE2NpYdO3aQmJiI\n2WwmPT3d6JRERBql4oOIiIiIiEECAgIa3R4zMzOzQVtMTAwxMTH12nx9fUlLS/Na/0REPEW3XYiI\niIiIiIiIV6n4ICIiIiIiIiJedVHFh3379jFu3Dg2bNgAwJEjR5g2bRpJSUnMnj2bmpoaAHJzc5k4\ncSLx8fFs2rQJOLsab0pKComJiUydOpWDBw9eZCoiIiIiIiIi0ha5XXyorKzkxRdfZOTIka625cuX\nk5SUxMaNG7nqqqvIycmhsrKSFStWsG7dOtavX09WVhbHjx/n/fffJygoiDfffJMZM2Y0eq+biIiI\niIiIiLR/bhcfzGYzq1evxmazudqKiooYO3YsAJGRkRQWFrJ7924GDRqExWIhICCAoUOHYrfbKSws\nJCoqCoCwsDDsdvtFpiIiIiIiIiIibZHbu134+fnh51f/8KqqKsxmMwDBwcE4HA5KS0uxWq2u11it\n1gbtPj4+mEwmampqXMf/VI8egfj5+ba4nyEhlhYf40lGxf8xrtH5t4U+GB3/XK3Rl5/GaAv5G90H\no+OLiIiIiHR2Xttq0+l0eqT9R2VllS3uQ0iIBYejosXHeYqR8R2OCsPzh879GTTmjpR3vR7j3Hzb\nQv5G96Gp+CpMiIiIiIh4n0d3uwgMDKS6uhqA4uJibDYbNpuN0tJS12tKSkpc7Q6HAzi7+KTT6Tzv\nrAcRERERERERab88WnwICwsjPz8fgC1bthAREUFoaCh79uyhvLycU6dOYbfbGTZsGOHh4eTl5QFQ\nUFDAiBEjPNkVEREREREREWkj3L7tYu/evbzyyiscOnQIPz8/8vPzefXVV0lNTSU7O5tevXoRFxeH\nv78/KSkpTJ8+HZPJRHJyMhaLhdjYWHbs2EFiYiJms5n09HRP5iUiIiIiIiIibYTbxYeBAweyfv36\nBu2ZmZkN2mJiYoiJianX5uvrS1pamrvhRURERERERKSd8NqCkyIiImK8B9I/bvExa1PHeKEnIiIi\n0pl5dM0HEREREREREZGf0swHEREREREDLVq0iM8++4zTp0/zyCOPMGjQIObOnUtdXR0hISEsXrwY\ns9lMbm4uWVlZ+Pj4kJCQQHx8PLW1taSmpnL48GHXbc29e/c2OiURkQZUfBARERERMcjOnTvZv38/\n2dnZlJWVMWHCBEaOHElSUhLjx49nyZIl5OTkEBcXx4oVK8jJycHf359JkyYRFRVFQUEBQUFBZGRk\nsH37djIyMli6dKnRaYmINKDbLkREREREDHLTTTexbNkyAIKCgqiqqqKoqIixY8cCEBkZSWFhIbt3\n72bQoEFYLBYCAgIYOnQodrudwsJCoqKigLPb3tvtdsNyERG5EM186KC0wJiIiIhI2+fr60tgYCAA\nOTk53HLLLWzfvh2z2QxAcHAwDoeD0tJSrFar6zir1dqg3cfHB5PJRE1Njev4xvToEYifn68Xs3JP\nSIjFredag5HxO3PunT1+R8tdxQcREREREYNt3bqVnJwc1q5dy2233eZqdzqdjb6+pe3nKiurdK+T\nXuZwVDTaHhJiOe9zrcHI+J05984evz3m3lSxQrddiIiIiIgY6JNPPmHlypWsXr0ai8VCYGAg1dXV\nABQXF2Oz2bDZbJSWlrqOKSkpcbU7HA4AamtrcTqdF5z1ICJiFBUfREREREQMUlFRwaJFi1i1ahXd\nu3cHzq7dkJ+fD8CWLVuIiIggNDSUPXv2UF5ezqlTp7Db7QwbNozw8HDy8vIAKCgoYMSIEYblIiJy\nIbrtwgDurMcgIuIpRUVFzJ49m379+gFw3XXX8eCDDzZ7WzcREfGcDz74gLKyMubMmeNqS09PZ8GC\nBWRnZ9OrVy/i4uLw9/cnJSWF6dOnYzKZSE5OxmKxEBsby44dO0hMTMRsNpOenm5gNiIi56fig4hI\nJzR8+HCWL1/uevz00083e1u3H/8yJyIiF2/y5MlMnjy5QXtmZmaDtpiYGGJiYuq1+fr6kpaW5rX+\niYh4iooP4qIdMkQ6r6KiIl544QXg7LZua9eu5ZprrnFt6wa4tnUbM0a/9yIiIiLSMio+iIh0QgcO\nHGDGjBmcOHGCmTNnUlVV1ext3S7E3e3bjN5KSuprzc9DW5h1zvhG5y4iIq1PxQcRkU7m6quvZubM\nmYwfP56DBw9y7733UldX53q+tbdvM3orKWmotT4PbWHWOeN7Y/s2ERFp+7TbhYhIJ9OzZ09iY2Mx\nmUz06dOHSy+9lBMnTjR7WzcRERERkZZS8UFEpJPJzc1lzZo1ADgcDo4ePcrdd9/d7G3dRERERERa\nSrddiPz/tAWqdBZjxozhySef5KOPPqK2tpaFCxcyYMAA5s2b16xt3UREREREWkrFBxGRTqZr166s\nXLmyQXtzt3UTEREREWkp3XYhIiIiIiIiIl7l0ZkPRUVFzJ49m379+gFw3XXX8eCDDzJ37lzq6uoI\nCQlh8eLFmM1mcnNzycrKwsfHh4SEBOLj4z3ZFREREXGTO7ehrU0d44WeiIiISEfh8dsuhg8fzvLl\ny12Pn376aZKSkhg/fjxLliwhJyeHuLg4VqxYQU5ODv7+/kyaNImoqCi6d+/u6e6IiIiIiIiIiMG8\nfttFUVERY8eOBSAyMpLCwkJ2797NoEGDsFgsBAQEMHToUOx2u7e7IiIiIiIiIiIG8PjMhwMHDjBj\nxgxOnDjBzJkzqaqqwmw2AxAcHIzD4aC0tBSr1eo6xmq14nA4LnjeHj0C8fPzbXF/QkKMXZnd6Pje\n1pz8jH4PjI7f2n6ab1vI3+g+GB1fRERERKSz82jx4eqrr2bmzJmMHz+egwcPcu+991JXV+d63ul0\nNnrc+drPVVZW2eL+hIRYcDgqWnycpxgdvzU0lZ/R74HR8Y1wbr5tIX+j+9BUfBUmRERERES8z6O3\nXfTs2ZPY2FhMJhN9+vTh0ksv5cSJE1RXVwNQXFyMzWbDZrNRWlrqOq6kpASbzebJroiIiIiItAv7\n9u1j3LhxbNiwAYAjR44wbdo0kpKSmD17NjU1NQDk5uYyceJE4uPj2bRpEwC1tbWkpKSQmJjI1KlT\nOXjwoGF5iIhciEdnPuTm5uJwOJg+fToOh4OjR49y9913k5+fz1133cWWLVuIiIggNDSUBQsWUF5e\njq+vL3a7nfnz53uyK9LJubNSu4iIiEhrq6ys5MUXX2TkyJGutuXLlzd7wfaCggKCgoLIyMhg+/bt\nZGRksHTpUgMzEhFpnEeLD2PGjOHJJ5/ko48+ora2loULFzJgwADmzZtHdnY2vXr1Ii4uDn9/f1JS\nUpg+fTomk4nk5GQsFk19lsapkCAiIiIdldlsZvXq1axevdrVVlRUxAsvvACcXbB97dq1XHPNNa4F\n2wHXgu2FhYXExcUBEBYWpj/oiUib5dHiQ9euXVm5cmWD9szMzAZtMTExxMTEeDK8iIiIiEi74ufn\nh59f/UvylizYfm67j48PJpOJmpoa1/EiIm2Fx3e7EBERERERz2jpgu3NWcjd3V3kvO1Ci0AbvUC0\nkfE7c+6dPX5Hy13FBxERERGRNiQwMJDq6moCAgIuuGD7kCFDsNlsOBwO+vfvT21tLU6ns8lZD+7s\nItcazrc7VVvfOaujxlZ8ffYtjd9UscKju12IiIiIiMjFCQsLIz8/H6Degu179uyhvLycU6dOYbfb\nGTZsGOHh4eTl5QFQUFDAiBEjjOy6iMh5aeaDXJSWLga5NnWMl3oiIiIi0v7s3buXV155hUOHDuHn\n50d+fj6vvvoqqampzVqwPTY2lh07dpCYmIjZbCY9Pd3olEREGqXig4iIiFw0d3Ymei/jLi/0RKR9\nGThwIOvXr2/Q3twF2319fUlLS/Na/0REPEW3XYiIiIiIiIiIV6n4ICIiIiIiIiJepdsuRETEUHek\nvGt0F0RERETEy1R8EBEREUO0tPCkRYtFOjYtZC7Ssem2CxERERERERHxKhUfRERERERERMSrVHwQ\nEREREREREa/Smg/SqtzZB15ERERERETaN818EBERERERERGvUvFBRERERERERLxKt12IdDDu3Nqi\nrapERERERMSbVHwQERGRdkHFVRERkfZLt12IiIiIiIiIiFd16JkPd6S82+JjWvoXEu3eICIi0rG0\n9LtdsytEjKHZUCLti6HFh5dffpndu3djMpmYP38+gwcPNrI7Ip1WaxTR9GXffmmslvasNcY3d2K8\nl3GXF3pijJbm35Fybys0TotIe2BY8eEvf/kL33zzDdnZ2Xz11VfMnz+f7Oxso7rjopkMIiL/p62O\n1SIicpbGaRFpLwwrPhQWFjJu3DgArr32Wk6cOMHJkyfp2rWrUV0SkTZG0ymNp7FaxDvcuTW0NWgM\nbX80TreMZnuKGMew4kNpaSk33HCD67HVasXhcJx3oAwJsbQ4hqb1ibRvnvoddmf8kLM0VotIU9z5\nHda47DktHaeh5e+/xmljGf37ovjGxe9oubeZ3S6cTqfRXRARkSZorBYRads0TotIW2VY8cFms1Fa\nWup6XFJSQkhIiFHdERGRRmisFhFp2zROi0h7YVjxITw8nPz8fAA+//xzbDab7k0TEWljNFaLiLRt\nGqdFpL0wbM2HoUOHcsMNNzBlyhRMJhPPP/+8UV0REZHz0FgtItK2aZwWkfbC5NSNYSIiIiIiIiLi\nRW1mwUkRERERERER6ZhUfBARERERERERrzJszQdP+stf/sLs2bN5+eWXiYyMbPB8bm4uWVlZ+Pj4\nkJCQQHx8PLW1taSmpnL48GF8fX1JS0ujd+/eLY7d1Hn27t3LK6+84np84MABVqxYwaeffsp7771H\nz549AbjzzjuJj4/3eHyAG264gaFDh7oer1u3jjNnzrRK/gAffPABa9euxcfHh5EjR/L444+zefNm\nli1bRp8+fQAICwvjF7/4RYtiv/zyy+zevRuTycT8+fMZPHiw67kdO3awZMkSfH19ueWWW0hOTm7y\nGHdc6Hw7d+5kyZIl+Pj4cM011/CrX/2Kv/71r8yePZt+/foBcN111/Hss896Jf6YMWO47LLL8PX1\nBeDVV1+lZ8+eHn0Pzneu4uJinnzySdfrDh48SEpKCrW1tRf9uf/Uvn37ePTRR7n//vuZOnVqveda\n6+dAmqZxuvON00aP0UaOz519bNa43DG4M257SnPGrV//+tcUFRXhdDoZN24cDz30UKvF/te//sX8\n+fMBGDt2rOvnuLXi/+iJJ57AbDaTnp7eqvEb+864WO58Z3hSS78zfHw8+zf85oyBGRkZ/P3vf2f9\n+vWtFvvIkSM88cQT1NbW8t///d/88pe/vLhgznbum2++cc6YMcP56KOPOj/++OMGz586dcp52223\nOcvLy51VVVXO22+/3VlWVubcvHmzc+HChU6n0+n85JNPnLNnz3YrfkvOc+LECec999zjrKurcy5f\nvty5fv16t2K2NP7w4cMvqt8XE7+ystIZGRnprKiocJ45c8Y5adIk5/79+51vv/22Mz093a2YTqfT\nWVRU5Hz44YedTqfTeeDAAWdCQkK958ePH+88fPiws66uzpmYmOjcv39/k8d4ug9RUVHOI0eOOJ1O\np3PWrFnObdu2OXfu3OmcNWvWRcVtbvzIyEjnyZMnW3SMJ+P/qLa21jllyhTnyZMnL/pz/6lTp045\np06d6lywYEGjv0+t8XMgTdM43fnGaaPHaCPH584+Nmtc7hjcHbc9palx68svv3ROnjzZ6XQ6nXV1\ndc6YmBhnSUlJq8R2Op3OSZMmOffu3eusq6tzPv74487KykqPxG5ufKfT6dy+fbtz4sSJznnz5nks\ndnPin+8742K4853hSe58Z7RmfKfT6dy/f79z8uTJzqlTp7Zq7Mcee8y5ZcsWp9PpdC5cuNB56NCh\ni4rX7m+7CAkJ4bXXXsNisTT6/O7duxk0aBAWi4WAgACGDh2K3W6nsLCQqKgo4GyF3263uxW/JedZ\ns2YN9913n0crZe7m0Vr5X3LJJeTm5tK1a1dMJhPdu3fn+PHjbsX6adxx48YBcO2113LixAlOnjwJ\nnP1LTrdu3bj88svx8fHh1ltvpbCw8ILHeLoPAJs3b+ayyy4DwGq1UlZW5nYsd+J76piLPdc777xD\ndHQ0Xbp0cSvOhZjNZlavXo3NZmvwXGv9HEjTNE53vnHa6DHayPG5s4/NGpc7BnfHbU9patyyWCz8\n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\nefPmGWOM2bx5s0lISDDGGDN9+nSzfft2Y4wxJ06cMFOmTDHfffedU99zALCKJ2b62LFjzcMPP2wq\nKiqMMcbMmTPHzJkzxxhjTGFhoRk4cKD58MMPTUlJiendu7fJyckxxhiTnp5uhgwZYioqKsyrr75q\nunfvbr766ivz3XffmaioKDNp0iRz/vx58+6775r+/fsbY4xJSUkxK1euNMYYU1paan7961+bY8eO\nueNbh0aGMx9wGX9/f7Vo0UInT55UaGholcdCQkJ04sQJnTx5UldffbVj+9VXX60TJ044vm7evLnj\nWJd+7efnp8rKSknSCy+8oIKCAt13332Kj4/XBx98UGtvoaGhstlsjn9LUnFxsU6fPq2FCxc6LgP5\n05/+pLNnz1bpry7ccfzq1lVUVCRjjEJCQqrUuvjXP39/fzVr1uyy7xEA1Ed5ebn27t2rxMRESdJ1\n112n3r17a9++fZc99/nnn9fEiRMlSbfddpu+++475efnO1Vv+PDh8vf3V3h4uHr16qWPP/5Yf//7\n33X77berQ4cOkqQxY8bo3XffVUVFhXJycjRs2DBJUrt27XT77bdXOd7AgQNrXcf777+v3r17q337\n9pKkkSNHKjs7W+fPn5ck3XrrrQoPD1erVq0UERGh/v37S5I6dOig48ePS5LCw8OVkZGhf/7zn2rV\nqpWef/55BQUFObV2ALBaQ8/0AQMGyM/vwv9d/Nvf/uao27JlS8XExOj999/XP/7xD11zzTW67bbb\nJElDhw5VYWGhDh8+LEm6+eabdeONNyooKEjt27dXv3795O/vf9kM3rNnj3JychQUFKRly5bJbre7\n8B1CYxfg6QbQeIWHh6uoqMjxtTFGp06dUnh4uFq3bl3lsaKiIrVu3dqp499www1auHChKisrtWPH\nDiUlJem999674j6X1jx16pSkCwPQbrfr4Ycf1qBBg5zqwYrjV7euzMxM+fn56dSpU46goqioSOHh\n4fXqFwCupLbg81LvvfeeXnjhBRUWFspms8kY43QQGhYW5vh3SEiIiouLZYxRTk6OYmNjHY+1aNFC\nRUVFOnXq1GW9XerSeXmldVy6X0hIiIwxKiwslPR/4bdUc9A7c+ZMrVmzRo8++qi+++47TZo0SQ88\n8IBTawcAqzX0TL/0j2vf/6NkaGiojh8/fsU/Vko1z2B/f39HPxMmTFBlZaXmz5+v48eP64EHHtD0\n6dMdfxCE9+DMB9Soa9euKigo0McffyxJeuONN3TNNdeoXbt2GjhwoNLS0nT27FmdP39eqampGjBg\nQJ2PffLkST300EMqKSmRn5+funXrVqcBc+7cOb3zzjuSpIyMDHXu3FlXXXWVBg8erG3btqmiokLG\nGD3//PP6+9//7vSa63v8mtYVEBCgfv36Oa5t++abb5STk6PIyEinewSAumrVqpUj+LyouuCzvLxc\njz76qKZMmaKMjAylpaW59EvfpXUuhq12u12RkZFKT093/G/fvn0KDw9XaGholfs8VPcLdG3r+H5Q\nfurUKfn5+alVq1Z17rt58+b6zW9+o7ffflvPPfecVqxYof/93/91ZukAYLmGnumXqukPj1f6Y2Vd\nBQQE6Je//KVef/11vfLKK0pLS9PevXvr1S8aJ8IH1KhZs2Zavny5nnrqKcXGxmrLli1atmyZbDab\nYmNj1b9/f9133326++67dc011+jBBx+s87HDwsIUFRWl+++/X3FxcfrNb36j3//+97Xud9111+mj\njz7S0KFDtWbNGs2dO1eSlJiYqLZt2+quu+5SbGysvvzyS8fpX86o7/GvtK758+crOztbsbGxmjp1\nqhYsWKBrr73W6R4BoDaBgYGqrKzUuXPnagw+Lz6npKREZ8+eVWlpqTp37ixJ2rRpkwIDAx2fYlRX\nb7zxhiorK3XixAl99NFH6tmzp/r166ecnBzHJx394x//0IIFCyRJ3bt3dwS+33zzjT766KNqj3ul\nALdv375Vjv/KK6+ob9++Cgio+8mdkydP1hdffCHpwuUYLVq04C9uABoNT830Sw0cONBR9+TJk3r7\n7bc1cODAK/6xsq6efPJJvf/++5IunEHcunVrZrCXshljjKebAOoiOztbs2fP1ttvv90kjw8ADaWy\nslLjxo3T559/rlWrVmnNmjU6fPiwAgMDNW3aNA0dOrTKc9asWaO//vWvSktLU3h4uKZMmaL09HTt\n379fa9as0b333qtPP/30ijWjo6OVkJCgt956SydPntTIkSM1depUSdJf//pXPfvssyovL1fz5s2V\nnJysHj16qKCgQL/+9a91+PBh3XTTTQoLC1O7du00ffp0RUdHa9GiRerZs6ck6ejRo5o9e/Zl65Au\nnKn23HPPqby8XO3atdNTTz2la6+9VitXrtS3337rCIFjYmK0YMEC9e7dWzk5OXr88cf17rvvas+e\n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\neOABU1FRYVasWGE2b97sUk1nat9+++316rk+9UtLS82gQYPM6dOnTWVlpRkxYoT54osvzKuvvmpS\nUlJcqpmdnW1++ctfGmOMOXjwoBk1alSVx4cNG2aOHDliKioqTEJCgvniiy9q3ced9WNiYszRo0eN\nMcZMnz7d7N692+zbt89Mnz7d5ZrO1B80aJApKSlxah931r+ovLzcjBkzxpSUlNTr9f6+M2fOmLFj\nx5rZs2dX+9+P1a8/XOPLc7qu9ZnV3jOrmdPM6abK07O6Op6e3672ZOVMd6UnK+Z8dTw9+13pyerf\n3V3pyer3CVd6uqi+7x1N/rKLiIgIPffccwoJCan28f3796tLly4KCQlRcHCwevToodzcXGVlZSkm\nJkbShZQmNzfXpfrOHGfdunUaP368/Pzc8213dQ0NtfYf/OAHSktLU4sWLWSz2dSyZUsVFRW5VOvS\nmnfeeack6aabbtKpU6dUUlIi6UIKd/XVV+vaa6+Vn5+fBgwYoKysrCvu4876krR9+3Zdc801kqSw\nsDAVFha6vFZX6rtrn/oe67XXXtPQoUPVvHlzl+rUJCgoSGvXrpXdbr/ssYZ4/eEaX57TztZ3x37O\nHodZ7d5ZzZxmTjdVnp7V1fH0/K5vT+7Yzx3HtmLO19SHJ2e/sz1J1v/u7kpP7trHip7q+97R5MOH\nH/zgB45TUqpTUFCgsLAwx9dhYWHKz8+vst3Pz082m01lZWVO16/rcc6dO6c9e/Zo8ODBjm3p6el6\n6KGHNGnSJOXl5VlSu6ysTElJSRozZow2bNjgVM/uqH/xc6Y/++wzHT58WN26dZN04bS+iRMnavz4\n8fr000+dqtmqVSvH1xdfT0nKz8+v8bWuaR9n1Xasi+s9fvy43n//fQ0YMEDShdMAJ0+erISEBL3/\n/vsu1a5LfUmaO3euEhIStGTJEhljGnT9F23btk0jRoxwfO3q6/19AQEBCg4Orvaxhnj94RpfntN1\nrc+s9p5ZzZxmTjdVnp7VtdX0xPx2tScrZ7qrPbl7ztfUhydnv7M9Sdb/7u5KT5K17xOu9iTV/72j\nSd3zYdu2bdq2bVuVbdOnT1dUVFSdj2Fq+GTRmrbXVn///v11Os4777yjgQMHOtLYAQMG6I477lCv\nXr30xhtvaMGCBVqzZo3baz/++OO65557ZLPZNHbsWPXs2fOy51i99v/85z+aOXOmli5dqsDAQHXr\n1k1hYWEaOHCgPv74Yz3xxBN6/fXXa+2hOnXp3R37OHOsEydOaPLkyZo7d65atWqlH/7wh5o2bZqG\nDRumvLw8Pfjgg9q1a5eCgoLcXv9Xv/qVoqKidPXVV2vq1KnKyMioU8/uqi9JH3/8sX70ox85hrk7\nX293cOf6cTlfntP1qc+sds8+zhyroWY1c9p5zGnreXpW17Wnhpzf7uzJXTPdnT1J1s756nh69tf1\n+A35u3tdemro94m69CS5572jSYUPI0eOdPpmMXa7XQUFBY6vjx8/ru7du8tutys/P18dO3ZUeXm5\njDG1/kBVV3/WrFl1Ok5mZqYSEhIcX3//piJLliyxpPalNe+44w59/vnnDbr2b7/9VlOnTtWiRYt0\nyy23SLpwKs9NN90kSbr11lt18uRJVVRUXDFtv6i61zMiIqLax44dOya73a7AwMAa93HWlepLUklJ\niX7xi1/o0UcfVb9+/SRJbdq0UVxcnCTphhtuUOvWrXXs2DGXbjJUW/34+HjHv/v37+94vRtq/ZK0\ne/du9enTx/F1fV7v+vRmxeuP2vnynK5PfWa198xq5nTde2NOe46nZ3Vde2rI+e3Ontw1093Zk7vn\nfHU8Pfud7Umy/nd3V3qy+n3ClZ4k97x3NPnLLmrTrVs3HThwQMXFxTpz5oxyc3PVs2dP9e3bV+np\n6ZIuDKzevXu7dPy6HueTTz5Rx44dHV8vWLBAOTk5ki6crnLxbqrurP3VV18pKSlJxhidP39eubm5\n+vGPf9yga//d736nefPmqVOnTo5ta9eu1c6dOyVduCN2WFhYnYdc3759HenfP//5T9ntdkf61q5d\nO5WUlOjQoUM6f/68MjMz1bdv3yvu48qar3SslJQUjR8/Xv3793dsS0tL07p16yRdOOXsxIkTjrsv\nu7P+6dOnNXHiRMdpdh9++KHj9W6o9UvSgQMHqvys1+f1dkZDvP6whjfP6brUZ1Z716xmTteMOd20\nWT2rq+Pp+e1KT1bPdFd6ktw/52vqw5Oz39meJOt/d3e2p4Z4n3C2p4vc8d5hM0383Lbdu3dr3bp1\n+uqrrxQWFqaIiAitX79ef/zjH9WrVy/deuutSk9P17p16xynPt1zzz2qqKjQ7Nmz9Z///EdBQUFK\nSUnRtdde63T9mo5zaX1J6tOnj7Kyshz7ffbZZ5o7d64CAgJks9m0YMECtW/f3u21Fy9erH379snP\nz0/R0dGaMmVKg629ZcuWio+Pr5I+T5gwQZ06ddJjjz3mGMrOflTMkiVLlJOTI5vNprlz5+rTTz9V\nSEiIYmJi9OGHHzrS7SFDhmjixInV7nPpfzjOqql+v379qrzmknT33Xfrrrvu0syZM1VcXKzy8nJN\nmzbNcT2ZO+vHxMRo06ZN2rFjh6666ir99Kc/1Zw5c2Sz2Rpk/RdvdDR8+HBt2LBBrVu3lnQhaa/P\n632pix+pdfjwYQUEBKhNmzaKjo5Wu3btGuz1h/N8eU7XtT6z2rtmNXOaOd0UeXpWV8fT89vVnqyc\n6a70ZNWcr46nZ78zPTXU7+7O9NRQ7xPO9iS5572jyYcPAAAAAACgcfP6yy4AAAAAAIBnET4AAAAA\nAABLET4AAAAAAABLET4AAAAAAABLET4AAAAAAABLET4AAAAAAABLET4AAAAAAABL/T9CINLiKzOa\n8wAAAABJRU5ErkJggg==\n",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "Xx9jgEMHKxlJ"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "We might be able to do better by choosing additional ways to transform these features.\n",
+ "\n",
+ "For example, a log scaling might help some features. Or clipping extreme values may make the remainder of the scale more informative."
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "baKZa6MEKxlK",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def log_normalize(series):\n",
+ " return series.apply(lambda x:math.log(x+1.0))\n",
+ "\n",
+ "def clip(series, clip_to_min, clip_to_max):\n",
+ " return series.apply(lambda x:(\n",
+ " min(max(x, clip_to_min), clip_to_max)))\n",
+ "\n",
+ "def z_score_normalize(series):\n",
+ " mean = series.mean()\n",
+ " std_dv = series.std()\n",
+ " return series.apply(lambda x:(x - mean) / std_dv)\n",
+ "\n",
+ "def binary_threshold(series, threshold):\n",
+ " return series.apply(lambda x:(1 if x > threshold else 0))"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "-wCCq_ClKxlO"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "The block above contains a few additional possible normalization functions. Try some of these, or add your own.\n",
+ "\n",
+ "Note that if you normalize the target, you'll need to un-normalize the predictions for loss metrics to be comparable."
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "8ToG-mLfMO9P",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 656
+ },
+ "outputId": "915de52e-5d89-4620-8178-a55f8755c284"
+ },
+ "cell_type": "code",
+ "source": [
+ "def normalize(examples_dataframe):\n",
+ " \"\"\"Returns a version of the input `DataFrame` that has all its features normalized.\"\"\"\n",
+ " #\n",
+ " # YOUR CODE HERE: Normalize the inputs.\n",
+ " #\n",
+ " processed_features = pd.DataFrame()\n",
+ "\n",
+ " processed_features[\"households\"] = log_normalize(examples_dataframe[\"households\"])\n",
+ " processed_features[\"median_income\"] = log_normalize(examples_dataframe[\"median_income\"])\n",
+ " processed_features[\"total_bedrooms\"] = log_normalize(examples_dataframe[\"total_bedrooms\"])\n",
+ " \n",
+ " processed_features[\"latitude\"] = linear_scale(examples_dataframe[\"latitude\"])\n",
+ " processed_features[\"longitude\"] = linear_scale(examples_dataframe[\"longitude\"])\n",
+ " processed_features[\"housing_median_age\"] = linear_scale(examples_dataframe[\"housing_median_age\"])\n",
+ "\n",
+ " processed_features[\"population\"] = linear_scale(clip(examples_dataframe[\"population\"], 0, 5000))\n",
+ " processed_features[\"rooms_per_person\"] = linear_scale(clip(examples_dataframe[\"rooms_per_person\"], 0, 5))\n",
+ " processed_features[\"total_rooms\"] = linear_scale(clip(examples_dataframe[\"total_rooms\"], 0, 10000))\n",
+ "\n",
+ " return processed_features\n",
+ "\n",
+ "normalized_dataframe = normalize(preprocess_features(california_housing_dataframe))\n",
+ "normalized_training_examples = normalized_dataframe.head(12000)\n",
+ "normalized_validation_examples = normalized_dataframe.tail(5000)\n",
+ "\n",
+ "_ = train_nn_regression_model(\n",
+ " my_optimizer=tf.train.AdagradOptimizer(learning_rate=0.15),\n",
+ " steps=1000,\n",
+ " batch_size=50,\n",
+ " hidden_units=[10, 10],\n",
+ " training_examples=normalized_training_examples,\n",
+ " training_targets=training_targets,\n",
+ " validation_examples=normalized_validation_examples,\n",
+ " validation_targets=validation_targets)"
+ ],
+ "execution_count": 20,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 87.14\n",
+ " period 01 : 76.49\n",
+ " period 02 : 73.18\n",
+ " period 03 : 71.88\n",
+ " period 04 : 70.89\n",
+ " period 05 : 70.52\n",
+ " period 06 : 69.69\n",
+ " period 07 : 69.62\n",
+ " period 08 : 68.86\n",
+ " period 09 : 68.02\n",
+ "Model training finished.\n",
+ "Final RMSE (on training data): 68.02\n",
+ "Final RMSE (on validation data): 70.22\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\nREQkWixUiIiISLRYqBAREZFosVAhIiLqwrZv/8Oi161Y8Tby8nJbff7JJx/rrJA6FQsVIiKiLio/\nPw9bt/5q0WsffvhxhISEtvr8668v76ywOpWol9AnIiKi1i1f/gZSU49j7NhYTJkyDfn5eXjnnVV4\n7bV/oqioEDU1Nbj77vswevRYLFlyHx577An8+ecfqKrSIyvrHHJzc/DQQ48jLm40ZsyYhJ9//gNL\nltyH2NirkJSUiLKyMrzxxr8REBCAf/7zORQU5GPo0Chs27YV69dvtstnZKFCRETUQf/ddgoH0wov\ne1wmk8BoFNr1nrERasyZ2K/N19x223ysW/df9OkTjqysTKxa9Ql0ulKMGnU1pk2bidzcHDz33JMY\nPXpss+MKC7X4179WYt++Pdi48UfExY1u9ryHhwdWrFiN1avfxc6d2xASEob6+jp89NEX2L37L/z3\nv/9p12dqD6csVIwmI1KKj2OC3yhHh0JERNQpBg2KBAB4eXkjNfU4/ve/dZBIpKioKL/stVFRwwAA\narUaer3+suejo2PMz5eXl+PcubMYOjQaABAXNxoymf32MLJZoWIymfD888/j5MmTcHFxwQsvvACl\nUoknnngCRqMRgYGBeOutt+Dq6mqrEFp1uvwsPj32DfQoxzXqsVc+gIiIqA1zJvZrsfUjMNALRUWV\ndonBxcUFAPD777+goqIC77//CSoqKnDPPfMve+3FhYYgXN7ic+nzgiBAKm18TCKRQCKRdHb4rbLZ\nYNo//vgDlZWV+P777/HKK6/gzTffxMqVK3H77bfju+++Q69evfDDDz/Y6vRt6uEVBhepHH+dO9Bi\ngoiIiLoCqVQKo9HY7LGysjIEB4dAKpVix45tMBgMHT5PaGgY0tNPAAAOHNh32TltyWaFSmZmJqKi\nogAAPXv2RF5eHvbv349JkyYBACZMmIC9e/fa6vRtUsjdMTRgMPIqtciqzHFIDERERB3Vq1cfpKen\noarqQvfN+PETsWfPX3j44QegUCigVqvx+ecfd+g88fFjUVVVhQceWIiUlGR4e/t0NHSLSQQbNSns\n2LEDX375JT7++GOcO3cOs2bNQk1NDdLT0wEAWVlZeOKJJ/D999+3+h62bC47UnQcHx79EhN6jMHs\n/n+z2XnIevZsKiXrMDfixLyIV3fJTUVFOZKSEjF+/CQUFRXi4YcfwHff/dip5wgM9GrxcZuNURk3\n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\n",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "GhFtWjQRzD2l"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below for one possible solution."
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "OMoIsUMmzK9b"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "These are only a few ways in which we could think about the data. Other transformations may work even better!\n",
+ "\n",
+ "`households`, `median_income` and `total_bedrooms` all appear normally-distributed in a log space.\n",
+ "\n",
+ "`latitude`, `longitude` and `housing_median_age` would probably be better off just scaled linearly, as before.\n",
+ "\n",
+ "`population`, `totalRooms` and `rooms_per_person` have a few extreme outliers. They seem too extreme for log normalization to help. So let's clip them instead."
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "XDEYkPquzYCH",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 656
+ },
+ "outputId": "dcae2a58-1212-47f0-f560-a8c1b8d8aead"
+ },
+ "cell_type": "code",
+ "source": [
+ "def normalize(examples_dataframe):\n",
+ " \"\"\"Returns a version of the input `DataFrame` that has all its features normalized.\"\"\"\n",
+ " processed_features = pd.DataFrame()\n",
+ "\n",
+ " processed_features[\"households\"] = log_normalize(examples_dataframe[\"households\"])\n",
+ " processed_features[\"median_income\"] = log_normalize(examples_dataframe[\"median_income\"])\n",
+ " processed_features[\"total_bedrooms\"] = log_normalize(examples_dataframe[\"total_bedrooms\"])\n",
+ " \n",
+ " processed_features[\"latitude\"] = linear_scale(examples_dataframe[\"latitude\"])\n",
+ " processed_features[\"longitude\"] = linear_scale(examples_dataframe[\"longitude\"])\n",
+ " processed_features[\"housing_median_age\"] = linear_scale(examples_dataframe[\"housing_median_age\"])\n",
+ "\n",
+ " processed_features[\"population\"] = linear_scale(clip(examples_dataframe[\"population\"], 0, 5000))\n",
+ " processed_features[\"rooms_per_person\"] = linear_scale(clip(examples_dataframe[\"rooms_per_person\"], 0, 5))\n",
+ " processed_features[\"total_rooms\"] = linear_scale(clip(examples_dataframe[\"total_rooms\"], 0, 10000))\n",
+ "\n",
+ " return processed_features\n",
+ "\n",
+ "normalized_dataframe = normalize(preprocess_features(california_housing_dataframe))\n",
+ "normalized_training_examples = normalized_dataframe.head(12000)\n",
+ "normalized_validation_examples = normalized_dataframe.tail(5000)\n",
+ "\n",
+ "_ = train_nn_regression_model(\n",
+ " my_optimizer=tf.train.AdagradOptimizer(learning_rate=0.15),\n",
+ " steps=1000,\n",
+ " batch_size=50,\n",
+ " hidden_units=[10, 10],\n",
+ " training_examples=normalized_training_examples,\n",
+ " training_targets=training_targets,\n",
+ " validation_examples=normalized_validation_examples,\n",
+ " validation_targets=validation_targets)"
+ ],
+ "execution_count": 21,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 95.09\n",
+ " period 01 : 78.86\n",
+ " period 02 : 75.12\n",
+ " period 03 : 76.16\n",
+ " period 04 : 72.92\n",
+ " period 05 : 72.21\n",
+ " period 06 : 72.13\n",
+ " period 07 : 71.46\n",
+ " period 08 : 70.82\n",
+ " period 09 : 70.57\n",
+ "Model training finished.\n",
+ "Final RMSE (on training data): 70.57\n",
+ "Final RMSE (on validation data): 73.03\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAioAAAGACAYAAACDX0mmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xd0lFX+BvBnSnrPTBKSQHonBYRY\nKEJAILRVkUUEIirqb0V2WWF3UVdw7biruKKAvYCroEgRBEFEmoUiGFIJ6SGN1EkvM/P+/kgyJJCZ\nTCBTkjyfcziHmbkz753cmfDw3nu/r0gQBAFEREREZkhs6g4QERERacOgQkRERGaLQYWIiIjMFoMK\nERERmS0GFSIiIjJbDCpERERktqSm7gCROQgNDYWPjw8kEgkAQKVSITY2Fs888wxsbW2v+3W//PJL\nzJs375r7d+zYgaeeegrvvPMO4uLiNPc3NTVhzJgxmDp1KtauXXvdx9VXfn4+Xn75ZeTk5AAAbGxs\nsGzZMtxxxx0GP3ZvbNy4Efn5+df8TE6ePIklS5Zg6NCh1zznu+++M1b3bsilS5cwefJk+Pv7AwAE\nQYBcLsc///lPRERE9Oq1Xn/9dXh5eeG+++7T+zm7d+/G9u3bsWXLll4di8hYGFSI2m3ZsgVDhgwB\nALS0tOCJJ57Au+++iyeeeOK6Xq+srAwffPBBt0EFADw9PbF3794uQeXHH3+Eo6PjdR3vevztb3/D\nnXfeiXfeeQcAkJiYiMWLF2P//v3w9PQ0Wj9uhKenZ78JJdpIJJIu72Hfvn14/PHHceDAAVhaWur9\nOitXrjRE94hMilM/RN2wtLTE+PHjkZaWBgBobm7GmjVrMG3aNEyfPh1r166FSqUCAKSnp2P+/PmI\nj4/HnXfeiePHjwMA5s+fj6KiIsTHx6OlpeWaY9x00004efIkGhsbNfft27cPY8eO1dxuaWnBiy++\niGnTpmHSpEmaQAEA586dw5w5cxAfH48ZM2bg559/BtD2P/Rx48Zh8+bNmD17NsaPH499+/Z1+z4z\nMjIQExOjuR0TE4MDBw5oAtvbb7+NCRMm4K677sJ7772HSZMmAQCefPJJbNy4UfO8zrd76tfLL7+M\nRYsWAQB+++033HPPPZgyZQrmzZuHgoICAG1nlv76178iLi4OixYtQklJSQ8j1r0dO3Zg2bJlWLx4\nMf7973/j5MmTmD9/PpYvX675R33//v2YNWsW4uPjcf/99yM/Px8A8NZbb+GZZ57B3Llz8cknn3R5\n3eXLl+Ojjz7S3E5LS8O4ceOgVqvxxhtvYNq0aZg2bRruv/9+lJaW9rrfM2bMQFNTE7KzswEA27Zt\nQ3x8PCZNmoQVK1agqakJQNvP/ZVXXsHs2bOxf//+LuOg7XOpVqvx/PPPY+LEiZg7dy7S09M1xz11\n6hTuvvtuzJgxA9OnT8f+/ft73XeiPicQkRASEiIUFxdrbldXVwsLFy4UNm7cKAiCILz77rvCI488\nIrS2tgqNjY3CPffcI+zatUtQqVTC9OnThT179giCIAjnz58XYmNjhdraWuHXX38V7rjjjm6P9/XX\nXwurVq0S/va3v2meW1tbK0yePFn46quvhFWrVgmCIAhvv/22sHjxYqG5uVmor68X7rrrLuHw4cOC\nIAjCrFmzhL179wqCIAg7d+7UHKugoECIiIgQtmzZIgiCIOzbt0+YMmVKt/3485//LMTFxQmffvqp\nkJmZ2eWxCxcuCKNHjxYuX74stLa2Co899pgQFxcnCIIgrFq1StiwYYOmbefbuvo1fPhwYceOHZr3\nGxsbK5w4cUIQBEHYs2ePcPfddwuCIAifffaZsHDhQqG1tVWorKwU4uLiND+TznT9jDt+ziNGjBBy\ncnI07aOiooSff/5ZEARBKCwsFEaNGiXk5uYKgiAIH374obB48WJBEARh/fr1wrhx44SKioprXvfb\nb78VFi5cqLn95ptvCi+88IKQkZEhTJ06VWhpaREEQRA2b94s7Ny5U2v/On4u4eHh19wfGxsrZGVl\nCadPnxZuu+02oaSkRBAEQVi9erWwdu1aQRDafu6zZ88WmpqaNLc3bNig83N55MgRYerUqUJdXZ3Q\n2NgozJ07V1i0aJEgCIIwZ84c4eTJk4IgCEJOTo6wYsUKnX0nMgaeUSFql5CQgPj4eEyePBmTJ0/G\nrbfeikceeQQAcOTIEcybNw9SqRTW1taYPXs2fvrpJ1y6dAnl5eWYOXMmACAqKgpeXl5ISkrS65gz\nZ87E3r17AQCHDh1CXFwcxOIrX8sff/wRCxYsgKWlJWxtbXHnnXfi4MGDAIBdu3Zh+vTpAIBRo0Zp\nzkYAgFKpxJw5cwAAw4cPR1FRUbfH/89//oOFCxdiz549mDVrFiZNmoQvvvgCQNvZjtjYWLi5uUEq\nlWLWrFl6vSdd/WptbcWUKVM0r+/h4aE5gzRr1izk5+ejqKgIZ86cwZQpUyCVSuHi4tJleuxqxcXF\niI+P7/Kn81oWPz8/+Pn5aW5bW1vjtttuAwD89NNPuOWWW+Dr6wsA+OMf/4iTJ09CqVQCaDvD5Orq\nes0xJ06ciNTUVFRXVwMAvv/+e8THx8PR0RGVlZXYs2cPFAoFEhIScNddd+n1c+sgCAK2bdsGDw8P\n+Pn54fDhw5gxYwY8PDwAAPfdd5/mMwAAt912G6ysrLq8hq7P5enTpzFhwgTY2dnB2tpaM1YAIJPJ\nsGvXLmRlZcHPzw+vv/56r/pOZAhco0LUrmONSmVlpWbaQipt+4pUVlbCyclJ09bJyQkVFRWorKyE\ng4MDRCKR5rGOf6zkcnmPxxw7diyeeeYZVFdX49tvv8XSpUs1C1sBoLa2Fq+88grWrVsHoG0qKDo6\nGgCwZ88ebN68GfX19VCr1RA6XbZLIpFoFgGLxWKo1epuj29lZYUlS5ZgyZIlqKmpwXfffYeXX34Z\nQ4cOhUKh6LJeRiaT9fh+9OmXvb09AKCmpgYFBQWIj4/XPG5paYnKykooFAo4ODho7nd0dER9fX23\nx+tpjUrncbv6dlVVVZf36ODgAEEQUFVV1e1zO9ja2mLMmDE4cuQIRo0ahZqaGowaNQoikQhvvfUW\nPvroI7zwwguIjY3Fc8891+N6H5VKpfk5CIKAoKAgbNy4EWKxGLW1tfj+++9x4sQJzeOtra1a3x8A\nnZ9LhUIBd3f3Lvd3ePnll7Fp0yY8+OCDsLa2xooVK7qMD5EpMKgQXcXV1RUJCQn4z3/+g02bNgEA\n5HK55n/PAFBdXQ25XA6ZTAaFQgFBEDT/KFRXV+v9j7qFhQXi4uKwa9cu5OXlYeTIkV2Ciru7Ox56\n6KFrziiUlpbimWeewVdffYXw8HDk5uZi2rRpvXqflZWVSEtL05zRcHR0xLx583D8+HFkZGTAwcEB\ntbW1Xdp3uDr8KBSKXvfL3d0dAQEB2LFjxzWPOTo6aj12X5LJZDh37pzmtkKhgFgshouLS4/PnTZt\nGr7//ntUVVVh2rRpmvG/9dZbceutt6KhoQGvvvoqXnvttR7PTFy9mLYzd3d33H333Vi1alWv3pe2\nz6Wun61cLsfq1auxevVqnDhxAn/+858xfvx42NnZ6X1sor7GqR+ibjz44IM4d+4cTp06BaDtVP/2\n7duhUqnQ0NCA3bt3Y8KECRg6dCiGDBmiWax69uxZlJeXIzo6GlKpFA0NDZppBG1mzpyJ999/v9st\nwZMnT8ZXX30FlUoFQRCwceNGHDt2DJWVlbC1tUVAQACUSiW2bdsGAFrPOnSnqakJf/nLXzSLLAEg\nLy8PiYmJGD16NEaOHIkzZ86gsrISSqUSu3bt0rRzc3PTLMIsKCjA2bNnAaBX/YqJiUFZWRkSExM1\nr/P3v/8dgiBgxIgROHz4MFQqFSorK3Hs2DG931dvjB07FmfOnNFMT23duhVjx47VnEnTJS4uDufO\nncOhQ4c00ycnTpzAc889B7VaDVtbW4SFhXU5q3E9Jk2ahIMHD2oCxaFDh/Dee+/pfI6uz+XIkSNx\n4sQJNDY2orGxUROQWltbkZCQgMuXLwNomzKUSqVdpiKJTIFnVIi6YW9vj0cffRSvvvoqtm/fjoSE\nBBQUFGDmzJkQiUSIj4/H9OnTIRKJsG7dOjz77LN4++23YWNjgzfffBO2trYIDQ2Fk5MTxo4di507\nd8LLy6vbY918880QiUSYMWPGNY8tWLAAly5dwsyZMyEIAiIjI7F48WLY2tri9ttvx7Rp0yCTyfDk\nk0/i7NmzSEhIwPr16/V6j15eXti0aRPWr1+PF198EYIgwN7eHk899ZRmJ9C9996Lu+++Gy4uLpg6\ndSouXrwIAJg3bx6WLVuGqVOnIiIiQnPWJCwsTO9+WVtbY/369XjhhRdQX18PCwsLLF++HCKRCPPm\nzcOZM2dwxx13wMvLC3fccUeXswCddaxRudq///3vHn8GQ4YMwYsvvoilS5eitbUVQ4cOxQsvvKDX\nz8/e3h7Dhw/HhQsXMGLECABAbGwsvv32W0ybNg2WlpZwdXXFyy+/DAD4xz/+odm50xvDhw/Hn/70\nJyQkJECtVkMmk+G5557T+Rxdn8u4uDgcOXIE8fHxkMvlmDBhAs6cOQMLCwvMnTsXDzzwAIC2s2bP\nPPMMbGxsetVfor4mEjpPIBMRaXHmzBn84x//wOHDh03dFSIaRHhOj4iIiMwWgwoRERGZLU79EBER\nkdniGRUiIiIyWwwqREREZLbMentyWVn32xH7iouLLaqqGgx6DOo9jov54tiYJ46L+eLY6M/NzaHb\n+wf1GRWpVGLqLlA3OC7mi2Njnjgu5otjc+MGdVAhIiIi88agQkRERGaLQYWIiIjMFoMKERERmS0G\nFSIiIjJbDCpERERkthhUiIiIyGwxqBAREfVjR478oFe7N998HUVFhVoff/LJFX3VpT7FoEJERNRP\nFRcX4dChA3q1Xb58Jby8vLU+vnbtur7qVp8y6xL6REREpN26da8iLS0F48fHYurU6SguLsJ//7sR\nr7zyPMrKLqOxsREPPfQoxo4dj2XLHsWKFf/Ajz/+gPr6OuTn56Gw8BL+8peVuO22sZg5czK+/fYH\nLFv2KGJjb8HZs2dQXV2NV199A3K5HM8/vxolJcWIiorG4cOHsHPnPqO8RwYVIiKiG/Tl4UycTr98\nzf0SiQgqlXBdrxkb5o55k4J0trnvvgTs2PEl/P0DkZ+fi40bP0BVVSVuvvlWTJ8+C4WFl7B69ZMY\nO3Z8l+ddvlyK115bj19//Rm7d3+N224b2+VxOzs7vPnmJmza9BaOHTsML6+haGlpxnvvfYKffjqO\nL7/84rre0/UYlEFFpVYhsTwFca43m7orREREfSI8fDgAwMHBEWlpKfjmmx0QicSoqVFc0zY6egQA\nwN3dHXV1ddc8HhMzUvO4QqFAXl4OoqJiAAC33TYWEonxrmE0KINKZnUOPkz+DI3iOoyVjzF1d4iI\nqJ+bNymo27Mfbm4OKCurNUofLCwsAADff/8dampqsGHDB6ipqcHDDydc07Zz0BCEa8/4XP24IAgQ\ni9vuE4lEEIlEfd19rQblYlpvB0+IIMKZwvOm7goREdF1E4vFUKlUXe6rrq6Gp6cXxGIxjh49jNbW\n1hs+jrf3UFy4kAoAOHXq12uOaUiDMqjYW9ghwMkPFytyUNty7SkvIiKi/sDX1x8XLqSjvv7Kv2UT\nJ07Czz8fx/Llj8HGxgbu7u74+OP3b+g4Y8aMR319PR57bAkSE8/B0dHpRruuN5HQ3TkfM2HI02Xf\n5x3Brqx9SAifh1s9RxvsONR7xjxVSr3DsTFPHBfzNVDGpqZGgbNnz2DixMkoK7uM5csfw+eff92n\nx3Bzc+j2/kG5RgUAouQR2JW1D0nlaQwqREREOtja2uHw4UP4/PMtEAQ1/vxn4xWHG7RBxcPWDR72\nbkirvIBWtRIW4kH7oyAiItJJKpXi+edfMcmxB+UaFaBt1fIoryg0q1qQWZ1t6u4QERFRNwZtUAGA\n0V5RAICk8jQT94SIiIi6M6iDSphbMKwl1kguT+12HzkRERGZ1qAOKlKxBBGyEFQ0VaG4vtTU3SEi\nIqKrDOqgArTt/gGApPJUE/eEiIio782dOxsNDQ3YsuUTJCd3LXTa0NCAuXNn63z+kSM/AAD27duD\no0d/NFg/tRn0QSVCFgoRREiu4DoVIiIauBISHkBkZHSvnlNcXIRDhw4AAGbMmI0JE+IM0TWdBv2e\n3I4qtdmKXNS21MHB0t7UXSIiIurRQw8txMsvv44hQ4agpKQYTz21Em5u7mhsbERTUxOeeOLviIiI\n1LR/6aV/YeLEyRgxYiT++c9/oKWlRXNxQgA4eHA/tm/fBolEDD+/QKxa9U+sW/cq0tJS8PHH70Ot\nVsPZ2Rn33HMvNm58E0lJiVAqVbjnnnmIj5+JZcseRWzsLTh79gyqq6vx6qtvYMiQITf8Pgd9UAGA\nKHk4shQ5SKlIZ/E3IiLqtR2Ze3HuctI190vEIqjU17dZY6R7FOYEzdL6+O23x+Gnn47hnnvm4fjx\no7j99jgEBgbj9tsn4rffTuN///sUL730n2ued+DAfgQEBOIvf1mJH344qDlj0tjYiNdffwsODg54\n/PFHkJWVifvuS8COHV/iwQcfwYcfvgsA+P33s8jOzsKmTR+hsbERixfPx+23TwQA2NnZ4c03N2HT\nprdw7NhhzJu34Lree2eDfuoHaAsqALcpExFR/9EWVI4DAE6cOIpx4ybg6NEf8NhjS7Bp01tQKBTd\nPi83NxuRkTEAgJEjR2nud3R0xFNPrcSyZY8iLy8HCkV1t89PT0/FiBE3AQBsbGzg5xeAgoICAEBM\nzEgAgLu7O+rq+uZaejyjAsDD1h1yGxnSKi9AqVZCyiq1RETUC3OCZnV79sOQ1/oJCAhERUUZSktL\nUFtbi+PHj0Aud8fq1S8gPT0Vb7/9326fJwiAWCwCAKjbz/a0trZi3bp/45NPPodMJsc//vFXrccV\niUToXNFDqWzVvJ5EIul0nL4p+8EzKmj7oUfJw9GsasFFVqklIqJ+4rbbxuG99zZi/PgJUCiq4e09\nFABw9OiPUCqV3T7Hx8cX6eltMwhnz54BADQ01EMikUAmk6O0tATp6WlQKpUQi8VQqVRdnh8WNhzn\nzv3W/rwGFBZewtChPoZ6iwwqHSJlnP4hIqL+ZcKEOBw6dAATJ05GfPxMbNv2PzzxxOMYPjwSFRUV\n+Pbbb655Tnz8TKSkJGH58sdQUJAHkUgEJydnxMbegocfvh8ff/w+FixIwPr16+Dr648LF9Kxfv3r\nmufHxIxAaGgYHn/8ETzxxOP405+WwcbGxmDvUSSYcUlWQ18au/MpOaVaiVXHn4edhQ2eu+1JiEQi\ngx6btBsol0UfiDg25onjYr44Nvpzc3Po9n6eUWknFUtZpZaIiMjMMKh00lGlNpnTP0RERGaBQaWT\njiq1SRUsp09ERGQOGFQ6aatS64scRT5qW/pm/zcRERFdPwaVq0TJIyBAQGrFBVN3hYiIaNBjULnK\nlSq1nP4hIiIyNQaVq3jYukNu7Yq0ygwo1d0XyyEiIiLjYFC5SluV2gg0qZpZpZaIiMjEGFS6Edk+\n/cNtykRERKbFoNKNIGd/WEuskVSe1mcXVSIiIqLeY1DphlQsRbgsBBVNlaxSS0REZEIMKlpEyTj9\nQ0REZGpSQ72wWq3Gs88+i4sXL8LCwgL/+te/8P777yMlJQXOzs4AgCVLlmDixImG6sINGS4Pa69S\nm4apfnGm7g4REdGgZLCg8sMPP6C2thZbt25Ffn4+XnrpJbi4uGDFihWIizPtP/y1DS34+mg2Fs8a\nDm3XSO6oUputyENdSz3sLe2M2kciIiIy4NRPbm4uoqOjAQA+Pj4oKiqCSqUy1OF6pbiiAccSi7Dn\nhO7tx5HycAgQkFKRbqSeERERUWciwUDbWo4ePYpPP/0U77//PvLy8jBnzhyMHj0agiCgtbUVMpkM\nq1evhqurq9bXUCpVkEolfd63VqUKC1bvh8zJGu88eYfWdpcUxVjx3fO4dehNWDH2kT7vBxEREelm\nsKmfCRMm4OzZs1i4cCFCQ0MREBCAP/zhDwgODkZ4eDjee+89vP3221izZo3W16iqajBU9xDh54qz\nGWVIvlAKD1fbbttYCnaQW7vi9+IUFJdWQSo22I+LOnFzc0BZWa2pu0Hd4NiYJ46L+eLY6M/NzaHb\n+w266+eJJ57A1q1b8dxzz6GmpgazZs1CeHjbbppJkyYhIyPDkIfXKTpQBgBIzKrQ2qZzldrM6hxj\ndY2IiIjaGSyopKen46mnngIAHDt2DBEREVi+fDkKCgoAACdPnkRwcLChDt8jTVDJLNfZLpIXKSQi\nIjIZg81lhISEQBAEzJ07F1ZWVnjttdeQl5eHv/71r7CxsYGtrS1eeeUVQx2+R872Vgga5oyMgmo0\nNithY9X9j6Jzldq5wX+ASKRtnxARERH1NYMFFbFYjLVr13a5z9PTE19//bWhDtlrN4d7ILOgGik5\nlRgd5t5tm44qtecun0dJw2V42nkYuZdERESD16CuTDs6oi10JGbpnv7pqFLL6R8iIiLjGtRBJdDb\nGU52ljifVQG1jl3aw2XtVWpZTp+IiMioBnVQEYtFiA6UobahFTnFNVrb2Vvawd/JFzntVWqJiIjI\nOAZ1UAGAmCA5ACAxU/s2ZQCIYpVaIiIioxv0QSXCzwVSiQjne1qnIo8AACRVcPqHiIjIWAZ9ULG2\nlCLUxwX5pXWoqm3W2m6IrTtk1q5Iq7gApVppxB4SERENXoM+qABAjKZKrfazKm1VasNZpZaIiMiI\nGFQARLevUznf4zqVtumfZO7+ISIiMgoGFQDuzjbwktshNa8SLa0qre3aqtRaIak8FQa66DQRERF1\nwqDSLjpQhpZWNdLzq7W2kYqlCHcNQXlTJUoaLhuxd0RERIMTg0o7fdapAJ12/7BKLRERkcExqLQL\nGuoEWyspzmeW65zW6ahSy3UqREREhseg0k4iFiMqUIaKmmYUlmmvPttRpTZbkYe6VlapJSIiMiQG\nlU70nv6RtVepLWeVWiIiIkNiUOkkMkAGkQhIzNK9TTlS3n41ZVapJSIiMigGlU7sbSwQ5O2ErEIF\nahtatLbztPNor1KbwSq1REREBsSgcpWYIDkEAUjOrtTa5kqV2iZWqSUiIjIgBpWr6LtOpWP6h7t/\niIiIDIdB5SpecjvIHK2RnF0JpUqttV2wcwCr1BIRERkYg8pVRCIRYoJkaGhWIqtQobUdq9QSEREZ\nHoNKN2LaL1KYyIsUEhERmRSDSjfCfJxhaSHucZ1KhCwUIohYTp+IiMhAGFS6YSGVIMLXFcUVDbhc\n1aC1nYOlPfydfFilloiIyEAYVLSICerY/dPD9I8sglVqiYiIDIRBRYvowLZ1Kucz9dymzCq1RERE\nfY5BRQsXByv4ejggPb8ajc3aq8+2Val1QSqr1BIREfU5BhUdYoJkUKkFpOZWaW0jEokQKY9glVoi\nIiIDYFDRoWP6p8erKbNKLRERkUEwqOjg5+kAR1sLnM+qgFpH9dlg5wBYSSxZpZaIiKiPMajoIBaJ\nEB0oR019C/JKarW2a6tSG4rypkqUskotERFRn2FQ6YFmm3IPu386pn+SOP1DRETUZxhUehDh5wqJ\nWNRjPZXhsjBWqSUiIupjDCo9sLGSItTHGXkltaiqbdbajlVqiYiI+h6Dih5i2nf/JGXrPqsSKQuH\nAAGpFReM0S0iIqIBj0FFD/qvU2m7mjKnf4iIiPoGg4oe3F1s4SmzRWpuFVqVKq3tWKWWiIiobzGo\n6Ck6UIbmVhUu5FdrbdO5Sm1Wda7xOkdERDRAMajoqWOdSmJmT1dTbt+mXMHpHyIiohvFoKKnoKFO\nsLGSIjGrXGf12SCXjiq1aaxSS0REdIMYVPQklYgRFeCKckUTisq1bz+26KhS21jBKrVEREQ3iEGl\nF6ID23b/nO+h+Bur1BIREfUNBpVeiAqQQYSetylfqVLLoEJERHQjGFR6wcHWEoHeTrhYqEBdY6v2\ndpb28HP0QbYil1VqiYiIbgCDSi/FBMkgCEByD1Vqo+SsUktERHSjDBZU1Go1Vq9ejfnz5yMhIQFZ\nWVkoLi5GQkICFixYgOXLl6OlpcVQhzeYjm3KPa9TaatSm8zpHyIiousmNdQL//DDD6itrcXWrVuR\nn5+Pl156Ca6urliwYAGmT5+OdevWYfv27ViwYIGhumAQ3m52cHW0QlJ2BVRqNSTi7rOep50HXK1d\nkFp5ASq1ChKxxMg9JSIi6v8MdkYlNzcX0dHRAAAfHx8UFRXh5MmTmDx5MgAgLi4Ov/zyi6EObzAi\nkQgxgXLUNymRVVijs12UPByNyiZkVucYsYdEREQDh8GCSkhICE6cOAGVSoXs7GwUFBSgsLAQlpaW\nAACZTIaysjJDHd6g9L5Ioaz9IoWsUktERHRdDDb1M2HCBJw9exYLFy5EaGgoAgICkJGRoXlcn6qt\nLi62kEoNO2Xi5ubQ6+eMc7bFxl0pSM6twlIdz3d2jcYHKVZIrboAudweIpHoRro6qFzPuJBxcGzM\nE8fFfHFsbozBggoAPPHEE5q/33HHHfDw8EBTUxOsra1RWloKd3d3nc+vqmowZPfg5uaAsrLa63pu\nuI8zErMqkHrxMtycbbS2C3MJxu9lyUjOy8YQO93vl9rcyLiQYXFszBPHxXxxbPSnLdAZbOonPT0d\nTz31FADg2LFjiIiIwJgxY3DgwAEAwMGDBzF+/HhDHd7gYoL02/0T2b77J6mc0z9ERES9ZbAzKiEh\nIRAEAXPnzoWVlRVee+01SCQSrFq1Ctu2bYOXlxfuuusuQx3e4DrK6SdmlmPyqKFa20V2qlI7xXei\nkXpHREQ0MBgsqIjFYqxdu/aa+z/++GNDHdKoXB2t4eNuj/T8KjS1KGFt2f2PsnOV2vrWBthZ2Bq5\np0RERP0XK9PegOggGZQqAWm5VTrbRbZXqU2pSDdSz4iIiAYGBpUb0FGlNjGrh23K7VdTZpVaIiKi\n3mFQuQH+no5wsLVAYlYF1Dq2W3vZDelSpZaIiIj0w6ByA8RiEaIDZFDUtSC/VPv2s85VarMUrFJL\nRESkLwaVG9SxTTkxs4dtyrIH18gBAAAgAElEQVS26Z8kTv8QERHpjUHlBkX4uUIiFuF8D+tUgl0C\nYSWxRFJ5ql5VeYmIiIhB5YbZWksRMswZOcW1UNQ1a21nIZYi3DUEZY0VKG3on9c4IiIiMjYGlT4Q\n0178Td8qtckVnP4hIiLSB4NKH9CsU+kpqGiq1LKcPhERkT4YVPqAh6stPFxskJJbiValWmu7tiq1\nw5CtyEN9q2EvuEhERDQQMKj0kZggOZpbVMgoqNbZLlIeAbWgZpVaIiIiPTCo9JGYThcp1IVVaomI\niPTHoNJHgoc5w8ZKgt8zy3VuP/ayGwIXK2dWqSUiItIDg0ofkUrEGO4vQ7miCcUV2teftFWpjWCV\nWiIiIj0wqPQhfbcpd0z/sEotERGRbgwqfSgqQAYRel6nEuwSCEuJJdepEBER9YBBpQ852lkiwMsR\nFy8pUN/UqrVdR5Xay43lKK2/bMQeEhER9S8MKn0sOkgOtSAgObtSZ7uojosUskotERGRVgwqfezK\nOhXd0z+R8nBWqSUiIuoBg0ofG+ZuDxcHK5zPqoBarX2bMqvUEhER9YxBpY+JRCLEBMpQ36REVpFC\nZ9tIeTjUghqpFReM1DsiIqL+hUHFAKI7LlKY2dM25barKXP6h4iIqHsMKgYQ7usCC6kYiT2sU2GV\nWiIiIt0YVAzAykKCcF8XFJbVo1zRqLUdq9QSERHpxqBiIPpWqY1klVoiIiKtGFQMJDpQv3UqIc4B\nrFJLRESkBYOKgcicrDHUzR5peVVobtG+/sRCYsEqtURERFowqBhQTJAMSpUaaXlVOtuxSi0REVH3\nGFQMKKZj+qeH3T/D5WEQQcTpHyIioqswqBhQgJcj7G0skJhZDkHQXqXW0dIBvo7DkKXIRQOr1BIR\nEWkwqBiQWCxCVIAM1XUtyC+t09k2qr1KbQqr1BIREWkwqBhYTFDbNuWepn9YpZaIiOhaDCoGFunv\nCrFI1GM9lStVajNYpZaIiKgdg4qB2VpbIGSYE3KKaqCob9Harq1KbTgalY3IUuQar4NERERmjEHF\nCKID5RAAJPVYpZbTP0RERJ0xqBiBvutUWKWWiIioKwYVIxjiagt3Zxuk5FRCqVJrbWchsUC4S3Bb\nldqGMiP2kIiIyDwxqBiBSCRCdJAMTS0qZBRU62zL6R8iIqIrGFSMJCZIv4sURrJKLRERkQaDipGE\nDnOGlaWEVWqJiIh6gUHFSKQSMSL9XHG5uhEllboDSKSsrUptKqvUEhHRIHfdQSU3N7cPuzE4RLfv\n/ump+FuUnFdTJiIiAnoIKg8++GCX2xs3btT8fc2aNYbp0QAW3XE15Uzd25S97T3hYuWMlIoLrFJL\nRESDms6golQqu9z+9ddfNX/Xtc6CuudkZwl/T0dcvKRAQ1Or1nasUktERNRGqutBkUjU5XbncHL1\nY1err6/HqlWroFAo0NraiscffxzvvfceGhoaYGtrCwBYtWoVIiMjr7fv/VJMkAw5xTVIzqnEzeEe\nWttFysNxrPAXJJenIcQl0Ig9JCIiMh86g8rVegonne3cuRP+/v5YuXIlSktLsXjxYri5ueGVV15B\nSEhIrzs6UMQEyrHreA7OZ1XoDCohzoGwlFgiqSIVc4JnGbGHRERE5kNnUFEoFPjll180t2tqavDr\nr79CEATU1NTofGEXFxdcuHBB8zwXF5c+6G7/5+NhD2d7S5zPqoBaLUAs7j78dVSpTSxPQWlDGTxs\n3YzcUyIiItPTGVQcHR27LKB1cHDAhg0bNH/XZebMmdixYwemTJmCmpoavPvuu3j99dexfv16VFVV\nITAwEE8//TSsra374G30HyKRCNGBchxLLEJ2cQ2CvJ20to2URyCxPAVJ5anw8JlgxF4SERGZB5Fg\noFWxu3fvxpkzZ/DCCy8gPT0dTz/9NB577DGEhobCx8cHzz77LHx8fLBkyRKtr6FUqiCVSgzRPZM6\nmVyMFz8+hT9ODsb9MyK0tqtuVODRb57EcPcQPBv3hBF7SEREZB50nlGpq6vD9u3b8cADDwAAtm7d\nii+++AK+vr5Ys2YN5HK51ueePXsW48aNAwCEhYXh8uXLmDRpEiSStuAxadIk7Nu3T2fnqqoMW5nV\nzc0BZWW1Bj1Gd7xdbCCViPHL+WJMjx2mo6UYvo7DkFaWibyiUtha2Bqtj6ZkqnGhnnFszBPHxXxx\nbPTn5tb9TI3O7clr1qxBRUVbcbKcnBysW7cOq1atwpgxY/DSSy/pPKCvry8SExMBAIWFhbC1tcWS\nJUs0a1tOnjyJ4ODgXr+RgcDKUoIwX2dcKqtDZU2TzrZRsghWqSUiokFLZ1ApKCjAypUrAQAHDhxA\nfHw8xowZg/nz56O8XHfRsnvvvReFhYVYtGgRVq5cieeeew7z5s3DAw88gIULF6KkpAQLFy7su3fS\nz8R0FH9jlVoiIiKtdE79dNQ7AYBTp05h7ty5mts9bVW2s7PDm2++ec39M2bM6G0fB6SYQBn+931b\nldq4kd5a211dpVYiHnhrdoiIiLTReUZFpVKhoqIC+fn5OHfuHMaOHQugrZhbY2OjUTo4UMmdbeDt\nZoe0vCo0t2ovky8SiRDZXqU2m1VqiYhokNEZVB555BHMmDEDs2fPxtKlS+Hk5ISmpiYsWLAAd911\nl7H6OGBFB8rQqlQjPa9KZzvN9E85p3+IiGhw0Tn1M2HCBJw4cQLNzc2wt7cHAFhbW+Pvf/+7ZkcP\nXb+YQDn2/5qPxKwKxARp30HFKrVERDRY6TyjUlRUhLKyMtTU1KCoqEjzJyAgAEVFRcbq44AV6O0I\nO2spEjPLdV7ksaNK7eWGcpQ2lBmxh0RERKal84zKpEmT4O/vDze3tvLtV1+UcPPmzYbt3QAnEYsR\nFSjDrymlKLhcBx8P7dV+I+XhSCxPQXJ5Gjx8WE6fiIgGB51B5dVXX8Xu3btRX1+PmTNnYtasWXB1\ndTVW3waF6PagkphVoTOoDJd1rFNJxWSf243VPSIiIpPSOfVz55134qOPPsJ///tf1NXVYeHChXj4\n4YexZ88eNDXpLlRG+on0l0EsEuF8lu66NE5WDvB1HIYsRS4aWg1bsZeIiMhc6AwqHTw9PbF06VLs\n378f06ZNw4svvsjFtH3E3sYCQUOdkF1Yg5qGFp1tNVVqKzOM1DsiIiLT0iuo1NTU4LPPPsOcOXPw\n2Wef4f/+7/96vE4P6S8mSAYBQFIPVWoj5Vemf4iIiAYDnWtUTpw4ga+//hrJycmYOnUq1q5di5CQ\nEGP1bdCICZTjqx+zkJhVgbFRnlrbDW2vUpvKKrVERDRI6AwqDz/8MPz8/HDTTTehsrISH3/8cZfH\nX3nlFYN2brDwlNlC7mSNlJwKKFVqSCXdn+jqqFJ7vPAXZCtyEewSaOSeEhERGZfOoNKx/biqqgou\nLi5dHrt06ZLhejXIiEQixATJ8cNvl3DxkgLhvi5a20a1B5WkijQGFSIiGvB0rlERi8VYuXIlVq9e\njTVr1sDDwwM333wzMjIy8N///tdYfRwUYoJkANouUqhLiHMgLMUWSGY5fSIiGgR0nlF544038Mkn\nnyAwMBA//PAD1qxZA7VaDScnJ3z11VfG6uOgEDrMBVYWEiRmVWD+5GCt7SwkFghzDcH58hRcbiiD\nuy2LvxER0cDV4xmVwMC26YXJkyejsLAQ999/P95++214eHgYpYODhYVUjAg/F5RWNqC0UnedFF6k\nkIiIBgudQUUkEnW57enpiSlTphi0Q4NZx4UJE3vYpty5Si0REdFAplcdlQ5XBxfqW9GB+q1TcbJy\ngK9DR5XaRmN0jYiIyCR0rlE5d+4cJk6cqLldUVGBiRMnQhAEiEQiHDlyxMDdG1yc7a3gN8QBGQXV\naGxWwsZK+/BEycORV1uA1MoLGO0xwoi9JCIiMh6dQeW7774zVj+oXXSgDLkltUjJqcToMHet7SLl\nEdibcxBJ5akMKkRENGDpDCre3t7G6ge1iwmS45ufcpGYVa4zqAy194SzlROr1BIR0YDWqzUqZHi+\nQxzgZGeJ81kVUAuC1nYdVWoblI3IVuQZsYdERETGw6BiZsQiEaIDZahtaEVOcY3OtlEdu38quPuH\niIgGJgYVM6TZppype5tyqEsQq9QSEdGAxqBihiL8XCCViHA+S/c25Y4qtaUNZbjcUGak3hERERkP\ng4oZsraUItTHBfmldaiqbdbZNlIeBgA8q0JERAMSg4qZiuko/tbDWZVIWQREEOGHguMoqisxRteI\niIiMhkHFTEW3r1M538M6FScrB9wVNAPVzQq8/ttGXKjMNEb3iIiIjIJBxUy5O9vAU2aL1NxKtLSq\ndLa9w2cCHoi4D63qVmxI/BAni38zUi+JiIgMi0HFjMUEydGiVCM9v7rHtrFDRmLZiIdhKbHE5rRt\n2J/zAwQddViIiIj6AwYVM6bvOpUOIS6BWDlqKVysnLE35wA+T/8aKrXuszFERETmjEHFjAUNdYKt\nlRTnM8v1PjviaeeBv49ehmEO3vi5+BQ2nf8YTcomA/eUiIjIMBhUzJhELEZUoAwVNc0oLKvX+3lO\nVo7468g/YbgsDGmVGXjj7DuoblYYsKdERESGwaBi5qJ7Of3TwVpqhf+LWoyxXrfgUl0RXjuzgduX\niYio32FQMXNRATKIREBilu5tyt2RiCW4L3QO7gyYjqrmam5fJiKifodBxczZ21ggyNsJWYUK1Da0\n9Pr5IpEIU/3iuH2ZiIj6JQaVfiAmSA5BAJKzK6/7Nbh9mYiI+iMGlX7getepXI3bl4mIqL9hUOkH\nvOV2kDlaIzm7EkqV+oZei9uXiYioP2FQ6QdEIhFigmRoaFYiq/DGtxlz+zIREfUXDCr9REz7RQoT\ne7hIob64fZmIiPoDBpV+IszHGZYW4htep9IZty8TEZG5Y1DpJyykEkT4uqK4ogGXqxr67HW5fZmI\niMwZg0o/EhPUsfunb6Z/OuP2ZSIiMkcMKv1IdGDbOpXzmX03/dMZty8TEZG5YVDpR1wcrODr4YD0\n/Go0NisNcgxuXyYiInNisKBSX1+PZcuWISEhAfPnz8fx48eRnp6O+fPnY/78+Xj22WcNdegBLTpQ\nBpVaQGru9Vep7Qm3LxMRkbkwWFDZuXMn/P39sWXLFrz55pt46aWX8NJLL+Hpp5/G1q1bUVdXh6NH\njxrq8AOWZpuyAdapdMbty0REZA4MFlRcXFxQXV0NAKipqYGzszMKCwsRHR0NAIiLi8Mvv/xiqMMP\nWH6eDnC0tcD5rAqoDbzY9erty+vOcvsyEREZl9RQLzxz5kzs2LEDU6ZMQU1NDTZt2oTnn39e87hM\nJkNZWZnO13BxsYVUKjFUFwEAbm4OBn19Q7h5uCcOnc6HokmFEB8Xgx9vofsf4Os+BBtObcaG8x/i\nsdgE3O53i0GP2R/HZbDg2Jgnjov54tjcGIMFld27d8PLywsffvgh0tPT8fjjj8PB4cpg6bP1taoP\n64V0x83NAWVltQY9hiGEeDvi0Gng6Jl8uNgYbAi7CLUNx7KYh/Fe0ma8ffIT5F4uRrzfJIhEoj4/\nVn8dl8GAY2OeOC7mi2OjP22BzmBTP2fPnsW4ceMAAGFhYWhubkZVVZXm8dLSUri7uxvq8APacH9X\nSMQig69TuRq3LxMRkbEZLKj4+voiMTERAFBYWAg7OzsEBgbizJkzAICDBw9i/Pjxhjr8gGZjJUWo\njzPySmpRVdts1GNz+zIRERmTwYLKvffei8LCQixatAgrV67Ev/71Lzz99NNYt24d5s+fDx8fH4wZ\nM8ZQhx/wYtqLvyVlG/esCsDty0REZDwiwYzrpBt6Xq8/zx1ermrAk+/+ipHBcvz5nmiT9EGlVmFb\nxi78VHQSLlbOWBrzELzsh9zw6/bncRnoODbmieNivjg2+jP6GhUyLHcXWwxxtUVKbiValaZZJ9Kx\nffkPAfHcvnyVqqZqHC/8BV9m7Gb9GSKiG2CcLSNkEDFBMhw4VYAL+dWIDJCZpA8ikQjT/CbB1doF\nW9K+xIbED7Eo/I+4echNJumPqagFNfJrLyGpPA3J5Wm4VFekeeyXolNYEDYXsUNGmrCHRET9E4NK\nPxYTKMeBUwVIzKwwWVDpEDtkJJysHPFe0mZ8mroVFY1VBtu+bC6alM1Ir7qI5PI0JFekobalDgAg\nFUkQ7hqCSHk4bCTW+DJjNz5J/QI5NXmYEzQLUjG/dkRE+uJvzH4saKgTbKykSMwqxwIh2OShoGP7\n8obfP8TenAOobKrC/NC7IREbtmifMVU0ViGpIhXJ5Wm4WJUFpdA27eZgYY9bPUcjSh6BMJcgWEut\nNc/xc/LBB0lbcPTSz8ivuYQlkYvgYu1sqrdARNSvMKj0Y1KJGJH+rjidfhlF5fXwdrM3dZc025c3\nnf8YPxefQlVzNR6OXNTlH+7+RC2okVuTr5nSKaq/st5kqL0XIuXhiJKHw8dhKMSi7pd8edi64W+j\nl+GL9K9xuvQc1p5+Ew8NX4hQ1yBjvQ0ion6LQaWfiwmS4XT6ZZzPqjCLoAJc2b78Ucr/kFKRjjfO\nvoPHYh6Es5WTqbuml0ZlE9IqM5BcnoaUinTUtdYDAKRiKYbLwhAlD0ekLLxXZ0WsJJZYHDEfAU6+\n2H5xD976/X38ISAed/hO0BpwiIiIQaXfiwqQQSwSYd+vefB2s0N0e30VU+u4+nLH9uXXzmzos+3L\nhlDWUIHkijQklaciszoHqvYpHSdLB4z1uhmRsnCEugbDSmJ53ccQiUS4fegYDHPwxgfJn2F39n5k\n1+Th/vB7YWth01dvhYhoQGEdlQGwv/2npGJ8+t0FqFRqzB7rhz+M9YdYbB6LWAVBwMG8H/FN9new\nkVrjkcj7e5zyMMa4qNQqZCvy2sNJGkobLmse83HwRqQ8AlGycAx18DLIGY/aljp8nPI5LlRlQm4j\nw6NR98Pb3rPPj9PXBsp3ZqDhuJgvjo3+tNVRYVAZIB+gvJJabNiZhHJFEyIDXPHo7OGwt7Ewdbc0\nTpecw5a0LwGgx+3LhhqXhtYGpFZmIKk8FakVF9CgbAQAWIgtEOYajChZOIbLw4w2RaUW1NibfRAH\n8g7DQmyB+0Ln4BbPUUY59vUaSN+ZgYTjYr44NvpjUOnGQPsA1TW24oO9qTifVQGZozWW3h0Jf09H\nU3dLI6MqC+8lbUajshGzA6Zhmm/325f7clxK6y8jqaJtIWyWIhdqQQ0AcLZyQpQ8ApGyMIS4BMFS\nYrpQd74sBZvTtqFR2YRx3rdibvAfYGGmW5gH2ndmoOC4mC+Ojf4YVLoxED9AakHA3p9ysftEDiQS\nERZOCcHtMV4m37rcobi+FBt+/xBVzdUY43lzt9uXb2RcVGoVshQ5ml06lxvLAQAiiODrOAyRsrZd\nOt72nmbzMwHa1si8n7wZhXXF8HUYhoejFsHV2sXU3brGQPzODAQcF/PFsdEfg0o3BvIHKCm7Au99\nk4L6JiXGRXli0dQQWFqYRz0TRXMNNp3/GAW1hQh3Dblm+3Jvx6WutR6pFRfap3Qy0KRqu5qzpcQS\n4a4hmikdR8vuvwTmokXVgq0XduJkyW+ws7DFgxELEC4LMXW3uhjI35n+jONivjg2+mNQ6cZA/wCV\nVzdiw65k5JXUwsfDHkvvjoK7s3nsLmlSNmu2Lw+19+qyfbmncREEASUNl5FU3lZ4LVuRBwFtH2NX\naxdEycMRJYtAkEuA2U6haCMIAk4UncT2jN1QCWrM9J+KaX5xZrOFeaB/Z/orjov54tjoj0GlG4Ph\nA9SqVOF/31/EscQi2FpJ8cjsCMQEmccWZm1XX+5uXFrVSmRWZ2umdCqaKgG0Ten4O/kgShaBSHk4\nPO08zGpK53rl1RTg/aQtqGquRqQsDIsj5sPWwtbU3RoU35n+iONivjg2+mNQ6cZg+gAdP1+Ezw5m\noFWpxuwxfrhznHlsYe5u+/K40JEoK6tFbUsdkivSkVyehrTKC2hWtQAArCXWCJe1T+nIwmBvaWfi\nd2EYdS31+CT1C6RVZkBm7YpHohIwzMHbpH0aTN+Z/oTjYr44NvpjUOnGYPsAdd7CPNzfFY/OjoCD\n7fUXMOtLnbcvTwkajwul2citKdBM6chtZJqKsEHO/oPmwn5qQY19OYewP/cQpGIp7g25G2O8Yk3W\nn8H2nekvOC7mi2OjPwaVbgzGD1B9Uyve39OxhdkKS++OMpstzJ23L4tFYgQ4+bbv0omAh63bgJjS\nuV7J5Wn4NHUrGpSNGON5M+aF3AkLE2ypHozfmf6A42K+ODb6Y1DpxmD9AKkFAd/+nItdx9u2MC+4\nIwQTRpjHFuaqpmrUiCshFw2BnRmsyTAn5Y2V+CBpMwrqiuDj4I2HIxMgs3E1ah8G63fG3HFczBfH\nRn/agop5bCUgoxKLRJg91h9P3BsDa0spNh+4gI++TUNzq8rUXYOLtTNGe8cwpHRDbuOKlaMexxjP\nWOTXFmLt6TeRUpFu6m4RERkUg8ogFukvw5oHRsNviAN+Si7By1t+w+WqBlN3i3SwkFhgYfgfsTBs\nLlrUrdiU+DG+zT6oqbhLRDTQMKgMcnInGzy1aBQmjvBCweU6PPfJGfx+sdzU3aIejPG6GStvWgpX\na2fsyz2ETYkfo6613tTdIiLqcwwqBAupGPfHh2HJzHAoVWqs//o8vj6aBbXabJcvEQAfx6FYFbsc\nw2VhSK28gFdPr0deTYGpu0VE1KcYVEhjbJQn/pkwCm7O1vj2lzys+/J31DS0mLpbpIOdhS3+FP0A\nZvlPRVVTNdb9thEnCn+FGa+RJyLqFQYV6sLHwwFrHohFTKAMqblVeP6T08gqUpi6W6SDWCTGdP87\nsDTmIVhJrPDFhR34LO0rtKhaTd01IqIbxqBC17CztsCf50Zjzu0BqKptxtrPzuLHs5f4v3QzFyEL\nxarY5fBxGIpfS87g9d82oLyxwtTdIiK6IQwq1C2xSIRZY/yw4t4RsLGSYsvBDHyw1zy2MJN2MhsX\nrLjpMYz1ugWX6oqw9vR6JJWnmrpbRETXjUGFdBru54pnH4iFv6cjfkkpwUubz6CUW5jNmoXEAgvC\n7sGi8HlQqlvxzvlPsCfrO25hJqJ+iUGFeiRzssaTC29C3EhvXCqrx/OfnMa5jDJTd4t6cJvnaKwc\ntQxya1d8l3cYG37/ELUtdabuFhFRrzCokF4spGIkTAvFw7PCoVIJeGtHErYfyYJKzf+lm7NhDl5Y\nFbscUfJwpFddxKun1yNHkW/qbhER6Y1BhXplTKQn/nn/aLg722Dfr3lYty0RNfXcwmzObC1s8GjU\nYswOiEd1swJvnN2EY5d+4eJoIuoXGFSo14a522PNA6MxIkiOtLwqPPfJaWQVcguzOROLxIj3m4Rl\nIx6GjdQa2zJ2YnPaNrSoGDKJyLwxqNB1sbW2wLJ7onDPhABU1zVj7f/O4offuIXZ3IW5BuPJ2OXw\ndRyGUyVn8Z8zb+NyA9cbEZH5YlCh6yYWiTDzNj+svHcEbK2l+N/3GXh/byqaW7iF2Zy5WDvjiZse\nw+3et6GovgSvnn4LiWUppu4WEVG3GFTohkW0b2EO8HLErymleHHLGZRUcguzObMQS3Fv6N1YHDEf\nKkGF95I+xa7MfVCpGTKJyLwwqFCfcHVs28I86SZvFJbV44VPT+O3C4N3SqGhSYmU3EocSyxCXaP5\nlrK/echN+PvoZXCzkeH7/CN4+/cPUNNSa+puERFpiAQzXlRQVmbYX5hubg4GP8Zg9EtKCT7dn44W\npRrTb/HBnAkBkIj1z8T9bVxUajUuXa5HdnENsosUyC6qQUlFAzq+WE52llg8PQwjguQm7acujcpG\nbEn9EonlKXCydMTDUYsQ4OR3Tbv+NjaDBcfFfHFs9Ofm5tDt/Qwq/AAZxKXLdXh7ZxIuVzUizMcZ\n/3dnJJzsLPV6rjmPiyAIqKxp7hJK8kpq0aK8Uk/GylIC/yEOCPByglgMfHcyH0qVgLFRQ3Df5GDY\nWluY8B1oJwgCDuUfxe6s/RCJRLgnaDYmDB0DkUikaWPOYzOYcVzMF8dGfwwq3eAHyLAampT48NtU\nnLtYDmd7Syy9KwpBQ516fJ45jUtjsxK5xTXtwaTtj6JT3RiRCPCW2yPAy1Hzx0tmB7H4yj/ul8rq\n8OHeNOSV1sLFwQoPTg9DZIDMFG9HLxlVmfgo+XPUttZhtMcILAibCytJW8g0p7GhKzgu5otjoz8G\nlW7wA2R4giBg/8l8fH00C2KRCPdOCsLkUUO7/C/9aqYaF5VajcKyek0gyS6uQXF5PTp/QVwcrBDg\neSWU+A5xgLWltMfXVqrU2PdLHvb8nAuVWsDtMV64d1IQbKx6fq4pVDcr8EHSZ8ipyYOnnQceiUyA\nh507vzNmiuNivjg2+mNQ6QY/QMaTlluJd75JQW1DK26J8MAD8WGwspR029YY4yIIAqpqm6+EkiIF\ncktr0dLaaQrHQgK/IQ6dzpY4wcXB6oaOm19aiw/2puFSWR1kjtZ4aEYYwv1cb/TtGIRSrcTOzG9x\n5NJPsJZYYVH4PEwdPobfGTPE32Xmi2OjPwaVbvADZFyVNU3YtCsZWUU18Jbb4fE5URjiantNO0OM\nS2OzErkltZp1JdnFNVDUXT2FY6cJJAGejvCSd53C6StKlRrf/JSDfb/kQy0ImHSTN/44MUhrcDO1\nMyXn8L/07WhRt2Kk53D42fkh2DkAQ+29IBGbZ58HG/4uM18cG/0xqHSDHyDjU6rU2HY4Ez/8dgnW\nlhIsmRmOUaHuXdrc6Lh0TOHkFF+Zwikq6zqF42xv2RZIvBwR4Nk2hWPsaZic4hp8sDcVxRUNcHe2\nwUMzwxEyzNmofdBXUV0JNqduRUFdkeY+K4klApz8EOQcgGDnAPg4DoWF2DynsgY6/i4zXxwb/TGo\ndIMfINP5NaUEn3yXjpZWNeJv9sE9E69sYe7tuFTWNGkCSccunObWK4XLLC3E8BviqAklAV6OcHW0\n7vP3dD1alSrsOp6D76XaadUAABqeSURBVE7lAwIwJXYY5tweAEsL8zxTIbJrxamsZFyszkZmdQ5K\nGy5rHrMQS+Hv6IsgZ38EuwTAz9EHlhL9dnrRjeHvMvPFsdEfg0o3+AEyrUtlddiwMxmllQ0IHeaM\nP905HE72VjrHpalFidzi2k67cBSo7jyFA8BLbgd/ryvBxNvNrld1XEwhs1CBD/emorSqER6utnh4\nZjgCvXveIWVsV49NTUstMqtz2v9ko6iuBEL7uSuJSAJfx2EIcvZHkHMAAp18YS01j4A40PB3mfni\n2OjP6EHlq6++wjfffKO5nZycjMjISDQ0NMDWtm1dwqpVqxAZGan1NRhUBr7GZiU+/DYNZzPK4GRv\niaV3RWLMyGEoK6uFWi2gqLxrIbXC8np0/sQ62Vt22oXjBD8TTOH0leZWFXYczcahMwWACIi/xQd3\njQuAhdR8QlZP35n61gZktQeXi9XZKKgt1AQXEUQY5uCNYOeA9vDiD1uLa9coUe/xd5n54tjoz6Rn\nVE6dOoX9+/cjMzMTq1evRkhIiF7PY1AZHARBwHen8rH9SNsW5kmjh6GgpAY5JbVdLnBoKRW378Jx\n0uzEcXGw0rnVuT+6kF+Fj/aloay6Cd5yOyyZFQ6/IY6m7haA3n9nGpVNyFbkIbN9qiivpgAqoW1M\nRRDBy34IgtqDS7BzABws7Q3V9QGNv8vMF8dGfyYNKosXL8Zrr72GFStWMKiQVul5VXhndzJqGloh\nAuApt+tSs6Q/TOH0laYWJb46koUfzxa2X6XaF7PH+kEqMe37v9HvTIuqBbk1+bhY1RZccmry0KpW\nah73sHXXhJYgZ3+4WJvn4mJzw99l5otjoz+TBZXz58/j888/x9q1a5GQkAAnJydUVVUhMDAQTz/9\nNKyttc9ZM6gMPnWNrWhUCbC3EPfbKZy+lJpbiY/3paGiphnD3O2xZGY4fDy6/zIbQ19/Z1rVSuTX\nXGpfnJuNbEUumlVX1hzJrV3bzri4BCDY2R8ya9cBdwatL/B3mfni2OjPZEFlzZo1mDlzJm655RZ8\n//33CA0NhY+PD5599ln4+PhgyZIlWp+rVKoglZrn7gciY2loasWH36Tg4Mk8SMQizJ8airmTgk1+\ndsUQVGoVcqoKkFaWidSyDKSXZaK+tVHzuMzGBeFuQQh3C0aEezC8HDwYXIgGOIMHlWnTpmHPnj2w\ntOy6TfHo0aPYt28fXn31Va3P5RmVwYnj0r2k7Ap8sj8dVbXN8B3igIdnhsPbzbhrOow9NmpBjaK6\nEs3i3MzqbNS11msed7Cw1+wqCnYJgKedB8SigRfgesLvjPni2OhP2xkVg55bLy0thZ2dHSwtLSEI\nAh588EGsX78ejo6OOHnyJIKDgw15eKIBJSpAhheW3IzPD138//buPziq6tAD+Pfeu3v3ZzbZTXY3\nYIBHgvIbRKCvRQFtKbb6njykGkSitvOccZw60w51ZKiITDudwXmdcVoZ2476SrGWKNQWH4LoKJap\nAbSlgMhvkd/Z3ZDdhGR/33vfH7vZ7GYTCCGbvUm+n5nM3Xvv7t0TziZ8c8655+CTzxux9vef4r/m\nVuM7XxtdkBl09UAURFSVjERVyUjcOep2aJoGX9iPE+nboU+GTmN/4BD2Bw4BAKwGC2rSdxRx9lyi\noaGgQSUQCMDlSq1jIggCHnzwQTz22GOwWCzwer146qmnCvn2REOO1WzEf//HJMwc78aGHcewedcp\n7D8ewA/unYgR5bZiF6/gBEFApc2LSpsXc2/6OjRNw+Voc2Zw7onQlzjU9AUONX0BoHP23NTg3GqM\ncVTBwNlziQYVTvjGJjndYb30TlskgT++fxx7v/DBaBCxZF41FsweBbGAYzYGQ90Eo6HMzLn5s+ca\nMdYxGuOc1RhlHwmLwQyTZILJYIJJkmGWTJAledB1Hw2GehmuWDe9x5lpu8EPkD6xXq7PZ0f9+MN7\nx9AWSeCWqlL84N6J8DgLM5HaYKybztlzU+HlQtula75GluRMcDF1fBk6981dwk3XsNP1NYVuxRmM\n9TJcsG56j0GlG/wA6RPr5fq1tsex8b1j+MfxAGSjiAfuHIe7brup31tXhkLdtCfCOBk6DX84gJgS\nR0yJIabEEE3GcveVGGLJjv14ZobdvpAEKdNaYzZcJezkBCI5c8xs6Ng3p7dyzt1OQ6FehirWTe8x\nqHSDHyB9Yr30jaZp2HvEhz/uPI72aBITxzjx/e9OQEWZpd/eY7jWjaZpiKuJdJiJZcJLNBnNCjfx\n/PNKDLFkVvBR4pn9pKZc+417IECALBkzYcdmssCgGWE2mGGWzLAYzDAbTLBIqW3qeHprMHU+J93a\nw1u8C2e4/sz0RVHu+iGigSMIAr4+qRITRjvxhx3H8K+TTVj92j4s/eY4zJs+kv8Z3QBBEDItGUD/\nTLiXVJPXDDeZ/fSxaFYgiqfDTzQZQ0usNWeivOshCVImvJgNpnSA6Qw4mbDTJfRYcsKPGbJo5GeM\nCoJBhWiIKbOb8NSSqfjk80a88cEJbNhxDP84FsBj350Al4OrF+uFQTTAIBpg64eFGd3uEvj8LYgm\nY4gq0cw2kowhmox2HktGEcl6nAo6UUTS28uRIGJKrE/dXKIgdgaXrNab7oNO7jlLOuwM1sHMVFgM\nKkRDkCAIuH3qCEwc48Tvtx/F56ebsfrVfVi24GbMmVLJv3yHIFEQYTVaYDXeWFefqqmIp1tyosnO\nsBPJCkDRZDQnFHUNP6FYCyLtvj4FHgECykylqLR54LG6UWl1p7Y2D0plBz+7wxDHqLDvUHdYL/1L\n0zT87cBFbPrwJGJxBbeOq8Aj3xmPMrvpuq/FutEnPdZL57ieaCbARLJacfKDTuornIyiORpEKNaS\nd02TJMPbEVysnkyAcVsqIEvGInyX16bHutErjlEhGqYEQcD8W2/C5LEu/O+7R/Gvk0048UoIDy+8\nBf8+kWvlUGFkj+spNTmu+/XRZBT+cBMaw374woHUV7sfF9t9OHvlQu57QYDLXAav1QOv1Q2vzZ3a\nWj1wyCX8jA9ybFFh0tUd1kvhqJqGXfsv4M2PTiKeUDFzvBt1C8fDYZOv/WKwbvRqONWLqqlojobS\n4cWfCTD+cAAt8fx/A7NkgjfT+tLZGuO2lMM4AK0ww6lubhRbVIgIoiDgm7dVYcpYF17bdgT/OBbA\nsbMhPHL3eMya4Cl28YiuSRREVFhcqLC4MLl8fM65SDKSaoVpz2qFCftxoe0izlw5l/NcAQLKzU54\nbKngkmqBccNr86DEaGcrjI6wRYVJV3dYLwND1TR88Nl5bPn4FBJJFV+b6MHyheNht/T8VybrRp9Y\nL1enaiouR4KdLTAdrTHtAVxJtOU932Iwd3YjZQWYCks5jNc5yzDrpvfYokJEOURBwMLZozC1OtW6\nsu+IH0fPhvDod8Zjxs3uYhePqN+Iggi3tRxuazmmYGLOuXAinBVeOsfCnLtyAV+1ns15rgABFRZX\nZvxLR4DxWt2wG21shSkQtqgw6eoO62XgqaqG9/adxdu7v0RS0TBnSiUeWnAzbObc1hXWjT6xXvqf\noiq4HG3OCS8dj9sS7XnPtxos3Q7mvaVqFFqaowwxvcAp9LvBH259Yr0Uz4VAG17ZdgRnGq+gzC7j\n+/dMxNTq8sx51o0+sV4GVluiHf5wAL72QE5XUiByGaqmdvsaWTRClmQY01tZMmaOyaIRRskIWUwf\nzzpmkmTIopw+n/3a1NYodl5LEqUB/pfoXwwq3eAPtz6xXoorqajYvucMtv79KyiqhnnTR6D2mzfD\nYjKwbnSK9aIPiqqgKXIZjeEA/OEAGsN+RLQw2qMRxJUE4moCCSWefpza3shil11JgpQJLcb0reEd\nj1MhJyvgZAejrLBjzAlCuYHKJMkFXQmcY1SIqFcMkoj/vH0spo+rwKvbjuBvBy7h8OlmfP+eiZjf\nwy8SIgIkUUqNWbF13kF3tRCpaRqSmoKEEkdMiSOuJhBXEkikQ0w861hcjSPR9ZgSzwSeTAhS08eV\nBNoTYSSU+A0tgJlNlmQ8M+spVNq8/XK93mJQIaJujfaWYPWjs/DO37/CtoYz+J9N/8L/NZxBucOE\nSpcVXqcVlS4rPE4LZOPgbnImKgZBEGAUDDCKBlj7Yc2nniiqgoSa6D7gpMNNIquVJycYZQUho2hA\niTzwf6wwqBBRjwySiMXzqjHjlgq8vvM4jp8LQVXzm6pdDlMmuHhdVlS6LPC6rKgoNUMSucAcUTFJ\nogRJlGDG4FyUlEGFiK7p3yodePaRWShz2nDkpB++YAS+5jB8zWE0NofhC0Zw5EwQR84Ec14niQIq\nyiyodFrSAcYKb/qxs8TEOyGI6JoYVIio14wGESPKbRhRbss7F4sr8AVToaUxHWJ8wTB8zREcaA4D\npy7nPF82ivA6Uy0wXqclqzXGetVJ54hoeGFQIaJ+YZIljPaWYLQ3vw+7LZLIaX3JtMYEwzjnz58Z\n1GY2pMe/dHYjdYyHMcv8tUU0nPAnnogKzm4xwn5TKWpuKs05rmkaQm3xTGhJBZhUi8xXjVdw6mJr\n3rXK7HKm9aVzXIwF7jILDBLHwxANNQwqRFQ0giDAWWKCs8SECWOcOecUVcXlligamyOZIONvDqOx\nOYJjZ0M4ejbU5VqAuzTV+uJ1WXJCjMthhsjxMESDEoMKEemSJIrwOFPdP6gpzzkXTyjwh9JdSNlj\nYprDOPTlZRz6MvdaRoMIj9OCSqcVHldq63SYIIkiJFGAKAqprSBAkoTOY0LWOVHIe74ggAOCiQqM\nQYWIBh3ZKKHKbUeV2553LhxNpgfxdo6J6QgyFwL5a7TcKCknyKS2ucFH7Hycda7ra3o+J3YGJkno\n9lplZRaYRQEeZ6oLjPPa0FDCoEJEQ4rVbMDYEQ6MHeHIOa5pGlrDnYN6W9piUDVAUTWoqgZFVTOP\nU/vpraZBUbKOaVnn0q/Leb6a+9xELJlzrezrF4qzxARPmQVupwVepyXVMlVmgcdpgcXEX/s0uPAT\nS0TDgiAIKLXJKLXJuGVUWbGLA01LBZkeQ04mCPUQkhQ1E3zMFhNOnWuGPxjJfB0/F8Kxc6G89y2x\nGjOhJdW1Zsns2y1GdmWR7jCoEBEVgSCkxsBIInCjs8a43SW4ZWTubeGJpIqmls7g4g91PO75jiqL\nyZAVYiw5gabMLjPEUFEwqBARDUFXm5xPUVU0t8YywaUzxERw8XI7zvjyF9GTDSLc6fDidVpTj50W\neMvSd1WJDDFUGAwqRETDjCSKcJelBt5OHuvKOadqGlra4qkAk26J8QUjCAQj8AW7H5DcsVSCNx1k\nssfGVJSaOb8N3RAGFSIiyhCz5rYZPzp3bhtN03AlkoA/K7j4Qx2PIzjYHM67niAA5Q5zVleSNdO1\n5C6zwMQ7lOgaGFSIiKhXBEGAwyrDYZUxrsssw0Dq1vBAKB1guoyL+eKrIL5AMO81ZXY5566k7BBj\nM3PNJ2JQISKifmI1GzCmsgRjKvPXe4olFARCXQf3pgLNifMhHO/mDiWryZDuojJnuqo69l0OdikN\nFwwqRERUcKarTNKXVFQ0tUThT6++HQhF0BSKIhCK4FIPg3s7upS6DzIW2MwG3qU0RDCoEBFRURkk\nEZXpFbK70jQNre1xBNLBJeerJYojZ4I4cib/mhaTBHdpbitMx+NyDvAdVBhUiIhItwRBQKndhFK7\nCeOq8sfFJJIKmlo6QkxumPEFIzjrb8u/JgCXwwR3mQUV3QSZEk58pysMKkRENGgZDVKP88VomoYr\n4USXlphUmPGHul+FGwBMckdrTP7YmIpSM4wG3qk0kBhUiIhoSBIEAQ6bDIdNRk03dyl1tsZ07VaK\nItASwflA960xZSWmHsfGOKxsjelvDCpERDQsXbM1JpLIa4lpSu+fOBfC8XP515SN6cn00uNjqiod\nUBJJmE0SzLIBFjm17dg3yxJkg8hwcxUMKkRERF1kzxlTM7K71hgVza3RvCDT0a3U3Qy+PREFAWZZ\ngtkkwZIOL+ZuAo3FlHvOIkswZ46ltiZZgjjEQg+DChER0XUyGkR4XVZ4e7hTqT09+Z0mivA1tSEa\nSyIaVxCJK4jGk4jG0tu4kj6eOhZqiyEaV6CoWp/LZpKlzpabdLCxZAcaU5dzXQNRZl+CJBb/7igG\nFSIion4kCALsFiPsFiPc7hIEAvnzwFyNpmlIKmo61CiZkNMRbCKxzoATjScR6RJ6Op4fjibQ3BpF\nPKn2+XuRDWIm4DhLTHhi0WSU2k19vl5fMKgQERHpiCAIMBokGA0SHPkNNtdNUdV0gEkHm5xWnXRr\nTk8tPVkh6XJrFLEbCD19xaBCREQ0hEmiCJtZHLRrJxW/84mIiIioBwVrUXnrrbewdevWzP7nn3+O\nP/3pT3j++ecBAOPHj8fatWsL9fZEREQ0BAiapvV9aHEv7du3D9u3b8fJkyfx9NNPY9q0aVixYgXu\nu+8+zJ8/v8fXXe8ApOvVl0FOVHisF/1i3egT60W/WDe953bnr7oNDFDXz/r16/H444/jwoULmDZt\nGgDgrrvuQkNDw0C8PREREQ1SBR9Me/DgQYwYMQKSJMHhcGSOl5eXIxAIXPW1TqcVhgKvqdBTgqPi\nYr3oF+tGn1gv+sW6uTEFDyqbN2/G4sWL8473pscpGAwXokgZbJLTJ9aLfrFu9In1ol+sm94rWtfP\n3r17MWPGDLhcLoRCnatU+nw+eDyeQr89ERERDWIFDSo+nw82mw2yLMNoNKK6uhqfffYZAGDnzp2Y\nO3duId+eiIiIBrmCdv0EAgG4XK7M/qpVq/Dcc89BVVVMnz4dc+bMKeTbExER0SA3ILcn9xVvTx6e\nWC/6xbrRJ9aLfrFueq+otycTERER9QWDChEREekWgwoRERHplq7HqBAREdHwxhYVIiIi0i0GFSIi\nItItBhUiIiLSLQYVIiIi0i0GFSIiItItBhUiIiLSrWEZVH7xi1+gtrYWS5cuxcGDB4tdHMrywgsv\noLa2FkuWLMHOnTuLXRzKEo1GsWDBAvz5z38udlEoy9atW3Hffffh/vvvx65du4pdHEprb2/HD3/4\nQ9TV1WHp0qXYvXt3sYs0aBV0UUI92rdvH86cOYP6+nqcOnUKq1atQn19fbGLRQD27NmDEydOoL6+\nHsFgEIsXL8bChQuLXSxKe/nll1FaWlrsYlCWYDCI9evXY8uWLQiHw/j1r3+NO++8s9jFIgBvv/02\nxo4dixUrVsDn8+HRRx/Fjh07il2sQWnYBZWGhgYsWLAAAFBTU4OWlha0tbXBbrcXuWQ0e/ZsTJs2\nDQDgcDgQiUSgKAokSSpyyejUqVM4efIk/xPUmYaGBnzjG9+A3W6H3W7Hz372s2IXidKcTieOHTsG\nAGhtbYXT6SxyiQavYdf109TUlPOBcblcCAQCRSwRdZAkCVarFQCwefNmzJs3jyFFJ9atW4eVK1cW\nuxjUxfnz5xGNRvHEE09g2bJlaGhoKHaRKO3ee+/FxYsX8e1vfxvLly/HM888U+wiDVrDrkWlK64g\noD8ffPABNm/ejNdee63YRSEAf/nLX3Drrbdi1KhRxS4KdSMUCuGll17CxYsX8cgjj+Cjjz6CIAjF\nLtaw99e//hUjR47Eq6++iqNHj2LVqlUc39VHwy6oeDweNDU1Zfb9fj/cbncRS0TZdu/ejd/85jd4\n5ZVXUFJSUuziEIBdu3bh3Llz2LVrFxobGyHLMiorKzFnzpxiF23YKy8vx4wZM2AwGDB69GjYbDY0\nNzejvLy82EUb9v75z3/ijjvuAABMmDABfr+fXdl9NOy6fm6//Xa89957AIDDhw/D4/FwfIpOXLly\nBS+88AJ++9vfoqysrNjFobQXX3wRW7ZswZtvvokHHngATz75JEOKTtxxxx3Ys2cPVFVFMBhEOBzm\nWAidGDNmDA4cOAAAuHDhAmw2G0NKHw27FpXbbrsNkydPxtKlSyEIAtasWVPsIlHau+++i2AwiB/9\n6EeZY+vWrcPIkSOLWCoi/fJ6vbj77rvx4IMPAgCeffZZiOKw+/tTl2pra7Fq1SosX74cyWQSzz//\nfLGLNGgJGgdpEBERkU4xehMREZFuMagQERGRbjGoEBERkW4xqBAREZFuMagQERGRbjGoEFG/OX/+\nPKZMmYK6urrMqrErVqxAa2trr69RV1cHRVF6/fyHHnoIe/fu7UtxiWgQYFAhon7lcrmwceNGbNy4\nEZs2bYLH48HLL7/c69dv3LiRE2MRUcawm/CNiAbW7NmzUV9fj6NHj2LdunVIJpNIJBJ47rnnMGnS\nJNTV1WHChAk4cuQINmzYgEmTJuHw4cOIx+NYvXo1GhsbkUwmsWjRIixbtgyRSAQ//vGPEQwGMWbM\nGMRiMQCAz+fDT37yEwBANBpFbW0tvve97xXzWyeifsCgQkQFoygK3n//fcycORNPP/001q9fj9Gj\nR+ct0ma1WvH666/nvHbjxo1wOBz45S9/iWg0invuuQdz587FJ598ArPZjPr6evj9fnzrW98CAGzf\nvh3V1dVYu3YtYrEY3nrrrQH/fomo/zGoEFG/am5uRl1dHQBAVVXMmjULS5Yswa9+9Sv89Kc/zTyv\nra0NqqoCSC1t0dWBAwdw//33AwDMZjOmTJmCw4cP4/jx45g5cyaA1CKj1dXVAIC5c+fijTfewMqV\nKzF//nzU1tYW9PskooHBoEJE/apjjEq2K1euwGg05h3vYDQa844JgpCzr2kaBEGApmk569l0hJ2a\nmhps27YNn376KXbs2IENGzZg06ZNN/rtEFGRcTAtERVcSUkJqqqq8PHHHwMATp8+jZdeeumqr5k+\nfTp2794NAAiHwzh8+DAmT56Mmpoa7N+/HwBw6dIlnD59GgDwzjvv4NChQ5gzZw7WrFmDS5cuIZlM\nFvC7IqKBwBYVIhoQ69atw89//nP87ne/QzKZxMqVK6/6/Lq6OqxevRoPP/ww4vE4nnzySVRVVWHR\nokX48MMPsWzZMlRVVWHq1KkAgHHjxmHNmjWQZRmapuHxxx+HwcBfcUSDHVdPJiIiIt1i1w8RERHp\nFoMKERER6RaDChEREekWgwoRERHpFoMKERER6RaDChEREekWgwoRERHpFoMKERER6db/AypFmXcD\nACl0AAAAAElFTkSuQmCC\n",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "b7atJTbzU9Ca"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Optional Challenge: Use only Latitude and Longitude Features\n",
+ "\n",
+ "**Train a NN model that uses only latitude and longitude as features.**\n",
+ "\n",
+ "Real estate people are fond of saying that location is the only important feature in housing price.\n",
+ "Let's see if we can confirm this by training a model that uses only latitude and longitude as features.\n",
+ "\n",
+ "This will only work well if our NN can learn complex nonlinearities from latitude and longitude.\n",
+ "\n",
+ "**NOTE:** We may need a network structure that has more layers than were useful earlier in the exercise."
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "T5McjahpamOc",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 656
+ },
+ "outputId": "2559ab43-41c0-40e8-95a0-917b83bec40e"
+ },
+ "cell_type": "code",
+ "source": [
+ "#\n",
+ "# YOUR CODE HERE: Train the network using only latitude and longitude\n",
+ "#\n",
+ "def location_location_location(examples_dataframe):\n",
+ " processed_features = pd.DataFrame()\n",
+ " processed_features[\"latitude\"] = linear_scale(examples_dataframe[\"latitude\"])\n",
+ " processed_features[\"longitude\"] = linear_scale(examples_dataframe[\"longitude\"])\n",
+ " return processed_features\n",
+ "\n",
+ "lll_dataframe = location_location_location(preprocess_features(california_housing_dataframe))\n",
+ "lll_training_examples = lll_dataframe.head(12000)\n",
+ "lll_validation_examples = lll_dataframe.tail(5000)\n",
+ "\n",
+ "_ = train_nn_regression_model(\n",
+ " my_optimizer=tf.train.AdagradOptimizer(learning_rate=0.05),\n",
+ " steps=500,\n",
+ " batch_size=50,\n",
+ " hidden_units=[10, 10, 5, 5, 5],\n",
+ " training_examples=lll_training_examples,\n",
+ " training_targets=training_targets,\n",
+ " validation_examples=lll_validation_examples,\n",
+ " validation_targets=validation_targets)"
+ ],
+ "execution_count": 22,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 110.57\n",
+ " period 01 : 105.38\n",
+ " period 02 : 103.24\n",
+ " period 03 : 102.32\n",
+ " period 04 : 100.59\n",
+ " period 05 : 100.07\n",
+ " period 06 : 100.01\n",
+ " period 07 : 100.03\n",
+ " period 08 : 99.17\n",
+ " period 09 : 99.10\n",
+ "Model training finished.\n",
+ "Final RMSE (on training data): 99.10\n",
+ "Final RMSE (on validation data): 100.67\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGACAYAAACz01iHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xl4FFXaNvC7ujudfe3sCwn7kkDC\nEiAJW0iAsAkiRgQjbjiDoLygI/opvjPixoyiosAooyLwOqKIKAKyiKwJgRC2QBa2kD10drJv9f0R\naQmE0B1S6Upy/67L66Kru+o83U/V5JlT55wSRFEUQURERNSOKIwdABEREZGhWMAQERFRu8MChoiI\niNodFjBERETU7rCAISIionaHBQwRERG1OypjB0AkZ71790aXLl2gVCoBAHV1dQgMDMTrr78OCwuL\nFh/3u+++Q2Rk5B3bt27dildffRX//ve/ERoaqtteWVmJ4OBgjB8/Hu+9916L29VXWloa3nnnHVy9\nehUAYG5ujoULFyI8PFzytg2xZs0apKWl3fGbxMbG4umnn4anp+cd+/z6669tFd59ycjIQFhYGLp2\n7QoAEEURjo6OeO2119CvXz+DjvXBBx/A3d0djz76qN77/PTTT9iyZQs2btxoUFtEbYUFDNE9bNy4\nEa6urgCA6upqLF68GJ999hkWL17couNptVr85z//abKAAQA3Nzf88ssvjQqY33//HTY2Ni1qryVe\neuklTJs2Df/+978BAGfOnMHcuXOxa9cuuLm5tVkc98PNza3dFCt3o1QqG32HnTt3YsGCBdi9ezfU\narXex3nxxRelCI/IqHgLicgAarUaI0eORGJiIgCgqqoKb7zxBiZMmICJEyfivffeQ11dHQAgKSkJ\ns2bNQkREBKZNm4bDhw8DAGbNmoWsrCxERESgurr6jjYGDRqE2NhYVFRU6Lbt3LkTISEhutfV1dV4\n6623MGHCBIwdO1ZXaADAqVOnMGPGDERERGDSpEmIjo4G0PD/6EeMGIENGzZg6tSpGDlyJHbu3Nnk\n90xJSYG/v7/utb+/P3bv3q0r5D799FOMHj0a06dPx+eff46xY8cCAF555RWsWbNGt9+tr+8V1zvv\nvIPHHnsMAHDy5Ek89NBDGDduHCIjI5Geng6goSfqf/7nfxAaGorHHnsMOTk598hY07Zu3YqFCxdi\n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\ncBbehx56iLa2tgFvY/ny5Xi93gEvf8899/Dll19eSHOFEBFCAowQIuSSkpJYt24d69at4+2338Zm\ns/Haa68NeP1169bJDb+EEH3IjeyEEMNuxowZrF+/ntLSUlavXo3H48HtdvNf//VfTJgwgeXLl1NU\nVMThw4dZu3YtEyZMoKSkhJ6eHh5//HHq6urweDwsXryYpUuX0tXVxYMPPkhzczO5ubl0d3cDUF9f\nz8MPPwyAy+ViyZIl3HHHHeH81oUQQ0QCjBBiWHm9Xj744AOmT5/OL37xC1599VVycnL6TW5nsVh4\n6623+qy7bt064uLieOGFF3C5XNx0003MmTOHL774ArPZzPr163E4HMyfPx+AzZs3M3bsWJ566im6\nu7v561//OuzfrxAiNCTACCFCrqmpieXLlwPg8/m4/PLLuf3223nppZd49NFHg8t1dHTg8/kA//Qe\nZ9u/fz+33XYbAGazmUmTJlFSUsLRo0eZPn064J+YdezYsQDMmTOHP//5z6xcuZJrrrmGJUuWhPT7\nFEIMHwkwQoiQOz0Gprf29naMRmO/908zGo393tPpdH1eq6qKTqdDVdU+c/2cDkEFBQW899577Nmz\nhy1btrB27Vrefvvti/12hBAaIIN4hRBhERsbS3Z2Np988gkA5eXlvPLKK+ddZ8qUKezYsQMAp9NJ\nSUkJEydOpKCggH379gFQW1tLeXk5AP/85z85cOAAs2fP5oknnqC2thaPxxPC70oIMVykB0YIETar\nV6/m17/+NX/4wx/weDysXLnyvMsvX76cxx9/nHvvvZeenh5WrFhBdnY2ixcv5qOPPmLp0qVkZ2dz\n6aWXAlBYWMgTTzyByWRCVVXuv/9+FEV+7AkxEshs1EIIIYSIOHIKSQghhBARRwKMEEIIISKOBBgh\nhBBCRBwJMEIIIYSIOBJghBBCCBFxJMAIIYQQIuJIgBFCCCFExJEAI4QQQoiI8/8BjxjKrwUmOsYA\nAAAASUVORK5CYII=\n",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "P8BLQ7T71JWd"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below for a possible solution."
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "1hwaFCE71OPZ"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "It's a good idea to keep latitude and longitude normalized:"
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "djKtt4mz1ZEc",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 656
+ },
+ "outputId": "91a46707-0f96-4319-8c19-22ed55bdd7ec"
+ },
+ "cell_type": "code",
+ "source": [
+ "def location_location_location(examples_dataframe):\n",
+ " \"\"\"Returns a version of the input `DataFrame` that keeps only the latitude and longitude.\"\"\"\n",
+ " processed_features = pd.DataFrame()\n",
+ " processed_features[\"latitude\"] = linear_scale(examples_dataframe[\"latitude\"])\n",
+ " processed_features[\"longitude\"] = linear_scale(examples_dataframe[\"longitude\"])\n",
+ " return processed_features\n",
+ "\n",
+ "lll_dataframe = location_location_location(preprocess_features(california_housing_dataframe))\n",
+ "lll_training_examples = lll_dataframe.head(12000)\n",
+ "lll_validation_examples = lll_dataframe.tail(5000)\n",
+ "\n",
+ "_ = train_nn_regression_model(\n",
+ " my_optimizer=tf.train.AdagradOptimizer(learning_rate=0.05),\n",
+ " steps=500,\n",
+ " batch_size=50,\n",
+ " hidden_units=[10, 10, 5, 5, 5],\n",
+ " training_examples=lll_training_examples,\n",
+ " training_targets=training_targets,\n",
+ " validation_examples=lll_validation_examples,\n",
+ " validation_targets=validation_targets)"
+ ],
+ "execution_count": 23,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 235.01\n",
+ " period 01 : 234.13\n",
+ " period 02 : 233.35\n",
+ " period 03 : 232.62\n",
+ " period 04 : 231.93\n",
+ " period 05 : 231.25\n",
+ " period 06 : 230.60\n",
+ " period 07 : 229.96\n",
+ " period 08 : 229.34\n",
+ " period 09 : 228.72\n",
+ "Model training finished.\n",
+ "Final RMSE (on training data): 228.72\n",
+ "Final RMSE (on validation data): 233.00\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "Dw2Mr9JZ1cRi"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "This isn't too bad for just two features. Of course, property values can still vary significantly within short distances."
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/intro_to_neural_nets.ipynb b/intro_to_neural_nets.ipynb
new file mode 100644
index 0000000..432b5c1
--- /dev/null
+++ b/intro_to_neural_nets.ipynb
@@ -0,0 +1,1224 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "name": "intro_to_neural_nets.ipynb",
+ "version": "0.3.2",
+ "provenance": [],
+ "collapsed_sections": [
+ "JndnmDMp66FL",
+ "O2q5RRCKqYaU",
+ "vvT2jDWjrKew"
+ ],
+ "include_colab_link": true
+ },
+ "kernelspec": {
+ "name": "python2",
+ "display_name": "Python 2"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "view-in-github",
+ "colab_type": "text"
+ },
+ "source": [
+ ""
+ ]
+ },
+ {
+ "metadata": {
+ "id": "JndnmDMp66FL",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "#### Copyright 2017 Google LLC."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "hMqWDc_m6rUC",
+ "colab_type": "code",
+ "cellView": "both",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
+ "# you may not use this file except in compliance with the License.\n",
+ "# You may obtain a copy of the License at\n",
+ "#\n",
+ "# https://www.apache.org/licenses/LICENSE-2.0\n",
+ "#\n",
+ "# Unless required by applicable law or agreed to in writing, software\n",
+ "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
+ "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
+ "# See the License for the specific language governing permissions and\n",
+ "# limitations under the License."
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "eV16J6oUY-HN",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "# Intro to Neural Networks"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "_wIcUFLSKNdx",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "**Learning Objectives:**\n",
+ " * Define a neural network (NN) and its hidden layers using the TensorFlow `DNNRegressor` class\n",
+ " * Train a neural network to learn nonlinearities in a dataset and achieve better performance than a linear regression model"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "_ZZ7f7prKNdy",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "In the previous exercises, we used synthetic features to help our model incorporate nonlinearities.\n",
+ "\n",
+ "One important set of nonlinearities was around latitude and longitude, but there may be others.\n",
+ "\n",
+ "We'll also switch back, for now, to a standard regression task, rather than the logistic regression task from the previous exercise. That is, we'll be predicting `median_house_value` directly."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "J2kqX6VZTHUy",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Setup\n",
+ "\n",
+ "First, let's load and prepare the data."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "AGOM1TUiKNdz",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "from __future__ import print_function\n",
+ "\n",
+ "import math\n",
+ "\n",
+ "from IPython import display\n",
+ "from matplotlib import cm\n",
+ "from matplotlib import gridspec\n",
+ "from matplotlib import pyplot as plt\n",
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "from sklearn import metrics\n",
+ "import tensorflow as tf\n",
+ "from tensorflow.python.data import Dataset\n",
+ "\n",
+ "tf.logging.set_verbosity(tf.logging.ERROR)\n",
+ "pd.options.display.max_rows = 10\n",
+ "pd.options.display.float_format = '{:.1f}'.format\n",
+ "\n",
+ "california_housing_dataframe = pd.read_csv(\"https://download.mlcc.google.com/mledu-datasets/california_housing_train.csv\", sep=\",\")\n",
+ "\n",
+ "california_housing_dataframe = california_housing_dataframe.reindex(\n",
+ " np.random.permutation(california_housing_dataframe.index))"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "2I8E2qhyKNd4",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def preprocess_features(california_housing_dataframe):\n",
+ " \"\"\"Prepares input features from California housing data set.\n",
+ "\n",
+ " Args:\n",
+ " california_housing_dataframe: A Pandas DataFrame expected to contain data\n",
+ " from the California housing data set.\n",
+ " Returns:\n",
+ " A DataFrame that contains the features to be used for the model, including\n",
+ " synthetic features.\n",
+ " \"\"\"\n",
+ " selected_features = california_housing_dataframe[\n",
+ " [\"latitude\",\n",
+ " \"longitude\",\n",
+ " \"housing_median_age\",\n",
+ " \"total_rooms\",\n",
+ " \"total_bedrooms\",\n",
+ " \"population\",\n",
+ " \"households\",\n",
+ " \"median_income\"]]\n",
+ " processed_features = selected_features.copy()\n",
+ " # Create a synthetic feature.\n",
+ " processed_features[\"rooms_per_person\"] = (\n",
+ " california_housing_dataframe[\"total_rooms\"] /\n",
+ " california_housing_dataframe[\"population\"])\n",
+ " return processed_features\n",
+ "\n",
+ "def preprocess_targets(california_housing_dataframe):\n",
+ " \"\"\"Prepares target features (i.e., labels) from California housing data set.\n",
+ "\n",
+ " Args:\n",
+ " california_housing_dataframe: A Pandas DataFrame expected to contain data\n",
+ " from the California housing data set.\n",
+ " Returns:\n",
+ " A DataFrame that contains the target feature.\n",
+ " \"\"\"\n",
+ " output_targets = pd.DataFrame()\n",
+ " # Scale the target to be in units of thousands of dollars.\n",
+ " output_targets[\"median_house_value\"] = (\n",
+ " california_housing_dataframe[\"median_house_value\"] / 1000.0)\n",
+ " return output_targets"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "pQzcj2B1T5dA",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1205
+ },
+ "outputId": "ce74df30-cb02-4b1a-c4dc-42c0e00a4c31"
+ },
+ "cell_type": "code",
+ "source": [
+ "# Choose the first 12000 (out of 17000) examples for training.\n",
+ "training_examples = preprocess_features(california_housing_dataframe.head(12000))\n",
+ "training_targets = preprocess_targets(california_housing_dataframe.head(12000))\n",
+ "\n",
+ "# Choose the last 5000 (out of 17000) examples for validation.\n",
+ "validation_examples = preprocess_features(california_housing_dataframe.tail(5000))\n",
+ "validation_targets = preprocess_targets(california_housing_dataframe.tail(5000))\n",
+ "\n",
+ "# Double-check that we've done the right thing.\n",
+ "print(\"Training examples summary:\")\n",
+ "display.display(training_examples.describe())\n",
+ "print(\"Validation examples summary:\")\n",
+ "display.display(validation_examples.describe())\n",
+ "\n",
+ "print(\"Training targets summary:\")\n",
+ "display.display(training_targets.describe())\n",
+ "print(\"Validation targets summary:\")\n",
+ "display.display(validation_targets.describe())"
+ ],
+ "execution_count": 3,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training examples summary:\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " latitude longitude housing_median_age total_rooms total_bedrooms \\\n",
+ "count 12000.0 12000.0 12000.0 12000.0 12000.0 \n",
+ "mean 35.6 -119.6 28.6 2636.3 538.1 \n",
+ "std 2.1 2.0 12.6 2147.5 415.5 \n",
+ "min 32.5 -124.3 1.0 8.0 1.0 \n",
+ "25% 33.9 -121.8 18.0 1463.0 297.0 \n",
+ "50% 34.2 -118.5 29.0 2130.0 435.0 \n",
+ "75% 37.7 -118.0 37.0 3155.0 652.0 \n",
+ "max 42.0 -114.6 52.0 37937.0 5471.0 \n",
+ "\n",
+ " population households median_income rooms_per_person \n",
+ "count 12000.0 12000.0 12000.0 12000.0 \n",
+ "mean 1429.7 500.3 3.9 2.0 \n",
+ "std 1095.1 379.6 1.9 1.1 \n",
+ "min 8.0 1.0 0.5 0.1 \n",
+ "25% 789.0 282.0 2.6 1.5 \n",
+ "50% 1171.0 409.0 3.5 1.9 \n",
+ "75% 1740.0 609.0 4.8 2.3 \n",
+ "max 16122.0 5189.0 15.0 55.2 "
+ ],
+ "text/html": [
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "RWq0xecNKNeG",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Building a Neural Network\n",
+ "\n",
+ "The NN is defined by the [DNNRegressor](https://www.tensorflow.org/api_docs/python/tf/estimator/DNNRegressor) class.\n",
+ "\n",
+ "Use **`hidden_units`** to define the structure of the NN. The `hidden_units` argument provides a list of ints, where each int corresponds to a hidden layer and indicates the number of nodes in it. For example, consider the following assignment:\n",
+ "\n",
+ "`hidden_units=[3,10]`\n",
+ "\n",
+ "The preceding assignment specifies a neural net with two hidden layers:\n",
+ "\n",
+ "* The first hidden layer contains 3 nodes.\n",
+ "* The second hidden layer contains 10 nodes.\n",
+ "\n",
+ "If we wanted to add more layers, we'd add more ints to the list. For example, `hidden_units=[10,20,30,40]` would create four layers with ten, twenty, thirty, and forty units, respectively.\n",
+ "\n",
+ "By default, all hidden layers will use ReLu activation and will be fully connected."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "ni0S6zHcTb04",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def construct_feature_columns(input_features):\n",
+ " \"\"\"Construct the TensorFlow Feature Columns.\n",
+ "\n",
+ " Args:\n",
+ " input_features: The names of the numerical input features to use.\n",
+ " Returns:\n",
+ " A set of feature columns\n",
+ " \"\"\" \n",
+ " return set([tf.feature_column.numeric_column(my_feature)\n",
+ " for my_feature in input_features])"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "zvCqgNdzpaFg",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def my_input_fn(features, targets, batch_size=1, shuffle=True, num_epochs=None):\n",
+ " \"\"\"Trains a neural net regression model.\n",
+ " \n",
+ " Args:\n",
+ " features: pandas DataFrame of features\n",
+ " targets: pandas DataFrame of targets\n",
+ " batch_size: Size of batches to be passed to the model\n",
+ " shuffle: True or False. Whether to shuffle the data.\n",
+ " num_epochs: Number of epochs for which data should be repeated. None = repeat indefinitely\n",
+ " Returns:\n",
+ " Tuple of (features, labels) for next data batch\n",
+ " \"\"\"\n",
+ " \n",
+ " # Convert pandas data into a dict of np arrays.\n",
+ " features = {key:np.array(value) for key,value in dict(features).items()} \n",
+ " \n",
+ " # Construct a dataset, and configure batching/repeating.\n",
+ " ds = Dataset.from_tensor_slices((features,targets)) # warning: 2GB limit\n",
+ " ds = ds.batch(batch_size).repeat(num_epochs)\n",
+ " \n",
+ " # Shuffle the data, if specified.\n",
+ " if shuffle:\n",
+ " ds = ds.shuffle(10000)\n",
+ " \n",
+ " # Return the next batch of data.\n",
+ " features, labels = ds.make_one_shot_iterator().get_next()\n",
+ " return features, labels"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "U52Ychv9KNeH",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def train_nn_regression_model(\n",
+ " learning_rate,\n",
+ " steps,\n",
+ " batch_size,\n",
+ " hidden_units,\n",
+ " training_examples,\n",
+ " training_targets,\n",
+ " validation_examples,\n",
+ " validation_targets):\n",
+ " \"\"\"Trains a neural network regression model.\n",
+ " \n",
+ " In addition to training, this function also prints training progress information,\n",
+ " as well as a plot of the training and validation loss over time.\n",
+ " \n",
+ " Args:\n",
+ " learning_rate: A `float`, the learning rate.\n",
+ " steps: A non-zero `int`, the total number of training steps. A training step\n",
+ " consists of a forward and backward pass using a single batch.\n",
+ " batch_size: A non-zero `int`, the batch size.\n",
+ " hidden_units: A `list` of int values, specifying the number of neurons in each layer.\n",
+ " training_examples: A `DataFrame` containing one or more columns from\n",
+ " `california_housing_dataframe` to use as input features for training.\n",
+ " training_targets: A `DataFrame` containing exactly one column from\n",
+ " `california_housing_dataframe` to use as target for training.\n",
+ " validation_examples: A `DataFrame` containing one or more columns from\n",
+ " `california_housing_dataframe` to use as input features for validation.\n",
+ " validation_targets: A `DataFrame` containing exactly one column from\n",
+ " `california_housing_dataframe` to use as target for validation.\n",
+ " \n",
+ " Returns:\n",
+ " A `DNNRegressor` object trained on the training data.\n",
+ " \"\"\"\n",
+ "\n",
+ " periods = 10\n",
+ " steps_per_period = steps / periods\n",
+ " \n",
+ " # Create a DNNRegressor object.\n",
+ " my_optimizer = tf.train.GradientDescentOptimizer(learning_rate=learning_rate)\n",
+ " my_optimizer = tf.contrib.estimator.clip_gradients_by_norm(my_optimizer, 5.0)\n",
+ " dnn_regressor = tf.estimator.DNNRegressor(\n",
+ " feature_columns=construct_feature_columns(training_examples),\n",
+ " hidden_units=hidden_units,\n",
+ " optimizer=my_optimizer,\n",
+ " )\n",
+ " \n",
+ " # Create input functions.\n",
+ " training_input_fn = lambda: my_input_fn(training_examples, \n",
+ " training_targets[\"median_house_value\"], \n",
+ " batch_size=batch_size)\n",
+ " predict_training_input_fn = lambda: my_input_fn(training_examples, \n",
+ " training_targets[\"median_house_value\"], \n",
+ " num_epochs=1, \n",
+ " shuffle=False)\n",
+ " predict_validation_input_fn = lambda: my_input_fn(validation_examples, \n",
+ " validation_targets[\"median_house_value\"], \n",
+ " num_epochs=1, \n",
+ " shuffle=False)\n",
+ "\n",
+ " # Train the model, but do so inside a loop so that we can periodically assess\n",
+ " # loss metrics.\n",
+ " print(\"Training model...\")\n",
+ " print(\"RMSE (on training data):\")\n",
+ " training_rmse = []\n",
+ " validation_rmse = []\n",
+ " for period in range (0, periods):\n",
+ " # Train the model, starting from the prior state.\n",
+ " dnn_regressor.train(\n",
+ " input_fn=training_input_fn,\n",
+ " steps=steps_per_period\n",
+ " )\n",
+ " # Take a break and compute predictions.\n",
+ " training_predictions = dnn_regressor.predict(input_fn=predict_training_input_fn)\n",
+ " training_predictions = np.array([item['predictions'][0] for item in training_predictions])\n",
+ " \n",
+ " validation_predictions = dnn_regressor.predict(input_fn=predict_validation_input_fn)\n",
+ " validation_predictions = np.array([item['predictions'][0] for item in validation_predictions])\n",
+ " \n",
+ " # Compute training and validation loss.\n",
+ " training_root_mean_squared_error = math.sqrt(\n",
+ " metrics.mean_squared_error(training_predictions, training_targets))\n",
+ " validation_root_mean_squared_error = math.sqrt(\n",
+ " metrics.mean_squared_error(validation_predictions, validation_targets))\n",
+ " # Occasionally print the current loss.\n",
+ " print(\" period %02d : %0.2f\" % (period, training_root_mean_squared_error))\n",
+ " # Add the loss metrics from this period to our list.\n",
+ " training_rmse.append(training_root_mean_squared_error)\n",
+ " validation_rmse.append(validation_root_mean_squared_error)\n",
+ " print(\"Model training finished.\")\n",
+ "\n",
+ " # Output a graph of loss metrics over periods.\n",
+ " plt.ylabel(\"RMSE\")\n",
+ " plt.xlabel(\"Periods\")\n",
+ " plt.title(\"Root Mean Squared Error vs. Periods\")\n",
+ " plt.tight_layout()\n",
+ " plt.plot(training_rmse, label=\"training\")\n",
+ " plt.plot(validation_rmse, label=\"validation\")\n",
+ " plt.legend()\n",
+ "\n",
+ " print(\"Final RMSE (on training data): %0.2f\" % training_root_mean_squared_error)\n",
+ " print(\"Final RMSE (on validation data): %0.2f\" % validation_root_mean_squared_error)\n",
+ "\n",
+ " return dnn_regressor"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "2QhdcCy-Y8QR",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Task 1: Train a NN Model\n",
+ "\n",
+ "**Adjust hyperparameters, aiming to drop RMSE below 110.**\n",
+ "\n",
+ "Run the following block to train a NN model. \n",
+ "\n",
+ "Recall that in the linear regression exercise with many features, an RMSE of 110 or so was pretty good. We'll aim to beat that.\n",
+ "\n",
+ "Your task here is to modify various learning settings to improve accuracy on validation data.\n",
+ "\n",
+ "Overfitting is a real potential hazard for NNs. You can look at the gap between loss on training data and loss on validation data to help judge if your model is starting to overfit. If the gap starts to grow, that is usually a sure sign of overfitting.\n",
+ "\n",
+ "Because of the number of different possible settings, it's strongly recommended that you take notes on each trial to help guide your development process.\n",
+ "\n",
+ "Also, when you get a good setting, try running it multiple times and see how repeatable your result is. NN weights are typically initialized to small random values, so you should see differences from run to run.\n"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "rXmtSW1yKNeK",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 656
+ },
+ "outputId": "b14bceba-1ff5-4421-8115-63e84debd000"
+ },
+ "cell_type": "code",
+ "source": [
+ "dnn_regressor = train_nn_regression_model(\n",
+ " learning_rate=0.005,\n",
+ " steps=3000,\n",
+ " batch_size=250,\n",
+ " hidden_units=[10, 10],\n",
+ " training_examples=training_examples,\n",
+ " training_targets=training_targets,\n",
+ " validation_examples=validation_examples,\n",
+ " validation_targets=validation_targets)"
+ ],
+ "execution_count": 32,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 127.77\n",
+ " period 01 : 118.62\n",
+ " period 02 : 115.21\n",
+ " period 03 : 111.39\n",
+ " period 04 : 110.60\n",
+ " period 05 : 110.53\n",
+ " period 06 : 108.45\n",
+ " period 07 : 107.25\n",
+ " period 08 : 106.33\n",
+ " period 09 : 106.06\n",
+ "Model training finished.\n",
+ "Final RMSE (on training data): 106.06\n",
+ "Final RMSE (on validation data): 108.47\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\n27dvT/XQVjyHw8H111+PTqejrKwMs9mM1+vF4XCkemgr2smTJ7nlllsAqKmpweVyyeHwqyCHkKJu\nvvlm3nnnHQCamppwOp1y/otKTExM8M1vfpP//M//JDs7O9XDEVH//u//zquvvsr//u//8sgjj/Dk\nk09KeVGJW265haNHjxIKhfD5fPj9fjnfQgXKy8s5ffo0AAMDA5jNZikvV0FmYKI2bdpEXV0djz32\nGIqi8Pzzz6d6SCLqrbfewufz8dd//dex7+3du5eioqIUjkoI9crPz+eLX/wijz76KADf+MY30Gjk\n/6uptnPnTp599ll2795NIBDghRdeSPWQ0prczFEIIYQQaUcquRBCCCHSjhQYIYQQQqQdKTBCCCGE\nSDtSYIQQQgiRdqTACCGEECLtSIERQiRVf38/9fX17NmzJ3YX3qeeeorx8fG432PPnj0Eg8G4n//4\n449z7NixzzJcIUSakAIjhEg6u93Ovn372LdvHz/72c9wOp1873vfi/v1+/btkwW/hBCLyEJ2Qogl\nt2XLFvbv309rayt79+4lEAgwPz/PP/zDP1BbW8uePXuoqamhpaWFV155hdraWpqampibm+O5555j\naGiIQCDAAw88wK5du5ienubrX/86Pp+P8vJyZmdnARgeHuZv/uZvAJiZmWHnzp08/PDDqfzVhRDX\niBQYIcSSCgaD/PrXv+aGG27gb//2b3nppZcoKyu75OZ2JpOJ//7v/1702n379mGz2fjXf/1XZmZm\n+NKXvsSOHTs4cuQIRqOR/fv343K5uOOOOwB4++23qaqq4h//8R+ZnZ3l5z//+ZL/vkKI5JACI4RI\nOq/Xy549ewAIhUJs3ryZhx56iG9/+9v8/d//fex5k5OThEIhIHJ7j4udPn2aBx98EACj0Uh9fT1N\nTU20t7dzww03AJEbs1ZVVQGwY8cOfvrTn/LMM89w2223sXPnzqT+nkKIpSMFRgiRdBfOgVloYmIC\nvV5/yfcv0Ov1l3xPUZRFX4fDYRRFIRwOL7rXz4USVF1dzZtvvskHH3zAwYMHeeWVV/jZz352tb+O\nEEIF5CReIURKWK1WSkpK+N3vfgdAd3c33/3ud6/4muuuu47Dhw8D4Pf7aWpqoq6ujurqak6dOgXA\n4OAg3d3dAPzqV7/izJkzbN++neeff57BwUECgUASfyshxFKRGRghRMrs3buXf/qnf+L73/8+gUCA\nZ5555orP37NnD8899xx/9md/xtzcHE8++SQlJSU88MADvP/+++zatYuSkhLWr18PwKpVq3j++ecx\nGAyEw2H+8i//Ep1O/toTYjmQu1ELIYQQIu3IISQhhBBCpB0pMEIIIYRIO1JghBBCCJF2pMAIIYQQ\nIu1IgRFCCCFE2pECI4QQQoi0IwVGCCGEEGlHCowQQggh0s7/B5xtN4taf49PAAAAAElFTkSuQmCC\n",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "O2q5RRCKqYaU",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below to see a possible solution"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "j2Yd5VfrqcC3",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "**NOTE:** This selection of parameters is somewhat arbitrary. Here we've tried combinations that are increasingly complex, combined with training for longer, until the error falls below our objective (training is nondeterministic, so results may fluctuate a bit each time you run the solution). This may not be the best combination; others may attain an even lower RMSE. If your aim is to find the model that can attain the best error, then you'll want to use a more rigorous process, like a parameter search."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "IjkpSqmxqnSM",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 656
+ },
+ "outputId": "31409cc1-ae40-41d1-a1a3-00d6ff5cc057"
+ },
+ "cell_type": "code",
+ "source": [
+ "dnn_regressor = train_nn_regression_model(\n",
+ " learning_rate=0.001,\n",
+ " steps=2000,\n",
+ " batch_size=100,\n",
+ " hidden_units=[10, 10],\n",
+ " training_examples=training_examples,\n",
+ " training_targets=training_targets,\n",
+ " validation_examples=validation_examples,\n",
+ " validation_targets=validation_targets)"
+ ],
+ "execution_count": 34,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 153.86\n",
+ " period 01 : 144.36\n",
+ " period 02 : 134.23\n",
+ " period 03 : 122.03\n",
+ " period 04 : 113.86\n",
+ " period 05 : 111.67\n",
+ " period 06 : 107.53\n",
+ " period 07 : 105.72\n",
+ " period 08 : 105.28\n",
+ " period 09 : 105.41\n",
+ "Model training finished.\n",
+ "Final RMSE (on training data): 105.41\n",
+ "Final RMSE (on validation data): 107.37\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\nQmCC\n",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "c6diezCSeH4Y",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Task 2: Evaluate on Test Data\n",
+ "\n",
+ "**Confirm that your validation performance results hold up on test data.**\n",
+ "\n",
+ "Once you have a model you're happy with, evaluate it on test data to compare that to validation performance.\n",
+ "\n",
+ "Reminder, the test data set is located [here](https://download.mlcc.google.com/mledu-datasets/california_housing_test.csv)."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "icEJIl5Vp51r",
+ "colab_type": "code",
+ "cellView": "both",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 34
+ },
+ "outputId": "03953452-fcf0-4c34-8111-01b1c505b0c6"
+ },
+ "cell_type": "code",
+ "source": [
+ "california_housing_test_data = pd.read_csv(\"https://download.mlcc.google.com/mledu-datasets/california_housing_test.csv\", sep=\",\")\n",
+ "\n",
+ "# YOUR CODE HERE\n",
+ "test_examples = preprocess_features(california_housing_test_data)\n",
+ "test_targets = preprocess_targets(california_housing_test_data)\n",
+ "\n",
+ "predict_testing_input_fn = lambda: my_input_fn(test_examples, test_targets[\"median_house_value\"], num_epochs=1, shuffle=False)\n",
+ "\n",
+ "test_predictions = dnn_regressor.predict(input_fn=predict_testing_input_fn)\n",
+ "test_predictions = np.array([item['predictions'][0] for item in test_predictions])\n",
+ "\n",
+ "root_mean_squared_error = math.sqrt(metrics.mean_squared_error(test_predictions, test_targets))\n",
+ "\n",
+ "print(\"Final RMSE (on test data): %0.2f\" % root_mean_squared_error)"
+ ],
+ "execution_count": 33,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Final RMSE (on test data): 105.18\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "vvT2jDWjrKew",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below to see a possible solution."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "FyDh7Qy6rQb0",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Similar to what the code at the top does, we just need to load the appropriate data file, preprocess it and call predict and mean_squared_error.\n",
+ "\n",
+ "Note that we don't have to randomize the test data, since we will use all records."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "vhb0CtdvrWZx",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 34
+ },
+ "outputId": "8f9b62ad-1d20-4525-bdf4-c5c178869779"
+ },
+ "cell_type": "code",
+ "source": [
+ "california_housing_test_data = pd.read_csv(\"https://download.mlcc.google.com/mledu-datasets/california_housing_test.csv\", sep=\",\")\n",
+ "\n",
+ "test_examples = preprocess_features(california_housing_test_data)\n",
+ "test_targets = preprocess_targets(california_housing_test_data)\n",
+ "\n",
+ "predict_testing_input_fn = lambda: my_input_fn(test_examples, \n",
+ " test_targets[\"median_house_value\"], \n",
+ " num_epochs=1, \n",
+ " shuffle=False)\n",
+ "\n",
+ "test_predictions = dnn_regressor.predict(input_fn=predict_testing_input_fn)\n",
+ "test_predictions = np.array([item['predictions'][0] for item in test_predictions])\n",
+ "\n",
+ "root_mean_squared_error = math.sqrt(\n",
+ " metrics.mean_squared_error(test_predictions, test_targets))\n",
+ "\n",
+ "print(\"Final RMSE (on test data): %0.2f\" % root_mean_squared_error)"
+ ],
+ "execution_count": 35,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Final RMSE (on test data): 105.19\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/intro_to_pandas.ipynb b/intro_to_pandas.ipynb
new file mode 100644
index 0000000..c628690
--- /dev/null
+++ b/intro_to_pandas.ipynb
@@ -0,0 +1,1703 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "name": "intro_to_pandas.ipynb",
+ "version": "0.3.2",
+ "provenance": [],
+ "collapsed_sections": [
+ "JndnmDMp66FL",
+ "YHIWvc9Ms-Ll",
+ "TJffr5_Jwqvd"
+ ],
+ "include_colab_link": true
+ },
+ "kernelspec": {
+ "name": "python2",
+ "display_name": "Python 2"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "view-in-github",
+ "colab_type": "text"
+ },
+ "source": [
+ ""
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "JndnmDMp66FL"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "#### Copyright 2017 Google LLC."
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "hMqWDc_m6rUC",
+ "cellView": "both",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
+ "# you may not use this file except in compliance with the License.\n",
+ "# You may obtain a copy of the License at\n",
+ "#\n",
+ "# https://www.apache.org/licenses/LICENSE-2.0\n",
+ "#\n",
+ "# Unless required by applicable law or agreed to in writing, software\n",
+ "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
+ "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
+ "# See the License for the specific language governing permissions and\n",
+ "# limitations under the License."
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "rHLcriKWLRe4"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "# Intro to pandas"
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "QvJBqX8_Bctk"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "**Learning Objectives:**\n",
+ " * Gain an introduction to the `DataFrame` and `Series` data structures of the *pandas* library\n",
+ " * Access and manipulate data within a `DataFrame` and `Series`\n",
+ " * Import CSV data into a *pandas* `DataFrame`\n",
+ " * Reindex a `DataFrame` to shuffle data"
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "TIFJ83ZTBctl"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "[*pandas*](http://pandas.pydata.org/) is a column-oriented data analysis API. It's a great tool for handling and analyzing input data, and many ML frameworks support *pandas* data structures as inputs.\n",
+ "Although a comprehensive introduction to the *pandas* API would span many pages, the core concepts are fairly straightforward, and we'll present them below. For a more complete reference, the [*pandas* docs site](http://pandas.pydata.org/pandas-docs/stable/index.html) contains extensive documentation and many tutorials."
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "s_JOISVgmn9v"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Basic Concepts\n",
+ "\n",
+ "The following line imports the *pandas* API and prints the API version:"
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "aSRYu62xUi3g",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 34
+ },
+ "outputId": "3ddf32bf-f6ff-4dcb-eab4-892cbe0379a2"
+ },
+ "cell_type": "code",
+ "source": [
+ "from __future__ import print_function\n",
+ "\n",
+ "import pandas as pd\n",
+ "pd.__version__"
+ ],
+ "execution_count": 1,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "u'0.22.0'"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 1
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "daQreKXIUslr"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "The primary data structures in *pandas* are implemented as two classes:\n",
+ "\n",
+ " * **`DataFrame`**, which you can imagine as a relational data table, with rows and named columns.\n",
+ " * **`Series`**, which is a single column. A `DataFrame` contains one or more `Series` and a name for each `Series`.\n",
+ "\n",
+ "The data frame is a commonly used abstraction for data manipulation. Similar implementations exist in [Spark](https://spark.apache.org/) and [R](https://www.r-project.org/about.html)."
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "fjnAk1xcU0yc"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "One way to create a `Series` is to construct a `Series` object. For example:"
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "DFZ42Uq7UFDj",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 85
+ },
+ "outputId": "de46ffb2-3558-44be-9ffe-c61b9c2a6c38"
+ },
+ "cell_type": "code",
+ "source": [
+ "pd.Series(['San Francisco', 'San Jose', 'Sacramento'])"
+ ],
+ "execution_count": 2,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "0 San Francisco\n",
+ "1 San Jose\n",
+ "2 Sacramento\n",
+ "dtype: object"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 2
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "U5ouUp1cU6pC"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "`DataFrame` objects can be created by passing a `dict` mapping `string` column names to their respective `Series`. If the `Series` don't match in length, missing values are filled with special [NA/NaN](http://pandas.pydata.org/pandas-docs/stable/missing_data.html) values. Example:"
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "avgr6GfiUh8t",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 142
+ },
+ "outputId": "7585e42c-d53d-47b7-d8f1-03a2def5d1d0"
+ },
+ "cell_type": "code",
+ "source": [
+ "city_names = pd.Series(['San Francisco', 'San Jose', 'Sacramento'])\n",
+ "population = pd.Series([852469, 1015785, 485199])\n",
+ "\n",
+ "pd.DataFrame({ 'City name': city_names, 'Population': population })"
+ ],
+ "execution_count": 3,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
City name
\n",
+ "
Population
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
0
\n",
+ "
San Francisco
\n",
+ "
852469
\n",
+ "
\n",
+ "
\n",
+ "
1
\n",
+ "
San Jose
\n",
+ "
1015785
\n",
+ "
\n",
+ "
\n",
+ "
2
\n",
+ "
Sacramento
\n",
+ "
485199
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " City name Population\n",
+ "0 San Francisco 852469\n",
+ "1 San Jose 1015785\n",
+ "2 Sacramento 485199"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 3
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "oa5wfZT7VHJl"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "But most of the time, you load an entire file into a `DataFrame`. The following example loads a file with California housing data. Run the following cell to load the data and create feature definitions:"
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "av6RYOraVG1V",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 297
+ },
+ "outputId": "47196e44-c3fd-42d4-8089-8a361d54d21e"
+ },
+ "cell_type": "code",
+ "source": [
+ "california_housing_dataframe = pd.read_csv(\"https://download.mlcc.google.com/mledu-datasets/california_housing_train.csv\", sep=\",\")\n",
+ "california_housing_dataframe.describe()"
+ ],
+ "execution_count": 4,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/html": [
+ "
"
+ ],
+ "text/plain": [
+ " City name Population Area square miles Population density\n",
+ "0 San Francisco 852469 46.87 18187.945381\n",
+ "1 San Jose 1015785 176.53 5754.177760\n",
+ "2 Sacramento 485199 97.92 4955.055147"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 13
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "6qh63m-ayb-c"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Exercise #1\n",
+ "\n",
+ "Modify the `cities` table by adding a new boolean column that is True if and only if *both* of the following are True:\n",
+ "\n",
+ " * The city is named after a saint.\n",
+ " * The city has an area greater than 50 square miles.\n",
+ "\n",
+ "**Note:** Boolean `Series` are combined using the bitwise, rather than the traditional boolean, operators. For example, when performing *logical and*, use `&` instead of `and`.\n",
+ "\n",
+ "**Hint:** \"San\" in Spanish means \"saint.\""
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "zCOn8ftSyddH",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 142
+ },
+ "outputId": "03354ec1-39eb-4e08-a9d6-60553e209e78"
+ },
+ "cell_type": "code",
+ "source": [
+ "# Your code here\n",
+ "cities['Wide and has saint name'] = (cities['Area square miles'] > 50) & cities['City name'].apply(lambda name: name.startswith('San'))\n",
+ "cities"
+ ],
+ "execution_count": 14,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
City name
\n",
+ "
Population
\n",
+ "
Area square miles
\n",
+ "
Population density
\n",
+ "
Wide and has saint name
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
0
\n",
+ "
San Francisco
\n",
+ "
852469
\n",
+ "
46.87
\n",
+ "
18187.945381
\n",
+ "
False
\n",
+ "
\n",
+ "
\n",
+ "
1
\n",
+ "
San Jose
\n",
+ "
1015785
\n",
+ "
176.53
\n",
+ "
5754.177760
\n",
+ "
True
\n",
+ "
\n",
+ "
\n",
+ "
2
\n",
+ "
Sacramento
\n",
+ "
485199
\n",
+ "
97.92
\n",
+ "
4955.055147
\n",
+ "
False
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " City name Population Area square miles Population density \\\n",
+ "0 San Francisco 852469 46.87 18187.945381 \n",
+ "1 San Jose 1015785 176.53 5754.177760 \n",
+ "2 Sacramento 485199 97.92 4955.055147 \n",
+ "\n",
+ " Wide and has saint name \n",
+ "0 False \n",
+ "1 True \n",
+ "2 False "
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 14
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "YHIWvc9Ms-Ll"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below for a solution."
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "T5OlrqtdtCIb",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "cities['Is wide and has saint name'] = (cities['Area square miles'] > 50) & cities['City name'].apply(lambda name: name.startswith('San'))\n",
+ "cities"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "f-xAOJeMiXFB"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Indexes\n",
+ "Both `Series` and `DataFrame` objects also define an `index` property that assigns an identifier value to each `Series` item or `DataFrame` row. \n",
+ "\n",
+ "By default, at construction, *pandas* assigns index values that reflect the ordering of the source data. Once created, the index values are stable; that is, they do not change when data is reordered."
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "2684gsWNinq9",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 34
+ },
+ "outputId": "59378143-6d15-4032-f4c5-37a8b776e5b6"
+ },
+ "cell_type": "code",
+ "source": [
+ "city_names.index"
+ ],
+ "execution_count": 15,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "RangeIndex(start=0, stop=3, step=1)"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 15
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "F_qPe2TBjfWd",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 34
+ },
+ "outputId": "503c8bb3-1f03-4fd6-ed8f-6a60e2ba511c"
+ },
+ "cell_type": "code",
+ "source": [
+ "cities.index"
+ ],
+ "execution_count": 16,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "RangeIndex(start=0, stop=3, step=1)"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 16
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "hp2oWY9Slo_h"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Call `DataFrame.reindex` to manually reorder the rows. For example, the following has the same effect as sorting by city name:"
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "sN0zUzSAj-U1",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 142
+ },
+ "outputId": "db499d82-dfb9-4eab-b9eb-5d6fec65ee5f"
+ },
+ "cell_type": "code",
+ "source": [
+ "cities.reindex([2, 0, 1])"
+ ],
+ "execution_count": 17,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
City name
\n",
+ "
Population
\n",
+ "
Area square miles
\n",
+ "
Population density
\n",
+ "
Wide and has saint name
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
2
\n",
+ "
Sacramento
\n",
+ "
485199
\n",
+ "
97.92
\n",
+ "
4955.055147
\n",
+ "
False
\n",
+ "
\n",
+ "
\n",
+ "
0
\n",
+ "
San Francisco
\n",
+ "
852469
\n",
+ "
46.87
\n",
+ "
18187.945381
\n",
+ "
False
\n",
+ "
\n",
+ "
\n",
+ "
1
\n",
+ "
San Jose
\n",
+ "
1015785
\n",
+ "
176.53
\n",
+ "
5754.177760
\n",
+ "
True
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " City name Population Area square miles Population density \\\n",
+ "2 Sacramento 485199 97.92 4955.055147 \n",
+ "0 San Francisco 852469 46.87 18187.945381 \n",
+ "1 San Jose 1015785 176.53 5754.177760 \n",
+ "\n",
+ " Wide and has saint name \n",
+ "2 False \n",
+ "0 False \n",
+ "1 True "
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 17
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "-GQFz8NZuS06"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Reindexing is a great way to shuffle (randomize) a `DataFrame`. In the example below, we take the index, which is array-like, and pass it to NumPy's `random.permutation` function, which shuffles its values in place. Calling `reindex` with this shuffled array causes the `DataFrame` rows to be shuffled in the same way.\n",
+ "Try running the following cell multiple times!"
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "mF8GC0k8uYhz",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 142
+ },
+ "outputId": "0c91835e-a2cf-45d7-f179-0b8457e73b39"
+ },
+ "cell_type": "code",
+ "source": [
+ "cities.reindex(np.random.permutation(cities.index))"
+ ],
+ "execution_count": 18,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
City name
\n",
+ "
Population
\n",
+ "
Area square miles
\n",
+ "
Population density
\n",
+ "
Wide and has saint name
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
0
\n",
+ "
San Francisco
\n",
+ "
852469
\n",
+ "
46.87
\n",
+ "
18187.945381
\n",
+ "
False
\n",
+ "
\n",
+ "
\n",
+ "
2
\n",
+ "
Sacramento
\n",
+ "
485199
\n",
+ "
97.92
\n",
+ "
4955.055147
\n",
+ "
False
\n",
+ "
\n",
+ "
\n",
+ "
1
\n",
+ "
San Jose
\n",
+ "
1015785
\n",
+ "
176.53
\n",
+ "
5754.177760
\n",
+ "
True
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " City name Population Area square miles Population density \\\n",
+ "0 San Francisco 852469 46.87 18187.945381 \n",
+ "2 Sacramento 485199 97.92 4955.055147 \n",
+ "1 San Jose 1015785 176.53 5754.177760 \n",
+ "\n",
+ " Wide and has saint name \n",
+ "0 False \n",
+ "2 False \n",
+ "1 True "
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 18
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "fSso35fQmGKb"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "For more information, see the [Index documentation](http://pandas.pydata.org/pandas-docs/stable/indexing.html#index-objects)."
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "8UngIdVhz8C0"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Exercise #2\n",
+ "\n",
+ "The `reindex` method allows index values that are not in the original `DataFrame`'s index values. Try it and see what happens if you use such values! Why do you think this is allowed?"
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "PN55GrDX0jzO",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 173
+ },
+ "outputId": "4f63a98f-add5-47da-a447-6221303d66a4"
+ },
+ "cell_type": "code",
+ "source": [
+ "# Your code here\n",
+ "cities.reindex([0, 4, 5, 2])"
+ ],
+ "execution_count": 20,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
City name
\n",
+ "
Population
\n",
+ "
Area square miles
\n",
+ "
Population density
\n",
+ "
Wide and has saint name
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
0
\n",
+ "
San Francisco
\n",
+ "
852469.0
\n",
+ "
46.87
\n",
+ "
18187.945381
\n",
+ "
False
\n",
+ "
\n",
+ "
\n",
+ "
4
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
5
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
NaN
\n",
+ "
\n",
+ "
\n",
+ "
2
\n",
+ "
Sacramento
\n",
+ "
485199.0
\n",
+ "
97.92
\n",
+ "
4955.055147
\n",
+ "
False
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " City name Population Area square miles Population density \\\n",
+ "0 San Francisco 852469.0 46.87 18187.945381 \n",
+ "4 NaN NaN NaN NaN \n",
+ "5 NaN NaN NaN NaN \n",
+ "2 Sacramento 485199.0 97.92 4955.055147 \n",
+ "\n",
+ " Wide and has saint name \n",
+ "0 False \n",
+ "4 NaN \n",
+ "5 NaN \n",
+ "2 False "
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 20
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "TJffr5_Jwqvd"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below for the solution."
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "8oSvi2QWwuDH"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "If your `reindex` input array includes values not in the original `DataFrame` index values, `reindex` will add new rows for these \"missing\" indices and populate all corresponding columns with `NaN` values:"
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "yBdkucKCwy4x",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "cities.reindex([0, 4, 5, 2])"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "2l82PhPbwz7g"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "This behavior is desirable because indexes are often strings pulled from the actual data (see the [*pandas* reindex\n",
+ "documentation](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.reindex.html) for an example\n",
+ "in which the index values are browser names).\n",
+ "\n",
+ "In this case, allowing \"missing\" indices makes it easy to reindex using an external list, as you don't have to worry about\n",
+ "sanitizing the input."
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/logistic_regression.ipynb b/logistic_regression.ipynb
new file mode 100644
index 0000000..c524047
--- /dev/null
+++ b/logistic_regression.ipynb
@@ -0,0 +1,1720 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "name": "logistic_regression.ipynb",
+ "version": "0.3.2",
+ "provenance": [],
+ "collapsed_sections": [
+ "JndnmDMp66FL",
+ "dPpJUV862FYI",
+ "i2e3TlyL57Qs",
+ "wCugvl0JdWYL"
+ ],
+ "include_colab_link": true
+ },
+ "kernelspec": {
+ "name": "python2",
+ "display_name": "Python 2"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "view-in-github",
+ "colab_type": "text"
+ },
+ "source": [
+ ""
+ ]
+ },
+ {
+ "metadata": {
+ "id": "JndnmDMp66FL",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "#### Copyright 2017 Google LLC."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "hMqWDc_m6rUC",
+ "colab_type": "code",
+ "cellView": "both",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
+ "# you may not use this file except in compliance with the License.\n",
+ "# You may obtain a copy of the License at\n",
+ "#\n",
+ "# https://www.apache.org/licenses/LICENSE-2.0\n",
+ "#\n",
+ "# Unless required by applicable law or agreed to in writing, software\n",
+ "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
+ "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
+ "# See the License for the specific language governing permissions and\n",
+ "# limitations under the License."
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "g4T-_IsVbweU",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "# Logistic Regression"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "LEAHZv4rIYHX",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "**Learning Objectives:**\n",
+ " * Reframe the median house value predictor (from the preceding exercises) as a binary classification model\n",
+ " * Compare the effectiveness of logisitic regression vs linear regression for a binary classification problem"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "CnkCZqdIIYHY",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "As in the prior exercises, we're working with the [California housing data set](https://developers.google.com/machine-learning/crash-course/california-housing-data-description), but this time we will turn it into a binary classification problem by predicting whether a city block is a high-cost city block. We'll also revert to the default features, for now."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "9pltCyy2K3dd",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Frame the Problem as Binary Classification\n",
+ "\n",
+ "The target of our dataset is `median_house_value` which is a numeric (continuous-valued) feature. We can create a boolean label by applying a threshold to this continuous value.\n",
+ "\n",
+ "Given features describing a city block, we wish to predict if it is a high-cost city block. To prepare the targets for train and eval data, we define a classification threshold of the 75%-ile for median house value (a value of approximately 265000). All house values above the threshold are labeled `1`, and all others are labeled `0`."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "67IJwZX1Vvjt",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Setup\n",
+ "\n",
+ "Run the cells below to load the data and prepare the input features and targets."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "fOlbcJ4EIYHd",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "from __future__ import print_function\n",
+ "\n",
+ "import math\n",
+ "\n",
+ "from IPython import display\n",
+ "from matplotlib import cm\n",
+ "from matplotlib import gridspec\n",
+ "from matplotlib import pyplot as plt\n",
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "from sklearn import metrics\n",
+ "import tensorflow as tf\n",
+ "from tensorflow.python.data import Dataset\n",
+ "\n",
+ "tf.logging.set_verbosity(tf.logging.ERROR)\n",
+ "pd.options.display.max_rows = 10\n",
+ "pd.options.display.float_format = '{:.1f}'.format\n",
+ "\n",
+ "california_housing_dataframe = pd.read_csv(\"https://download.mlcc.google.com/mledu-datasets/california_housing_train.csv\", sep=\",\")\n",
+ "\n",
+ "california_housing_dataframe = california_housing_dataframe.reindex(\n",
+ " np.random.permutation(california_housing_dataframe.index))"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "lTB73MNeIYHf",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Note how the code below is slightly different from the previous exercises. Instead of using `median_house_value` as target, we create a new binary target, `median_house_value_is_high`."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "kPSqspaqIYHg",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def preprocess_features(california_housing_dataframe):\n",
+ " \"\"\"Prepares input features from California housing data set.\n",
+ "\n",
+ " Args:\n",
+ " california_housing_dataframe: A Pandas DataFrame expected to contain data\n",
+ " from the California housing data set.\n",
+ " Returns:\n",
+ " A DataFrame that contains the features to be used for the model, including\n",
+ " synthetic features.\n",
+ " \"\"\"\n",
+ " selected_features = california_housing_dataframe[\n",
+ " [\"latitude\",\n",
+ " \"longitude\",\n",
+ " \"housing_median_age\",\n",
+ " \"total_rooms\",\n",
+ " \"total_bedrooms\",\n",
+ " \"population\",\n",
+ " \"households\",\n",
+ " \"median_income\"]]\n",
+ " processed_features = selected_features.copy()\n",
+ " # Create a synthetic feature.\n",
+ " processed_features[\"rooms_per_person\"] = (\n",
+ " california_housing_dataframe[\"total_rooms\"] /\n",
+ " california_housing_dataframe[\"population\"])\n",
+ " return processed_features\n",
+ "\n",
+ "def preprocess_targets(california_housing_dataframe):\n",
+ " \"\"\"Prepares target features (i.e., labels) from California housing data set.\n",
+ "\n",
+ " Args:\n",
+ " california_housing_dataframe: A Pandas DataFrame expected to contain data\n",
+ " from the California housing data set.\n",
+ " Returns:\n",
+ " A DataFrame that contains the target feature.\n",
+ " \"\"\"\n",
+ " output_targets = pd.DataFrame()\n",
+ " # Create a boolean categorical feature representing whether the\n",
+ " # median_house_value is above a set threshold.\n",
+ " output_targets[\"median_house_value_is_high\"] = (\n",
+ " california_housing_dataframe[\"median_house_value\"] > 265000).astype(float)\n",
+ " return output_targets"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "FwOYWmXqWA6D",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1205
+ },
+ "outputId": "fe2ff345-d3e4-4535-9e37-9fbaaa448496"
+ },
+ "cell_type": "code",
+ "source": [
+ "# Choose the first 12000 (out of 17000) examples for training.\n",
+ "training_examples = preprocess_features(california_housing_dataframe.head(12000))\n",
+ "training_targets = preprocess_targets(california_housing_dataframe.head(12000))\n",
+ "\n",
+ "# Choose the last 5000 (out of 17000) examples for validation.\n",
+ "validation_examples = preprocess_features(california_housing_dataframe.tail(5000))\n",
+ "validation_targets = preprocess_targets(california_housing_dataframe.tail(5000))\n",
+ "\n",
+ "# Double-check that we've done the right thing.\n",
+ "print(\"Training examples summary:\")\n",
+ "display.display(training_examples.describe())\n",
+ "print(\"Validation examples summary:\")\n",
+ "display.display(validation_examples.describe())\n",
+ "\n",
+ "print(\"Training targets summary:\")\n",
+ "display.display(training_targets.describe())\n",
+ "print(\"Validation targets summary:\")\n",
+ "display.display(validation_targets.describe())"
+ ],
+ "execution_count": 4,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training examples summary:\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " latitude longitude housing_median_age total_rooms total_bedrooms \\\n",
+ "count 12000.0 12000.0 12000.0 12000.0 12000.0 \n",
+ "mean 35.6 -119.5 28.7 2654.9 542.2 \n",
+ "std 2.1 2.0 12.6 2191.7 425.4 \n",
+ "min 32.5 -124.3 1.0 12.0 3.0 \n",
+ "25% 33.9 -121.8 18.0 1462.0 298.0 \n",
+ "50% 34.2 -118.5 29.0 2126.0 434.0 \n",
+ "75% 37.7 -118.0 37.0 3151.2 652.0 \n",
+ "max 42.0 -114.3 52.0 37937.0 6445.0 \n",
+ "\n",
+ " population households median_income rooms_per_person \n",
+ "count 12000.0 12000.0 12000.0 12000.0 \n",
+ "mean 1435.3 503.8 3.9 2.0 \n",
+ "std 1172.9 388.5 1.9 1.1 \n",
+ "min 8.0 2.0 0.5 0.0 \n",
+ "25% 791.0 282.8 2.6 1.5 \n",
+ "50% 1170.0 410.0 3.6 1.9 \n",
+ "75% 1715.2 607.0 4.8 2.3 \n",
+ "max 35682.0 6082.0 15.0 55.2 "
+ ],
+ "text/html": [
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "uon1LB3A31VN",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## How Would Linear Regression Fare?\n",
+ "To see why logistic regression is effective, let us first train a naive model that uses linear regression. This model will use labels with values in the set `{0, 1}` and will try to predict a continuous value that is as close as possible to `0` or `1`. Furthermore, we wish to interpret the output as a probability, so it would be ideal if the output will be within the range `(0, 1)`. We would then apply a threshold of `0.5` to determine the label.\n",
+ "\n",
+ "Run the cells below to train the linear regression model using [LinearRegressor](https://www.tensorflow.org/api_docs/python/tf/estimator/LinearRegressor)."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "smmUYRDtWOV_",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def construct_feature_columns(input_features):\n",
+ " \"\"\"Construct the TensorFlow Feature Columns.\n",
+ "\n",
+ " Args:\n",
+ " input_features: The names of the numerical input features to use.\n",
+ " Returns:\n",
+ " A set of feature columns\n",
+ " \"\"\"\n",
+ " return set([tf.feature_column.numeric_column(my_feature)\n",
+ " for my_feature in input_features])"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "B5OwSrr1yIKD",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def my_input_fn(features, targets, batch_size=1, shuffle=True, num_epochs=None):\n",
+ " \"\"\"Trains a linear regression model.\n",
+ " \n",
+ " Args:\n",
+ " features: pandas DataFrame of features\n",
+ " targets: pandas DataFrame of targets\n",
+ " batch_size: Size of batches to be passed to the model\n",
+ " shuffle: True or False. Whether to shuffle the data.\n",
+ " num_epochs: Number of epochs for which data should be repeated. None = repeat indefinitely\n",
+ " Returns:\n",
+ " Tuple of (features, labels) for next data batch\n",
+ " \"\"\"\n",
+ " \n",
+ " # Convert pandas data into a dict of np arrays.\n",
+ " features = {key:np.array(value) for key,value in dict(features).items()} \n",
+ " \n",
+ " # Construct a dataset, and configure batching/repeating.\n",
+ " ds = Dataset.from_tensor_slices((features,targets)) # warning: 2GB limit\n",
+ " ds = ds.batch(batch_size).repeat(num_epochs)\n",
+ " \n",
+ " # Shuffle the data, if specified.\n",
+ " if shuffle:\n",
+ " ds = ds.shuffle(10000)\n",
+ " \n",
+ " # Return the next batch of data.\n",
+ " features, labels = ds.make_one_shot_iterator().get_next()\n",
+ " return features, labels"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "SE2-hq8PIYHz",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def train_linear_regressor_model(\n",
+ " learning_rate,\n",
+ " steps,\n",
+ " batch_size,\n",
+ " training_examples,\n",
+ " training_targets,\n",
+ " validation_examples,\n",
+ " validation_targets):\n",
+ " \"\"\"Trains a linear regression model.\n",
+ " \n",
+ " In addition to training, this function also prints training progress information,\n",
+ " as well as a plot of the training and validation loss over time.\n",
+ " \n",
+ " Args:\n",
+ " learning_rate: A `float`, the learning rate.\n",
+ " steps: A non-zero `int`, the total number of training steps. A training step\n",
+ " consists of a forward and backward pass using a single batch.\n",
+ " batch_size: A non-zero `int`, the batch size.\n",
+ " training_examples: A `DataFrame` containing one or more columns from\n",
+ " `california_housing_dataframe` to use as input features for training.\n",
+ " training_targets: A `DataFrame` containing exactly one column from\n",
+ " `california_housing_dataframe` to use as target for training.\n",
+ " validation_examples: A `DataFrame` containing one or more columns from\n",
+ " `california_housing_dataframe` to use as input features for validation.\n",
+ " validation_targets: A `DataFrame` containing exactly one column from\n",
+ " `california_housing_dataframe` to use as target for validation.\n",
+ " \n",
+ " Returns:\n",
+ " A `LinearRegressor` object trained on the training data.\n",
+ " \"\"\"\n",
+ "\n",
+ " periods = 10\n",
+ " steps_per_period = steps / periods\n",
+ "\n",
+ " # Create a linear regressor object.\n",
+ " my_optimizer = tf.train.GradientDescentOptimizer(learning_rate=learning_rate)\n",
+ " my_optimizer = tf.contrib.estimator.clip_gradients_by_norm(my_optimizer, 5.0)\n",
+ " linear_regressor = tf.estimator.LinearRegressor(\n",
+ " feature_columns=construct_feature_columns(training_examples),\n",
+ " optimizer=my_optimizer\n",
+ " )\n",
+ " \n",
+ " # Create input functions.\n",
+ " training_input_fn = lambda: my_input_fn(training_examples, \n",
+ " training_targets[\"median_house_value_is_high\"], \n",
+ " batch_size=batch_size)\n",
+ " predict_training_input_fn = lambda: my_input_fn(training_examples, \n",
+ " training_targets[\"median_house_value_is_high\"], \n",
+ " num_epochs=1, \n",
+ " shuffle=False)\n",
+ " predict_validation_input_fn = lambda: my_input_fn(validation_examples, \n",
+ " validation_targets[\"median_house_value_is_high\"], \n",
+ " num_epochs=1, \n",
+ " shuffle=False)\n",
+ "\n",
+ " # Train the model, but do so inside a loop so that we can periodically assess\n",
+ " # loss metrics.\n",
+ " print(\"Training model...\")\n",
+ " print(\"RMSE (on training data):\")\n",
+ " training_rmse = []\n",
+ " validation_rmse = []\n",
+ " for period in range (0, periods):\n",
+ " # Train the model, starting from the prior state.\n",
+ " linear_regressor.train(\n",
+ " input_fn=training_input_fn,\n",
+ " steps=steps_per_period\n",
+ " )\n",
+ " \n",
+ " # Take a break and compute predictions.\n",
+ " training_predictions = linear_regressor.predict(input_fn=predict_training_input_fn)\n",
+ " training_predictions = np.array([item['predictions'][0] for item in training_predictions])\n",
+ " \n",
+ " validation_predictions = linear_regressor.predict(input_fn=predict_validation_input_fn)\n",
+ " validation_predictions = np.array([item['predictions'][0] for item in validation_predictions])\n",
+ " \n",
+ " # Compute training and validation loss.\n",
+ " training_root_mean_squared_error = math.sqrt(\n",
+ " metrics.mean_squared_error(training_predictions, training_targets))\n",
+ " validation_root_mean_squared_error = math.sqrt(\n",
+ " metrics.mean_squared_error(validation_predictions, validation_targets))\n",
+ " # Occasionally print the current loss.\n",
+ " print(\" period %02d : %0.2f\" % (period, training_root_mean_squared_error))\n",
+ " # Add the loss metrics from this period to our list.\n",
+ " training_rmse.append(training_root_mean_squared_error)\n",
+ " validation_rmse.append(validation_root_mean_squared_error)\n",
+ " print(\"Model training finished.\")\n",
+ " \n",
+ " # Output a graph of loss metrics over periods.\n",
+ " plt.ylabel(\"RMSE\")\n",
+ " plt.xlabel(\"Periods\")\n",
+ " plt.title(\"Root Mean Squared Error vs. Periods\")\n",
+ " plt.tight_layout()\n",
+ " plt.plot(training_rmse, label=\"training\")\n",
+ " plt.plot(validation_rmse, label=\"validation\")\n",
+ " plt.legend()\n",
+ "\n",
+ " return linear_regressor"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "TDBD8xeeIYH2",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 622
+ },
+ "outputId": "a601b1af-d4f4-49ac-f308-867826e76aab"
+ },
+ "cell_type": "code",
+ "source": [
+ "linear_regressor = train_linear_regressor_model(\n",
+ " learning_rate=0.000001,\n",
+ " steps=200,\n",
+ " batch_size=20,\n",
+ " training_examples=training_examples,\n",
+ " training_targets=training_targets,\n",
+ " validation_examples=validation_examples,\n",
+ " validation_targets=validation_targets)"
+ ],
+ "execution_count": 8,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 0.45\n",
+ " period 01 : 0.44\n",
+ " period 02 : 0.44\n",
+ " period 03 : 0.44\n",
+ " period 04 : 0.44\n",
+ " period 05 : 0.44\n",
+ " period 06 : 0.45\n",
+ " period 07 : 0.44\n",
+ " period 08 : 0.44\n",
+ " period 09 : 0.44\n",
+ "Model training finished.\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\n7VZwWezcMX+VbSXfokDBJO1kl7/Xb/ZVoVQoiA/Xnvdrn+u58bPbMQT7s+9wPXV1rU6fNkwzprCj\nZjd7jhQRH+LabT/GC/l+dm5GCodOi8xms5mGhuP75NTV1WEymQDIzc2lqamJ5cuXc//995Ofn8/a\ntWvZtm0b//znP7n99tt5++23eemll/jmm28A2Llz57ApLp1Ox6233oparcZoNJKRkcGRI0ec9XbG\nXIRBy8+WTEOjVvGH9w5S5IIloUKI44wBBh646F6C1Tq2HNrKjprdY3p8S3czJS1HmRiaSKi//uxP\nGEOtnb0cqWplYkwIukD12Z9wgQb6+YTS1tlHdUOH015nyNTwKcBAXyQhLpTTgs/8+fP55JOB+fP8\n/HzMZrNjmmvx4sV8+OGHbNmyhfXr15Oens7q1at57rnnePfdd9myZQtLlixh5cqVzJs3D4D9+/eT\nmprqOH5ubi6/+c1vAOjs7KSwsJDERM+aMkqMCuGnt2Rgt9t5/t39VNZJd2chXClCa+L+rHsI8Atg\nY8EW8urzx+zYe+oGVrK6eosKgP0ljdiBaRPHfjXXyVLjXbNvF0CacTJKhVLqfMSoXHDwKS0tHfHz\n06dPJz09nezsbJ566inWrFlDTk4Of//73y/o9err6wkLO96LYubMmbS0tLB06VLuvPNO7rvvPiIi\nIi7o2O6UkRjGXdel0dXTz++27KWhxX1t9YXwRbHB0aycdhd+Sj9ePbCJwqbDY3Lc7+ryUCqUZJmm\njsnxzsfQMvZMVwQfFzYyDPQLYFJoEuVtVTT3tDj99YR3UthHaMDw4x//mA0bNjhuv/TSS6xcuRKA\nO++8kzfeeMP5IxxDzpwXHe2868fflrPl82KiwrSsumOGUy9P+xqZEx+fxtt5KWw6zMt5r6JUqngg\n616S9AkXfKyGrkbWbF9HmnEy92fdM4ajPLt+q42Hnv+SoAA16/5t7gXV3ZzPubHb7fzi5W/o7bPx\n3IOXoHRync/nFV/xzuH3WJZyK/NjLnbqa41H4+3rZry64Bqf/v7hrd1zc3Mdf3d2wypfs/jieK6Z\nPdDd+f+9nUePdHcWwqVSjZO4K+MO+m39vJT3KpVt1Rd8LHdtUQFwuLKFrh4r05LDXdInTKFQkBpv\noL2rj+p659f5DC1r398odT7iwowYfE7+ojkx7EjjvbG35IqJzEmPoKS6ld9vPSDdnYVwsWmmdFak\n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\n",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "JjBZ_q7aD9gh",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Task 1: Can We Calculate LogLoss for These Predictions?\n",
+ "\n",
+ "**Examine the predictions and decide whether or not we can use them to calculate LogLoss.**\n",
+ "\n",
+ "`LinearRegressor` uses the L2 loss, which doesn't do a great job at penalizing misclassifications when the output is interpreted as a probability. For example, there should be a huge difference whether a negative example is classified as positive with a probability of 0.9 vs 0.9999, but L2 loss doesn't strongly differentiate these cases.\n",
+ "\n",
+ "In contrast, `LogLoss` penalizes these \"confidence errors\" much more heavily. Remember, `LogLoss` is defined as:\n",
+ "\n",
+ "$$Log Loss = \\sum_{(x,y)\\in D} -y \\cdot log(y_{pred}) - (1 - y) \\cdot log(1 - y_{pred})$$\n",
+ "\n",
+ "\n",
+ "But first, we'll need to obtain the prediction values. We could use `LinearRegressor.predict` to obtain these.\n",
+ "\n",
+ "Given the predictions and the targets, can we calculate `LogLoss`?"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "joklSr4iCHTv",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 347
+ },
+ "outputId": "81597cf7-b980-4c1d-c39a-7ac25d01e186"
+ },
+ "cell_type": "code",
+ "source": [
+ "predict_validation_input_fn = lambda: my_input_fn(validation_examples, validation_targets[\"median_house_value_is_high\"], num_epochs=1, shuffle=False)\n",
+ "\n",
+ "validation_predictions = linear_regressor.predict(input_fn=predict_validation_input_fn)\n",
+ "validation_predictions = np.array([item['predictions'][0] for item in validation_predictions])\n",
+ "\n",
+ "_ = plt.hist(validation_predictions)"
+ ],
+ "execution_count": 9,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeoAAAFKCAYAAADScRzUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAHc1JREFUeJzt3X9MneX9//HXgcPZkXkQDjuns7Ef\ntyx1dMqgBMcKaRVa1JIsQy1dIW2zFZ1N0VnFH6w6bWKy0iqmNpJV65ikjco8M4avMdC4YmLDkU1P\nQqgxqfrHwtpazrEolR9ySs73D9PTdracW+RwX8Dz8Ze97vtwv693rvjqfd2Hu45YLBYTAAAwUord\nBQAAgEsjqAEAMBhBDQCAwQhqAAAMRlADAGAwghoAAIM57S7gYsLh03aXMGOystI1ODhidxlGo0fW\n0Cdr6JM19Mma6eqTz+e55DHuqG3mdKbaXYLx6JE19Mka+mQNfbJmJvpEUAMAYDBLQT02NqZVq1bp\ntdde04kTJ7RhwwbV1NTo3nvv1fj4uCSpvb1dt99+u6qqqvTqq69KkqLRqOrr61VdXa3169erv78/\neTMBAGAOshTUf/nLX3TFFVdIkvbs2aOamhq99NJLuvrqqxUIBDQyMqLm5ma9+OKL2r9/v1pbW/X5\n55/rjTfeUEZGhl5++WVt3rxZTU1NSZ0MAABzTcKg/uSTT/Txxx/rxhtvlCT19PRo5cqVkqTS0lIF\ng0H19vYqNzdXHo9HbrdbBQUFCoVCCgaDKi8vlyQVFxcrFAolbyYAAMxBCb/1vXPnTv3pT3/S66+/\nLkkaHR2Vy+WSJGVnZyscDisSicjr9cY/4/V6vzGekpIih8Oh8fHx+OcvJSsrfV59kWGyb/vha/TI\nGvpkDX2yhj5Zk+w+TRrUr7/+uvLz87Vo0aKLHr/UP7z1bcf/13z6lQCfzzOvfh1tKuiRNfTJGvpk\nDX2yZrr6NFnYTxrUb7/9tvr7+/X222/r008/lcvlUnp6usbGxuR2u3Xy5En5/X75/X5FIpH45wYG\nBpSfny+/369wOKycnBxFo1HFYrGEd9MAAOCcSZ9R7969W//4xz/097//XVVVVdqyZYuKi4vV2dkp\nSTp48KCWL1+uvLw89fX1aWhoSMPDwwqFQiosLFRJSYk6OjokSV1dXSoqKkr+jAAAmEO+9ZvJ7rnn\nHj388MNqa2vTwoULVVlZqbS0NNXX16u2tlYOh0N1dXXyeDyqqKhQd3e3qqur5XK51NjYmIw5AAAw\nZzliVh8cz6D59FyE50CJ0SNr6JM19Mka+mTNTDyj5s1kAAAYjKAGAMBgRv7rWfPRpsZDdpcwqZaG\nMrtLAIB5iTtqAAAMRlADAGAwghoAAIMR1AAAGIygBgDAYAQ1AAAGI6gBADAYQQ0AgMEIagAADEZQ\nAwBgMIIaAACDEdQAABiMoAYAwGAENQAABiOoAQAwGEENAIDBCGoAAAxGUAMAYDCCGgAAgxHUAAAY\njKAGAMBgBDUAAAYjqAEAMBhBDQCAwZyJThgdHVVDQ4M+++wzffXVV9qyZYs6Ozv1wQcfKDMzU5JU\nW1urG2+8Ue3t7WptbVVKSorWrl2rqqoqRaNRNTQ06Pjx40pNTdWOHTu0aNGipE8MAIC5IGFQd3V1\n6brrrtOdd96pY8eOadOmTVq6dKnuv/9+lZaWxs8bGRlRc3OzAoGA0tLStGbNGpWXl6urq0sZGRlq\namrS4cOH1dTUpN27dyd1UgAAzBUJg7qioiL+3ydOnNCCBQsuel5vb69yc3Pl8XgkSQUFBQqFQgoG\ng6qsrJQkFRcXa9u2bdNRNwAA84LlZ9Tr1q3TAw88EA/aAwcOaOPGjbrvvvt06tQpRSIReb3e+Ple\nr1fhcPiC8ZSUFDkcDo2Pj0/zNAAAmJsS3lGf9corr+jDDz/Ugw8+qG3btikzM1NLlizR888/r2ef\nfVZLly694PxYLHbRn3Op8fNlZaXL6Uy1Wtqs5/N57C4hIbtrtPv6swV9soY+WUOfrEl2nxIG9ZEj\nR5Sdna0rr7xSS5Ys0cTEhK655hplZ2dLksrKyrR9+3bdfPPNikQi8c8NDAwoPz9ffr9f4XBYOTk5\nikajisVicrlck15zcHDkO05r9vD5PAqHT9tdRkJ21jhbemQ3+mQNfbKGPlkzXX2aLOwTbn2/9957\namlpkSRFIhGNjIzoscceU39/vySpp6dHixcvVl5envr6+jQ0NKTh4WGFQiEVFhaqpKREHR0dkr7+\nYlpRUdF3nhAAAPNFwjvqdevW6ZFHHlFNTY3Gxsb02GOPKT09XVu3btVll12m9PR07dixQ263W/X1\n9aqtrZXD4VBdXZ08Ho8qKirU3d2t6upquVwuNTY2zsS8AACYExwxKw+NZ9h82m45u22yqfGQ3aVM\nqqWhzLZrswVnDX2yhj5ZQ5+sMWLrGwAA2IegBgDAYAQ1AAAGI6gBADAYQQ0AgMEIagAADEZQAwBg\nMIIaAACDEdQAABiMoAYAwGAENQAABiOoAQAwGEENAIDBCGoAAAxGUAMAYDCCGgAAgxHUAAAYjKAG\nAMBgBDUAAAYjqAEAMBhBDQCAwQhqAAAMRlADAGAwghoAAIMR1AAAGIygBgDAYAQ1AAAGI6gBADCY\nM9EJo6Ojamho0GeffaavvvpKW7ZsUU5Ojh566CFNTEzI5/PpySeflMvlUnt7u1pbW5WSkqK1a9eq\nqqpK0WhUDQ0NOn78uFJTU7Vjxw4tWrRoJuYGAMCsl/COuqurS9ddd50OHDig3bt3q7GxUXv27FFN\nTY1eeuklXX311QoEAhoZGVFzc7NefPFF7d+/X62trfr888/1xhtvKCMjQy+//LI2b96spqammZgX\nAABzQsKgrqio0J133ilJOnHihBYsWKCenh6tXLlSklRaWqpgMKje3l7l5ubK4/HI7XaroKBAoVBI\nwWBQ5eXlkqTi4mKFQqEkTgcAgLkl4db3WevWrdOnn36qvXv36ne/+51cLpckKTs7W+FwWJFIRF6v\nN36+1+v9xnhKSoocDofGx8fjn7+YrKx0OZ2pU53TrOPzeewuISG7a7T7+rMFfbKGPllDn6xJdp8s\nB/Urr7yiDz/8UA8++KBisVh8/Pz/Pt+3HT/f4OCI1bJmPZ/Po3D4tN1lJGRnjbOlR3ajT9bQJ2vo\nkzXT1afJwj7h1veRI0d04sQJSdKSJUs0MTGh73//+xobG5MknTx5Un6/X36/X5FIJP65gYGB+Hg4\nHJYkRaNRxWKxSe+mAQDAOQmD+r333lNLS4skKRKJaGRkRMXFxers7JQkHTx4UMuXL1deXp76+vo0\nNDSk4eFhhUIhFRYWqqSkRB0dHZK+/mJaUVFREqcDAMDcknDre926dXrkkUdUU1OjsbExPfbYY7ru\nuuv08MMPq62tTQsXLlRlZaXS0tJUX1+v2tpaORwO1dXVyePxqKKiQt3d3aqurpbL5VJjY+NMzAsA\ngDnBEbPy0HiGzafnImefb2xqPGR3KZNqaSiz7do8K7OGPllDn6yhT9YY8YwaAADYh6AGAMBgBDUA\nAAYjqAEAMBhBDQCAwQhqAAAMRlADAGAwghoAAIMR1AAAGIygBgDAYAQ1AAAGI6gBADAYQQ0AgMEI\nagAADEZQAwBgMIIaAACDEdQAABiMoAYAwGAENQAABiOoAQAwGEENAIDBCGoAAAxGUAMAYDCCGgAA\ngxHUAAAYjKAGAMBgBDUAAAZzWjlp165dev/993XmzBndddddOnTokD744ANlZmZKkmpra3XjjTeq\nvb1dra2tSklJ0dq1a1VVVaVoNKqGhgYdP35cqamp2rFjhxYtWpTUSQEAMFckDOp3331XH330kdra\n2jQ4OKhbb71Vv/zlL3X//fertLQ0ft7IyIiam5sVCASUlpamNWvWqLy8XF1dXcrIyFBTU5MOHz6s\npqYm7d69O6mTAgBgrki49X399dfrmWeekSRlZGRodHRUExMT3zivt7dXubm58ng8crvdKigoUCgU\nUjAYVHl5uSSpuLhYoVBomqcAAMDclTCoU1NTlZ6eLkkKBAJasWKFUlNTdeDAAW3cuFH33XefTp06\npUgkIq/XG/+c1+tVOBy+YDwlJUUOh0Pj4+NJmg4AAHOLpWfUkvTWW28pEAiopaVFR44cUWZmppYs\nWaLnn39ezz77rJYuXXrB+bFY7KI/51Lj58vKSpfTmWq1tFnP5/PYXUJCdtdo9/VnC/pkDX2yhj5Z\nk+w+WQrqd955R3v37tULL7wgj8ejZcuWxY+VlZVp+/btuvnmmxWJROLjAwMDys/Pl9/vVzgcVk5O\njqLRqGKxmFwu16TXGxwcmeJ0Zh+fz6Nw+LTdZSRkZ42zpUd2o0/W0Cdr6JM109WnycI+4db36dOn\ntWvXLj333HPxb3nfc8896u/vlyT19PRo8eLFysvLU19fn4aGhjQ8PKxQKKTCwkKVlJSoo6NDktTV\n1aWioqLvPCEAAOaLhHfUb775pgYHB7V169b42G233aatW7fqsssuU3p6unbs2CG32636+nrV1tbK\n4XCorq5OHo9HFRUV6u7uVnV1tVwulxobG5M6IQAA5hJHzMpD4xk2n7Zbzm6bbGo8ZHcpk2ppKLPt\n2mzBWUOfrKFP1tAna4zY+gYAAPYhqAEAMBhBDQCAwQhqAAAMRlADAGAwghoAAIMR1AAAGIygBgDA\nYAQ1AAAGI6gBADAYQQ0AgMEIagAADEZQAwBgMIIaAACDEdQAABiMoAYAwGAENQAABiOoAQAwGEEN\nAIDBCGoAAAxGUAMAYDCCGgAAgxHUAAAYjKAGAMBgBDUAAAYjqAEAMBhBDQCAwQhqAAAM5rRy0q5d\nu/T+++/rzJkzuuuuu5Sbm6uHHnpIExMT8vl8evLJJ+VyudTe3q7W1lalpKRo7dq1qqqqUjQaVUND\ng44fP67U1FTt2LFDixYtSva8AACYExIG9bvvvquPPvpIbW1tGhwc1K233qply5appqZGq1ev1tNP\nP61AIKDKyko1NzcrEAgoLS1Na9asUXl5ubq6upSRkaGmpiYdPnxYTU1N2r1790zMDQCAWS/h1vf1\n11+vZ555RpKUkZGh0dFR9fT0aOXKlZKk0tJSBYNB9fb2Kjc3Vx6PR263WwUFBQqFQgoGgyovL5ck\nFRcXKxQKJXE6AADMLQmDOjU1Venp6ZKkQCCgFStWaHR0VC6XS5KUnZ2tcDisSCQir9cb/5zX6/3G\neEpKihwOh8bHx5MxFwAA5hxLz6gl6a233lIgEFBLS4tuuumm+HgsFrvo+d92/HxZWelyOlOtljbr\n+Xweu0tIyO4a7b7+bEGfrKFP1tAna5LdJ0tB/c4772jv3r164YUX5PF4lJ6errGxMbndbp08eVJ+\nv19+v1+RSCT+mYGBAeXn58vv9yscDisnJ0fRaFSxWCx+N34pg4Mj321Ws4jP51E4fNruMhKys8bZ\n0iO70Sdr6JM19Mma6erTZGGfcOv79OnT2rVrl5577jllZmZK+vpZc2dnpyTp4MGDWr58ufLy8tTX\n16ehoSENDw8rFAqpsLBQJSUl6ujokCR1dXWpqKjoO08IAID5IuEd9ZtvvqnBwUFt3bo1PtbY2KhH\nH31UbW1tWrhwoSorK5WWlqb6+nrV1tbK4XCorq5OHo9HFRUV6u7uVnV1tVwulxobG5M6IQAA5hJH\nzMpD4xk2n7Zbzm6bbGo8ZHcpk2ppKLPt2mzBWUOfrKFP1tAna4zY+gYAAPYhqAEAMBhBDQCAwQhq\nAAAMRlADAGAwghoAAIMR1AAAGIygBgDAYAQ1AAAGI6gBADAYQQ0AgMEIagAADEZQAwBgMIIaAACD\nEdQAABiMoAYAwGAENQAABiOoAQAwGEENAIDBCGoAAAxGUAMAYDCCGgAAgxHUAAAYjKAGAMBgBDUA\nAAYjqAEAMBhBDQCAwSwF9dGjR7Vq1SodOHBAktTQ0KBf/epX2rBhgzZs2KC3335bktTe3q7bb79d\nVVVVevXVVyVJ0WhU9fX1qq6u1vr169Xf35+cmQAAMAc5E50wMjKiJ554QsuWLbtg/P7771dpaekF\n5zU3NysQCCgtLU1r1qxReXm5urq6lJGRoaamJh0+fFhNTU3avXv39M8EAIA5KOEdtcvl0r59++T3\n+yc9r7e3V7m5ufJ4PHK73SooKFAoFFIwGFR5ebkkqbi4WKFQaHoqBwBgHkgY1E6nU263+xvjBw4c\n0MaNG3Xffffp1KlTikQi8nq98eNer1fhcPiC8ZSUFDkcDo2Pj0/jFAAAmLsSbn1fzK9//WtlZmZq\nyZIlev755/Xss89q6dKlF5wTi8Uu+tlLjZ8vKytdTmfqVEqblXw+j90lJGR3jXZff7agT9bQJ2vo\nkzXJ7tOUgvr859VlZWXavn27br75ZkUikfj4wMCA8vPz5ff7FQ6HlZOTo2g0qlgsJpfLNenPHxwc\nmUpZs5LP51E4fNruMhKys8bZ0iO70Sdr6JM19Mma6erTZGE/pV/Puueee+Lf3u7p6dHixYuVl5en\nvr4+DQ0NaXh4WKFQSIWFhSopKVFHR4ckqaurS0VFRVO5JAAA81LCO+ojR45o586dOnbsmJxOpzo7\nO7V+/Xpt3bpVl112mdLT07Vjxw653W7V19ertrZWDodDdXV18ng8qqioUHd3t6qrq+VyudTY2DgT\n8wIAYE5wxKw8NJ5h82m75ey2yabGQ3aXMqmWhjLbrs0WnDX0yRr6ZA19ssbYrW8AADAzCGoAAAxG\nUAMAYDCCGgAAgxHUAAAYjKAGAMBgBDUAAAYjqAEAMBhBDQCAwQhqAAAMRlADAGAwghoAAIMR1AAA\nGIygBgDAYAQ1AAAGI6gBADAYQQ0AgMEIagAADEZQAwBgMIIaAACDEdQAABiMoAYAwGAENQAABiOo\nAQAwGEENAIDBCGoAAAxGUAMAYDCCGgAAg1kK6qNHj2rVqlU6cOCAJOnEiRPasGGDampqdO+992p8\nfFyS1N7erttvv11VVVV69dVXJUnRaFT19fWqrq7W+vXr1d/fn6SpAAAw9yQM6pGRET3xxBNatmxZ\nfGzPnj2qqanRSy+9pKuvvlqBQEAjIyNqbm7Wiy++qP3796u1tVWff/653njjDWVkZOjll1/W5s2b\n1dTUlNQJAQAwlyQMapfLpX379snv98fHenp6tHLlSklSaWmpgsGgent7lZubK4/HI7fbrYKCAoVC\nIQWDQZWXl0uSiouLFQqFkjQVAADmnoRB7XQ65Xa7LxgbHR2Vy+WSJGVnZyscDisSicjr9cbP8Xq9\n3xhPSUmRw+GIb5UDAIDJOb/rD4jFYtMyfr6srHQ5nanfqa7ZxOfz2F1CQnbXaPf1Zwv6ZA19soY+\nWZPsPk0pqNPT0zU2Nia3262TJ0/K7/fL7/crEonEzxkYGFB+fr78fr/C4bBycnIUjUYVi8Xid+OX\nMjg4MpWyZiWfz6Nw+LTdZSRkZ42zpUd2o0/W0Cdr6JM109WnycJ+Sr+eVVxcrM7OTknSwYMHtXz5\ncuXl5amvr09DQ0MaHh5WKBRSYWGhSkpK1NHRIUnq6upSUVHRVC4JAMC8lPCO+siRI9q5c6eOHTsm\np9Opzs5OPfXUU2poaFBbW5sWLlyoyspKpaWlqb6+XrW1tXI4HKqrq5PH41FFRYW6u7tVXV0tl8ul\nxsbGmZgXAABzgiNm5aHxDJtP2y1nt002NR6yu5RJtTSU2XZttuCsoU/W0Cdr6JM1xm59AwCAmUFQ\nAwBgMIIaAACDEdQAABiMoAYAwGAENQAABiOoAQAwGEENAIDBCGoAAAxGUAMAYDCCGgAAgxHUAAAY\njKAGAMBgBDUAAAYjqAEAMBhBDQCAwQhqAAAMRlADAGAwp90FYHbY1HjI7hISamkos7sEAJh23FED\nAGAwghoAAIMR1AAAGIygBgDAYAQ1AAAGI6gBADAYQQ0AgMEIagAADEZQAwBgsCm9maynp0f33nuv\nFi9eLEm65pprdMcdd+ihhx7SxMSEfD6fnnzySblcLrW3t6u1tVUpKSlau3atqqqqpnUCAADMZVN+\nhegvfvEL7dmzJ/7nP/7xj6qpqdHq1av19NNPKxAIqLKyUs3NzQoEAkpLS9OaNWtUXl6uzMzMaSke\nAIC5btq2vnt6erRy5UpJUmlpqYLBoHp7e5WbmyuPxyO3262CggKFQqHpuiQAAHPelO+oP/74Y23e\nvFlffPGF7r77bo2OjsrlckmSsrOzFQ6HFYlE5PV645/xer0Kh8MJf3ZWVrqcztSpljbr+Hweu0uY\nE+gjPbCKPllDn6xJdp+mFNQ/+tGPdPfdd2v16tXq7+/Xxo0bNTExET8ei8Uu+rlLjf+vwcGRqZQ1\nK/l8HoXDp+0uY06Y731kLVlDn6yhT9ZMV58mC/spbX0vWLBAFRUVcjgc+r//+z/94Ac/0BdffKGx\nsTFJ0smTJ+X3++X3+xWJROKfGxgYkN/vn8olAQCYl6YU1O3t7frrX/8qSQqHw/rss8902223qbOz\nU5J08OBBLV++XHl5eerr69PQ0JCGh4cVCoVUWFg4fdUDADDHTWnru6ysTA888ID++c9/KhqNavv2\n7VqyZIkefvhhtbW1aeHChaqsrFRaWprq6+tVW1srh8Ohuro6eTw88wAAwKopBfXll1+uvXv3fmP8\nb3/72zfGbrnlFt1yyy1TuQwAAPMebyYDAMBgBDUAAAYjqAEAMBhBDQCAwQhqAAAMRlADAGAwghoA\nAIMR1AAAGIygBgDAYAQ1AAAGI6gBADDYlN71PdtsajxkdwkAAEwJd9QAABiMoAYAwGAENQAABiOo\nAQAwGEENAIDBCGoAAAxGUAMAYDCCGgAAgxHUAAAYjKAGAMBgBDUAAAabF+/6xvxg+jvdWxrK7C4B\nwCzEHTUAAAYjqAEAMBhBDQCAwWbkGfWf//xn9fb2yuFwaNu2bfr5z38+E5cFAGDWS3pQ/+tf/9J/\n/vMftbW16ZNPPtG2bdvU1taW7MsCADAnJD2og8GgVq1aJUn6yU9+oi+++EJffvmlLr/88mRfGjCK\n6d9Knw345jzmo6QHdSQS0bXXXhv/s9frVTgcJqgBfGuz4S87/GUC023Gf486FoslPMfn80zrNf9f\n06+n9ecBwHww3f8vnquS3aekf+vb7/crEonE/zwwMCCfz5fsywIAMCckPahLSkrU2dkpSfrggw/k\n9/vZ9gYAwKKkb30XFBTo2muv1bp16+RwOPT4448n+5IAAMwZjpiVh8YAAMAWvJkMAACDEdQAABiM\nf+Zyhkz2GtXu7m49/fTTSk1N1YoVK1RXV2djpfaarE9lZWX64Q9/qNTUVEnSU089pQULFthVqq2O\nHj2qLVu26Le//a3Wr19/wTHW0zmT9Yn1dM6uXbv0/vvv68yZM7rrrrt00003xY+xns6ZrE9JXU8x\nJF1PT0/s97//fSwWi8U+/vjj2Nq1ay84vnr16tjx48djExMTserq6thHH31kR5m2S9Sn0tLS2Jdf\nfmlHaUYZHh6OrV+/Pvboo4/G9u/f/43jrKevJeoT6+lrwWAwdscdd8RisVjs1KlTsRtuuOGC46yn\nryXqUzLXE1vfM+BSr1GVpP7+fl1xxRW68sorlZKSohtuuEHBYNDOcm0zWZ9wjsvl0r59++T3+79x\njPV0zmR9wjnXX3+9nnnmGUlSRkaGRkdHNTExIYn1dL7J+pRsBPUMiEQiysrKiv/57GtUJSkcDsvr\n9V702HwzWZ/Oevzxx1VdXa2nnnrK0lvu5iKn0ym3233RY6yncybr01msJyk1NVXp6emSpEAgoBUr\nVsS3b1lP50zWp7OStZ54Rm2D+fo/hG/rf/v0hz/8QcuXL9cVV1yhuro6dXZ26pZbbrGpOsx2rKcL\nvfXWWwoEAmppabG7FKNdqk/JXE/cUc+AyV6j+r/HTp48OW+36hK9brayslLZ2dlyOp1asWKFjh49\nakeZRmM9Wcd6Ouedd97R3r17tW/fPnk8595bzXq60KX6JCV3PRHUM2Cy16heddVV+vLLL/Xf//5X\nZ86cUVdXl0pKSuws1zaT9en06dOqra3V+Pi4JOnf//63Fi9ebFutpmI9WcN6Ouf06dPatWuXnnvu\nOWVmZl5wjPV0zmR9SvZ6Yut7BlzsNaqvvfaaPB6PysvLtX37dtXX10uSKioq9OMf/9jmiu2RqE8r\nVqzQb37zG33ve9/Tz372s3m7TXnkyBHt3LlTx44dk9PpVGdnp8rKynTVVVexns6TqE+sp6+9+eab\nGhwc1NatW+NjRUVF+ulPf8p6Ok+iPiVzPfEKUQAADMbWNwAABiOoAQAwGEENAIDBCGoAAAxGUAMA\nYDCCGgAAgxHUAAAYjKAGAMBg/x8E8AA4HVCV4wAAAABJRU5ErkJggg==\n",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "kMQD0Uq3RqTX",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "The calibration data shows most scatter points aligned to a line. The line is almost vertical, but we'll come back to that later. Right now let's focus on the ones that deviate from the line. We notice that they are relatively few in number.\n",
+ "\n",
+ "If we plot a histogram of `rooms_per_person`, we find that we have a few outliers in our input data:"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "POTM8C_ER1Oc",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 347
+ },
+ "outputId": "27d09ad2-2ac0-4c18-fef1-449d98c22746"
+ },
+ "cell_type": "code",
+ "source": [
+ "plt.subplot(1, 2, 2)\n",
+ "_ = california_housing_dataframe[\"rooms_per_person\"].hist()"
+ ],
+ "execution_count": 6,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\nVcX69eu5dOkS6enpeL3eW7NCEYmwjE/nAfo2MJ1bMrfbwVLf4Zj8vl1rH43J68wU025jJ2PaXsT0\nll5EZi8FL2IQBS9iEAUvYhAFL2IQBS9iEAUvYhAFL2IQBS9iEAUvYhAFL2IQBS9iEAUvYhAFL2IQ\nBS9iEAUvYhAFL2IQBS9iEAUvYhAFL2IQBS9iEAUvYhAFL2IQBS9iEAUvYpBpBX/mzBmWLFnC3r17\nAfj00095+umnKSsr4+mnn44c9dzc3Mzy5cspKiri0KFDAITDYXw+HyUlJZSVldHd3Q3A6dOnKS4u\npri4mA0bNtyKtYnIVaYMfnh4mE2bNpGTkxMZ27p1KytWrGDv3r0UFBTwhz/8geHhYerr69m9ezd7\n9uyhoaGBgYEBjhw5gtPpZP/+/VRUVFBXVwdAdXU1VVVVHDhwgPPnz3Ps2LFbt0oRAaYRvM1mY8eO\nHROOc96wYQOPPfYYAElJSQwMDNDZ2UlqaioOhwO73U5mZiaBQAC/309BQQEAXq+XQCDA2NgYPT09\npKWlAZCfn4/f778V6xORK0wZvNVqxW63TxhLTEwkPj6eixcvsm/fPpYuXUooFMLlckWucblcBIPB\nCeNxcXFYLBZCoRBOpzNybXJycuSxQERunSmPi76eixcvsnr1ah566CFycnL485//POH71zuU9lrj\n0znANikpEas1PrrJRmGyEzhni7mwhljRXlwWdfC/+MUvWLBgAc899xwAHo+HUCgU+X5fXx8ZGRl4\nPB6CwSApKSmEw2HGx8dxu90MDAxEru3t7Z3wyHAt/f3DU84pln/U2X68sGlHJE/GtL2I+XHRzc3N\nJCQk8Pzzz0fG0tPT6erqYnBwkKGhIQKBAFlZWeTm5tLS0gJAe3s72dnZJCQksHDhQk6ePAlAW1sb\neXl50UxFRG7AlO/wp06dora2lp6eHqxWK62trfz73//ma1/7GitXrgTgvvvuY+PGjfh8PsrLy7FY\nLFRWVuJwOCgsLKSjo4OSkhJsNhs1NTUAVFVVsX79ei5dukR6ejper/fWrlREsIxP5wH6NjCdWzK3\n28FS3+GY/L5dax+NyevMFNNuYydj2l7E/JZeRGYnBS9iEAUvYhAFL2IQBS9iEAUvYhAFL2IQBS9i\nEAUvYhAFL2IQBS9iEAUvYhAFL2IQBS9iEAUvYhAFL2IQBS9iEAUvYhAFL2IQBS9iEAUvYhAFL2IQ\nBS9iEAUvYhAFL2KQaQV/5swZlixZwt69ewH49NNPWblyJaWlpbzwwguMjY0Bl8+cW758OUVFRRw6\ndAiAcDiMz+ejpKSEsrIyuru7ATh9+jTFxcUUFxezYcOGW7E2EbnKlMEPDw+zadMmcnJyImPbtm2j\ntLSUffv2sWDBApqamhgeHqa+vp7du3ezZ88eGhoaGBgY4MiRIzidTvbv309FRQV1dXUAVFdXU1VV\nxYEDBzh//jzHjh27dasUEWAawdtsNnbs2DHhOOcTJ06wePFiAPLz8/H7/XR2dpKamorD4cBut5OZ\nmUkgEMDv91NQUACA1+slEAgwNjZGT08PaWlpE15DRG6tKU+PtVqtWK0TLxsZGcFmswGQnJxMMBgk\nFArhcrki17hcri+Nx8XFYbFYCIVCOJ3OyLX/eY3JJCUlYrXGT39lNymWZ83PlLmwhljRXlw2ZfBT\nud7hszcyPp0DbPv7h6e8JpZ/1Nl+2qhpJ6ZOxrS9iPnpsYmJiYyOjgLQ29uLx+PB4/EQCoUi1/T1\n9UXG//PuHQ6HGR8fx+12MzAwELn2P68hIrdWVMF7vV5aW1sBaGtrIy8vj/T0dLq6uhgcHGRoaIhA\nIEBWVha5ubm0tLQA0N7eTnZ2NgkJCSxcuJCTJ09OeA0RubWmvKU/deoUtbW19PT0YLVaaW1t5dVX\nX2Xt2rU0NjYyf/58li1bRkJCAj6fj/LyciwWC5WVlTgcDgoLC+no6KCkpASbzUZNTQ0AVVVVrF+/\nnkuXLpGeno7X673lixUxnWV8Og/Qt4HpPIO53Q6W+g7H5PftWvtoTF5nppj23DoZ0/Yi5s/wIjI7\nKXgRgyh4EYMoeBGDKHgRgyh4EYMoeBGDKHgRgyh4EYMoeBGDKHgRgyh4EYMoeBGDKHgRgyh4EYMo\neBGDKHgRgyh4EYMoeBGDKHgRgyh4EYMoeBGDKHgRgyh4EYNEdZjk0NAQa9as4fPPPyccDlNZWYnb\n7Wbjxo0A3H///fzqV78CYOfOnbS0tGCxWHjuuef43ve+x7lz5/D5fJw7d47ExETq6uqYN29ezBYl\nItcWVfB/+tOfuPfee/H5fPT29vLUU0/hdrupqqoiLS0Nn8/HsWPHWLhwIe+88w4HDhzg/PnzlJaW\nsmjRIhoaGvjud7/LT3/6UxobG9mxYwcvvfRSrNcmIleJ6pY+KSkpcvrr4OAg8+bNo6enh7S0NADy\n8/Px+/2cOHGCvLw8bDYbLpeLb3zjG3z00Uf4/X4KCgomXCsit15Uwf/gBz/g7NmzFBQUUFZWxurV\nq3E6nZHvJycnEwwGCYVCuFyuyLjL5frSeHJyMn19fTe5DBGZjqhu6Q8fPsz8+fP5/e9/z+nTpyMn\nxf7H9c6nvNb4dM+yTEpKxGqNj2a6UZnsQL7ZYi6sIVa0F5dFFXwgEGDRokUApKSk8MUXX3DhwoXI\n93t7e/F4PHg8Hj755JNrjgeDQRwOR2RsKv39w1NeE8s/6mw/bdS0E1MnY9pexPz02AULFtDZ2QlA\nT08Pd9xxB/fddx8nT54EoK2tjby8PB566CGOHj3K2NgYvb299PX18a1vfYvc3FxaWlomXCsit15U\n7/BPPvkkVVVVlJWVceHCBTZu3Ijb7Wb9+vVcunSJ9PR0vF4vACtWrKCsrAyLxcLGjRuJi4tj5cqV\nvPTSS5SWluJ0OtmyZUtMFyUi12YZn+5D9Aybzi2Z2+1gqe9wTH7frrWPxuR1Zoppt7GTMW0vYn5L\nLyKzk4IXMYiCFzGIghcxiIIXMYiCFzGIghcxiIIXMYiCFzGIghcxiIIXMYiCFzGIghcxiIIXMYiC\nFzGIghcxiIIXMYiCFzGIghcxiIIXMYiCFzGIghcxiIIXMYiCFzGIghcxSFRHTQE0Nzezc+dOrFYr\nzz//PPfffz+rV6/m4sWLuN1utmzZgs1mo7m5mYaGBuLi4lixYgVFRUWEw2HWrl3L2bNniY+P55VX\nXuGee+6J5bpE5Bqieofv7++nvr6effv2sX37dv7yl7+wbds2SktL2bdvHwsWLKCpqYnh4WHq6+vZ\nvXs3e/bsoaGhgYGBAY4cOYLT6WT//v1UVFRQV1cX63WJyDVEFbzf7ycnJ4c777wTj8fDpk2bOHHi\nBIsXLwYgPz8fv99PZ2cnqampOBwO7HY7mZmZBAIB/H4/BQUFAHi9XgKBQOxWJCLXFdUt/b/+9S9G\nR0epqKhgcHCQVatWMTIygs1mAyA5OZlgMEgoFMLlckV+zuVyfWk8Li4Oi8XC2NhY5OdF5NaI+hl+\nYGCA3/zmN5w9e5af/OQnXHkI7fUOpL3R8SslJSVitcZHN9koTHYC52wxF9YQK9qLy6IKPjk5me98\n5ztYrVa++c1vcscddxAfH8/o6Ch2u53e3l48Hg8ej4dQKBT5ub6+PjIyMvB4PASDQVJSUgiHw4yP\n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\nfIzt3Nflkr4AAAAASUVORK5CYII=\n",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "9l0KYpBQu8ed",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Task 3: Clip Outliers\n",
+ "\n",
+ "See if you can further improve the model fit by setting the outlier values of `rooms_per_person` to some reasonable minimum or maximum.\n",
+ "\n",
+ "For reference, here's a quick example of how to apply a function to a Pandas `Series`:\n",
+ "\n",
+ " clipped_feature = my_dataframe[\"my_feature_name\"].apply(lambda x: max(x, 0))\n",
+ "\n",
+ "The above `clipped_feature` will have no values less than `0`."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "rGxjRoYlHbHC",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 347
+ },
+ "outputId": "a6670236-953d-4a2a-89a3-02743094a5bb"
+ },
+ "cell_type": "code",
+ "source": [
+ "# YOUR CODE HERE\n",
+ "california_housing_dataframe[\"rooms_per_person\"] = (\n",
+ " california_housing_dataframe[\"rooms_per_person\"]).apply(lambda x: min(x, 10))\n",
+ "\n",
+ "_ = california_housing_dataframe[\"rooms_per_person\"].hist()"
+ ],
+ "execution_count": 13,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "
"
+ ],
+ "text/plain": [
+ " median_house_value\n",
+ "count 5000.0\n",
+ "mean 229.5\n",
+ "std 122.5\n",
+ "min 15.0\n",
+ "25% 130.4\n",
+ "50% 213.0\n",
+ "75% 303.2\n",
+ "max 500.0"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 16
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "z3TZV1pgfZ1n",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Task 1: Examine the Data\n",
+ "Okay, let's look at the data above. We have `9` input features that we can use.\n",
+ "\n",
+ "Take a quick skim over the table of values. Everything look okay? See how many issues you can spot. Don't worry if you don't have a background in statistics; common sense will get you far.\n",
+ "\n",
+ "After you've had a chance to look over the data yourself, check the solution for some additional thoughts on how to verify data."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "4Xp9NhOCYSuz",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below for the solution."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "gqeRmK57YWpy",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Let's check our data against some baseline expectations:\n",
+ "\n",
+ "* For some values, like `median_house_value`, we can check to see if these values fall within reasonable ranges (keeping in mind this was 1990 data — not today!).\n",
+ "\n",
+ "* For other values, like `latitude` and `longitude`, we can do a quick check to see if these line up with expected values from a quick Google search.\n",
+ "\n",
+ "If you look closely, you may see some oddities:\n",
+ "\n",
+ "* `median_income` is on a scale from about 3 to 15. It's not at all clear what this scale refers to—looks like maybe some log scale? It's not documented anywhere; all we can assume is that higher values correspond to higher income.\n",
+ "\n",
+ "* The maximum `median_house_value` is 500,001. This looks like an artificial cap of some kind.\n",
+ "\n",
+ "* Our `rooms_per_person` feature is generally on a sane scale, with a 75th percentile value of about 2. But there are some very large values, like 18 or 55, which may show some amount of corruption in the data.\n",
+ "\n",
+ "We'll use these features as given for now. But hopefully these kinds of examples can help to build a little intuition about how to check data that comes to you from an unknown source."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "fXliy7FYZZRm",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Task 2: Plot Latitude/Longitude vs. Median House Value"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "aJIWKBdfsDjg",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Let's take a close look at two features in particular: **`latitude`** and **`longitude`**. These are geographical coordinates of the city block in question.\n",
+ "\n",
+ "This might make a nice visualization — let's plot `latitude` and `longitude`, and use color to show the `median_house_value`."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "5_LD23bJ06TW",
+ "colab_type": "code",
+ "cellView": "both",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 498
+ },
+ "outputId": "ceea0ec5-6bba-4caf-e894-bde44f807b96"
+ },
+ "cell_type": "code",
+ "source": [
+ "plt.figure(figsize=(13, 8))\n",
+ "\n",
+ "ax = plt.subplot(1, 2, 1)\n",
+ "ax.set_title(\"Validation Data\")\n",
+ "\n",
+ "ax.set_autoscaley_on(False)\n",
+ "ax.set_ylim([32, 43])\n",
+ "ax.set_autoscalex_on(False)\n",
+ "ax.set_xlim([-126, -112])\n",
+ "plt.scatter(validation_examples[\"longitude\"],\n",
+ " validation_examples[\"latitude\"],\n",
+ " cmap=\"coolwarm\",\n",
+ " c=validation_targets[\"median_house_value\"] / validation_targets[\"median_house_value\"].max())\n",
+ "\n",
+ "ax = plt.subplot(1,2,2)\n",
+ "ax.set_title(\"Training Data\")\n",
+ "\n",
+ "ax.set_autoscaley_on(False)\n",
+ "ax.set_ylim([32, 43])\n",
+ "ax.set_autoscalex_on(False)\n",
+ "ax.set_xlim([-126, -112])\n",
+ "plt.scatter(training_examples[\"longitude\"],\n",
+ " training_examples[\"latitude\"],\n",
+ " cmap=\"coolwarm\",\n",
+ " c=training_targets[\"median_house_value\"] / training_targets[\"median_house_value\"].max())\n",
+ "_ = plt.plot()"
+ ],
+ "execution_count": 17,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\nYII=\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "32_DbjnfXJlC",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Wait a second...this should have given us a nice map of the state of California, with red showing up in expensive areas like the San Francisco and Los Angeles.\n",
+ "\n",
+ "The training set sort of does, compared to a [real map](https://www.google.com/maps/place/California/@37.1870174,-123.7642688,6z/data=!3m1!4b1!4m2!3m1!1s0x808fb9fe5f285e3d:0x8b5109a227086f55), but the validation set clearly doesn't.\n",
+ "\n",
+ "**Go back up and look at the data from Task 1 again.**\n",
+ "\n",
+ "Do you see any other differences in the distributions of features or targets between the training and validation data?"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "pECTKgw5ZvFK",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below for the solution."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "49NC4_KIZxk_",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Looking at the tables of summary stats above, it's easy to wonder how anyone would do a useful data check. What's the right 75th percentile value for total_rooms per city block?\n",
+ "\n",
+ "The key thing to notice is that for any given feature or column, the distribution of values between the train and validation splits should be roughly equal.\n",
+ "\n",
+ "The fact that this is not the case is a real worry, and shows that we likely have a fault in the way that our train and validation split was created."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "025Ky0Dq9ig0",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Task 3: Return to the Data Importing and Pre-Processing Code, and See if You Spot Any Bugs\n",
+ "If you do, go ahead and fix the bug. Don't spend more than a minute or two looking. If you can't find the bug, check the solution."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "JFsd2eWHAMdy",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "When you've found and fixed the issue, re-run `latitude` / `longitude` plotting cell above and confirm that our sanity checks look better.\n",
+ "\n",
+ "By the way, there's an important lesson here.\n",
+ "\n",
+ "**Debugging in ML is often *data debugging* rather than code debugging.**\n",
+ "\n",
+ "If the data is wrong, even the most advanced ML code can't save things."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "dER2_43pWj1T",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below for the solution."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "BnEVbYJvW2wu",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "The code that randomizes the data (`np.random.permutation`) is commented out, so we're not doing any randomization prior to splitting the data.\n",
+ "\n",
+ "If we don't randomize the data properly before creating training and validation splits, then we may be in trouble if the data is given to us in some sorted order, which appears to be the case here."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "xCdqLpQyAos2",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Task 4: Train and Evaluate a Model\n",
+ "\n",
+ "**Spend 5 minutes or so trying different hyperparameter settings. Try to get the best validation performance you can.**\n",
+ "\n",
+ "Next, we'll train a linear regressor using all the features in the data set, and see how well we do.\n",
+ "\n",
+ "Let's define the same input function we've used previously for loading the data into a TensorFlow model.\n"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "rzcIPGxxgG0t",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def my_input_fn(features, targets, batch_size=1, shuffle=True, num_epochs=None):\n",
+ " \"\"\"Trains a linear regression model of multiple features.\n",
+ " \n",
+ " Args:\n",
+ " features: pandas DataFrame of features\n",
+ " targets: pandas DataFrame of targets\n",
+ " batch_size: Size of batches to be passed to the model\n",
+ " shuffle: True or False. Whether to shuffle the data.\n",
+ " num_epochs: Number of epochs for which data should be repeated. None = repeat indefinitely\n",
+ " Returns:\n",
+ " Tuple of (features, labels) for next data batch\n",
+ " \"\"\"\n",
+ " \n",
+ " # Convert pandas data into a dict of np arrays.\n",
+ " features = {key:np.array(value) for key,value in dict(features).items()} \n",
+ " \n",
+ " # Construct a dataset, and configure batching/repeating.\n",
+ " ds = Dataset.from_tensor_slices((features,targets)) # warning: 2GB limit\n",
+ " ds = ds.batch(batch_size).repeat(num_epochs)\n",
+ " \n",
+ " # Shuffle the data, if specified.\n",
+ " if shuffle:\n",
+ " ds = ds.shuffle(10000)\n",
+ " \n",
+ " # Return the next batch of data.\n",
+ " features, labels = ds.make_one_shot_iterator().get_next()\n",
+ " return features, labels"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "CvrKoBmNgRCO",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Because we're now working with multiple input features, let's modularize our code for configuring feature columns into a separate function. (For now, this code is fairly simple, as all our features are numeric, but we'll build on this code as we use other types of features in future exercises.)"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "wEW5_XYtgZ-H",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def construct_feature_columns(input_features):\n",
+ " \"\"\"Construct the TensorFlow Feature Columns.\n",
+ "\n",
+ " Args:\n",
+ " input_features: The names of the numerical input features to use.\n",
+ " Returns:\n",
+ " A set of feature columns\n",
+ " \"\"\" \n",
+ " return set([tf.feature_column.numeric_column(my_feature)\n",
+ " for my_feature in input_features])"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "D0o2wnnzf8BD",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Next, go ahead and complete the `train_model()` code below to set up the input functions and calculate predictions.\n",
+ "\n",
+ "**NOTE:** It's okay to reference the code from the previous exercises, but make sure to call `predict()` on the appropriate data sets.\n",
+ "\n",
+ "Compare the losses on training data and validation data. With a single raw feature, our best root mean squared error (RMSE) was of about 180.\n",
+ "\n",
+ "See how much better you can do now that we can use multiple features.\n",
+ "\n",
+ "Check the data using some of the methods we've looked at before. These might include:\n",
+ "\n",
+ " * Comparing distributions of predictions and actual target values\n",
+ "\n",
+ " * Creating a scatter plot of predictions vs. target values\n",
+ "\n",
+ " * Creating two scatter plots of validation data using `latitude` and `longitude`:\n",
+ " * One plot mapping color to actual target `median_house_value`\n",
+ " * A second plot mapping color to predicted `median_house_value` for side-by-side comparison."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "UXt0_4ZTEf4V",
+ "colab_type": "code",
+ "cellView": "both",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def train_model(\n",
+ " learning_rate,\n",
+ " steps,\n",
+ " batch_size,\n",
+ " training_examples,\n",
+ " training_targets,\n",
+ " validation_examples,\n",
+ " validation_targets):\n",
+ " \"\"\"Trains a linear regression model of multiple features.\n",
+ " \n",
+ " In addition to training, this function also prints training progress information,\n",
+ " as well as a plot of the training and validation loss over time.\n",
+ " \n",
+ " Args:\n",
+ " learning_rate: A `float`, the learning rate.\n",
+ " steps: A non-zero `int`, the total number of training steps. A training step\n",
+ " consists of a forward and backward pass using a single batch.\n",
+ " batch_size: A non-zero `int`, the batch size.\n",
+ " training_examples: A `DataFrame` containing one or more columns from\n",
+ " `california_housing_dataframe` to use as input features for training.\n",
+ " training_targets: A `DataFrame` containing exactly one column from\n",
+ " `california_housing_dataframe` to use as target for training.\n",
+ " validation_examples: A `DataFrame` containing one or more columns from\n",
+ " `california_housing_dataframe` to use as input features for validation.\n",
+ " validation_targets: A `DataFrame` containing exactly one column from\n",
+ " `california_housing_dataframe` to use as target for validation.\n",
+ " \n",
+ " Returns:\n",
+ " A `LinearRegressor` object trained on the training data.\n",
+ " \"\"\"\n",
+ "\n",
+ " periods = 10\n",
+ " steps_per_period = steps / periods\n",
+ " \n",
+ " # Create a linear regressor object.\n",
+ " my_optimizer = tf.train.GradientDescentOptimizer(learning_rate=learning_rate)\n",
+ " my_optimizer = tf.contrib.estimator.clip_gradients_by_norm(my_optimizer, 5.0)\n",
+ " linear_regressor = tf.estimator.LinearRegressor(\n",
+ " feature_columns=construct_feature_columns(training_examples),\n",
+ " optimizer=my_optimizer\n",
+ " )\n",
+ " \n",
+ " # Create input functions.\n",
+ " training_input_fn = lambda: my_input_fn(\n",
+ " training_examples, \n",
+ " training_targets[\"median_house_value\"], \n",
+ " batch_size=batch_size)\n",
+ " predict_training_input_fn = lambda: my_input_fn(\n",
+ " training_examples, \n",
+ " training_targets[\"median_house_value\"], \n",
+ " num_epochs=1, \n",
+ " shuffle=False)\n",
+ " predict_validation_input_fn = lambda: my_input_fn(\n",
+ " validation_examples, validation_targets[\"median_house_value\"], \n",
+ " num_epochs=1, \n",
+ " shuffle=False)\n",
+ "\n",
+ " # Train the model, but do so inside a loop so that we can periodically assess\n",
+ " # loss metrics.\n",
+ " print(\"Training model...\")\n",
+ " print(\"RMSE (on training data):\")\n",
+ " training_rmse = []\n",
+ " validation_rmse = []\n",
+ " for period in range (0, periods):\n",
+ " # Train the model, starting from the prior state.\n",
+ " linear_regressor.train(\n",
+ " input_fn=training_input_fn,\n",
+ " steps=steps_per_period,\n",
+ " )\n",
+ " # Take a break and compute predictions.\n",
+ " training_predictions = linear_regressor.predict(input_fn=predict_training_input_fn)\n",
+ " training_predictions = np.array([item['predictions'][0] for item in training_predictions])\n",
+ " \n",
+ " validation_predictions = linear_regressor.predict(input_fn=predict_validation_input_fn)\n",
+ " validation_predictions = np.array([item['predictions'][0] for item in validation_predictions])\n",
+ " \n",
+ " \n",
+ " # Compute training and validation loss.\n",
+ " training_root_mean_squared_error = math.sqrt(\n",
+ " metrics.mean_squared_error(training_predictions, training_targets))\n",
+ " validation_root_mean_squared_error = math.sqrt(\n",
+ " metrics.mean_squared_error(validation_predictions, validation_targets))\n",
+ " # Occasionally print the current loss.\n",
+ " print(\" period %02d : %0.2f\" % (period, training_root_mean_squared_error))\n",
+ " # Add the loss metrics from this period to our list.\n",
+ " training_rmse.append(training_root_mean_squared_error)\n",
+ " validation_rmse.append(validation_root_mean_squared_error)\n",
+ " print(\"Model training finished.\")\n",
+ "\n",
+ " # Output a graph of loss metrics over periods.\n",
+ " plt.ylabel(\"RMSE\")\n",
+ " plt.xlabel(\"Periods\")\n",
+ " plt.title(\"Root Mean Squared Error vs. Periods\")\n",
+ " plt.tight_layout()\n",
+ " plt.plot(training_rmse, label=\"training\")\n",
+ " plt.plot(validation_rmse, label=\"validation\")\n",
+ " plt.legend()\n",
+ "\n",
+ " return linear_regressor"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "zFFRmvUGh8wd",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 622
+ },
+ "outputId": "45dd5b2a-0bf3-4755-9518-e3e068eb202c"
+ },
+ "cell_type": "code",
+ "source": [
+ "linear_regressor = train_model(\n",
+ " # TWEAK THESE VALUES TO SEE HOW MUCH YOU CAN IMPROVE THE RMSE\n",
+ " learning_rate=0.00002,\n",
+ " steps=1000,\n",
+ " batch_size=5,\n",
+ " training_examples=training_examples,\n",
+ " training_targets=training_targets,\n",
+ " validation_examples=validation_examples,\n",
+ " validation_targets=validation_targets)"
+ ],
+ "execution_count": 22,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 201.70\n",
+ " period 01 : 182.12\n",
+ " period 02 : 169.54\n",
+ " period 03 : 164.11\n",
+ " period 04 : 161.12\n",
+ " period 05 : 160.96\n",
+ " period 06 : 161.23\n",
+ " period 07 : 161.86\n",
+ " period 08 : 162.97\n",
+ " period 09 : 165.40\n",
+ "Model training finished.\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\nRU5ErkJggg==\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "I-La4N9ObC1x",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below for a solution."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "Xyz6n1YHbGef",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def train_model(\n",
+ " learning_rate,\n",
+ " steps,\n",
+ " batch_size,\n",
+ " training_examples,\n",
+ " training_targets,\n",
+ " validation_examples,\n",
+ " validation_targets):\n",
+ " \"\"\"Trains a linear regression model of multiple features.\n",
+ " \n",
+ " In addition to training, this function also prints training progress information,\n",
+ " as well as a plot of the training and validation loss over time.\n",
+ " \n",
+ " Args:\n",
+ " learning_rate: A `float`, the learning rate.\n",
+ " steps: A non-zero `int`, the total number of training steps. A training step\n",
+ " consists of a forward and backward pass using a single batch.\n",
+ " batch_size: A non-zero `int`, the batch size.\n",
+ " training_examples: A `DataFrame` containing one or more columns from\n",
+ " `california_housing_dataframe` to use as input features for training.\n",
+ " training_targets: A `DataFrame` containing exactly one column from\n",
+ " `california_housing_dataframe` to use as target for training.\n",
+ " validation_examples: A `DataFrame` containing one or more columns from\n",
+ " `california_housing_dataframe` to use as input features for validation.\n",
+ " validation_targets: A `DataFrame` containing exactly one column from\n",
+ " `california_housing_dataframe` to use as target for validation.\n",
+ " \n",
+ " Returns:\n",
+ " A `LinearRegressor` object trained on the training data.\n",
+ " \"\"\"\n",
+ "\n",
+ " periods = 10\n",
+ " steps_per_period = steps / periods\n",
+ " \n",
+ " # Create a linear regressor object.\n",
+ " my_optimizer = tf.train.GradientDescentOptimizer(learning_rate=learning_rate)\n",
+ " my_optimizer = tf.contrib.estimator.clip_gradients_by_norm(my_optimizer, 5.0)\n",
+ " linear_regressor = tf.estimator.LinearRegressor(\n",
+ " feature_columns=construct_feature_columns(training_examples),\n",
+ " optimizer=my_optimizer\n",
+ " )\n",
+ " \n",
+ " # Create input functions.\n",
+ " training_input_fn = lambda: my_input_fn(\n",
+ " training_examples, \n",
+ " training_targets[\"median_house_value\"], \n",
+ " batch_size=batch_size)\n",
+ " predict_training_input_fn = lambda: my_input_fn(\n",
+ " training_examples, \n",
+ " training_targets[\"median_house_value\"], \n",
+ " num_epochs=1, \n",
+ " shuffle=False)\n",
+ " predict_validation_input_fn = lambda: my_input_fn(\n",
+ " validation_examples, validation_targets[\"median_house_value\"], \n",
+ " num_epochs=1, \n",
+ " shuffle=False)\n",
+ "\n",
+ " # Train the model, but do so inside a loop so that we can periodically assess\n",
+ " # loss metrics.\n",
+ " print(\"Training model...\")\n",
+ " print(\"RMSE (on training data):\")\n",
+ " training_rmse = []\n",
+ " validation_rmse = []\n",
+ " for period in range (0, periods):\n",
+ " # Train the model, starting from the prior state.\n",
+ " linear_regressor.train(\n",
+ " input_fn=training_input_fn,\n",
+ " steps=steps_per_period,\n",
+ " )\n",
+ " # Take a break and compute predictions.\n",
+ " training_predictions = linear_regressor.predict(input_fn=predict_training_input_fn)\n",
+ " training_predictions = np.array([item['predictions'][0] for item in training_predictions])\n",
+ " \n",
+ " validation_predictions = linear_regressor.predict(input_fn=predict_validation_input_fn)\n",
+ " validation_predictions = np.array([item['predictions'][0] for item in validation_predictions])\n",
+ " \n",
+ " \n",
+ " # Compute training and validation loss.\n",
+ " training_root_mean_squared_error = math.sqrt(\n",
+ " metrics.mean_squared_error(training_predictions, training_targets))\n",
+ " validation_root_mean_squared_error = math.sqrt(\n",
+ " metrics.mean_squared_error(validation_predictions, validation_targets))\n",
+ " # Occasionally print the current loss.\n",
+ " print(\" period %02d : %0.2f\" % (period, training_root_mean_squared_error))\n",
+ " # Add the loss metrics from this period to our list.\n",
+ " training_rmse.append(training_root_mean_squared_error)\n",
+ " validation_rmse.append(validation_root_mean_squared_error)\n",
+ " print(\"Model training finished.\")\n",
+ "\n",
+ " # Output a graph of loss metrics over periods.\n",
+ " plt.ylabel(\"RMSE\")\n",
+ " plt.xlabel(\"Periods\")\n",
+ " plt.title(\"Root Mean Squared Error vs. Periods\")\n",
+ " plt.tight_layout()\n",
+ " plt.plot(training_rmse, label=\"training\")\n",
+ " plt.plot(validation_rmse, label=\"validation\")\n",
+ " plt.legend()\n",
+ "\n",
+ " return linear_regressor"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "i1imhjFzbWwt",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 622
+ },
+ "outputId": "85627fbe-4457-4cf5-b28c-5415658541a5"
+ },
+ "cell_type": "code",
+ "source": [
+ "linear_regressor = train_model(\n",
+ " learning_rate=0.00003,\n",
+ " steps=500,\n",
+ " batch_size=5,\n",
+ " training_examples=training_examples,\n",
+ " training_targets=training_targets,\n",
+ " validation_examples=validation_examples,\n",
+ " validation_targets=validation_targets)"
+ ],
+ "execution_count": 24,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 207.46\n",
+ " period 01 : 190.64\n",
+ " period 02 : 176.99\n",
+ " period 03 : 170.33\n",
+ " period 04 : 166.14\n",
+ " period 05 : 164.10\n",
+ " period 06 : 162.22\n",
+ " period 07 : 161.53\n",
+ " period 08 : 160.91\n",
+ " period 09 : 160.88\n",
+ "Model training finished.\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\n/9v3AAAAAElFTkSuQmCC\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "65sin-E5NmHN",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Task 5: Evaluate on Test Data\n",
+ "\n",
+ "**In the cell below, load in the test data set and evaluate your model on it.**\n",
+ "\n",
+ "We've done a lot of iteration on our validation data. Let's make sure we haven't overfit to the pecularities of that particular sample.\n",
+ "\n",
+ "Test data set is located [here](https://download.mlcc.google.com/mledu-datasets/california_housing_test.csv).\n",
+ "\n",
+ "How does your test performance compare to the validation performance? What does this say about the generalization performance of your model?"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "icEJIl5Vp51r",
+ "colab_type": "code",
+ "cellView": "both",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 34
+ },
+ "outputId": "3f1237c2-a469-4be4-8739-39bac331fdcb"
+ },
+ "cell_type": "code",
+ "source": [
+ "california_housing_test_data = pd.read_csv(\"https://download.mlcc.google.com/mledu-datasets/california_housing_test.csv\", sep=\",\")\n",
+ "#\n",
+ "# YOUR CODE HERE\n",
+ "#\n",
+ "test_examples = preprocess_features(california_housing_test_data)\n",
+ "test_targets = preprocess_targets(california_housing_test_data)\n",
+ "\n",
+ "predict_test_input_fn = lambda: my_input_fn(\n",
+ " test_examples, \n",
+ " test_targets[\"median_house_value\"], \n",
+ " num_epochs=1, \n",
+ " shuffle=False)\n",
+ "\n",
+ "test_predictions = linear_regressor.predict(input_fn=predict_test_input_fn)\n",
+ "test_predictions = np.array([item['predictions'][0] for item in test_predictions])\n",
+ "\n",
+ "root_mean_squared_error = math.sqrt(\n",
+ " metrics.mean_squared_error(test_predictions, test_targets))\n",
+ "\n",
+ "print(\"Final RMSE (on test data): %0.2f\" % root_mean_squared_error)"
+ ],
+ "execution_count": 26,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Final RMSE (on test data): 161.27\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "yTghc_5HkJDW",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below for the solution."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "_xSYTarykO8U",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 34
+ },
+ "outputId": "5db4a71d-9056-412b-9113-6c74961f3128"
+ },
+ "cell_type": "code",
+ "source": [
+ "california_housing_test_data = pd.read_csv(\"https://download.mlcc.google.com/mledu-datasets/california_housing_test.csv\", sep=\",\")\n",
+ "\n",
+ "test_examples = preprocess_features(california_housing_test_data)\n",
+ "test_targets = preprocess_targets(california_housing_test_data)\n",
+ "\n",
+ "predict_test_input_fn = lambda: my_input_fn(\n",
+ " test_examples, \n",
+ " test_targets[\"median_house_value\"], \n",
+ " num_epochs=1, \n",
+ " shuffle=False)\n",
+ "\n",
+ "test_predictions = linear_regressor.predict(input_fn=predict_test_input_fn)\n",
+ "test_predictions = np.array([item['predictions'][0] for item in test_predictions])\n",
+ "\n",
+ "root_mean_squared_error = math.sqrt(\n",
+ " metrics.mean_squared_error(test_predictions, test_targets))\n",
+ "\n",
+ "print(\"Final RMSE (on test data): %0.2f\" % root_mean_squared_error)"
+ ],
+ "execution_count": 27,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Final RMSE (on test data): 161.27\n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file