From 67a4610785b933b3c92481267cbbc5ec60c4f143 Mon Sep 17 00:00:00 2001
From: Aditya Joardar <30207466+joardar-aditya@users.noreply.github.com>
Date: Tue, 12 Feb 2019 07:59:31 +0530
Subject: [PATCH 01/13] Created using Colaboratory
---
feature_sets.ipynb | 1564 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 1564 insertions(+)
create mode 100644 feature_sets.ipynb
diff --git a/feature_sets.ipynb b/feature_sets.ipynb
new file mode 100644
index 0000000..9fcae40
--- /dev/null
+++ b/feature_sets.ipynb
@@ -0,0 +1,1564 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "name": "feature_sets.ipynb",
+ "version": "0.3.2",
+ "provenance": [],
+ "collapsed_sections": [
+ "JndnmDMp66FL",
+ "IGINhMIJ5Wyt",
+ "pZa8miwu6_tQ"
+ ],
+ "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": "zbIgBK-oXHO7",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "# Feature Sets"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "bL04rAQwH3pH",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "**Learning Objective:** Create a minimal set of features that performs just as well as a more complex feature set"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "F8Hci6tAH3pH",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "So far, we've thrown all of our features into the model. Models with fewer features use fewer resources and are easier to maintain. Let's see if we can build a model on a minimal set of housing features that will perform equally as well as one that uses all the features in the data set."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "F5ZjVwK_qOyR",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Setup\n",
+ "\n",
+ "As before, let's load and prepare the California housing data."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "SrOYRILAH3pJ",
+ "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": "dGnXo7flH3pM",
+ "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": "jLXC8y4AqsIy",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1224
+ },
+ "outputId": "4a00a62d-0a2c-4189-f724-4213165122e8"
+ },
+ "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.5 2637.3 539.1 \n",
+ "std 2.1 2.0 12.6 2139.4 417.0 \n",
+ "min 32.5 -124.3 2.0 2.0 1.0 \n",
+ "25% 33.9 -121.8 18.0 1456.8 295.0 \n",
+ "50% 34.2 -118.5 29.0 2127.0 433.0 \n",
+ "75% 37.7 -118.0 37.0 3147.2 649.2 \n",
+ "max 42.0 -114.3 52.0 30401.0 4957.0 \n",
+ "\n",
+ " population households median_income rooms_per_person \n",
+ "count 12000.0 12000.0 12000.0 12000.0 \n",
+ "mean 1426.9 500.9 3.9 2.0 \n",
+ "std 1133.9 379.3 1.9 1.1 \n",
+ "min 3.0 1.0 0.5 0.0 \n",
+ "25% 792.0 281.0 2.6 1.5 \n",
+ "50% 1166.0 408.0 3.5 1.9 \n",
+ "75% 1718.2 607.0 4.8 2.3 \n",
+ "max 35682.0 4769.0 15.0 55.2 "
+ ],
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " latitude \n",
+ " longitude \n",
+ " housing_median_age \n",
+ " total_rooms \n",
+ " total_bedrooms \n",
+ " population \n",
+ " households \n",
+ " median_income \n",
+ " rooms_per_person \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " 35.6 \n",
+ " -119.6 \n",
+ " 28.5 \n",
+ " 2637.3 \n",
+ " 539.1 \n",
+ " 1426.9 \n",
+ " 500.9 \n",
+ " 3.9 \n",
+ " 2.0 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 2.1 \n",
+ " 2.0 \n",
+ " 12.6 \n",
+ " 2139.4 \n",
+ " 417.0 \n",
+ " 1133.9 \n",
+ " 379.3 \n",
+ " 1.9 \n",
+ " 1.1 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 32.5 \n",
+ " -124.3 \n",
+ " 2.0 \n",
+ " 2.0 \n",
+ " 1.0 \n",
+ " 3.0 \n",
+ " 1.0 \n",
+ " 0.5 \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 33.9 \n",
+ " -121.8 \n",
+ " 18.0 \n",
+ " 1456.8 \n",
+ " 295.0 \n",
+ " 792.0 \n",
+ " 281.0 \n",
+ " 2.6 \n",
+ " 1.5 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 34.2 \n",
+ " -118.5 \n",
+ " 29.0 \n",
+ " 2127.0 \n",
+ " 433.0 \n",
+ " 1166.0 \n",
+ " 408.0 \n",
+ " 3.5 \n",
+ " 1.9 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 37.7 \n",
+ " -118.0 \n",
+ " 37.0 \n",
+ " 3147.2 \n",
+ " 649.2 \n",
+ " 1718.2 \n",
+ " 607.0 \n",
+ " 4.8 \n",
+ " 2.3 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 42.0 \n",
+ " -114.3 \n",
+ " 52.0 \n",
+ " 30401.0 \n",
+ " 4957.0 \n",
+ " 35682.0 \n",
+ " 4769.0 \n",
+ " 15.0 \n",
+ " 55.2 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ },
+ {
+ "output_type": "stream",
+ "text": [
+ "Validation examples summary:\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " latitude longitude housing_median_age total_rooms total_bedrooms \\\n",
+ "count 5000.0 5000.0 5000.0 5000.0 5000.0 \n",
+ "mean 35.6 -119.6 28.7 2658.8 540.1 \n",
+ "std 2.2 2.0 12.6 2274.5 432.2 \n",
+ "min 32.5 -124.3 1.0 11.0 3.0 \n",
+ "25% 33.9 -121.8 18.0 1471.0 301.0 \n",
+ "50% 34.2 -118.5 29.0 2127.0 435.0 \n",
+ "75% 37.7 -118.0 37.0 3160.0 647.0 \n",
+ "max 42.0 -114.5 52.0 37937.0 6445.0 \n",
+ "\n",
+ " population households median_income rooms_per_person \n",
+ "count 5000.0 5000.0 5000.0 5000.0 \n",
+ "mean 1436.0 502.0 3.9 2.0 \n",
+ "std 1180.7 396.9 1.9 1.3 \n",
+ "min 8.0 2.0 0.5 0.1 \n",
+ "25% 783.0 282.8 2.5 1.5 \n",
+ "50% 1168.5 410.0 3.5 2.0 \n",
+ "75% 1729.0 601.2 4.8 2.3 \n",
+ "max 28566.0 6082.0 15.0 52.0 "
+ ],
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " latitude \n",
+ " longitude \n",
+ " housing_median_age \n",
+ " total_rooms \n",
+ " total_bedrooms \n",
+ " population \n",
+ " households \n",
+ " median_income \n",
+ " rooms_per_person \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " 35.6 \n",
+ " -119.6 \n",
+ " 28.7 \n",
+ " 2658.8 \n",
+ " 540.1 \n",
+ " 1436.0 \n",
+ " 502.0 \n",
+ " 3.9 \n",
+ " 2.0 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 2.2 \n",
+ " 2.0 \n",
+ " 12.6 \n",
+ " 2274.5 \n",
+ " 432.2 \n",
+ " 1180.7 \n",
+ " 396.9 \n",
+ " 1.9 \n",
+ " 1.3 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 32.5 \n",
+ " -124.3 \n",
+ " 1.0 \n",
+ " 11.0 \n",
+ " 3.0 \n",
+ " 8.0 \n",
+ " 2.0 \n",
+ " 0.5 \n",
+ " 0.1 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 33.9 \n",
+ " -121.8 \n",
+ " 18.0 \n",
+ " 1471.0 \n",
+ " 301.0 \n",
+ " 783.0 \n",
+ " 282.8 \n",
+ " 2.5 \n",
+ " 1.5 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 34.2 \n",
+ " -118.5 \n",
+ " 29.0 \n",
+ " 2127.0 \n",
+ " 435.0 \n",
+ " 1168.5 \n",
+ " 410.0 \n",
+ " 3.5 \n",
+ " 2.0 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 37.7 \n",
+ " -118.0 \n",
+ " 37.0 \n",
+ " 3160.0 \n",
+ " 647.0 \n",
+ " 1729.0 \n",
+ " 601.2 \n",
+ " 4.8 \n",
+ " 2.3 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 42.0 \n",
+ " -114.5 \n",
+ " 52.0 \n",
+ " 37937.0 \n",
+ " 6445.0 \n",
+ " 28566.0 \n",
+ " 6082.0 \n",
+ " 15.0 \n",
+ " 52.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ },
+ {
+ "output_type": "stream",
+ "text": [
+ "Training targets summary:\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " median_house_value\n",
+ "count 12000.0\n",
+ "mean 206.6\n",
+ "std 115.3\n",
+ "min 15.0\n",
+ "25% 119.5\n",
+ "50% 180.1\n",
+ "75% 264.0\n",
+ "max 500.0"
+ ],
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " median_house_value \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 12000.0 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " 206.6 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 115.3 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 15.0 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 119.5 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 180.1 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 264.0 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 500.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ },
+ {
+ "output_type": "stream",
+ "text": [
+ "Validation targets summary:\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " median_house_value\n",
+ "count 5000.0\n",
+ "mean 208.9\n",
+ "std 117.5\n",
+ "min 15.0\n",
+ "25% 119.3\n",
+ "50% 180.8\n",
+ "75% 268.3\n",
+ "max 500.0"
+ ],
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " median_house_value \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 5000.0 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " 208.9 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 117.5 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 15.0 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 119.3 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 180.8 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 268.3 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 500.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "hLvmkugKLany",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Task 1: Develop a Good Feature Set\n",
+ "\n",
+ "**What's the best performance you can get with just 2 or 3 features?**\n",
+ "\n",
+ "A **correlation matrix** shows pairwise correlations, both for each feature compared to the target and for each feature compared to other features.\n",
+ "\n",
+ "Here, correlation is defined as the [Pearson correlation coefficient](https://en.wikipedia.org/wiki/Pearson_product-moment_correlation_coefficient). You don't have to understand the mathematical details for this exercise.\n",
+ "\n",
+ "Correlation values have the following meanings:\n",
+ "\n",
+ " * `-1.0`: perfect negative correlation\n",
+ " * `0.0`: no correlation\n",
+ " * `1.0`: perfect positive correlation"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "UzoZUSdLIolF",
+ "colab_type": "code",
+ "cellView": "both",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 383
+ },
+ "outputId": "2bb04c73-60a1-4012-85f9-d3f17d6a6874"
+ },
+ "cell_type": "code",
+ "source": [
+ "correlation_dataframe = training_examples.copy()\n",
+ "correlation_dataframe[\"target\"] = training_targets[\"median_house_value\"]\n",
+ "\n",
+ "correlation_dataframe.corr()"
+ ],
+ "execution_count": 4,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " latitude \n",
+ " longitude \n",
+ " housing_median_age \n",
+ " total_rooms \n",
+ " total_bedrooms \n",
+ " population \n",
+ " households \n",
+ " median_income \n",
+ " rooms_per_person \n",
+ " target \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " latitude \n",
+ " 1.0 \n",
+ " -0.9 \n",
+ " 0.0 \n",
+ " -0.0 \n",
+ " -0.1 \n",
+ " -0.1 \n",
+ " -0.1 \n",
+ " -0.1 \n",
+ " 0.1 \n",
+ " -0.2 \n",
+ " \n",
+ " \n",
+ " longitude \n",
+ " -0.9 \n",
+ " 1.0 \n",
+ " -0.1 \n",
+ " 0.0 \n",
+ " 0.1 \n",
+ " 0.1 \n",
+ " 0.1 \n",
+ " -0.0 \n",
+ " -0.1 \n",
+ " -0.0 \n",
+ " \n",
+ " \n",
+ " housing_median_age \n",
+ " 0.0 \n",
+ " -0.1 \n",
+ " 1.0 \n",
+ " -0.4 \n",
+ " -0.3 \n",
+ " -0.3 \n",
+ " -0.3 \n",
+ " -0.1 \n",
+ " -0.1 \n",
+ " 0.1 \n",
+ " \n",
+ " \n",
+ " total_rooms \n",
+ " -0.0 \n",
+ " 0.0 \n",
+ " -0.4 \n",
+ " 1.0 \n",
+ " 0.9 \n",
+ " 0.9 \n",
+ " 0.9 \n",
+ " 0.2 \n",
+ " 0.1 \n",
+ " 0.1 \n",
+ " \n",
+ " \n",
+ " total_bedrooms \n",
+ " -0.1 \n",
+ " 0.1 \n",
+ " -0.3 \n",
+ " 0.9 \n",
+ " 1.0 \n",
+ " 0.9 \n",
+ " 1.0 \n",
+ " -0.0 \n",
+ " 0.1 \n",
+ " 0.1 \n",
+ " \n",
+ " \n",
+ " population \n",
+ " -0.1 \n",
+ " 0.1 \n",
+ " -0.3 \n",
+ " 0.9 \n",
+ " 0.9 \n",
+ " 1.0 \n",
+ " 0.9 \n",
+ " -0.0 \n",
+ " -0.1 \n",
+ " -0.0 \n",
+ " \n",
+ " \n",
+ " households \n",
+ " -0.1 \n",
+ " 0.1 \n",
+ " -0.3 \n",
+ " 0.9 \n",
+ " 1.0 \n",
+ " 0.9 \n",
+ " 1.0 \n",
+ " 0.0 \n",
+ " -0.0 \n",
+ " 0.1 \n",
+ " \n",
+ " \n",
+ " median_income \n",
+ " -0.1 \n",
+ " -0.0 \n",
+ " -0.1 \n",
+ " 0.2 \n",
+ " -0.0 \n",
+ " -0.0 \n",
+ " 0.0 \n",
+ " 1.0 \n",
+ " 0.2 \n",
+ " 0.7 \n",
+ " \n",
+ " \n",
+ " rooms_per_person \n",
+ " 0.1 \n",
+ " -0.1 \n",
+ " -0.1 \n",
+ " 0.1 \n",
+ " 0.1 \n",
+ " -0.1 \n",
+ " -0.0 \n",
+ " 0.2 \n",
+ " 1.0 \n",
+ " 0.2 \n",
+ " \n",
+ " \n",
+ " target \n",
+ " -0.2 \n",
+ " -0.0 \n",
+ " 0.1 \n",
+ " 0.1 \n",
+ " 0.1 \n",
+ " -0.0 \n",
+ " 0.1 \n",
+ " 0.7 \n",
+ " 0.2 \n",
+ " 1.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " latitude longitude housing_median_age total_rooms \\\n",
+ "latitude 1.0 -0.9 0.0 -0.0 \n",
+ "longitude -0.9 1.0 -0.1 0.0 \n",
+ "housing_median_age 0.0 -0.1 1.0 -0.4 \n",
+ "total_rooms -0.0 0.0 -0.4 1.0 \n",
+ "total_bedrooms -0.1 0.1 -0.3 0.9 \n",
+ "population -0.1 0.1 -0.3 0.9 \n",
+ "households -0.1 0.1 -0.3 0.9 \n",
+ "median_income -0.1 -0.0 -0.1 0.2 \n",
+ "rooms_per_person 0.1 -0.1 -0.1 0.1 \n",
+ "target -0.2 -0.0 0.1 0.1 \n",
+ "\n",
+ " total_bedrooms population households median_income \\\n",
+ "latitude -0.1 -0.1 -0.1 -0.1 \n",
+ "longitude 0.1 0.1 0.1 -0.0 \n",
+ "housing_median_age -0.3 -0.3 -0.3 -0.1 \n",
+ "total_rooms 0.9 0.9 0.9 0.2 \n",
+ "total_bedrooms 1.0 0.9 1.0 -0.0 \n",
+ "population 0.9 1.0 0.9 -0.0 \n",
+ "households 1.0 0.9 1.0 0.0 \n",
+ "median_income -0.0 -0.0 0.0 1.0 \n",
+ "rooms_per_person 0.1 -0.1 -0.0 0.2 \n",
+ "target 0.1 -0.0 0.1 0.7 \n",
+ "\n",
+ " rooms_per_person target \n",
+ "latitude 0.1 -0.2 \n",
+ "longitude -0.1 -0.0 \n",
+ "housing_median_age -0.1 0.1 \n",
+ "total_rooms 0.1 0.1 \n",
+ "total_bedrooms 0.1 0.1 \n",
+ "population -0.1 -0.0 \n",
+ "households -0.0 0.1 \n",
+ "median_income 0.2 0.7 \n",
+ "rooms_per_person 1.0 0.2 \n",
+ "target 0.2 1.0 "
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 4
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "RQpktkNpia2P",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Features that have strong positive or negative correlations with the target will add information to our model. We can use the correlation matrix to find such strongly correlated features.\n",
+ "\n",
+ "We'd also like to have features that aren't so strongly correlated with each other, so that they add independent information.\n",
+ "\n",
+ "Use this information to try removing features. You can also try developing additional synthetic features, such as ratios of two raw features.\n",
+ "\n",
+ "For convenience, we've included the training code from the previous exercise."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "bjR5jWpFr2xs",
+ "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": "jsvKHzRciH9T",
+ "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": "g3kjQV9WH3pb",
+ "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.\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\"], \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",
+ " 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",
+ " # 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",
+ " \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": "varLu7RNH3pf",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Spend 5 minutes searching for a good set of features and training parameters. Then check the solution to see what we chose. Don't forget that different features may require different learning parameters."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "DSgUxRIlH3pg",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 658
+ },
+ "outputId": "615d37ae-5f77-4244-9b60-e7cbeb0af16a"
+ },
+ "cell_type": "code",
+ "source": [
+ "#\n",
+ "# Your code here: add your features of choice as a list of quoted strings.\n",
+ "#\n",
+ "minimal_features = [\"median_income\",\"latitude\"]\n",
+ "\n",
+ "\n",
+ "assert minimal_features, \"You must select at least one feature!\"\n",
+ "\n",
+ "minimal_training_examples = training_examples[minimal_features]\n",
+ "minimal_validation_examples = validation_examples[minimal_features]\n",
+ "\n",
+ "#\n",
+ "# Don't forget to adjust these parameters.\n",
+ "#\n",
+ "train_model(\n",
+ " learning_rate=0.001,\n",
+ " steps=500,\n",
+ " batch_size=500,\n",
+ " training_examples=minimal_training_examples,\n",
+ " training_targets=training_targets,\n",
+ " validation_examples=minimal_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 : 228.88\n",
+ " period 01 : 221.21\n",
+ " period 02 : 213.64\n",
+ " period 03 : 206.18\n",
+ " period 04 : 198.85\n",
+ " period 05 : 191.66\n",
+ " period 06 : 184.63\n",
+ " period 07 : 177.77\n",
+ " period 08 : 171.11\n",
+ " period 09 : 164.66\n",
+ "Model training finished.\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 10
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGACAYAAACz01iHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xd8VFX+//HXnZIyyUz6pEIqEGpo\nAQEB6aGpSLGBrLrufndFXXW/uP5W97uWVRdXXUVQVkXRXVc0AooFFVFpUgMhIRUINT2TRgqk3N8f\nkQgCYWaSwA35PB8PHw+Tydw5N+9z4MO5596jqKqqIoQQQgjRgeiudAOEEEIIIRwlBYwQQgghOhwp\nYIQQQgjR4UgBI4QQQogORwoYIYQQQnQ4UsAIIYQQosMxXOkGCKFlPXr0oGvXruj1egAaGhqIj4/n\nsccew2QyOX3cDz/8kDlz5pz3/VWrVvHoo4/y+uuvM2bMmObv19bWMnz4cCZOnMhzzz3n9Ofa6+jR\nozzzzDPk5OQA4O7uzoIFCxg/fny7f7Yjli5dytGjR8/7nWzfvp27776bsLCw896zbt26y9W8Vjl+\n/Djjxo0jMjISAFVV8ff3589//jO9evVy6FgvvPACISEh3HrrrXa/55NPPiExMZH33nvPoc8S4nKR\nAkaIS3jvvfcICgoC4PTp0zz44IMsW7aMBx980KnjFRUV8eabb16wgAEIDg7ms88+O6eA+e6777BY\nLE59njP++Mc/csMNN/D6668DkJyczPz58/nyyy8JDg6+bO1ojeDg4A5TrFyMXq8/5xy++OIL7r33\nXr766itcXFzsPs7DDz/cHs0T4oqSS0hCOMDFxYWRI0eSnp4OwKlTp/jLX/7CpEmTmDx5Ms899xwN\nDQ0AZGRkcMstt5CQkMANN9zApk2bALjlllvIzc0lISGB06dPn/cZAwcOZPv27dTU1DR/74svvmDE\niBHNX58+fZqnn36aSZMmMXbs2OZCA2DPnj3cdNNNJCQkMGXKFLZu3Qo0/Yv+2muv5d1332X69OmM\nHDmSL7744oLnmZWVRVxcXPPXcXFxfPXVV82F3Kuvvsro0aO58cYb+de//sXYsWMB+NOf/sTSpUub\n33f215dq1zPPPMPcuXMB2L17NzNnzmTChAnMmTOHY8eOAU0zUX/4wx8YM2YMc+fOJT8//xKJXdiq\nVatYsGAB8+fPZ9GiRWzfvp1bbrmFBx54oPkv+y+//JJp06aRkJDAHXfcwdGjRwFYvHgxjz32GLNm\nzeKdd94557gPPPAAy5cvb/46PT2da6+9lsbGRl566SUmTZrEpEmTuOOOOygoKHC43VOmTKG2tpZD\nhw4BsHLlShISEhg7diwPPfQQtbW1QNPv/dlnn2X69Ol8+eWX5+RwsX7Z2NjIk08+yXXXXcesWbPI\nyMho/twdO3YwY8YMpkyZwuTJk/nyyy8dbrsQbU4VQlxU9+7d1by8vOavy8rK1Ntvv11dunSpqqqq\numzZMvWee+5R6+rq1JqaGnXmzJnqmjVr1IaGBnXy5Mnq2rVrVVVV1X379qnx8fFqZWWlum3bNnX8\n+PEX/LyPP/5YfeSRR9Q//vGPze+trKxUx40bp3700UfqI488oqqqqr766qvq/Pnz1VOnTqlVVVXq\njTfeqG7YsEFVVVWdNm2a+tlnn6mqqqqrV69u/qxjx46pvXr1Ut977z1VVVX1iy++UCdMmHDBdtx3\n333qmDFj1BUrVqgHDhw457XMzEx18ODBamFhoVpXV6f+7ne/U8eMGaOqqqo+8sgj6pIlS5p/9uyv\nW2pX79691VWrVjWfb3x8vLp582ZVVVV17dq16owZM1RVVdV///vf6u23367W1dWpNptNHTNmTPPv\n5Gwt/Y7P/J779++v5uTkNP9837591a1bt6qqqqonTpxQBw0apB4+fFhVVVV966231Pnz56uqqqqv\nvPKKeu2116olJSXnHffzzz9Xb7/99uavX375ZfWpp55Ss7Ky1IkTJ6qnT59WVVVV3333XXX16tUX\nbd+Z30vPnj3P+358fLx68OBBdefOneqwYcPU/Px8VVVV9fHHH1efe+45VVWbfu/Tp09Xa2trm79e\nsmRJi/3y+++/VydOnKiePHlSrampUWfNmqXOnTtXVVVVvemmm9Tt27erqqqqOTk56kMPPdRi24W4\nHGQGRohLmDdvHgkJCYwbN45x48ZxzTXXcM899wDw/fffM2fOHAwGA25ubkyfPp0tW7Zw/PhxiouL\nmTp1KgB9+/YlJCSElJQUuz5z6tSpfPbZZwCsX7+eMWPGoNP9PFy/++47brvtNlxcXDCZTNxwww18\n/fXXAKxZs4bJkycDMGjQoObZC4D6+npuuukmAHr37k1ubu4FP//555/n9ttvZ+3atUybNo2xY8fy\n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\nhhAAAAAASUVORK5CYII=\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "IGINhMIJ5Wyt",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below for a solution."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "BAGoXFPZ5ZE3",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "minimal_features = [\n",
+ " \"median_income\",\n",
+ " \"latitude\",\n",
+ "]\n",
+ "\n",
+ "minimal_training_examples = training_examples[minimal_features]\n",
+ "minimal_validation_examples = validation_examples[minimal_features]\n",
+ "\n",
+ "_ = train_model(\n",
+ " learning_rate=0.01,\n",
+ " steps=500,\n",
+ " batch_size=5,\n",
+ " training_examples=minimal_training_examples,\n",
+ " training_targets=training_targets,\n",
+ " validation_examples=minimal_validation_examples,\n",
+ " validation_targets=validation_targets)"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "RidI9YhKOiY2",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Task 2: Make Better Use of Latitude\n",
+ "\n",
+ "Plotting `latitude` vs. `median_house_value` shows that there really isn't a linear relationship there.\n",
+ "\n",
+ "Instead, there are a couple of peaks, which roughly correspond to Los Angeles and San Francisco."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "hfGUKj2IR_F1",
+ "colab_type": "code",
+ "cellView": "both",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 365
+ },
+ "outputId": "59ad9796-2b7b-4d70-dcab-50000792a0b8"
+ },
+ "cell_type": "code",
+ "source": [
+ "plt.scatter(training_examples[\"latitude\"], training_targets[\"median_house_value\"])"
+ ],
+ "execution_count": 11,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 11
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeQAAAFKCAYAAADMuCxnAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzsvXt8G/Wd7/3RSJqRZcm25Et8S8jN\nToDcnAQCCQESkgZ42p60XEKzwNKy7IXS0z2nLbQHFkqXds++ONuz2/Nwul22FEo3JX2SXZZ9tmcD\nISEEciGJ7TiBJL4ESOzYsWzJtmRZM9JI5w9lFEmeqzS6jX/vf1oiaTQzHv2+v+/t8zXFYrEYCAQC\ngUAgFBSq0CdAIBAIBAKBGGQCgUAgEIoCYpAJBAKBQCgCiEEmEAgEAqEIIAaZQCAQCIQigBhkAoFA\nIBCKAEshv9zj8Rfy6w2Hy2WHzxcs9GkYDnJfcwO5r7mB3NfcoNd9ra11Sr5GPGQDYbGYC30KhoTc\n19xA7mtuIPc1N+TjvhKDTCAQCARCEUAMMoFAIBAIRQAxyAQCgUAgFAHEIBMIBAKBUAQQg0wgEAgE\nQhFADDKBQCAQCEUAMcgEAoFAIBQBBRUGyRf+IIdzF8dgisUwt6ECU2wEHB/F6NgUjp/zgOd53Lnm\nGsyeVYHPBscxMDKJuqoyWK1m+INhuJ00aqvsmGIjqHQwYKxmsGEeHl8QMJlQW1UGxjq9R40N8xgP\nsOD5KD4d9GNegxND3iBO9nhQUc6guc6Bvktj6OzxwDcRhttpwfYvXIumWgf2t/ej6/woxiaCMJnM\ncNjNaK6tQEN1GT7oGoSNseAr6xcgMBXG0TOXQVtNOPf5GNiI+D2wUkB9dRkYixnXNDjRVOOE2WyC\n3WbF3Hon+GgMZsqEz4b8uHB5AhcuB7B6UR1WXzsr5dqEaxLug9S/6U0+viNfJF8LAHh8QXB8FLTF\nLPks6cXnQ+P414Pn0e8JIGqKwVFG4/ZlTTh0ahC9gwEAQJXdBC4SQ5ADbBZg5aJabL5hDnoGxnG6\nbwR2xoota+bgmvrKlGvquejDR59cxuHTl8EDMAFY1FSJumoGTjsDr5/D0nlujExMYW5DJW6uLMvZ\ndRIIpYgpFovF5N5w9OhRfPvb30ZLSwsAoLW1FX/0R3+EJ598EjzPo7a2Fi+++CJomsZbb72F1157\nDRRF4f7778d9990n++W5VuriIhG88NoJ9HsmdTtmdQWDMsYCz9gU2HAUAGCjzVi3tB4P3NECM0WB\nj0axc18v2rs98E6wun13oVi7tBYPb7kWu947j44r1+SuYLCipQYxACd7RhL/1tZai20bF8JM6RN8\nEe5l8vfq/R1K1NY6dXlW06+FpimEw1FEk36BNprCuqUNiWdJL8aDLP7Lzz7U7XgC/+OJtfjXD87j\nYOdQRp+/dUU9HvrC4rz9LWcCej2vhFT0uq9ySl2qDPI//dM/4Wc/+1ni337wgx/g1ltvxV133YWf\n/vSnqK+vx9atW/GVr3wFu3btgtVqxb333ovf/OY3qKqqkjx2rh+a5175CBeHAzn9jmQ2rW7G9k2t\n2LG3G3uP9+fte/PB7DqH6nsp3Ac9kLqXen6HEnr9ELU8F3pf36P/fR9kf+gFJJ9/y5kAMci5IR8G\nOaNt6dGjR3HHHXcAADZs2IDDhw/j5MmTWLp0KZxOJ2w2G1auXIn29vbMzlgH/EEOA578GWMA6Oj2\nwB/k0NHtyev35gMtG5uO7hGwYT7r72TDvOS91Os78oXctYjR0e3R7fo+HxovWmMMAMfPDJXU35JA\nyBWqcsi9vb340z/9U4yPj+OJJ57A1NQUaJoGAFRXV8Pj8WBkZARutzvxGbfbDY9HfgFyuew50we9\n1ONJCQXmA6+fhZ+Lwusv/TB1Nvj8IZhpK2pryrM6zuDIpOS91Os71CK3q1WD3LWI4fWzul3fvx+9\nmPUxcsnYZCSvf8uZQLbPK0GcXN9XRYM8d+5cPPHEE7jrrrtw8eJFPPzww+D5q7tZqYi3QiQcAHI6\nkcRJU6BMyKtRdjsZOGkKbieDUQPkjjPF5bSB58JZh3f4MC95L/X6DjXoEaqSuxYx3E5Gt+tbck0F\ndmd9lNxRVW7J299yJkBC1rmhKELWs2bNwt133w2TyYQ5c+agpqYG4+PjCIVCAIDLly+jrq4OdXV1\nGBkZSXxueHgYdXV1WZ98pjjtNJpqHXn9zrbWWjjtNNpaa/P6vflgdp36e9nWWqNLpTBjNUveS72+\nI1/IXYsYba21ul1fcjV0MbL62vqS+lsSCLlC0SC/9dZb+OUvfwkA8Hg8GB0dxVe/+lXs2bMHAPD2\n229j/fr1WL58OU6dOoWJiQlMTk6ivb0dq1evzu3ZK/D0wyvRXKtvGKy6gkFzbTkY69VbZ6PNuGNV\nE7ZtXAgA2LZxITatbkZ1BaPrdxeKtUtr8fTDK69ckw2UCaiusOGOVU3YuKop5d82rW5O3Ac9uHov\nc/cd+SL9WmxXojjJ2Ggq5VnSi7/+s5t0PZ7A/3hiLW6+vibjz9+6or4k/5YEQi5QrLIOBAL47ne/\ni4mJCYTDYTzxxBO49tpr8dRTT4FlWTQ2NuKv/uqvYLVa8R//8R/45S9/CZPJhAcffBBf/vKXZb88\nX2EVsT7kUJjHv374Gc6e94IHUFFGYdW1DVi9qAaDo0Hd+pDPD4zjxTc6MzrvWVU0Lo9xoq+V0cCX\n183Hzv3nNR93Y1s9mmsrSB+ySvQOARaqD1mqyntxcyUiPJ/oQ5bDQgErW2pw183XJDzv/3d3F9p7\nRhQ+eZX5DQ58+Zb5WLdyNvzjU+ovgKAKErLODUXR9pRLCvnQqGmn0cMIsGEez7x8RPeccnWFDY9v\nvR5/+esTmj7nctD4yZ/cTEKEGjDKAsdHo9ixtwed3SMYm2ThdtrQ1lqT0tOt1JpFmYCf/PFNqHPZ\nAcSf76f/4TC8fvGNoxSbVjfj219bZYj7WmwY5XktNvJhkGeEUle6YVVqp9m6fh7ePPipLmIUQu5Q\nbJFrcNsx6M2ssG10IgSrhYKZAvio+s/5AhzOD4xjflMlMcozCEGUpKt3BL4AiyoHjWUL3NOe6W0b\nFyLCR/FexyXR41Q5mIRnDwDjARY+jcYYiP/OQpyErByBMEMxtEGWUnna0NYkqaDl84ew450eHDp9\nVXlodIJNGNRMBAyEHFlH9wh8/hBcThtWtFQjEo1hyBvMqEfUabei0sHAaqHAcxosMoAX3+hEdQEU\nrwiFY+e+3pRN4ViAw/6OSzCbqZRn2kxReHjLYpgA7BcxykE2gt0H+hLPTaWDgbtCe1eBzx+Cb4I1\n9gJEIGjE0L+HHXt7sL99IPHfgmHlozHJRcTlZHD2c6/o8Tq6R3DPbQs0e5ZmKr7o3XPbgoSnvvtA\nHw50DCh/WILyMgsCU2GwGo2xQLabDELpoBQREnumt29uhdlM4YOuQYS4q22OIY5PeW7kIkByuJw2\nuCoYkkMmEJIwpGvER6N4fc9ZSYPX1TuKZQuqRV+7pt4pGYLz+UMYD2SeC2as5kTuLVs1r6HRKbz0\nL6dQUW7N6jilpnhF0M54gJWNCIk902aKwj23LUC5TXzPnvzcbNu4EBvaGjWdU1trDWy0of0BAkEz\nhjTIO/f1Yn/HJUlREJ8/hE2rZ6e1oJhhoym0d4/AZBL/nMtpS8mfZYrcAqmFSyNBTIayy8Nlu8kg\nFD9CWFmM9GeaDfPo9wTQP+yHZ2xK8jn1+kM4PzAONszDTFHYtHq2qnMp5bY1AiHXGG6LqkYz2OW0\nwV1hS4SRX99zLiVnLGXI9RKjyDTvJkaEz65IXq9NBqF4kQsr220W8NEYBkcnsefoBRz95DLYSPTK\n50ygaUo0LWJCai1ChJePstAWCk9uX4GmWicpJiQQJDCcQVbjfaYb1nMXfKLvo0xADEhpD9EDNXm3\nfMl+LlvgJgvkDGDbxoU4d2Fs2pCQi8MBfPelDxASMbpsOAZIlBwKz6ZQi2Cj5Z8hLhLFz9/8mBQS\nEggyGM4gy3mflAm4rS1VBUnOgMdiwHcfWJGTFqF7b5+Pj897JdueYjGgbaEbHb3iBWZ6oTbUSMgt\nuRY+ifAxBENh0dfEjHEyjJWCo8wKr5+FCeIbxeTCLykE4z0ViuDBLYvUnDaBMKMwnEGW8z5vW9GI\nh76QuhDIGXB3hS1n/bq73jsv24PsrrDh0S8twZsHz+PE2cvwBcQX02yoroiH7gmFQ6o1T28vMpu6\nBTYcxfcfXIrgVCRj1blkPjw9hDOfe3HLimZ86eY5xFsmEK5gyF+CmP7xhpVNuHVFI/o9gZSqYjnR\n/1yFc9Xkudtaa2BnLNi+qRU/+ZO1eO6R1dB73Sq1AQ1GROgPHp1gEcNVL3Lnvt6sj82GeQz7gmDD\nvGxhlxr2t/djflOlbvrsXj+Htw6e1+U6CQSjYDgPGUjt+/VOhPD2sQs4fHow0ZNso81Yt7QeD9zR\nAjNFJULY7ec88PrZRP62q28UO/Z258RbkSvoYqwUtq6fl/TfZpQxFsQyazmeRrIoCKFw+IMcjp8d\nFn0t0553QNrrXtFSg3dPZNb7frLXiw0rgyhjLAD0q8rP5joJBKNhSA9ZgLGasb9jAAc6B1PyZCGO\nx7snBhK7c8GAL2+JT61JL1jRexdf6WBQ5aAlX+ciUQSCqSHqSgcDRqFwRi3fvncZtm9qldxkJHtW\nBP2Ja0p344evHMNYQP+edymvOwZMa/VTy/gkh+d/dQz9nslprzXVlmfsfZO2OwLhKob0kAXYMI/2\nc+IeCBAX5xB252yYR1ev+MQavXfxjNWMtpYaUWlCID6cngvzYMN82ndmX3ZtMuGKlzOdfOUzZzrp\nMpZiZNqOJpcOOdkzihceW5NQjHPYrQnN9mxa8EIsjwWNFfBOaBe7IW13BMJVDG2QxwOs7BQar5/F\neIBFncuuSs1IUNnSg+2bW9E7MDGtDQUAJkNhPPfKsRSD6J0IKVbDqiEWA378+gmsXlw3zdCmGwoi\nr6k/auoHgMzz+0rPsWdsCrSFSlRzJ6d2/v3IZzh06rLm7/ROhNBcm9lvg9QxEAhXMbRBrnQwcDtp\nSaNMWyk47Nar75XUt9Z/F2+mKDz7yOqUcXiM1YwQxycMb0J7m49mrciVzFiAm2ZoM9E7JmhHqdq5\nykEnNkuZIPcc01Yz/vZ3nfD5uZTNnpDaycQYAwBDm3GyT1t7nttJJ6qsCQRCHEPHIRmrGSsX1Um+\nznJRvHnw08R7paqtc7WLN1MUHvrCIvzkT27C89+4EXZG/DsOdF7CR2ekQ++ZkqxH7J0ISYYtSZ5P\nP2RlLB0Mnv/GjbL5fSXknuMQx8Pr56ZVcwfZCD7oEk+f5IrW2VV4bOtSkgohEJIw/K9h28aFuG1F\ng+Tr6SL56e1SeunuphdKJf83YzWDtlCSQy1ypdiVbGj3Hr8o+T6S59MPOYO5anEtnHbpYj+1TH+O\nGdho8Z96R/cIfrPnXMbpEMZKqRIFSaenf5zMQyYQ0jB0yBqIe6F3rGzGgc5B0deT88NiYxKz9YzF\nCqXsNisCQRa+QBhuJ42Vi+qwdf083fSt1SIYWjbMo6tvVPJ9yxZWk3C1jlydjx1vs3M79W1DS3+O\nuTCP5145Jvpe70QIZz7PvJqei0RBWylwYW0G3TvBYmh0EuUWw/sEBIJqDG2Qk42hFC4nM837E8Yk\nCl6sVsOcLIO4+0DftEKpZKPr9cfzuSwXxuy68rwa5EVzqgAo5zU3rWrO1ymVDHpIXcZiMcRi8f/N\nBcnPsdRmz2qlMD6ZuQqc28kgMCVdOClFDMCP/vEIli+sIVX8BMIVDG2Q1bSXTIbC2H2gL2VRyLT9\nJ/1zLieNIKvO+zjYlVlBTaZQFHD49BDOXfBh2cIaVDmsovKcbidD5DWT0KM1LP25FDZlQG6q2eXk\nZLV6tuksmuNKmZSmBc9YiFTxEwhJGHZbqra9JMRFp4l/ZCpnmP45r5/LKL+WD6JRJK5tf/sAwhJj\nHMvLrCRcnUS2UpdK1ey5EmNJzyu7nQzMOvz6rVYq6+Pk8roJhFLCsAZZq5i+sChkumCq3QAUK0GJ\ntqpgKEwWyyvoYUzV9LvnAiGv/MJja/CTP74Jj391CXgdpFi7ejxZH4dU8RMIcQxrkLWK6QuLQqYL\nZjbTdIoBqUpu3xXxFII+xlS27SkP1exCXpm26BP10GMKGaniJxDiGNYgy7WXiCEsCpkumHKfs9Hm\nrCbt5APKJP7vYkVvMxU9jGkh+t3FKNNJF93lsELi0VENUesiEOIY1iAD4n3Fs+scou8VFoVMF0y5\nz92yrAGPb70+s4uQoN5dBrOUFc0Au4S+td1GcsgCehnTXPa7KyEMtvjJ6+26HG/V4lmod2uTzaQt\n8Q1gnassb9dNIJQChq6yFusrtphNV6pkR+Dzh+By2tDWWpNYFPhoFLFYDDbanCjIstFmrF1ar7hw\nXO0vnX7swdGgrtfmnQiB11ExRKpAeHIqLDLkYuYi9zdWSy763dWipvNALTY6PiZ0Q1sTnn75qOrP\ncRFg7ZJ6/Jc/WAX/+JQu50IgGAFDG2QBIW8mILYYsmEeo+NB7Dl2MTE3WSDE8aBMJsW2FrmFtraq\nLMXIZwsX0c8YuxwMfBL5z7EAq/tgjVJGT2Oa/lzmGr0LD7lwFOMBDrvf69P82bOf+1LOK98bEwKh\nGJkRBlkMYTEUQnjCCDqpKLCWAQtiCy1jNWPd0vqMB8TnkhWtNejqHcnbYA0jkG9jqgd6Fx66nDbs\nPX4R7T3iY0vl8PpZ/O9dJ2FCDCd7Rsi4TwIBM8Qgy+3A00N40tXG2Y1g5KPx3pBkL5mhKXBcVIcp\nx5lhoyncsqzxygJoEg1l2m0WWMz65aoJhUNuElQm0FYKJyVmiKth/4nU542M+yTMdAxtkJVUlbSE\n8LL1FHfu653mHbNcFBQFxHToB9XK6sU1+H9unot6dznMFIVtGxfi3IWxafOZLw4HsHNfL1kgDYCc\nYlcm6F0XIUDGfRJmKoY2yOneb/oOXEsIL5vWDDnDHy2AMaZMwKk+L46fHUkabjEfwZB4TylZII0B\nH40iGovBRlMZT3fKB9lGowiEUsWwiRo1qkpqxUNsNIVoLJYIO2ul2ERDojGAvaJhLOgo73j7XEEU\npAj5Y+e+Xuw7MVDUxhggve+EmYthDbIaVSW14iEhLop9JwZU6xWno1U1rBC093jgcorP4iWFXfqT\nPh87H99XKtKupPedMFMxbMharoAl2cAkz6YVqqylCrsyDd3qnbvLBSEuiuULXTj6yfSpU0RJST/0\nmBaVCcUWpZHDP8nBH+TgtItvEAkEo2JYD1lJVQkAhn1BRPgYtm9qxbIF1QCkjTGQXeh228aFaNCo\naJRv7lwzu2AKUjOFbKdFiaHG2y6FKI3A2CSH5175CDv2dmecJiIQShHDesgAcO/t83HuwhgGPAFE\nY/FipsbacvDRKJ55+UjCQ1m2sEZV+0Y2odsIHwMXKd6pSTbajHp3ecEUpGYCSnUNaqMvQhufw07j\nzYPnVXnbxRalMQEwyUSjxgK5nRFNIBQjhjbIu947n9LGE40B/cOT6B+eTPybMA9YDUqhW7l+52IP\nGa5bWp9QLCPGODeoqWuQqyxOD3czadXSSn282zYuBB+N4UDHgGwkSA0mAO4KBv5gGFxEuxcbQ3yT\noKRcRyr8CTMJwxpkrUUscrnj6iTPQww1eUG5nDZjpXDzknp09Y7A6+dUn3M2CNcrtD3de/v8hGIZ\nUU3KDXLPQEU5jTKJAR8C6W18UtXSUkbMTFF46AuLgFgM+zsuZXAFV1lzXR3+8K5r8bv9vao3tOkk\nBHIsFFgJo05aoAgzCcOutFo9UiljvHZJPV547CZs39QqaZjU5AXlctrrlzfi4S2L8c2vLFV9vtki\nXO/yllps39SKXe+d1z23SUhF7hkYC3D40avHJPOmWjaYSrUO2ze3Yt3SWepOWoLui+PxY21qgd2W\nnfdabreistwq+hqp8CfMJAxrkDMtYrHR5pSCpq/fvVgxTK3U7ywU3WxdP0+0aErwTl/6l1Oazzdb\nunpH4Q9yitdA0Ifk0YvpyG2CtGww5YwYH41ixzvd6OwZ1XbiaXj9LLwTIUT4GCJ8doVXY34W18+r\nFn2NVPgTZhKGDVlnWsRSbrPgvz24ErUue8pCIJVblVsovRMh/GbPOZy94EsJAz//6I0IBLnEsXbs\n7S5YsY3PH0L/cCCr3CZBPcK0qC+tnYsfvnJMdMqWWMhZiw61lBHjo1H86NXj0+RRM+XtYxdxx8om\ncOHsEtIupw3bN7fAbrNkNdaSQCh1DGuQgStFLHwUBzovqS5i8flZ0FZzYkFTyg/L5oZpMz48PZT4\nb7Gim0ILNricNjTXOVT1bBP0Y4qNYEwirCy2CZLbYNpoM7gwr2jEduzt0c0YA8CRj4eyDn0D8Q2E\nnbGSCn/CjMfQBtlMUXhoy2LAZFJdeJJugJT0sDPxxJM9oEJXX7e11sBppyWvgYQMc4Na4ZpkrorY\npHqRW9fPQyAYljVibJhHZ3fmk5nEjxlXsKMtpozmc9e5yrBsQXXKBqIUx1oSCHphaIMscM9tC3D4\n9KAqDd9k0ZAyxqKqb1RsoVw0pwqHk7zjZJI9IIfdCoZWbv/IBbPrHLj39vkApBd7EjLMDXIbOamR\nl0K4W8yLtDPiRVEC4wFW0iPPhu6L41hz/SwcPCn+rEux5rpZ+O5Dq+Efn9L9nEjrHqFUmREGORDk\nVBljG00hHOEToiGVDhpjAfE2pGSjKrZQAsC5Cz5FD+if3z9fEGMMxEcr7nrvfKKCnIQM80umIy8z\n8SJztfEbC7DYvHoOOrpHEJiKqP7cyd4R8FkWg6VTKFlSAkEvZsRTWsZYQE13OKYR4qI40DmYaP2R\nMsaAeFhRWCiZKzloOelOQYTj0KlBLZeiOx3dnpQqasZqRqWDwXiAJdXVOSbCx2RHXup5/988+GlO\nNn4upw37OwY0GWMg3oP8D2+e1vVcciFLSiDkkxnhIU+xkayVidJRk1tVCgN7fMGCj8IbnYi3rzRU\nl2flYZAwoXayVe4ClO87G+bh8QVzVji4bIEbXSpkZ8U43TcC9rb5ujwvesmSEgiFRJVBDoVC+OIX\nv4jHH38cN998M5588knwPI/a2lq8+OKLoGkab731Fl577TVQFIX7778f9913X67PXTWVDgZuJ62b\nCpaNNmPr+vmK71MMA5tUuO154O1jF/GHdy5WLGATg4QJM6eMsaDKwYi2PilVtyvdd+H19nPDOVF/\nczsZtLXWYDIUVtWKJcbI2JRuLXV6bG4IhEKjasX8+c9/jsrKSgDAz372M2zfvh07duzANddcg127\ndiEYDOKll17Cq6++itdffx2vvfYaxsbGcnriWmCsZixfWKPb8bgwj0BQ/SKXHMpOnsxTW1UGxlp4\no5WNOAgJE2qHj0axY283fvSqeB8yoByBUbrvv323B3uP9+fEGJtMwJ/fvxwmkwlHPh7O+Di01QyH\nTiMW5YSASOseoVRQtAZ9fX3o7e3F7bffDgA4evQo7rjjDgDAhg0bcPjwYZw8eRJLly6F0+mEzWbD\nypUr0d7entMTV4uw+HX1KSsT2Wh1Ia0qB6P5By6cxzMvH8EPfnEEz7x8BLsP9GGlRJ45n/gCLD6/\n7Ff0MASETQVR+MqMZGOajpqRl0rh2bEAiwMdmelLq4GxUnCUWbMOg4c4Hm8ePK/TOSnXbBAIxY5i\nyPqv//qv8Rd/8Rd48803AQBTU1Og6fiutrq6Gh6PByMjI3C73YnPuN1ueDzKP1aXyw6LJbc/lJff\nPKW6R3jTjXNAmUz44OSAbG9w26I6NDdWZXUegkdz183XwEwBOhecaubjz3yodZVh2De9DaWmqgwL\n5lbDaqbwyr99jCOnB+EZm4LbaZMMV/r8IZhpK2prynN96nmhttapy3FCXERyc+iuYPB337ldcbM3\nODIJr1/6vr+xvy+nz1OIi+L/P3JBl/75rr5R/Mk9ZbDR8ktRiIvAN8HCVcFIvveJ+9tgL6Nx5PQg\nRsamUFNVhpuWNOAbX7oeZvN030PNMUsVvZ5XQiq5vq+yT+Gbb76JFStWYPbs2aKvx2LilVJS/56O\nzxdU9b5MYcM8Pjyp7CnYaDPWLq3Hf1p7DcwUhfVL6/HUzw+JFoLZaDO+sn4uPB6/Lufx0cdDsJip\ngg9iP37msmQVLmM1wz8+NU3ic3QiJHk8l9MGngtruk/FSm2tU7frGPYF4RHZ9ABxTef+S2PgFHKd\nfJiH2ykuKlLlYHD2M68u5ypH57nLcOlQlzEyNoW+z0Yl87taaxS2rpuLu26cnVKz4fVOZnXMUkPP\n55VwFb3uq5xRlzXI7733Hi5evIj33nsPQ0NDoGkadrsdoVAINpsNly9fRl1dHerq6jAycrXScnh4\nGCtWrMj6xLNFrQpWiONBmUyJH+PPdnVJVmXfsqxBUYRBy3lkWhCjN3LnMTkVlg1Pi0HChOJkotCV\njpyoyOJrXDgkIUijJz4/h5uX1Gf9XUrXnEmhoVKfdibHJBDygex28G//9m+xe/du/O53v8N9992H\nxx9/HGvXrsWePXsAAG+//TbWr1+P5cuX49SpU5iYmMDk5CTa29uxevXqvFyAHFomPgk5T3+Qw4BH\nWu/37pvm6H4exVDYJVfv7fOzsgMoAKDKQadMsCIKX+JYzCbYbeIbOi2bmOSpUcJ937iqCbSVUtVz\nny0uJ4N7b1+Q9bPb0lwp+ZqaSWpaycUxCQS90Jw4+da3voWnnnoKO3fuRGNjI7Zu3Qqr1YrvfOc7\nePTRR2EymfDNb34TTmfhcxhadKaFwqXR8ZBsz/LgSBBVjumj85TOY8n8ahzozG4ofC6RSzJUOmjZ\nARTVFTY8+8hqTLER0oeswM59vaIDHhxlloSMqRrEWup2H+jDvhwWcyXTek0VAkEOXDi7VMuRTy6j\np39MNGSci1Ym0h5FKGZUG+Rvfetbif//q1/9atrrd955J+688059zkpHksU5vBMhmEwQNbhC6KyM\nkb8lzXUOTd8v5KtO9kiLJ7BZLmrZUu+2w+cPSZ5HW4vyAAqnnYZTpxYWoyLnnQWmIti5rw8PfWGR\npmMK4dkgG8bBrvxt+I6cvozBRElCAAAgAElEQVSeC2OwWihwkeyeX6mQsR7h/XRycUwCQS8KHyvN\nMYIn8cJja/D8N27AjdeKj4sTwoW01QyRgswrx4r3TmpByFeNTerfD0pbso9N0hYTnty+AiYJkRIT\ngK/cOg+AeJiUhKfVMx5gZXP1nVmETHe80wM2z6pvoxNs1sY4mfSQsd6tTIKq2TIJTQJS90AoNMaq\n9ZeAj0ax+0AfOro9GJ1gYaMpAKYrM2QZLJ7jSihveSdCki0jfBSaQlq5nnWcyci7dNYtawQXjoKV\nqLCOAfjtu7147IvXkwEUWVLpYFAlM7BkbJLNKGTKhnmc+Uy5z77YEQsZ6zGFLL2q2uWkMbvOgWAo\nDJ+fJZPNCEXDjDDI6VWVgn50vasMXITHodNDOHvBh7bWWoQj0h5KdYW2kFahZx0r0eC2457bFsBM\nmSTDeADQfs4DdgufML65nllrVF1sxmpGW0sN9neIh5bdGYZMxwMsfAHxIRWlhFjIOJtNoPAc7fno\nQso99/o5eP0cNrQ1YsuNcwz3nBFKF8MbZDkvdSipH1TIY8W9Z3GWLazW9MOVy1cVA4PeIJ79xyNY\nuagOC5srMfqJuAwiG47CMzaF5lpt+XOtGL0/FAC2b27FuYtjuDQyvQd/eYu250tAb612rVASdRla\nkQsZa9kEpj9HUpLxXX1e3L+xhRhjQtFgjFVOBq1eqtz0pU2rmjV9N2M1Y9mCak2fyTdeP4e9x/uV\ntbmTxF6S9bj1xOi62IKh8EoIqmRaEcBYzVi5qE7TZ9xORrd2u6YsN2ouB6NrLUL6cyS1WUiXhCUQ\nCo3hDbKWXmQ5bLQZ7gpt7U4AsGm1uMpZsfHxZ/LDQPZ3XgIXiUzT496xt1sXlbGZ0B8qGAqpTV9n\nz2jG17lt40JsXNWUosdOW01orLXD7WQSRXgbVjbhx4+twZ/fv1yX6v7ZdQ58/8E2NNVklsKoctD4\n4TduwPZNrbpEQbTUbZCqakKxYfiQtZZe5FzgrrChuojD1mrZ3z6A3v7xlB5aPRWOjN4fqsZQZHOd\nZorCg5sX4au3LsBv9pzF2QtjGA9wYFkey1tqsGlVM9wVtkR41h/kdAk1B0MR/G5/LwZEQvBqWL24\nTtd2OS0RMVJVTSg2DO8hA3HvYUNbY1YKRizHZxzeWjTHlfkXFxFSCmZ6eLBGH5+nxlDocZ1vHjyP\nI58MYyzAJcL++9sHsL9jIMX4TLERXfK+Xn8I73cOav5clYPGl9fP172yWe45okzxtABp1yMUK4b3\nkIG49/DQlsWAyYT97eJKRm4nA7vNgksjk6ILFUNrm92aXlhio82IIZb3XlE9UcrFZePBykUyjODJ\nqCnwy/Q6hWriMsYiG/a/57YFieNXOhi4HNasq7OtlAkcr82ymwA8/dAqLF5Yp/sQBLnn6La2Jmy5\nYTapqiYULTPCIAvcc9t8sByPs5/7MBaI9x8uW1iNTauasfdEv6SxBuIDKHYfUK+kNL3VqvRzoFIh\nTr08WD16TosVpdSJjaYQjcXAR6Oqc6npmz6nncaERHFe+qaJsZpx7dzqrIdDaDXGQLy3ndfDPZdA\n7jkySrU+wZjMCIMs1k5z8/X1+NrmVtgZC9gwj65eaWlLgQMdA0Ashu2b5QtQtBSWFMMsZLXYbRYE\npiLT/l0vD9bowiPJhiJ9dGWIi2LfiQFQJpPqfHz6pk/KGAPim6btm1tw5JMhFGLyJ5dhikNNj7rR\nnyOCcZkRBlls3NqHVzyDB7csUl0IEo0B+zsuwWymZBdNtcdjLBRYHaUHtVLnsmE8wIINT/dWGCsF\nk0lQM7PBbrOIDkWYXefQ3YPNtfBILtBiKL60di6ee+UjUcWu9NCy3PdlOg6TDfPwToSw59iFghhj\nIP6bbLu+UfX7M+lRL8XniDCzMbxBllu4Pjw9hDOfe7G8pVbTsHWlRVOtIEghjTEA8Dyw5rpZeP/k\n9LDl2qUNuH/DwkRu8kevHhM9RjAUQYSPSep/G51MDMUUG8G4hHym2ny80qZPEMNwJ4VrhXM9cc4D\nn7+wVf8DI5MYD7AY9gVVebBSM4yDoQge2rKIeMAEQ2B4g6wk6O/1c9jfPoDZdQ7VBllq0Uz2kgrZ\naqWW0YkQuvq8oq919Y5i6y3xoRLjk5yhW5KyIZNh93pMHKp0MKiU0cWOxYDvPbAC85sqE8bqN2+f\nxb724hgBOhbg8J//Zj98KjYxcpvqQ6eHcO6K7G2hcsRGlXol5B/DG+RKBwMbTckqcAFAMBTGhrZG\ndPV54Z0IgZLJ7aYvmmJe0vKWGtze1oj3Oy9JVidbzUCh9S6kFvTRiRCee+UjjAc4uJw0GNosWphm\nhJakTFESM5GKouhRUc5YzXCUWSX/ftUVthRjzIZ5HMigPSmXCJs8pU2MUjRAz354LcwEqVdCfpkh\nT41yA7LPz2LLjXMSYxqrZIzMkvmulEVTTPJx34kBsBwv2+vZ0lyl5SLyjtDL6vVzklXiRmhJyhQ1\nYiZSZDvKkg3zCIakW5aWLXADQELi9JInkJPK5sYMFbrEkOpnV6u2l29FN6NLvRLyj+E95PEAKzla\nMBnB0xNmIsvtyMORVF1nKS+pXaboprrChofvXITv/+Ko4rkVCzbajHKbhYysu0I2oedsK4HHAyx8\nMimWIBvBMy8fSXhus+tyMxjEP6nflCmp9Idatb18pk8yjY4QCHIY3iCrLbBK9vQqHYxskde5Cz6w\n4fg4QjkvSU4reNkCN+pc5Zhd5xCtXi5GuDCP//bgStBWM8mXQb/QcyYGROm5Ppo0uWt0Qr6OIhv8\nU/oZZLlNjLDxaz/ngVeiIC2f6ROjS70SCoPhQ9bCoimFWKiQsZqx+Bq35Gd8fjYRjsx0eIUwdOLp\nh1ei3l2m+fOFwOW0odZlR53LnndjnKsJU9mSbeg5U5SeazGykY7NB3LjTYWIwo//+CasW1Kv6fO5\neHaMLvVKKAyG95ABceUeQaErWXA/me2bW9De7VEsZJLzkmwShVCUCdh7/CK23bEQb+zrxZB3atp7\nipFC5IuLvXCmkCIU994+H+cujGHAE1ClSx2NAXbGgiA7XdylENRU2TAyFkoowJ3s8cBMmRR7ix+5\nezHKbHGZ0NEJNvH59nPDKcI9uXx2jC71SigM5h/+8Ic/LNSXB5Vm8OoEZTJh6fxq3LaiEbcsbcDd\nN1+Dla21cNppWCQaaK0WM8YnOZy/NDHttXVL69HWctU7uW6uK9FbynIRuCtsWLe0HrPrHPh0cLpW\nbwzAZ0N+dPSM4JRE21GxccvyevzB5lZQUtPec8Qb7/Zg7/F+TLHxjc0Uy+P8pQlMsREsnZ+fWdPl\n5Yzis2oxUygvs0o+T7lg575edPaMQG2plpkCuAL3vguU0RRuWd6EnotjifOf4tT9bYXf82VvEJ8N\n+ROfZ8NRfDbkR2fPCG5d3pAousrVsyP1u9+2cWHefyfJqHleCdrR676Wl0tHT2aEhwzEw1YDIwEE\nJjmUMRZVO1i12spSXhIfjSIaA95rHxBdNAc8k3pcWl4ITIbz4pEm93QCIIUzEmhV6gKKS6KVC0fx\n0SfiOtpq/rZsmEdX36joaxeHA/jN2904fV78db2eHSLRSdAbwxtkPhrFjr3deL/zUsqC1FxXjmce\nXgXaIn0LkqUOPx2cgKPMgqZapyapPo7jVXswxcz5wYlEIVsuEAsvLprjIoUzEmiZ+1uM8DFgZCwk\n+pp3QvlvqyT409HjwYREBbjezw6R6CToheEN8s59vdgvok7UPzyJF147gR89ukbys0E2gh3vdOPE\nueFExTRjpbBuWQO+dkeLose4c19vQjO71JmYDOfUAIopXh06PSSZh5/phTNquwdKEYY2y/5t+WgU\ne45dlD3GxGQYJkB0MzzTnx1C8VL4qpgcwob5eKGHBP2eSbz6fz4Bn6awL3jV333pAxw6PZTSvsSG\n41N5fvtuj+J3aw0pFjPVFUzOFrFM7tVML5yRq7Iu9mrqbIlvsqVHpQpIRaZm+rNDKF4MbZDHA6yi\nPvX7J4emGVfBW5OT2/zg5CXZNopSDymmY7dZYTHnZqWX7eXmeKxbUp/3tqJ8kmlbzvSWq7gASEW5\nVfIztKX4f/LclToCMbLZ6FImYENbo6GeHYKxMHTIutLBwK1iitOhU0O47/aFYKxm1T94LhKDxxdE\nc51T+rsNFFK8OBzAzn29OdEKlrtX7gobHtyyCFyYR/9wAM11DjjttO7nUAjUtOXIDS5ILyra89EF\n7O+QHx5RLFXWcsiFlLPZ6MYAbLlxTlG0yxEIYhjaIDNWM1YuqlOU3AtxfMK4eidCqo0oJ1O2qlbu\nr5TIVWWz3L0qY8zY9V68vacY+5CzQW5S1LaNC1X10AoGu4yxSFYdlxpyIeVsNrruK4aeTGciFCuG\nNsjxtqMYaIsJXESh1vlK3+DeE+oNKG2R/zELobGDJy/JymiWCrmsbN62cSHOXRibJiPa75lEf1J7\nWKEm++iNkhYyH42l5EnTrzvdu65yMPDJDLMoRmqrbLDRFgRDYVX66GyYh2dsCi3NVRj95LLm71u6\nwIXdB/qKVmSGQDC0Qd65rxf7TigXf9hoM2qryuK9jb0jqo7NWCnUVslLXpopCvfctgAd3R6w4dJa\nLMWgrWY47NL5yWyI8DHZ6UXplHofslzo1TsRQme3+HMoXPfuA30p3rUaY0xRQLRI9oXfe2AFblze\nBP/4lKLHykejeOPdHnx4aihRcW+mALPZBC6svqkwFI7iSMfVEZRG2dwRjINht4Vaij9uun6W4qCI\ndG5eUq/KGBipuCvE8Xjz4Ke6HS+5mEnrfVIab1jsyGkhVzpojElcm88fgmdsKqPCpmIxxoyVwvym\nSthoy5X/Nsvqo+/c14t3TwyktL/xUSSMMWOlwFjll7IqB43uz32ir+V7bCOBIIVhDbKWBb63fxwA\nUMZYZOcgCzjKLPiDzep21JkOnyhWtC5eYhXEQlvZMy8fwQ9+cQTPvHwEe45dhMupvlgr7q2XbnGX\nXNtSeZlVdnABYrGS3uSx4Sh+t68HvArpMDUbazYcBRuOgpYxyovnVEmOqyz1zR3BOBg2ZK2l+GPA\nM4nX/uMsTp8fVRX6oy1mRPgY1MgWG624S20eWa6CWKyYaX/7AGbXORQr4gXi3vr5kg41SuXNBzyT\nmF3nEH1221prUOuySz7bUmIYxcb+jktwOmzYum6u7Pu0bKyl9KMb3Hbcv7EFPf3jGc2uJhDyhWE9\nZC3j6WIADnReUl25ORZgNe2or/aLlv6PXu3iJRjd0QkWMVzN1+3Y2yPp8QRDYWxoa0SVQ53nW+qh\nRrm8+eRUGBtWNon2X8s922VM6eTUj5weRP+wX/ZvqCXCFOJ4NLjtKcIoFAUMeYP48a+Pw24Tr38g\nQiGEYsGwHjIg7YFkS5VDm2qVmaKwbeNCnPncB6C0Q2NqFi+5MGNn94hkFMLnZ7HlxjnYun4+/uIf\nj2IiKF/kVep61nLe31iAxZYbZuP+DQtFC56knu0gyxdV8ZYcw74pPPvKMVTLVDtriTAxVgqD3mDK\nvwn3YXQirn09u86BYCgiOyyGQCgUhjbIWit31bL4GpfmHfWOd7pLarpTOtUV6hcvWUMzyaLKQWMs\nMD00LXjfjNWMVYvrFOUR5bz1Uug1lUurJN8LsQ2H3LMtZYyb68rRP1x8z6BStfPdN81RZZAjvHKw\nPhiK4NlHVmOKjRT1s0GYmRjaIGsR+VCLmTLhgTsWaPpMkI3gw1OlO2Tiew+swPymStWLl6zyltOG\nZQvcoopSyd739k0t6O0fl41uiHnruRxKrzfZDLlXmnaUTHWFDcsWVmNDWxP2Hr+A908W57Mo1co2\nOBKU+EQqfFTZIPv8IUyxkZKNqhCMTXGtUDqz97j8RJhM4KMxvPXh55o+89t3uktCslAMigKuaajQ\n5EnI5TjbWmuwfXNrmgbzdH1qM0Xh2UdWY0NbIyrL4zlloWanuoKR1LOWyl3v3Ner/qLzyHQ9anVa\n3XHvTvnnW1lO4/r5LnT1juC5X36Ej84U78ATqWrn5jqHbgMzSAEXoZgxrIcsN8BcDDMFWC1mcGEe\nLqcN182rwtGPh8BFpr9XSZQiOVwKAGcviPc/lgLRKLD7QB8e+sIiTZ8TDEpH98i0fJ3cYPf0UPP2\nza2AyZTIPVc5aCxbUC3q8SqpXxWjkEhWQ+5VlFOPT3J4v/OqGIbYKMtiQcpYOu00mmodirUgUqM6\nk1m2sLrongECQcCwBlmr0AQfBXiOx83Xz4KNsaCze0TUGAOA1x/C+YHxaWFcsXDpojmuku4ZBeKF\nWPdvWKhpIVNjaJLzo1Kh5lgsVUJyLMBhf8clmM3UtHyj3N+82AvAtA65Hw+wJRt1kUIuTP/0wyvx\n41+3Y8ATgFRkeu3SegRDERz5WFpWc9OqZlXnkr6pLvZ6BIIxMKxBzlSEvqNnRHGXbQLw4hud06pD\nxfprD50egpmKG/xSZWySzdiYqTU0UoMWbLT4Aijm8aopkjIKRpsm1lBjx723z5d8nbZY8Pw3boQ/\nyOHzy34cP3sZH386loi+rGipRgxAt0w0qrrCBneFTfY8kjeGoxMsbDQFwASW44u6HoFgDAxrkDMV\n5FAT0hN26MnVoYJmtRilbIyB3E/JkQs1S/09xDzebIqkSg2jCc4MjgSx891ebLlxjmwKw2mnsWRe\nNZbMq055bfeBPryrcC/UPAPpG8PkmehE+5qQawxrkIHUPKbXH4IJkAx3qUFKBamjewS3Lm8s+dC0\nFCtaqkWn5GxdPw+BYDhrA52J3reUxyuXuzYa2zYuxFQogg9PF2fVtFYOdF7Cex2X4K5gsKKlBjEA\nJ6+M3axyMFjRWoPtm1oS3qkQfVGS10yOZMmhVv++WOsRCKWPoQ1yeh7z90c+y7jlo6LciolJ8b5P\nnz8ExGKGCiECAGUCbmtrQgxI8T4ET+GDrkFdQnly4VepQh0pbyerIqkSRE6/WYCxUii3WeELsIgV\nsa5mcuTp3bQpbb5AXF61t38czz6yOuU5k9vQmQB8+95laK5zKn6/2o1hsdcjEEoXwydCksNam1bP\nyfg4qxbVSUpfupw21LrsqqU6S4VYDNiwohEne8RHAYY4XpfWIrk2qbVL6zNqC1KaIGQEfvtuj2g/\ndzpupw0//uOb8N1tK/JwVrnl4nAAv3n7HNgwj/5hP/o9AZQxFkl5TXdF/LepBrUynUarRyAUD4b1\nkMWqdhmJAiE5Ugu3TLL5ScFInDjrKalh8VXlFoxNTi8pd1fYAJNJdTg5m1CeUpvUTPF41cKGeRw6\nNaj8RgBsOP63jXcFUGDDpV3U8H7nII5+cjmR37XRZtRU2QCR53TZArfq50ZtXt5o9QiE4sGwBlms\nalcr6eEupfykEC7dcsNs/OVrJzARVDe5qNBItXe1tdagtqpMdSg+m1CeUqhZa1uQ0fH4gikFR3J4\n/dzVFp4iDlmrJYbUYqsQx6N/eDJFp7rKwaC8zIquvtFEXnrZwhpsWtUMd4VN0qCm1J1MhBKbeEGf\nwKj1CITiQNEgT01N4fvf/z5GR0fBsiwef/xxLF68GE8++SR4nkdtbS1efPFF0DSNt956C6+99hoo\nisL999+P++67Lx/XMA21xRlKJIe7hND3PbctkDQayV55qRhjIC7tmQ5DU4jFYrCYTaqrefUI5RHD\nqxKJUYNiUKb4rO/xAAvWYL3LyQRDYTz7yA2YYiPYc+xiSv+6MOJzf/uA7DALsY0hQPqQCflB0SDv\n378fS5YswWOPPYaBgQF84xvfwMqVK7F9+3bcdddd+OlPf4pdu3Zh69ateOmll7Br1y5YrVbce++9\n2Lx5M6qqqvJxHSlkUrUrRltrDSxmE3bs7ZbURk5vvTBKGwrLRfHuiQGYTKZpkQHaqq3QiqA/tVVl\nqpSpgHixVGAqjL0nivPZdDvj3mwwFIbPz8LltGHpAjfe77ykqSvCO8Emhkac7JHekKtpX0rfGJJN\nIiEfKBrku+++O/H/BwcHMWvWLBw9ehTPP/88AGDDhg145ZVXMG/ePCxduhROZzy8u3LlSrS3t2Pj\nxo05OnVpshFNMJniRTBCaGrHO90phTPCjzkWi8FkMqUY6skcTJYqNEJeONlrcNhpvHnw/IxoLSpW\nGKsZ65bWT6tGFsPtZLD3RL/i9KxCsObaWjx057WwM5ZpPcdmyqTq+gRomoLDbsVv9pyD168coSLt\nS4RiQ3UO+YEHHsDQ0BD+/u//Hl//+tdB03HB/+rqang8HoyMjMDtdife73a74fHIh41dLjssltz8\nGNYtb8JbB89r+kxNJYMfPHIjaKsZdVVl+NW/fyJZxXro9GVMJYV6jdTulMzoRAhRkwm1tfGNliA8\n+O2vrUKIi8A3wcJVwcBGG7YcAQAS118MhLgIhkaD+OItC9A3MIHPL/tl25luuG6WLimcXHD0jAfV\nrnL82T3LAVx9vgDgW9tWotzO4MjpQXjGplBbVQY7Y8FnQ37RY5lMJvz+6EXVfdmjEyHAYi6qv61e\nGPGaioFc31fVq+gbb7yBM2fO4Hvf+x5iSb/+mMRKIPXvyfh86saqZcLda5rRcW4Y/cMB1XUsZYwV\nP/nVR/BOsGAUwoFTInlXo/KXvzqKnzx2M4DpykkWAP7xKYgvkcagttYJjyd3V6hWAY2PRvHbd3tw\n6NSg6oIuALh+rgtvH72gx6nmhP9z6DNMhcIpoh8CW9fNxV03zk5Mgfr1nnOSxwmxPPYe03adb+w5\ngz+881rtJ13E5Pp5nanodV/ljLqiQT59+jSqq6vR0NCAa6+9FjzPo7y8HKFQCDabDZcvX0ZdXR3q\n6uowMnK1X3V4eBgrVhSu73HXe+cVp8MkQ5mQ8v5inoqTb4ZGpzAWYPFvhz5DZ/cIxgKs6qpVgjTp\nrXlialTJ7NjboznsXF1hwzWznJpTOJQJcNilxXD0JAbErysWmyadCQAmUwwv/ctpVb9nTmNL19FP\nhvHAHa3k+SUUBYrCIMePH8crr7wCABgZGUEwGMTatWuxZ88eAMDbb7+N9evXY/ny5Th16hQmJiYw\nOTmJ9vZ2rF69OrdnL0GQDeODLnU9mgLZSGomY6PNqubUlhovvPYR9rcPxNWecLVq9emXj+KZl49g\nx95u8FHjVvDqBRvmMewLgg3z02Y3C2pUP3r1eMq95KNRvL7nLN7LIAfc1loD2mrG4jkuTZ+LxoAQ\nm9+aiAOdl/CDXxyZ9jy98NoJTZtrLYQ4Hp4cRuoIBC0oesgPPPAAnn76aWzfvh2hUAjPPvsslixZ\ngqeeego7d+5EY2Mjtm7dCqvViu985zt49NFHYTKZ8M1vfjNR4JVvdrzTk3MPl7aYwEWmW/Gbl9Tj\nZI8HbLg02p7cThqM1YJBr/yi5PVLL85EdF+ZdG/Y5aQRZMWf0YvDAex4pxsPbVkMIN5Tr0aRKxnK\nBDTWliMSjeKZl49kVOMg1Z+eK9KHtkRjMUT4KPo9k7n9Yg0tZARCLlE0yDabDX/zN38z7d9/9atf\nTfu3O++8E3feeac+Z5YhbJjH2c+9Of+eOrcdI2OhhOG30WasXVqPO1Y2Z+TJFIIl893Yun4e3E4G\nT/7vQ8i2RZVUrUqTLlSjVAXc0TOC+zfGn61MCrKiMaB/eBL9wzk2Zjnk0KmhjDbWNtqMcpsl0UK1\nbIEbhz4eAiuSd7fRZtRWlelxugRC1hiuNHY8wMKnouUhG8ptlmkLXYjjQZlMcFfYSmbIxOnzXpw+\n770iPViGIe9UVscrhOh+rkZC6kkmQjXjAS5RyGTUKWJKZBrlumVZwzTxHkqihWrd0vqsn5tSeAYJ\npYHhDHI+BrdPhsRjeYKHWGpzakMcjyHvFEwmiLbPSI2dTCefovtiWuXFOjw+E6EadwWTuJdyzzND\nU1ixoAZHzwxnfZ6lBkUBs6rsmGLDGJ8Mw+VksHLR1Weg0sEkDOUDd7Rc1Q3ws3A71Y1klKOUnkFC\naWA4g8xYzVjeUoN9GgQF9GJ0IgTvRChpyMRl+AKlIxYiZXib6spVhT7zqdQlJdgCFF8eO5NNot1m\nTdxLqQ3eTdfV4cEti7D7wHlQJv0KE0uBOpcNP3hwJf798IVE9EFIBcsZSj2HlIjp5RfrM0goDQy5\njStkicbe4xcTerjlZXQBz0Q7Ugv6/KaKxAhEE4AqB42m2nK4nYymkYjJJFcba4GPRvH62+dwoFO8\nyKmje0TzMXON3HhJqYr8YV8woTG+beNC0RGUj37xOvzL++exv33AcMa4ttIm+/p/vX8F/v3whZQq\ndcEg/vjX7aL/vnNfr25jOeXSEMX4DBJKA8N5yGyYR6fE/F61qNUIFqOrzws2zIML87g0UroFNcl8\n9PEw/ue3bpnmXSjlzsRezzbMt3Nfr2wvbrEOjxebFLZoThUOSahKseEofvtONx794nXTBh6UMRZM\nsREEQxF8eEpaler2tgYcP+NBQCLFooZCed6e8ZDkqMjKchpmyiRpEAc84i1SHd0e3LqsITEwJhtP\nWS4NUazPIKH4MZxB1mOwxNql9Tj3uQ8DI9r7E4Uf4+h4yDBei9Cr2VznTFlkpCYzyRlduTCfUjhR\nTXFUsQ6PTzaqHl8QMJlQWU7jxLlhyfnEZy/4wIb5xL2wmE3Ye6I/cV8ryq2yG8dbljXiVJ83K4Nc\njM/w+CSHn7zeLjlzXOqcRydYPPvKMTBWCiaTCSzHZ5z3lUtDFOszSCh+DGeQ5X4oZsoEXmGFYawU\nvnjzXLSfy0z7V/gxljEWY+X1NPRqShldPhpDV6949OKDrkFFr1nNZquYJ07x0Sh2H+hL6UUO89K9\nZt4JNsXTSr+v4woqWuMBtiSq/aUQNipivyMpY6zluEDmeV8hDSGW2y/mZ5BQ3BguhyyXr1MyxkD8\nxzo4MomxQGatU8tbqsFYzXDaaTTVOjI6RrFBW0yqezXlvNjO7hFJAxHieNGcXzLCZksMygRsaGvE\n1vXzMspN54N0ZS6vn004qOMAACAASURBVIOcuFmlg054Wpm0TnXKjCAsJfKxqc0k7yuV2ydTzwiZ\nYjgPGQC2rp+PD7ouaRLgT6bOVQa3k1Y1wi2dZD/yu19bgf/6vz6AjBNUEjjKadU7fjkvdmySRZWD\nVr3ZSRcakfNK1q9ohNlM4blfflSULSiZGNS2lqueViapmI/OGMMg54NM8r7puX3Sh0zIlsKvVDkg\nEOREVXnUsvv985K9xkq0nxuBPxg3OFOhiKwHVCpwbES191DpYMDQ4osSYzVj2QK36GtiCItkMlJe\niYUySVbWFgNaDWpzXTm2b74aQpWLDkghlZsmTCebvK9eldsEgiENcqWDgcuZecvRkY8vZ7yY+QIs\nnnvlI+zY2w2H3ap5ES1GAiF+mmGURzrGuGFls+Rr6YgtkoJX8sJja/CTP74JLzy2BvfctkCysr5Y\nWlC0GtTW2VUpnr1cKoaQPSTvSygGDGmQGasZXLbCzFkwFuCw93g/drzTg2ULqgt2HnrhdjKqvYfx\nACuZKmA5HmaTCdUqDZPcIpnslXgnQpK5aTEvuxBoNagne0anbSTSowNuJ4Nym7QRsdGG/HnrjqPM\ngntvn1/o0yAQjGmQ/UEOk1N5HlUjwqHTQzjZN4oGd2n3Iy5fWK3ae6h0MJIGt8oRN+xqDBNtobB1\nvfQimSwssvf4Rcn3FVMLyraNC7GhrRGUioJ1sY1EenTg+vkuTIakvX+Xw4YNbY0JQZdSId/nGpiK\nYOe7xZHaIMxsDFnU1T8cUKW9nA+EvCFjocAW0GvPhluW1QNQJ6IvV3jlC7D40avHsLylBre3NeC9\nDumZ1eFIFIEgBzuT+ohqGWMIAMs0bCZyjZmi4iMVTSZZcRNAfiPBWM2odDA4eFJaFAQABr1BsOEI\nlrfU4tblDXjh1ePgi+WHIUMhTlGYrlUszwphZmI4g8yGeVDm4vMHTGrcoiLlP45eRKVjWLW6VrIq\n1ehEKOW10QkW+04MYNPqZty6rAHvd4kbZXeFuEHSOsZw0yr1Oet8sX1TyxWlqen3R0App/nZ4Liq\n7/L6ubjxj8WK1hg7bBYE2UhiVGJX32je+6fHAlxC/IZAKBSGMcjJnlMxiiFwYR43XFuLE2c9JScW\ncuJc6jkriSkIodUvrZ2L5175SLTNqaN7BM8/eiM+HfLj4vB0qUMxg6S1dai6wgZHmRXDvmBRtaQk\nt8t4J0LYe/wiuvq8CUnNttYaxV7Wyz5tozJPZCh0kw+++dWlKLdZAFO8391spnIyLU1JqOfvdnUV\nVascYeZhGIOc7jnlm5uvn4VzF8bg9YtvBmirGd0XxkrOGAPSi1h6n3A6U2wE4xI9xz5/CIEgh2cf\nWY0d73Sjo2cE4wEO7gppg6S1dchus+BHrx4ryr5kIB56bqgux0NbFmNwJICTvaNYvrAaDTXKgjIt\nTZWavmsiWLxTxw5/PIiPP/Ul/k7LW2pwx6omdPaMwufXT4JW6ThkWhOh0BjCIGciuqAnlAmwMRb8\n6I/W4LfvdONDkYEBIY7PeGBFsaIkpqBG71fIq96/UTk/LXc8G21Guc0Cn5+Fy2mD3WZJ8byLdbGd\n4sJ46ueHEbhShPi79/pQbjPje9vbMMtVPu1eCJGgE2cva/oeO0MhyBZnDcP7SblwIaWxoa0R375v\nGUZ8U/jZP5/S9fsYKwXGapbcpChtNAmEXGEIg6zHQIlsiMaA/e0DMFMmPHL3YpTZLInQuaH0rNNQ\nqmDWovcrNagivZBM6ni3LGvAl9bORf9wAHWuMvz3f2oXPadiW2yTjbHAZIjHD185jmoRrz7TSND1\n89w4dja7KWi5QGoG94HOS9jfcSknFdfhSBR/tnUJ/u7/6xL9bjKtiVAoDGGQ5TwnqxnIly6EsNhv\n39QKno9if8clQxjjencZhrzTc5ZtrTUAIJujFRs7qCZHml5NXeVgsKK1Bts2Lph2vOUt1YjFYonw\ndJWDkRw+UEyL7ej41DRjnPJ6mlevNRJkAhIpgK3r5+HY2YPZnrLuSP08hN9NLn4+tNWMObMcZFoT\noegwhEGW85xWLKrDyW4PuEjmP22Xw4rJUETxGMJiX+lg0NU3mvH3FRt3rpmDfs9kihFcusCFQCiM\np//hMHx+TjJHm6neb7on6Auw2N8+gN7+cTz7yOqU4+0+0DftvVIU02J77sKYqvcJGz2tkaCVi2rx\n8JZFmGIj4PmYpDc60whxPH5/5AKZ1kQoOgxhkIFUT8w7EUroKR//ZBiWLGt4lrfUom9gQrQaOBlh\nsS90CF1vWpoqcevypqtVwSf6cfj0UEpOXClHKxWSFkPOE7w4HMCv95zF1++6DnUuu2avsZgW20Vz\nqlS9z+cPwTM2BcRiqHIy8EkUDqZz6vxoImpQUW41nDEut5llhVHkEKr8hf+vJXpDIOQKwxjkZE/s\nN3vOpRRWZauxf/j0EMrLrIrvExZ7QUs7k2lRxUjy2MrfH/5ctGhNQI8crdKG5uDJIVgoCts3tyq+\nt8pBY2KSK8rF1mFXp7dOW834nzs74Atoq5TmwlGMhuP3Rml2crGgpeaCyyIXNToRj2bpMa1JjWAO\ngaAGwxjkZM5e8Ol6PDYcBReWXvQry6244dpZicWesZrROseFIx9rq4QtVkLhCHbs7Ub7uWHFTYYe\nOdpKB4PKchpjk9Lftb/jEsxmCvfctkAyF1hdYcOzj6zGFBspysXS4wuqep8RK/TF+M9fXYp/Pnge\n/Z5JVe/PtjZkz7ELeOTOazVFb5JJr3MoxtY6QmlhuKcmV+Fip13aQ17RUovtm1pTfoRbbpyt+zkU\nit8fvoC9x/tVefx65GgZqxmL57oU39fRHa8altLGbmutgdNOF+9oPFPpqrflgiNnLqs2xnrwYdfg\ntAEeyRrpSgh1DsU68pNQehjOQ650MLJVtlKYANBWE9iweLxMTljh9Hkv2HCqDm69uxy0BeAKP+Mi\nazp71Reo6ZWjffALrTh25jJ4mXSD4I1nWsmdS9SEMSvLMx8RakTO6RzZUoKPAqf7RrBkQQ0sZpMm\nb1eudqHYWusIpYPhDDJjNWNFa42ieH86MQDLFlRn1KspFqZlrGa4K+wY8qoLS5Y6NtqMW5Y1ZGwE\n0w2YnbGioaYc/cPSHlOyuIgeuUA90BLGLIaxkMVEIfLcL735MaorGJQxlhTvXKlIUS4SV0ytdYTS\nwnAGGYiL9/f2jytWRU8jwxCiWJiWDfPgIsbP+7krGFw7x4WvbW6dNplJDVIGbOv6+QhOyS/QasVF\n8kl6u5bcwh5WmP6Vzx76mUy8/kDcuEp5u2pU6AgErRguhwzEK66ffnglGmu0Lc5dGkKzyYiFaccD\nLHwGan0SY+2Sevz4sZvw6Bevy8gYA9J5uN++0w2fTM563ZL6oqqYBpTDmOl5SatCPx4xxoVHbC41\ncFX7QIxiaq0jlBaG9JD5aBQ//nU7Lo1oCxezKvujKFM8xO2WyVVmmssuBdxOGisX1SXCsJm2fcgZ\nsLMXfJKtY24ngwe3LCq6SlatYcwyhU2My2HV3OpkFIpFxETO2y3G2gVCaWNIg7zjnW7t4WoN3Lai\nEVtunCNrgBirGctbqvFex6WcnUeh+PP7V6C51gE+GsWOvd0Zt33IGzAWN11fj0MiPc8rF9UWpQci\nF8akreZpfcefDk3IHm92nRO+gFfXcywF3E4Gf/afrsdf7WhHtMDzMOS83WKqXSAYg+JyMXSADfPo\n6MmNiD5FAbe3NWD75lZVrTQUZby2luoKBmW0GWc+8+L1t89l1fYhGDAxXE4btm9uwYa2RlQ5aJgQ\n7yvetLoZd980B2c+88IfLC7hFbkwZojj8ebB8yn/ZlIYnbBuaQM2rW6GjTbcz1QWu82C/Z2XCmqM\nTQA2tDWq8naF2gVijAnZYjgPeTzAYkxiBm+2RKPAkY+HYTGbFb1ANszjZI42BoWEDfN46u8Py6op\npRfCCCHtMsaSItIhp0G+vKUabx78FCd7RzAW4FBVTuP6+S6cveDDvhP9iMbiqYOmWgeefnglaEtx\nPMpb18/DB12DokIe6feldba8dGbL7Cr0DIyDl+v9MiD9nklcGs1fP7IYa66fhYe2LC7oORBmHsWx\niulIpYOBjaYQ4nKziIU4HnuP9yMYiuChLYskd8VG07OuctCI8FHZ6UQCQr60utKGnft6Ewpfgixi\n8lhBqTwcH41i74mrrWtjkxze7xxM+Z5oLK5t/eNft+P5b9yo7wUnEeIishOtkgkEw2AlVLUETWra\nQqHSwcBpp9FYU4ZLI9MnaTXWlOHfPvwU+w2Y8lBDIb1jG23Gg1/QPjM7uZYCAAljEzRjOIMcJ/eh\n4kOnh3Dms1FcO7ca2ze3wM6kKnnJ5RNLkW/fuxR/+doJVe8VCmHSW4AErzq9FSg9DwcA/+V/qR8V\nOOAJwB/k4FSpDa0WoSWrq28UHt+Uqhy5Uh75b3/XmTIda2FzlahBjvAxQ9YflAK3LGuY9nuWI7l1\nb3SCvZJiMIHleCKnSdCE4Z6Q8QAr6aHojS8QxqHTQ/juS4ewY283+KRtvVw+sRQZ8ARVi/6vaKkG\nAMUpTMmtQMl5OI8vqCnCEY0B/Tko4hM2FMO+KdU5cqU8stfPpRzrw65B0fcO+0K6VxnTBt1+60WV\ngxbNGyvJaSa37gFAiIsixPFETpOgGcMZZLlCISXq3WUZfU4IY6f/6LZtXIiNq5rAWEv7NleUWVSP\nCgSASDSqKmQv1eOpVaCFMgHNdQ5Nn1FCa09xMts2LsSm1c2orrCBMsVD9FKFWflID1dXMFi3pN4Q\nMq65ZCzAoatvFDv39YKPRhNdBM+8fAQ/+MURPPPykWkbb7XjP5WeGQIBMGDIWq5QSIkh7/TQoRbS\ni3bMFAXKZFLd31ysRGPxUYFmSp0BOdkziq+ul57CJJDc45mcf6utKgNjpVTft4aackyxEdBXCsX0\nIBtpxPR2GC7M47lXjulyXlppcNvx7NdvAACcOj+CiSCxynIkp1MAKKquqa0VIXKaBDUYziADVxv2\n26/0x+aL9B+d2t1zsRNkIxgYCaj25sYDHKbYiOLGqK01Luov1svc1lqDIx8Pqzu/UAQ/+MURXfN1\nekgjCmF4NswXrJ5A8MosZhPsjLWkDLKW2ch609HtQSwm/uXJG2+1tSJETpOghtKOpUogeCg/fuwm\nNLjzuyNNFn8wSqV1NBa/FrWhd3dFfPHZun4ebLS4x2qjzdi6fp6kdCZtVu/p+vz6j7/TUxqxkPUE\nPj+L8QCLnft6MeTLLgKUbwpljAHA62clx40KG28+GsXuA32YDCmrqRE5TYIaDGmQBRirGc99YzUs\nefodRGPArveuGoNs8tnFBGUCTvaNqg4hC4uPXAsQF+bhHQ9JRhBOnc9coUqvfJ2QC65zlV3JBceF\nSTKRRkzPK7udjORmRU9MJuD3Rz83RKQmn1SW03A5xCut07sI0gsQKRNgTlpZbbQZsVgsJfdMIIhh\nyJB1MiwXRT6HLh06NYhtG1sUhS9KicaacnyswkAm9xcDymFfmEySEYSxSRaV5daMRvLpla8TIi1/\nck8Z+j4bzaqnNMLHsGlVM760di7GJzkgFsP+zkuKY0LtjAXXz6vEsbOZDT6JxjCtf5ugzFiAk9ww\ntbXWAJDuIrBaUusfQhyPd08MwGQyiY5yJBAEDG+QPx2U1wvWGy4Sg2dsCs21DrBhHhvamhAIhnHk\nk8t5PQ89EJSwHvvSdXjulx/JvnftkvppQilyG5K21hrUVpVJGmy304aW5krZ+8ZYKLAiIwz1ztfZ\naEvGxj19vCRDmwHEEOKicDtpzK5zIBgKS+YgbbQZjIaeWCkKmY8tZmiLCVwkJnp/BLW15GJGG00h\nGovBOxGS3ExKRZKkRjkSCAKGNchC1S6Th7BgOjw/feiClPEoZm5eWo9H775OtiiJMsWHbWzf3Cpa\nSCU3EcdMUbLSmVEZC8JYKdy8pF5UPEPwYNSqa+WSdHGUZElNr5+D18/hputmYVRi4+Hzs/i4z5f1\neRBjPB2TCXjmD28AbaFgpkz4yevtotPZkosZQ1wU+04MIBaD5kI9UmlNUMJwBjndI3E59VVvUsJG\nm/F+12BKKLJU1boOnxoCbTFj+6YWScN5W1sTHvrCIsljKE3E2bZxIfhoDJ3dIxibZBMjLWMxeaUq\nNhwFRZmwYWVTymeXt1QjFovhmZePZDSBSk/UVtn39I/BLTFqstJBY0yHEZ4mAA01dgyOBFULjhTK\nq64st2IiGIZEkbNuuBItdmYM+4Ka7vPh00NYc10dDoikA2y0WVTLnFRaE5QwXFFXetWuVKVkrlhz\nfR26eo0xVCIaA/a3D+CNd3sQjcVSxC1stBl3rGrC9k0tqo4lNhEnIU3ZOwJfgEVlOY1lC9zYun4e\nOlUM5jh0amjaZ00A3j0xkPEEKj1R36PKYvE1btHX2lpqdCkMjAG4pMEYA8i5QRTD5WDwo0fX4IU/\nWoPG2tx6kouvcSWeR60FmCGORzgSSxOAiRf9rVtaL/oZUmlNUMJQHnK2fb+UCWhbVIMTZzM3qOuW\nNOD9DmMV0Xx4amjajj/E8TCZ/m977x4fVXnv+39mrZm1JpOZJDPJhEACCCQBBQIJoFxEJAax/uqW\nbi3YVLTV2p5W926722qrVNSttso53d3t7u7Fllrxh8Xi2ex2b89BEVTuIAkEUEgCyiUEcpskM5mZ\nNTNr5vwxWcNc1nWy5sp6/8GLJDNrnlmX5/s838vnq5PseCUmsB/vzh10+bCr9RIYf1CWIfP62Mi4\nuPcKJeJkIn6npEa1eUUNTEZ9xLVfYqYxY7IVX7hlCjq7hjPiZTEX6OGU0UxETaZPKgZlILFr32e4\n1OtO2ecQBNC84upiMpkEzNPnHXj+kYUJ3h82GIROp+MN02hoiCHLIL/88ss4cuQIAoEAvvGNb2D2\n7Nl4/PHHwbIs7HY7NmzYAIqi8Ne//hV/+tOfQBAEVq9ejS9+8YupHn8MY637DYaAkkIaE8vNuJCk\nNrLbExCchEuLaNRNK0XbmYHRB5WGQU/i8kDqJh414HO/AcJGLj5swOc2Fls8nTrnGHXVKvduCI01\nE/E7uZN8fW0ZTLQBzU21WLV0Kt54tx2nzjuw/8RltLT3Cn6nVHP9dTYc6+xLq9LcgY970HFxCE53\nahcgelIHlo11AUTnO/QPeyWP0T/M4PKAG5PHWWLuq+gwTe+gBwiFYLeakgqZSC1qM0k2jy1XkTTI\nBw4cQEdHB7Zs2QKHw4EvfOELWLRoEZqbm/G5z30OP/vZz7B161asWrUKv/rVr7B161YYDAbce++9\nWLFiBUpK5GsgjxU1Oiwd7ejH01+dj5c3t6Kr92pPVp0OGF9qwuUBt2hruEkVFpHMYjuam2pjbmQ9\nqcOf/u8pHDx5BX42tzJvhIxc/M5XqeTgoIvBjdeX48DH8pS65JCp+F18UhvF9Yj2sbAVJe6ctu0+\ni70nLkd+zpQxBgCKIpTKiqtCOrwBPn8Iz2w8jHkzri4USYLAmsZq+AKs7FKxn75+BEvnTEjIUeBE\nQ8QWpWLIWdRmimweW64jaZAXLFiAuro6AEBRURE8Hg8OHjyIZ599FgCwfPlybNy4EVOmTMHs2bNh\nsVgAAA0NDWhpaUFjY2MKhx+LGnW//cNebH63I8YYA+F42qU+6Z3s2wfOiWYWc+Mst5rgCwTw3KtH\nkt6NpwuC4O9Py2fkpJoyyJEctFqMuH/lDHT1uXnPjdB4AOGEmrrq0oys4vmS2oDEXrmMn0XvoAct\np9VbhIyVPccuS78oh3G4wgtFNhiKJCZu2dmpqG6b8QcTFpvccaQWpWKM9f2pJJvHlutILmdIkoTJ\nFN4Bbd26Fbfccgs8Hg8oKpy9XFpait7eXvT19cFmu5qYYrPZ0NubfnWgaEWkZDn8SfI1w63tfQiw\nITQ31eL5R27Ci19fiOcfuQnNTYllQS+81pL1xhgA9AT/NokvSUVOUwZAXE7SZNSDNhB4+ivzsax+\nPKgoyU6K1MFACt+2N91QPnr9w4aPG/qxjt6ETj3pJDqpLfr/0R2F1v/hkOwkxJJCQ0Z2r/nIB61d\n2LT9FNyMP+kclGh1uLF0ClPj/akkm8eWD8hO6tqxYwe2bt2KjRs34vbbb4/8XkiAXej30VitJuhT\noGv52Op6/G7bcextu4ShJOKQYyn1cDi9ICkD7GWFAIAqgdcNuRh09WW/MQYAPxvCbfMn4viZPvQN\nelBWUoCFs8bjobtmgowzjpbiAhhpEh4m8cGkKRLTriuFcbQx72Or63H20jDOXooVb7nQ48Lf9p/H\nI6tmo7CAhi8qhuljQ4CIa/++ldejqtyCX791DG/v+yxyLQecPuz46CJMBRQeWTVb8Tmw2y2K3yOH\nV7YdT8qj4/Gx0AGq90y+FgmGgF2tlxAUUY6TwuH0IqAjQOoIBHQhDDiFF6XR8wMf3X0jY3o/kLr7\nVY2x5TKpOq8csgzy7t278Zvf/Aa///3vYbFYYDKZ4PV6YTQaceXKFZSXl6O8vBx9fVezk3t6ejB3\n7lzR4zocqUlm2ryjPWNylWaTAZ4RL04OuHiTHbj4sVQsOpuwWWjcu2wq7l02NcbVOjAwkvBaxs/y\nGmMA8DAsPunsjdR+cueCjz1HuzDo9GDPMfnuw9IiIxBgcfHSIA6e4H/f3mOX8LkbJypyX9vtFvT2\nOmW/Xi6Mn8XeY+LSmRzxxlduopXNQmFOdRnazgxgYNgLnabYJciHLV1JL3AoA4lnfrfvqhCQgUjQ\nuAbC4RjW5xe9n1g/C5tFOJwj9f5U3a9qjC2XUeu8ihl1SYPsdDrx8ssv49VXX40kaC1evBjbt2/H\n3XffjXfeeQdLly7FnDlzsG7dOgwPD4MkSbS0tODJJ58c8+CV4mYC2NMmLCiRaswFBjz36uGEZAcA\nMYkQxYW5U3FWX2uPGDCpLOVLveK7/qf/cCiieb28vlIwgWfAySjWYOZc6D0Od9K9jNPJkIuRncCU\nrKFomF6O5qZauJkA3ni3HUfae3gNRTZhNpJwedPv+hzLOiW6BE/smsqpRZaSnM1kRnM2jy0fkLQK\nb7/9NhwOB77zne9EfvfTn/4U69atw5YtWzBhwgSsWrUKBoMB3/ve9/Dwww9Dp9Ph0UcfjSR4pZM3\n3m3P6IQTnfjFJTuwbBCMP4h9UdmzgyO50Ze2qrwQ9946VfbrnW7pZhCR8xIMi42ocb2WzKqQ3dQi\nW9SSCmh9ytSwrGYK82aUR85JfPZ2NlMz0YpWGcIw2UBJoQFef5A3kdBIkTDRegy6GMW1yFKJoZkk\nm8eW6+hCcoK9KUJt1wbjZ7HulQNZJ1WZ68L+TfOreLMnnW4fLva4UFVuhmW0D7TT7cO3f7FH1nFL\ni2i4PP4x17lSeh3WPbgg4goHhMMWQt9FjFS5ALv7R/DUKwdVPy4B4F/+8ebINcnW50KIXImNj7eZ\n8M0vzML6PxwSHO/6ry5AAUUmXaubTK1vKl3W0VxrdchZ4bLOJcYqDJIqctkYA4kCIL5AAC+81oKu\nXheCoatdoZ56oAEWE4UqeyEu9ibGl+MZcDKqyDP6AiGs/8OhmBBBLqzid3x0ISXHDQLwMIGIQc7W\n50KIXHhczAV6rH9oPkIhnaj2wYfHLolqvUvBZeRnI9k8tlwlrwyyGsIgGonEx13jy7WCoXBm9Auv\nteDZh27EugfnySrpslpoIBTiLfURqicWIlq3GgjXQ4o1tcg0jJ9F25nkehxLUWTSx7jltedCfWiD\nHqGQDnpSByOtB8B/bts6+8EsZ7Pq3tPIXvJKVoU2kJgxyarqMU1GPazmsfejzWWi465Otw9dAolb\nXb0uON0+UHo9nn3oRvz4gXmix71+khUN08t5/7Z4dgWa5leBFKiBFiO6HpKvqUU2oCShSynTqqwY\ncjEx50Co5lsjOfqHvei8MIjN77YniAhFE117r6EhRV7tkAHgSytqceDjyzE9TMeC2xsAYcy706SI\numm2iIjFq29/IuiCD4aAiz0uXH9dWCBmgt0suNMlifC10pPA6fODuNjjQgjh+GFVuRmrl09DKKRD\ny+kexR27Mp1JLSe2VmymUVxowNCIcBKcxWSQlSQXT8fFQfzotwcSXPhubyAmsVAjkQprARg/C4cM\n/YL/9eYxSK0XS8x01iQRamQ/eWdpSEIHg54Eq6IGsMubGxnRqaJp/kQAo2VbncJuVkIXNqax8Ftv\ng54ESejw5q7OGNd2CGH395u7zuD2+RPhSKJ9ZqYyqZVo/NIGEhYTJWiQbRYaP7q/AS9uaoFD4Q7L\nNWrE4134axqrceDk5ZzPaUgVE8vNePor8xFgQ+h1uPGvW9skvRhS57KwwJB13hmN7CWvXNYA0Dvo\nAZNBQf58w2qmYSsygvGzkjrL48sKI4lEQNgtK1TSxPhY9Drc2Hecv9Z43/HLKKD1SfUCzlQ9ZHwv\nbrFezGEBFeGFnsmoR2lxAebNGLurmXPhe5iAZowFoA0EaiYWj/6fRFW5RRU3v9vrx8UepyYpqSGL\nvDHInCbwz988mtEszSRCnlnN3FHjNuRiJF3H/+PuG2J+LjbTEU3peGxFRvjYoKDB9vrCbl+pSdFs\n1MNIXb2NjRSJUCiUds1qpRq/UjHkEU8AjJ/FmsZqLJ7F3/BeLgOjLvxiM41iU+7lQ5jo1C+uGH8Q\nO490xSye7r11KiqsBWM6bv8wg6c3Hsa6Vw5kVEtdIzfIG4PM7U6UxhvVJp92IDoA9ywLi4IUm2nY\nLJTga0uLaJQVx8ZsxZKJ6mvLQEnpmOt0WNNYjeX1EwQXOoFgKMaoe30s3oubWNOB3KYaHMVmGiVm\n4fM5OMJgyMWAJAjQhrE9piWFdCSeff0Um/Qbsgy3gBRrKmht740snra+fxaXHR5VjivmLckFGD+L\nHodb2+mnmLwwyGK7k3RDkTpU2vOjNi8ERIwMbSAFM6IBwGS8GivjHl6n24fl9ZVYXj8BpUVGELqw\n3nTT/CqsaayG3q69WAAAIABJREFUvaQARorfKBspEvaSApAEgab5EwUXOkKlUenuPMOVFvHBF9Om\nDSTqa8oEj2c0kPAwflXKo+ZGufDvv70WIs2yrnn6h5lIhnoq5pRc64gU3Y3sR789oO30U0xeJHVl\nlfCBTofu/tQ0zcgEvkDYuBbQetw4w44PWrvg5+m2NOLxw80EsG332UhmNKdQVlpEo666DE3zqmAr\nMkaMA0kAS2ZX4L0jiQ0WlsyuiLwuGQGNdGdaJ6Px27yiFh0Xh3hFVDw+Fs++egR6QofAGNwuE8vN\naG6qifxsog24tb6S95xrhCEJXcrmlExXAChF632cXvLCIGeT8IEvkNzKMRvlNQkd8G9bj8nS3R5w\nMnjj3fYYvWTu+/QPM9jV0gWS0CU8xPfdVgOdToeW9l44hhlYi2g0RDXkkNohCmlhZyLTWqk6GEkQ\nmD6pRFTVTKkx5mQnLSYD6mtKsXbljIQM7/tuq8EVhwcnzg4oOva1Qo/Dg6mVxSmZU6wWGj4/C8af\n/WIhUnkR0ep9So6ZjUI92UJeGGSx3UmukG3GGAiPSW4TDIIATp13iL6m5XQPbpkzIUZzOkIoFE7G\nC4XAskH0ODwoNlPY/G6H6KTYUGPHvpNXEn4vtCtVe0KIP54SdTDGz+Koyk0UuNvI6fbj5KcObNnZ\nmVB2RRIEHlw5HT/49X5VPzsf0AEotxZgyMWgblopdrWq2zluxOvH+o2HRUvisgU5eRFyd/pKSgKv\nZfLCIAPh3QnLBvHB0UtZadykMJBAgM0NHV8+gkHxtnMAMOD0JWhOx7vEBpw+7Gq9hF2tlyTlM0uL\njFjTVIsLvSMJutr33jo1xljqSZ2qE4LYBCNX4zfVoRYx9+KQO7PJj9lKCMBTr+yHLxDuJT2+tADd\n/WNP7OLuZc6bkwuuXzW7pmmub3nkjUEmCQIrb5yk+opWTUotFJweP3yBRLObQ3kegshRloquz2WD\nIbR1Cu8QpbSs62vL8Le9nwrqaru9/oixNBkNMa8b64SgxgRTbKZRYqHhcKY21MLnXrwyoE72cD7i\nG3UKqVWxUVxoEE0+VOL6TafLV63ex6lwfecreWOQ2WAQ2w9fyMpYLHBVBYjxs9j8bgdOnXNg0MUA\nuvDuMtfRAaivKcWHx+RLMx5t71OsQsWxZFYFVi2dgvV/OMT793jjK7R7T2ZCUGuCoQ1kWkRs+NyL\nrFrashqSiMmj8l0bPqObKZevGl3T1HR95zt5Y5C37OzErpbsyByl9LrILpg2EFg0qwJfXlELkiBg\nogl87fM3gPGz6Op14vnXWjI8WnWosJnCCUQkKfs6OFwMSswUBmXoBkdjs9C4f+V0VVy+yUwIak0w\nTrdPVK1LLfjci3oyzxRscpToayNmdDPl8iUJYsxd09R0fec7eRFNz6Y6ZAAxLmnGH4SeJHi1jBkB\nlapcgyR0+NHaepAEgbW3T0eFTZ66EaELS0QqpWG6HbSBFK39lQtlIGFWqF4lt+ZYSkyBa6iRavjc\ni9YiYxo+WUOK6GsjJL26eUeHIhW4VDCWrmlSAkGau/oqebFDTmUrOzXY09aNVUunwkTHnu7ERgy5\nycIbxsGgD383xs/KXmgEQ8ClPumabSNFwudnE9xlamTXe30stu3+VNEuQyq2pid12LyjXdK9mKrr\nL3S+oik05p6EZq5jpEiYaD0GXUzCtRENg5zuxeAIvxcpV1y+ari+1SDby67ywiAX0PqsjR0D4Un/\njXfb8fDnY7WeKQOZ1eOWItxZS4e9Jy7j1HkH6mvtWF5fmXRcmIPQAaFQWO+6vrYMq5ZOhcvt432I\n+B50k1EfE0O+Ol7wtuVMJo4sNsHIdS9SBlJwTGOh0KjHk/c3wC6yo7GNKqfl6r2XiyyaVYHVy6vR\n63ADOl1EiQ4QD4MIGWMgsy5fJcZNDdf3WMiVsqu8MMi50MXm1HlHghjAwLA368ctBhsMgfWFvwBn\ndAIsC+sYM4eDIeAH983F1MriyPmK9y5ETwbxD/rVEqerxnL6pBLsF+gFnMwuQ2iCcTN+7Gnj72AV\nb/iHXIzqxhgAHE4G1Ohn9DjcvJPftt1nc/rey0VaTl3Gqc8cYAIsHHFGIVlxo3S7fBk/i4FhL3Z8\ndAFtZ/plGbd4w52J3XyulF3lhUEuNtOwmg1wuJQ3c5dLAaWDx5f8DOZwMjGTPuNnsW33GbWGlzUc\nONmDRbMqxpRgx/VV5ptoxFa60Q96vLEEgNPnHaomlvDtEDa/2yFY4hJv+M0mSlBpbCxYLTS2Hzov\nOGFmW87FtcKQm8WQ+2qIJt4oKAm/2Cw0Gqbb0+byjX7u4p8hIeOWLbvSXCq7yguDTBtI1EwqwaGP\nUzfJjMUYA1cnfbEbOx/w+lgsmjkOOoSwq+VSUklLwVDY6xHdW5lDyUqXW41zhrOuuox3oaB0lyE0\n0dy1ZAqOnE5UDeOwWugYw79t91nVjTEQDuFE1+PHn6Os0n7XiBiF6DDIwLBX8NnRAfjO6jmosqcv\nB2Xzu+2SGg/xxi1bdqW5VHaVPc7zMXLyrLhsY6bhJv3oTMp85d//4wRC0KHEnFzikC3OcHFIuYPj\ns03jO9Uc6+jFxHIzSovohM5TShDKhv3ppiNg/MJLEEpPRsqNUrlLdQrEHFtOh1sLqpGdrqEenFHg\nwiDPP3ITnn1ogWDbTXq0E9pYkNtOkQ0Gsemd0/jgqLTgUnSbUaX9wVPZ3lFpJ7ZMkhc75P4hD0a8\nqa/nlEtDTRnOXXElJPtcK67CQZdvTC5rrqwpnk3b2yXdwcVmOpI0s6u1K2YcA04fBpw+LK+fgJU3\nTkoqsUTsGl5xiGeMdw+4sWVnZ0p3qWJ13QOjYZNiM42aqhL0fyy8m9dIH/FGgTaQsFtN0AmUigeD\nIfiSbE6h1I2sRN8h+nsMDHsFNx3Ru9J0uLXVUhxLB3lhkE+fH8z0EGIoNlN4/u9uSogv9g+5NVeh\nCNE61NGEd7odOPyJsAEx6An8n0PncPDkFUk3cNuZAaxurEnqQRQzpHKSpDi3Xqo6lNVNs4mqpb19\n8BxOnh3Iaw9NrsFnFIZcjOB97AsE8czGw5g3Q7nhUuJGVrqBMBn1EQ/QjiPCsfBow50ut3a2lF1J\nkRcu6+mTSjI9hBjazoTb2sUX0me7q7C2qjijn8/pUG99/2zM77lVupjB87NBfNDaLSsmG+1aU4rY\nNSRkiF/1D3sxMOwVFUtIBspA4LZ5lVjeMFH0dR8e7daMcZZAEkDjvEpeo1BspmGzJOZQcDhcYcO1\nZWen7M9T6kZW6sW50OPClp2d4ZapIhr1RjoculE6nrEQHQ548esL8fwjN6G5qTarSp6APDHIZp7k\nn0wyMDrhx8dF1J6E1SaUJb2mWtv74HT70ONww+n2yVqlK9EDH0vcSOwayi0j4nYPq5ZOBanCE1hi\nprDhm4tx763VGHJ6x35AjbTABgFCp0swCmwwiLc+OAM3I22QlBguMQElvkVqMhuI1vY+9DrEPYFd\nvSPYsrNTVrKV2oxFcSwd5IXLuqvXqdqxuAbvY6HIZMD/OXgexzr7MOTyxcRFYjIpnV6EssMGAgA6\nLg5neggAwrvI9RsPYcjlQ3ESWtdSjDVutKaxGgE2iP0nLoPxK8+SbuvsB7OcxcCQR5U65MICA/66\n91Mc7ejTQiI5Bl/ZTbwbVwyhLOH4kjyp5jt8i9RklPAcTi+g00mGY1rb+3DX4us0jes48sIg9zjU\n2xWoYR/9gWBMViIXFwmFQvjyiukxNbL//KfDGPHmQe/FKErMFCwmilctSy6cEZZrjKMbeoixeFbF\nmOJGXBLKgZPixrjIRGFYoOdwZPUvlLWjkK7eEXT1jki+jjYQSS0gNFJHvEFVGreNN1xsMIhXth3H\n3mNdMUlSoVBINDlLaJF6dQMhr0zTajHCXlKAummlomVSDqcXHiaQM8lW6SIvXNZen7oZ1tQYlylC\nrqa9xy/HuK+LzTQoQ16siWJ4+M7r8fRX5qNpfpVoHExNGmaUS76mtIjG2pXTxxQ34nYvUrFqp8cH\ni0DTCm4StZcUCJa2qAEX07ZZaDTNr8KiWRUp+yyN5Ig3qErjtvGGa8vOTvx199mEkry9x/kT/Qgd\nsLx+guAilYu9fvveOlnjmVNTirc+OIO2M/2ir+O+95rGajTNr0LpqJRrsqWI+UJeWINhlWMNKtv3\nCF4fi95BT6Sgf8jFYDDFzekzARsMgiQI3LNsGvoGPRhwij+cctGNalzHQ+gAo4HArQ0TcODEFcHS\nqPpa/nIqMRg/i+6+EbCjCym5uxcdAKebXzmubpot4k60lxTgoozdbTKEEJYgnTy+CNt2nxVNtNHI\nDPEGtdhMo8RMi+rB63BV5z3acIntroWeiRCAlTdOklyk2q0mlIq4oWkDgZvrxgOALBd39PfOpMZ1\ntpEXBlmnkusvLURZlAJaD0shhWER8fhcZFJFETbvaEfL6R4MOJV9N6EYl5EiBZNXgiHg/dZuNM2v\nwr/8w8243D+C7YcuoOPiIBzOxM46coipj3QysFlozJhklZ2hzPcdbBYahQUGtJ3px/utl2C1UKKN\nA8aKzWLE1MpivPXBmTF1xNJQD9pAwB8ICt6TtIHE3Fp+RTkAIAjgxw/MR0VpIW+plNIcAtpAykqK\nlYonM/4ggsGQ4M6YaxhjtdCYMdmKVUunJBw/W9SyMkleGGSDPnUG2WqmMTTCQKfTgZWRRisWy6QN\nBIrNNLr7R7DjyEW0dfblnTEupEm8feBc0gag0m7mjT0LrfCj4RJkJlcU4et/N3NMrdb46iP3nric\ntPZ0iZnCrGk2fHj0qtKY0sWKUuprywDI39VrpJaJ5WY88eUGwc5lHPcsm4YPj3bxJvwFg8D2wxfw\n4B0zEv4mVttupEjeZyjcfvSsrJrfNY3Vo+WF/LHh1o5wEisfIQD1NWU4d8WJ/Scu4/Rod7hs67aU\nafLCIKcqUaW0yIinvzIfQyM+/MuWVlnNKygDCV+A3+dtLynAc68ezus6UILQKTIABj0Blr26Y7j3\n1qnY+v7ZqAJ+GiNev6L6Ym6lneyqWzyxhn/xRxsI3DDFhtZ2frfwoMuH/QJxvLFSZS/E9EklONrR\nnyB60N2vidFkmhIzhfqaMjSvCNe9Rncu41s0utw+0ez7AyevoOPCYIJBE9vF3jSzHAdP9vAaZbkN\nFkiCQEBkrh1y+QTd7bSBREvH1WcjW7stZZq8MMhza8rwn3vPqX7c+toyWEwUhlyM7E5Sbm8AS+dU\n4PAnvZGbnzYQKY0VZhNOTwA6j/wgfAFF4Ptfmj+a4JQYU/L5WazfeFjWsdQqlRBz/fn8LBbPqsDp\n84NwOL0oMYddcM0ravDW++Ldu/xsamrcPAyLe2+tDtchx7WgPHLqSpZUl197VJYV4r7GakyqsCQ0\nShGTjAzHkcXL/YQM2prGapgKKOw9dilmcba8vhIftvLrwPNlevN5lhg/i1PnhXsGWC005tQIudv5\n78Js67aUafLCIBfQyTUxEIJrbXbXkuvwh//6GB+fk9+4IhgCFl5fgeam6egd9AChEIrNNJ57VZ5R\nyVbk1mfTBh3MBZRsL4DTEwClJxIeyOhOTXIlJtUqlRBz/VktRqxdOR0AYiYtxs/iWIaSpgaiJlRu\nUt28o12LG2eQcdYCuL0+/K83j8FmodAwvTxmNyslGTljcgkOnOyR/Jx4g0YSBB5ZNRufu3Fiwv0p\nVfMrpSstFaOumViCpnlVQCiEtjMDkQXBjEkl2KtiL/J8Ji+c96QczUKZ1NeUYt2D8wEAT/x6H/ae\nuAyHwkxorpdvld2MqnILPEwg592GIQBmo5z1mw511WWyjyvU2YlTOQMgqW5ms1CqlkqIqXFxRj9e\n8Wdg2JvymLAQxYVUzDm8VpqYZDNXHJ6IV23A6cOOjy7ijfc6AMiTsLzhOpusz3GIqAJG359y7mmh\nLmab321Hd/8I3j7wmWDpPEEAHRcHse6Vg2g704+66lL889duwvOP3IT7V05HaY50W8o0ebFD7nF4\nVDmODkBrRz8+Obc/6T61hC4cR44mVY0E0o1LRkctXyCIpnlVIEdjyVLf2WQ0xOxq+Vbpc6pLUWk3\noauXv5vSrGmlaJpXhQAbUkWKElAuRi8mpi+EmHiIEq6rKIr5Wet3nJ3sO96Nu5dMwcUel6Rk5LTx\nRbx/j8dqobH90Hm0nemPPC9L5lTirkWJpUxi97TYIuGDo5ckeyEHg4h8p/5hBrtaukASuog7PZcE\nQMaSDDpW8sIgl1vH1huUg3PJjqVpfDCEBBdMMhJ0uYrNYoStyIjmplosvKEcz7/WIvr6EY8fTFQr\nOT5X3s4W8clgz7Fu7D7azdu6LdmHixNEuGfZNJCUAazPL/h+xs/iWIeyHWlJIYVv3D0TG/7cqkiH\nm4+jnX1Y98qBmBhkPiwA8w2vL4jv//se+ANXy4DisVqMMJsobH63XdYxTUZDjLHsH2bw191n4fb4\nEpKlou9pJZ3o5Gq0xxPtTs+FbkvpaAUpRV4YZDnlSOmCK22Kh7vxjpzqgUNlbeZsom6aLfKQy1Eh\nG3QxkQVMsq5W7vJHx+HWNFar8nDRBhL2skL0CuilM34WZ7uGFLurvX4WL21uVfQeMeJjkNfKAjDX\n8I86mYSmrPraMmzbfRb7BGKuHCShw9I54wXFXsSSpeKrDxg/C18gCKuFUjXswnU2G19aKLoYyBbS\n1QpSjLwwyOGLqwPjz7xhlhIpIVSMd2cjTfOvtv+zlxSAJCBawmGNiiGr5Wptbe8DywYTdg5jebj4\nxPqjDb7SpiRy6qqT4aNTPbhr8XWRBWDL6bCwiUZ2ohv9xza6Y1y1dArW/+GQ5PvYYAheJgCHgAGV\nkywVfw/TlPoGcsdHF7B25dWa6ejFQCZdw/FIxfXvWTYtLePIC4MMADodASDzTRp8ozdZ/IOgpINL\nrlJaFHZXR0MSBFgRn+yMSdbIw6iWq3XA6UVrh/KdAx9iYv3vHREW688Ugy5fTPN6bkdSQOsxNOKD\n0+3DhjeOZnqYGqOEAPxgzVxMrSwGbSDRI9G6MJpT5wcFd7VykqXi5yRukWikSDA+FjoB1TwltJ0Z\niAlJAdnhGo5HTivIqjSMIy+yrIdcDJgU7TiUwvcgXCtZr/EJGkMuBr6AeID0riXXRf6vVr/okkJa\nsIZzYFhZn1WlYv3ZQHTzem5HYjFRYQ31zDuRNOIYX1aYsCiVw9CIDzMm82djSyVLic1JhUY9nn1o\nAZbVV8oahxgDTi/Odg3FyN4KZXNv2dk55s9LFrHzns5M8LwwyGYTBcqgvivYaqbw4wfmQU/KP/bc\nmlJVNGZzDT2pwxduidWnLTbTKJLQye0fCrfO5Mo2Vi2dmtD95bZ5lZhQJj9xb25tmWAXJUogxs9H\nMmL92URrey8u9jhjJsOqcrOA1phGptgaJShDG0jUTSuV9T6bxYjmFTUJz8vfLZ0qmSwlNicNOBlQ\nBhLNTVePnew9owOw4c9H8dTv9uP3//UxehxuHDklXvKVCeSUhaWDvHBZb9t9NiXx4/rpdkyZUIxF\nM8uxu+2KrPfwjeJayHoNsCE8/9oRvPC1hZHf0QYSs6tt2NsmvJvcc7IbLR29o00cfBERhWcfXgCX\n2w+zyYC3PjiLy/3SpW1GisTNdeOxaukUfHiUPzM7oEAtK9cXUv3DDJ7eeBilUS5Bi4lCWYkRvYPq\n9RDXGBunzjli3LpN8ydKlhkBwMypVphoQ0KyVNWEEsEkRA6xOUkHYPuh82heUYvmplqsWjoFr/zt\nYxzrVN61jXN5Dzh92HfismiyWqZFQrIhEzznd8iMn0XLaWlFm2TgVoUP3HE9zAXy1i7HOvoTVnm0\ngYTJyK8mpmT3ne1097nx6tufxMSM77xpsuh79h+/gveOdEXiYJyIwv/+8CzKrSZs2/0pdrV0yYpl\nmWg97lk2DQPDjGDmPRsMhRXUZCDmxsolPfx4l+DjzfUZHpFGNFylAYetyCgopBHNnGlXBXiihUC8\nvkCMSEg8bDCItz44gxEvvxxwMATsar0UuV+27f5UljGuLCsM76Z1EBQQESOTIiGMn0V3vxu31I3H\n01+Zjxe/vhDPP3ITmptq0xrXzvkd8pCLSZlC0tGOftx7a3jl+j8fXYzn/3REUo86OtWfg/GzGPHw\njzGYRSVbavBhWzcoikRzUy0YPzvaOIISzAYVYt/xy7h7yRRFi63IxMZX4BmN1N9HEasfH2vtcCbg\nEtpKiwqS7lqloT6GuDCKXN0CY1xYhkuWajvTj16HRzBZSm6CaWt7H+5afJ3sZ9DrC2DmFCuOdgwk\nJXiTCZEQNhjEn9/rwN7jl6OS2ggsnj0eX7qtJq1jAWTukNvb29HU1ITXX38dANDd3Y21a9eiubkZ\n3/72t+HzhU/+X//6V9xzzz344he/iL/85S+pG3UUxWYaNot0P89k4FwoAEDp9Xju4Zvw028sxPWT\ni0Xft/1QbKOLIRcjaJDyzB4DAFpO92DTO6ex7pUDWL/xMDyM/GYTHF4fi08vKavv5SQk7VYTjBT/\nrW2kCNgVuMTWNFbjzsXXgRKISWcai8kAHQCaImCUKFuJllnM1u9zTRK3LmL8LJbXV2K+RILjB0dj\nm0VwhrbH4RFMllKSYDow7MXGtz+W/Qz2DzP48NhlxcbYaqZVlb5VwpadnXjvSFdMTojXF8TOI10Z\nSTKTfCrdbjf++Z//GYsWLYr87he/+AWam5uxefNmTJ48GVu3boXb7cavfvUrvPrqq9i0aRP+9Kc/\nYXBwMKWDB8KryYbp5Sk5drQLhQ0GsXlHOza80YpPzg1BrJx4T9tlbHrndMR1qyRzMl2UW2n805o5\nKTn2gNOHXS1dkSzKZHdiNK1X5PqaMr4oojNdVsyfBFZWXKCo5GnLzk4c/uQKfClq8TlWCF04b6GQ\n1mPRzHH48YMNggltVosRBbQeZ7uG4BxRvkjSSA1MIIghFxOZY9a9cgBPvXIQx86INys5fcERcUvL\n0ccGlOVFhAAc6xyQ/0WSoLjQgGceWiDbNRyv2T0WpBYnLad7055kJumypigKr7zyCl555ZXI7w4e\nPIhnn30WALB8+XJs3LgRU6ZMwezZs2GxWAAADQ0NaGlpQWNjY4qGfpU1jdUIhkLY29atam/kGZNK\nIv+Pd/OI7WyDIcRouWajdGYgEMJHp3tAqFBrGI8ax6QNBD44ekmudxkAsLoxXLzP+Fm4BeJjbq8/\noS5SiFyoHR8audrAYFfrJXR2DQs+Awa9Dj/+/QEMuzVjnE0YKRKUgcQf3z4Vk/Qk1a5zaMSPs11D\nmFpZLKuOttxqyroE06JCOqE1JR+pqF2WWpw4nEzak8wkDbJer4deH/syj8cDigqfxNLSUvT29qKv\nrw8229WaOJvNht7e9NTekgSB+1dMh98fkJ0NLYWRIrD3xGWcOu9AXXWZYq1iIFaEYtXSKdjT1p01\n5TIDTh8+PMrfH3WsyDXGpUU0jLQeXTxxeXtJAQ6cVHotw9tpsbyCAadP1kOWidpxi8mAyeUWnPxs\nIOly4Qs9LsG/XR5QpwmLhnx0unBHswKjHpd6R3ifDa+PxQ9/s1+yZp+PDX8+CpuFwpwau6BISFEh\nhQI6PIeLbQ5oA5H0hqa8hEbfEKN4IS53gZwKWctiM40SCy3Yzc8q0IkulYw5qSsksIUR+n00VqsJ\nev3Yg/gsG8Tvth1XzRgDV92sXOeSZHA4vSApA+xlhejuG8lYjV06WTq3AqfPDUl24NIBeObri7H9\nwGfo6v004e/9w8rKckqLKEy7rhRGSg+qQHzF7XD7UTWBEn3YuvtG0i456XT7ceKz1LoINdLLd+5r\nwOlzA3h732eir0vGGHNwIaKpE4p4DfKgy4cXNh3Bwlnj8dBdM/HY6nqYCigcONGNHocHBBFOUhRT\n1JOiZzC5Z8XhZCJzpBBeXwBtZ/izvNvO9OMb9xTASCkzZSwbxMa/nYTXJ+wtunluJaomlMT8zm63\nKPocpSRlkE0mE7xeL4xGI65cuYLy8nKUl5ejr+9qzKOnpwdz584VPY7Dwd9OTynpaMaejBvWajGC\n9fnR2+sE62dhs2SPqyhVdJwfRt20UsnrYSsyIujzY38bf72lh1G2eDEZKTiHPHACuNgjXoP50qYj\n0AGYYC/Ejx+cB0qf+BhcK9dLI3UQOmBCCY3X/js1nqh4hlwMltdPwMnPHAkL4h6HJ6YL1Kol18Hp\n8qLH4YlUDAQysF+IniM54jWuexxu9Aos8PsGPTjzWb9it7KYzTBSJBbPrsBdiybFjMtut0jWd8tB\nzKgn5XxfvHgxtm/fDgB45513sHTpUsyZMwfHjx/H8PAwRkZG0NLSgvnz5yc3YgWky7WYTEw0Oo1f\nLVnIVLDwhnGgBbKSlXLF4cadCyejaX6VaNZvfW0ZPExANeENzvUFQFYRZAhAV+8Ivv+rfbw7g2y+\nXhq5QaXdDDYYStuibsDJYOWNk/Cz7yyDVcD7wyV4MX5WcNeZTqLnSDYYxKbtp/Cj3+7HD397AOte\nOYDNO9phNhlUlbUUsxklhRRe+h+LcP+K6RnR1Zb8xBMnTmDt2rX4j//4D7z22mtYu3YtHnvsMWzb\ntg3Nzc0YHBzEqlWrYDQa8b3vfQ8PP/wwvvrVr+LRRx+NJHilknSpKdksFBbeUA6bRfrilxbxp/Gv\naawelaLLnoxrykDgwc/NwE++vlAVsYtQKOzuvWfZtEjcig9fIADKQKJEpRhN//BVcQV7SYHssh6X\nJ4DX3+HvPctdr3JrAXS6cIyNy2Cm9YQmQZlB7l9Rg+ceWpDpYQiiA/DdNXOwbc/ZtH1mKAT89/5P\n4XT7MCig187pJAy5mKzw/ty1JCy3ywaDeO7Vj7Cr9VJEh56LE2/b/amqspZiNmPY7UuqTFMtJF3W\ns2bNwqZNmxJ+/8c//jHhd3fccQfuuOMOdUYmk3RlDboZFgc/7gFlIEDpCdGYzze/MAtTxyfWKkf3\nBN20/bQe7ovVAAAgAElEQVRkz9N0sHjWONAGEkMuBiEVEtQJHTC+zIRN208LJksAwIdHL+PQxz2S\nJVFS7Ruj2X74ApqbaqAndbCXGNHVKy8k0trei/tuq0l4sEmCwJrGalCUHvvawhMFbSBAEOFSFY3M\noSd1KKD1iu6PdBIC8PLrLbgskUuhNrvbruB8zwhoEeGXHR9dwOrGGpSYKcEmLOnijXfb8fW/m4nN\nOzoEExJb2/vw7MM3Rv4/VllLMZuRSbUwIA+UulJdUsQ98Fx2tJwsRIoU353RBhJfvXMGLvS4RLNi\nU42e1OG+UTUatRY2lXYz3j5wXtZiQ059spKyp10tXZH6cLnGGAgnUwllXsdnd6pZVqeRPK/+33bF\nPajTiZEi0m6MOc5dFp9T2s4MYHUjUF9TJqqZPZasa7mcOu+A0+3D0XbhmuuBYS9cbl+CZneyql5i\nNsNk1GdUzjgv5Ho41yLnTlbzdCpdfZMEZClBBdiQYK1sugiwIWx5L6xGo0bMtNJeiO9/qV5VbXGl\nsfs9bZewp01ZEk2xmeJ1r6cqP0FivaYhk2w1xgAQVNDEJN1wbuvmFbWYWG7mfc3CG8phovn199Vk\naMSHiz0uQRc7EH4+uV0rbSBRbKYjinNCSAmIrGmsRpU9MbP7Qo8ro20gc36HDMS6godcDEhChyd+\nuz8jesN6mbPtwLA3K2I4rR19WN0YrgPk3D8tp3sVl/zodMA//P1seLz+lGmLyyHc9UvZZDjo8uG5\nVw8nCA2onZ+gAzCnphRHOzKTTPPoqpmonWRFZ9cQfvnW8YyM4Vpg/owyfHRKXGUr0/xt76d48HPX\n46kHGvD8n47gUl+4RjoccgobKoeCvuHJQukJGAw6wRpqILyTpw2kLHEQua/Z/G47LvXx9yWI1o9I\nN3lhkDm4jicXe5wZE//3j8rgSaXhx+tdZ4oh11WhjAAbQtO8Kty1+DrFk7ZttIje52dTov6VaviE\nBswmSjQWp5QQkDFjDAD/ufczrK+148TZzGfX5jO5kOx34OMedFwcgsloiGmYEwyFqw/4xHpSAeMP\n4sVNrYIVGRPLzWheEX4e5YiDyH2NmKs+k20g88ogR0im95dKyEkKCJccZIcAhK3ICLOJwuYd7TGr\nyupK8QYa8cyYZI0kh2XaGBtIAv4kM32iV8fbdp/Nq45IF3tH8Nr2Uzj0sXoCOhqJtF8YyvQQZNE/\nnB2Z1gCiOi2RYPwsSgppzK0tQ3NTDUiCkNDq7sUtdeNRbKZF9bzvWTYNbDCEPQLaBxyZTOzKS4Ns\nLylIS0ICH3LS8IdcTMazGznqptmwbffZhFVl/7D8OLCRIvGl0VVssZnOaPYmbSCw4Ho79iSp2sat\njsUe7lzm4Mkr8AVyx31hNVNwuHywmAxg2SDcCgVjMgGnL55J6mvLcKyjL+OLY6UUGvV48v4G2Ed7\nO3OIhY/6hxk8vfEwrGZa0M3OPdd/2/uZ5CI7E20gOfIyvYQ2kLBb+bv9yMFIkSB0QGmRUTDpIRrd\n6GvlthBLZctIuXDZyMc6+xQnQcVzc914mOK0cjPFkrrxoAzJrzO51XG66tvTTS4Z40q7CXNr7bCa\nabjcfsEuVvkIpRf38lF68XPxWbczIy7XsdI/zIAa7dgWjZyOeWIxb67T2anzDtFjVNkLce+tU+UP\nWGXycofM+Fm4PcpXqUaKxM1149E0rxKdF4cxfVIJSiw0Nu/owAetXbyrTZuFxndWzxndlctbVdEG\nEoUFwkkM6YD7LsmMochEwenxwSZQC3jPsmk4ePIK3BIF9tyihG8MBj0Bv8Ja31vmjsff3zINT//+\ngKL3RVNTVQQgffXtuQKl16XdmOugi9GRd7gyv/NMB/Onl+Gj0+JJYVLa15wGAKdTnSsQOvBWPIy1\nvFWuMuDF3hFsff9s0g0rxkpeGuQhFwOHQkNTYTPhe1+qxy/+cgw7j1xEMIQYvWOEQryJAA3T7aiy\nS++iORg/i16HGyMZLnlKFp0OeKJ5LkiSSKgF5DIcW073SBpjAJhTY4fPx2IvT82yUmMMADfNGCfa\n6Skam4VGYYEBIx5fzOsPfNyDo539WDK7AnNryvDekeQai2QrxiST1L67ug4b/nwsrZO7UBZsPlNV\nXoiz3WPXS+bIJWMMhDcKHibA25KRW/i3tvdhwOkV1SgoMVMYHvHFCIgE2JCsRXYms6x1ITltmVKE\nGkLd0XCi5AW0Ho//ep/iGLK5QA+XJ9GQmAv0+J+PLsbW98/yKsXI0TyNTsfP9V0XZSCwtG487rut\nJua7K2nyUWErgM/PYsDpU01tacM3F2Hb7rPYe0I8flxipvCD++Zi0OXD/pOXsec4v4hJ47xKsGwI\nHxwVTwLJRkw0gfrp5Th5dgBDLh9sReH71edn8eEx5SGKAoqEJ0tah2pkH3oCUEO8zmah8cLXF4oa\nQ8bPonfQg5+/eZR38V1aZMTTX5kPDxNI2DRseue0ZPc+Qge8+PWFCS7/dDSXyIsdcnztWYmFTiqh\ni88Yc79/Y0cnHrxjRtJKMbnQ7F4uPn8Q7x3pgk6ni7h2GD+rSBAkujevWtKHv/vPE+i4JP3ADLp8\nWPf7Q5LVykc7+vCtL8xSzSCnM9HQ6w+igNLj+UcWwuX2Re7Xk2f7kzLImTDGQuVztIEAdACTRxnw\nyWI10xh0MdBlsNTQSJGq9XlvmG6XnFdpA4kquxkN08t559T62jJYTBTvLrtpXpWkQS4upEV1+FMJ\n+cwzzzyTkU8G4HarE0P983sd2PHRxUjLPrVujmgcTi+WN1SNxn8NsgVAGD+Ly/0j2Lb7U8UtBdOJ\nkSIQUKguNOj0Yll9JfQkgYFhL/62T15tdaqK0tSOyXuYsMflikoSiHpSBzZNs2YoBJy9NAxfgMXC\nmRWR+7WA1mP7wfNpGcNYqSo3Y3gk8Zoub6jEP62ei5tuGIdPPhuAy5u5ZgCZpLTIiPVfXYBlcyfA\nwwRwPkMyvErnDT5sFhpL6sZjTWM1CJ6yVcbPYmDYi2AohN5BD/qGPZhcYQFB6OAc8YPxBWArMmLJ\n7ArBYwAAZSCx46MLos+h18fi8CdX0DfkxQ3XWSPHKiykVbFZhYXCyWk5v0NOV/vF4RFhvWM+csVF\nXTqqZBMMhbBTYbx0wHlVVKSA1ssWBMmdPF/gmIr14ow/iHHWAtUMvBzi42EWE4XyEiOuDHrTNgal\n2Cw0Gqbbce+tU0XDRMWFFHoG1TuX2ayNzUf0TvCm68cJhl7kQOiAilITuvvcaT8HC28Yhwc/N4N3\nZxydl8K34KYNOiycWYHbF0yCrcgoz2sp4wvyCYqkg5w3yOksT/m3/30cP2iuh8ebGJuIJ1dc1N++\ntw5V5RawwSBCIQhmk/PBZURyD02u1TxmgnQaY4BfdahqnDlrDbJOB3xn9ZxIoqRYQ4GLPS7V77m5\n00pxNAv6BEuxvH4C1jRWR5JE9aPtQJM9HcEQcKlPfkMWtZhYbsbDn78+kovidIe1ravKzbCYKMl5\nlPGH8MHRbhj0pKThDPdbPq2oU1u6E7xy3iCnszzlYu8I/umXexAMglcjlSNdu/axYjVTkUYYJEFg\n5YKJkvGVaLiMyL/t+ywrWklqJGK1hOVMGT8LPanD5nfb0SJRUpNJbBYj7CWxGgKcJG48VeVmVWVa\nbUVGFJlTpw9QYSuAhwmoIhxyc914vPFeB/Yd75adNS/VNjadUAYCS2ZVoHlFLUiCgC8QwAuvtaCr\n1xXR1J5QVogRjzwXccvpXknDuWVnp+J5Kt0ymjlvkFPdfjEeLgFJzKWRLY0jpJg3ozzmBi420yhV\nsLixFdFwef2qdnfSUJcRrx/rNx6GrYiGyWjIaLtPOShRSbKYKFTazYq/k1BNdd00G1o7UrdYuTLg\nUc0d/MJrRxQvRLLFGAOA2ajH6sarVRovvNYScx2DIcRobEvhcDKihjPZTZJ1VKM/XeSF9A3XfrG0\nyJh2YffW9r5Iiy/Gz+JijxPb9pxN8yiUoQNw08xyrFo6Jeb3SlW2hlwMXvjTkTElU+kAVJYVwmqh\noUPYyJeXGJM+nkYsXl8QIYQXkEoNl5EioNMhaYUsJZLySpTuonnqgQZZanrRTJtQHJkviCiVvab5\nE1Mq+aqmdz3Xw0Nc/gkQdlN39Y5toShlOKVCm4TAvWoyGtJaj5zzO2Qgtv1iV68TL25qSdsN63CG\ne4u+13JRkfsoU9wwuQTdAx4cOtmDzgtDCW736OL7/mHxOKMa5UohAF19I6D0OoQABFkWVRXF6MnS\nGOe1wDhrAZ58YB4ofbhZiNlkwJu7OvHhUWXlUnJjmhPKC/DjtTcKTnycvgBf3gal1+PZh25Ej8ON\nH/5WnkLbpQE3/vGLcxJi02I9eTXUhdABLk+4HE+NXICaiSWif5cKbQp9vsvtw8VeV0IYJVXkRdkT\nh54Myy2+m8ZkqhIzDafXh/dbL6mS/p9qeoe8kbIwD8Pi7KVheJgAZk8tBQAQOh1qJ5ZgxqQStHX2\nwyvSBFxNOOPu9QfR3Z/exCeNWEa8AQTYIOpr7CgsMMCgJ0HrScXxN7lPQ8AfxMqbJieUErLBIP78\nXgc2v9uO/9p3DvtPXk4oReG4MuiWXV/t87O4efZ4FBfSMSWM//877Vnv0lcTE61HUSEFxhcATZFp\nnb9CAD481o0DJy/DxwZx4YqL934hdMD8GXbJhLOu3hG8d+QCHC4GM6fYEu4PPUmgb8iLs5eGFY3T\n62PxfmsX9p+8jN5BD2qqigRLquSS12VP8XCNG5S6Ua1mGnNrStF2pl9R/NfhYrBb4c6BD9pAQE8S\nGMlATSWXSagndTECK9m/vNBIFfHZpWonUEXj8fH3EJfT25ZDSaWFjce9yfhZfHxOvPFAOqD0OhQa\nDXCkoVua1xfAsw8tABsMwWyi8NYHZ7DveHdau+T1DzP48Gi3oEpipd2Mh/6/G3D20gHJednrC2Ln\nkS4QUYJF0axprIbbG0hqYdk/zOCvu8/C7fGltAwqL2LI0dAGEg3TyxW/79G/n4m1K2cIxlBpke4q\ncucoMYXNQqMBL31zESps6XGNRMNlEnITYH+SxthmoTB/RuY6PWnIQ876nrsnOLgEqlRAGwheAynW\n25aJ89xYCuTvLbiM82iGXAwGnZl3Wd94wzh8d83ctHxWMAScPj8Is8mAbbvPoq2zD4w/CH0GOg/6\nA2zC/FhVXoinHmhQnNvScro35v5g/Cx6HG4E2BDWrpyOUomuUWLw3XtqkncGGQivhG6bVwkjdfXO\nkmpXxrXsi04Q4xI+lsyqUFS7Fo/NQmHJrAo8tXae4GsGXQxcbj/WPbhAMMEgVXCtycZaqmUqMOCj\nU+LHEFvYaKSHG28YJ/kavibtTz3QgKrywpjfEQRQWTa2kpDZ02wJsWGxJJz4xQIAFBbIL1dyeQLY\nvKMj5ndy2vvJwWqmQOgAmUJ+Cdx4/TjYSwoEjYacuUHJ/PH7//4E3//VvshCHAACMu2NWWARFD3v\nyoXxhxIaYcyYZAWlT5yXpb4el3HNBoPYvKMd6145gB/99gDWvXIAb31wBnNryhSP7+qxE+89Nck7\nlzUQTvLS6XQxEppiKf9GiowE7aMTxLiEDwA40t6blCTnklkVuH/ldNAGEoyfFXSnR0+AOp0Ooq1M\nVEZuazKOkkID6qeXo62zP6KgVDfNJssVtHB2BQ6evJyS5LcKWwGuv86mqJb6WqO4kMLalbWwmAyi\niXt85UeUXo/nHroJTrcPn3YPw1ygR6XdEgl17GnrTuoZMRcYEscpkoTDt1iwlxQoahF5tL0Pq5dX\nR74jbSBRV102pntnYrkZT66dF25wYzRgw+YWRaU7hA6YPM4iWsq5rL4Sy+dOwL9ubeM9N6VFRsy/\nvlyRPGqyUsMGksDyhsqYeWD6pBLsF5kHSgopDPLIofIRHTaJnpd7HW78y1/aIi0m4+EyroVCHo3z\nKtE0v0r0fhUKz/Dde2qSlwZZac3ZktkVCZNPtBhB2EWh3EDeWj8eX14xHSRBgA0G8dYHZ+AW0LPm\nJsCLva4x6R3rdOF4uKlAj75Bj6jh4/o/K2lNBgDDbj9WLpiI1curI4uW3kEPb3vKaBbPqsD9K2ph\nIAnV68YJHfDMQwsQYEPYf+KyokmmqrwQF3uujVZ/DbVlMNGGyOQ2MOzFjiMXYyZVvh7X0VhMFOqm\nxe4ymptqsWrpVLzxbjtOnXfA4WRgtRgxc0oJPjwmvlA72tGPNY1szDMoZpT4Fgu0gcTSORNkt8sc\nHEmsW5XTeECIKnvYvUrpr84bzz08uni5NAyLyQBrkRHf/9VewTj8hLLCSEOE6GoHPtlQsXPzzXvm\ngGWDkfcWF1Lws0G4vQFVcwAGXb6EeQAATp93CC4W6qpLZZ9jPlEO2kCiqtyCedOFtScapofd20I2\n4FhHP55/5CY0za/CD3/Dn5kvdJ6U1MknQ14aZCVymkaKxBdumSZ5PKU7Op0OuOPGyZFyIiEJuGij\nCEDWzlhoA20vMeIf7qmDvaTgqipTey+GRvwxKz4dwv2ff7S2HuaC8ENEEpAtsMKtEmMUlCTGbSnQ\nRyaTmL6mw17QFIlQKDSmZJIlMytA6fXoGXCKGuOFM8eh48JQzCQXCAavCYM8sdyM5hVXE1JoA4nx\npYVYe/t0MMuFS4vkYqL1ePjzN8SUKfUOeiQN8pDLx5vUJWaU+LjvthoAwJ7j3ZKdoGw8Ox1bkVGR\nME40X/+7mRH3ajQWE4W66vDihfGzoAzC/ah/0NwQ+T+fpy76uogabDL2veEY8ac4cuoKHC71+rBz\nO9F4JTWxxUJ4DtCFE0edDKwWGm6vn/eciO1G1zRWIxQKYe/xq4tvI0Vi8Whzif4hr2TI41//0ib5\nHY0UCZ+fhdVixJI5E3DXokmS7xkLeWmQlchpen0sXG4fTCLttpQqWAHhXSp3M4nt2AuNetyzbFrE\ncNutJskm8kK2b9HsCREN4M072mN2rNErvhCA7gE3/rr3XEzGYPxDThn426rxrRKl3DhOTwDPvXo4\nUvfMFxYYGPbiP3d/ikOnlCt/LWuYgM072kU9I6VFRjx4xwwAiPncda/Iq19NFQQAtR34E8pMYHxB\nDDi9KCmkMbe2DM1NNYK9u4XkKZNByUINCBtCvvtHyijxvf7LK6bj3lur0TvoARsM4g//9Qmv21ho\nly1kTCRlJ2V8T6mFvcfrhyXOfS90XeScG+69SvqUK0GoVaKchVQoFAqfslAI9hITb7mZ2G40/loj\nFILdaoq8XirkQRI6XHFIa3cXGvV48v4G2K0mVE0oUaUfshh5aZCVyGlaTAZJY5KMPOeMydbIzSGe\noBLrOqMNJBbPHi/aeam0iEbdtFK0nRmIueEfumsmBgZGZLvs40tbAmwITfOqcNfi6+BhApGVtZwd\nioeRLteKL1uJn2zGlxbiy7fX4vQFh2K9370nrki6wqIfcO5zexzutDUnEaLYQmP2NBsm2c14/d0O\n6Tcg3IKw8+IQ70RmLgiLZQTY0Jh3vWMlPEnqwPiFDdasqYlJXdEoXSxw/XIBYP1XF2Dzjg4cbe/D\n4AgDm8QuW8iYBNgg3hcIyRgpMqIJL0YBrRcUS9GN/l0pUudGSfiO2w0KLcSjX8ftRPkQWyzELw4G\nnD4MOH2YWG6G2xuQ5QmJF4qp4sn+lwp59Dg8stz3DicDykBqzSXGCncxW0ZraoWorymVdbIjxzsd\ndrWIYaRINK+oifysNEHlS7fVgNDpsPvYJV43bn2tHc1NtQk3Jjma2inXZT8wHHbdlBYbY+qPoxtn\nRD9YBbQeHiaAABtKyCJVUv/N10Elul1lMuL7+9qEa8G5dn58D3g6m5MI4XCGazGXN1SCNhCSrvtl\ncyeguakGbDDIK8i/7sF5IAkCJIG0ieILQRtIzLzOhpYO4Q5K8xWUtCiFJAisvX16TJxTapfNZ0zY\nYBCdXUO8oY3FPDkofHiYgGAmSmj071wMWS2k5gKdDpFFyqqlU+Fy+2A2Udi2O7btZV11KW6ZMwGk\nDjE7UTHiFwtiiwO3N4CnvzIfHka4k170HBE/T3GeH25OLKD1WF5fCZYNJmxcuHpkOXX1qU7iiidv\nDXL0g/XcHw+jeyDRPWEu0GPtyhmRn8Uk+rjj3TJnAtb/4ZBoitfNdeNhoq+6npQmqHCfxZckE71y\nFFodyzUyxWZKNBsRCO9k9aQOO45cFH0QuPpvOV4EvmSNsbSrNOghWJYW384vnnQ0J7EV0UAoJLlY\naevsx6JZ4/B+q/DiYkKZKeJ2JwkCzz50Y0LLumzj/pUz0NKxl/dvhA6YVGFJ+RiS2WVHv54kCKz/\nyoLRvIw+DI34RBd6fIj1DOdamaqN2Fxgs9D4zuo5sJcUROYgLnSnJFQgF6lSNg8TEL1GYvPUmsbq\nmP7z3Hm2WSjMqbGjaV5VTL9kuY1JUp3EFU/eGmQO2kBi/UPzRXcSclZeHPaSAsEbnNCFyxL4HlCl\nCSoAf5KM3JWpHCNTP1qPJybAcM+yaXjrgzOyFJPik7V0MksHxFbOcvSQw1J2/K+yWWhJHVq+a1NX\nbUPHRf4dUeLnhz+dFnD1NYzuAKWuh8PpxYr5k0AQBPbyJCZV2cP3bDwWE4Xrr7NJjjNTlJhpTCzn\nn/wq7dm5iOCDJAisXTkDqxuTS4DzMMJZzlwrU7XPhdhc0DDdLrhQ5d6rpodFqacwGimhGDYYiglZ\nced5wOnDrpYukESietdTDzTE2AUAIAkdgqGQZGgjVeS9QQauCtAL7SSUSPSJ1gjOnYC1t0/nHYPS\nBJX4z1T6YHA3klCtHZdxK5WN2OtwSxps7nvEf8fthy/wxnWjV52Mn8XZriHB3byUMb7x+nIc+kQ4\nCWzGJKvkeea7Nm99cEZ25vWyuROw8sZJsmLuYiEPq8UIW5ER96+Yji/eWo1ehxsj3gAYH4spE4py\nxnDxET/5ETrguvFFeLw5PapUapKsoRJLDi0tSl2bv2Q2A6lAqacwGrHd9cCwF0fbxdtm8oXJ+OwC\nZSAzmndxTRhkDr6dhNTKi6/p9VhucLVWnVK7Zj6394CTSci4lVq1QqeTNNiUgYwZB/cdw5+h4z1P\n8V4JMVee0K7ilrnj8aXbanFGwKAbKRJfWiFfd5Ybt9g9YdDrYCkwYNDlS6gNBcRdfdzfXt9+Gnt5\nxBOiJyWu3jJf4Jv8pk4uTXnWajYhbpD4M5bVYCybAbVJdu4Um6eKzZRkpy6+MBlHvF3IZN7FNWWQ\n+ZAj0Rd/gTJ5g4u51/mQcntLrVrFXPSUgcS/bm0TdPMrybYUqhoRivNMLDdj7e3TRUUSwrF85be4\n2D3BsiF854tzEhYh0YgtumgDia/cOQMFRn3GdyyZINvd66kmk7tVtV3QyZDs3Ck6T9WUSTYFSndy\nVrJckwY52jiNJa6RiRtczL3+7S8Ja2WLjTVZVSCvj424w6Xc/HKzLTlsFgoN08tx761TsfX9cMan\nUE2t2pOc1D0hN8tUiGzasWikF+3ahxlLGI5fDEU8KTTdyVnJck0ZZKHd5ZyaMt6632y7iFLuda8v\nudaNSlWBSsw03EyANzYt5OaPRk5ZlsloiBh2obFFL6zUnOTGEutS+jmZ3rGkE8bPxog4XMtca9de\nDcTmqatzVHyWtbJM+ExzTRlkod3lbaNi49nuQpRyrzuGmTFdULmqQL5AEOv/cEhwHEKxGg45ZVmX\n+kbgdPsiiUzRYxNz26s1yWVLIkw+wAaD+PN7HXEyhwSabpyMuxdPTqhk0NAQg2+eip+jOM2EXPNA\nXDMGWWx3eXRUbDzb3UhSrlRrEQ3nkCdlnx+d9JSsm587jlRZVjAEXOxx8cYblWTFJ0v0A05SBrA+\nf1beE7nAlp2dCU0fvL4g/mvPp/B6/Slt+K5xbRFtrHOxKuGaWZrKSd7iLma2TrycIeOjvrYMRipx\nfcU151azqbbUOOQqny2bO0Hw74QOqCpPrJFU2rh+rNAGEuPLCrP2nsh2pPIF4pvJa2hcy1wzO+Sx\nJG9lE3JdqUJu3VVLp8Dl9o/ZCzBWly5JEHjwjhno7BpCF4/4v5BgRDJZ8ZlGqbBLPiGVLxCv5a6R\nfq7l+zPbuGYMcroSdVKN3CxNIbfunrZuMD5WVI1MzXFI8eMH5yUIRlTazXjqgQbe1+fSwkqJAly+\nIpUvwLXw00g/2v2ZfVwzBhnIr0QdsSxNMTehnDIltcYhBykVNb7Py5WFVTpi3dmOVL6AUAs/jdSj\n3Z/ZxzVlkK+VGkC53Z4AeWVK6UCJYEQuLKySUYDLV4SayTfdOAl3L56c4dFdm2j3Z3ZyTRlkjnyv\nAVTSUjBb465i5MLCKhdj3alCqJl8Ohq+a/Cj3Z/ZiRYoyEPEsqDjyba4qxKyOSueWxTxkcvnfCxw\nzeSryi1Zec2uJbT7MzvRDHKesqaxGk3zq1BaZAShC7sI+ci2uGu+oEZpmIZGqtDuz+zkmnRZXwvE\nu3XNJgrbdp/N6rhrvpELsW6Naxft/sw+dKGQUJ+d1KPFj9TFbrdInlOt5lA5cs6rGNo552es51WD\nH6XnVbs/5aHW/Wq3C7dVVX2H/OKLL+LYsWPQ6XR48sknUVdXp/ZHaIyBfE9oy0a0c66RzWj3Z/ag\nqkE+dOgQzp07hy1btuDMmTN48sknsWXLFjU/QkNDQ0NDIy9RNalr//79aGpqAgBMmzYNQ0NDcLkS\nm8traGhoaGhoxKKqQe7r64PVao38bLPZ0Nsr3oheQ0NDQ0NDI8VZ1lL5YlarCXq9lkSgJmIJAxrJ\no53X1KCd19SgndfUkOrzqqpBLi8vR19fX+Tnnp4e2O3CAhUOh1vNj7/m0bJWU4N2XlODdl5Tg3Ze\nU0M6sqxVdVkvWbIE27dvBwCcPHkS5eXlMJsTe9pqaGhoaGhoxKLqDrmhoQEzZ87EfffdB51Oh/Xr\n16t5eA0NDQ0NjbxF9Rjy97//fbUPqaGhoaGhkfdkVKlLQ0NDQ0NDI4zWXEJDQ0NDQyML0AyyhoaG\nhmy1KxQAAAT9SURBVIZGFqAZZA0NDQ0NjSxAM8gaGhoaGhpZgGaQNTQ0NDQ0sgDNIGtoaGhoaGQB\nKdWy1kgNHo8HP/zhD9Hf3w+GYfCtb30Ly5cvBwDs3r0bX/va13D69OkMjzL34DuvN998M374wx/i\n3LlzKCwsxC9+8QsUFxdneqg5B9+5NZvN+NnPfga9Xg+TyYSXX35ZO7dJ4vV68fnPfx7f+ta3sGjR\nIjz++ONgWRZ2ux0bNmwARVGZHmJOEn9ef/SjHyEQCECv12PDhg2i0tDJoO2Qc5Bdu3Zh1qxZeP31\n1/Hzn/8cP/3pTwEADMPgd7/7neo3ybUC33l98803YbVasXXrVtx555346KOPMj3MnITv3P7kJz/B\nCy+8gE2bNqG+vl7rnT4Gfv3rX0cWM7/4xS/Q3NyMzZs3Y/Lkydi6dWuGR5e7RJ/Xn//851i9ejVe\nf/11rFixAn/84x9V/zxth5yD3HnnnZH/d3d3Y9y4cQCA3/zmN2hubsaGDRsyNbSchu+87tq1C//4\nj/8IAFizZk2mhpbz8J1bg8GAwcFBAMDQ0BCmTp2aqeHlNGfOnEFnZyduvfVWAMDBgwfx7LPPAgCW\nL1+OjRs3orm5OYMjzE3iz+v69etB0zQAwGq14uTJk6p/pmaQc5j77rsPly9fxm9+8xt8+umnOHXq\nFL797W9rBnmMRJ/X7373u/jwww+xYcMGlJWVYf369SgpKcn0EHOW6HNrMBhw//33o6ioCMXFxfje\n976X6eHlJC+99BJ+/OMfY9u2bQDC4QHORV1aWqr1pE+S+PNqMpkAACzLYvPmzXj00UdV/0zNIOcw\nf/7zn/HJJ5/gBz/4AcaPH49169Zlekh5QfR5DQaDmDJlCh577DH8+7//O37729/iiSeeyPQQc5bo\nc2uz2fBv//ZvmDdvHl566SVs3rwZDzzwQKaHmFNs27YNc+fOxcSJE3n/rikjJ4fQeWVZFo8//jgW\nLlyIRYsWqf65mkHOQU6cOIHS0lKMHz8e119/PUZGRtDZ2Rlp7NHT04P7778fr7/+eoZHmlvEn1eW\nZUEQBBYsWAAAuPnmm/HLX/4yw6PMTfjO7cGDBzFv3jwAwOLFi/G3v/0tw6PMPd5//31cuHAB77//\nPi5fvgyKomAymeD1emE0GnHlyhWUl5dnepg5B995raiowLZt2zB58mQ89thjKflczSDnIB999BG6\nurrw1FNPoa+vD8FgEDt37gRBhHP0GhsbNWOcBPHn1e1247777sPu3btxzz334OTJk5gyZUqmh5mT\n8J3bmpoadHZ2orq6GsePH8fkyZMzPcyc4+c//3nk/7/85S9RWVmJ1tZWbN++HXfffTfeeecdLF26\nNIMjzE34zmtfXx8MBkMkpyQVaN2echCv14unnnoK3d3d8Hq9eOyxx9DY2Bj5e2NjI3bu3JnBEeYm\nfOd10aJFeOKJJ9Db2wuTyYSXXnoJZWVlmR5qzsF3bktKSvDyyy/DYDCguLgYL774IoqKijI91JyF\nMxw333wznnjiCTAMgwkTJuAnP/kJDAZDpoeXs3Dn9c033wTDMDCbzQCAadOm4ZlnnlH1szSDrKGh\noaGhkQVodcgaGhoaGhpZgGaQNTQ0NDQ0sgDNIGtoaGhoaGQBmkHW0NDQ0NDIAjSDrKGhoaGhkQVo\nBllDQ0NDQyML0AyyhoaGhoZGFqAZZA0NDQ0NjSzg/wHS+wB0VTbbVgAAAABJRU5ErkJggg==\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "6N0p91k2iFCP",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "**Try creating some synthetic features that do a better job with latitude.**\n",
+ "\n",
+ "For example, you could have a feature that maps `latitude` to a value of `|latitude - 38|`, and call this `distance_from_san_francisco`.\n",
+ "\n",
+ "Or you could break the space into 10 different buckets. `latitude_32_to_33`, `latitude_33_to_34`, etc., each showing a value of `1.0` if `latitude` is within that bucket range and a value of `0.0` otherwise.\n",
+ "\n",
+ "Use the correlation matrix to help guide development, and then add them to your model if you find something that looks good.\n",
+ "\n",
+ "What's the best validation performance you can get?"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "wduJ2B28yMFl",
+ "colab_type": "code",
+ "cellView": "form",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 640
+ },
+ "outputId": "26cef08b-62bb-4a51-e818-64a10fe4dbed"
+ },
+ "cell_type": "code",
+ "source": [
+ "#\n",
+ "# YOUR CODE HERE: Train on a new data set that includes synthetic features based on latitude.\n",
+ "#First create a seperate feature function which will add a feature for each set of latitudes (Binning) and add 1 if the house exists for the latitude and 0 if the house doesn't exists in the given latitude and longitude\n",
+ "def new_features_for_training(prev_df):\n",
+ " new_df = pd.DataFrame()\n",
+ " new_df[\"median_income\"]=prev_df[\"median_income\"]\n",
+ " latitude_sets = zip(range(32,44),range(33,45))\n",
+ " for i in latitude_sets:\n",
+ " new_df[\"latitude_%d_to_%d\" %i] = prev_df[\"latitude\"].apply(lambda l: 1.0 if l>= i[0] and l < i[1] else 0.0) \n",
+ " return new_df\n",
+ "\n",
+ "new_df_training = new_features_for_training(training_examples)\n",
+ "new_df_validation = new_features_for_training(validation_examples)\n",
+ "\n",
+ "train = train_model(learning_rate = 0.01,\n",
+ " steps = 500,\n",
+ " batch_size=500,\n",
+ " training_examples=new_df_training,\n",
+ " training_targets=training_targets,\n",
+ " validation_examples=new_df_validation,\n",
+ " validation_targets=validation_targets)\n",
+ "\n"
+ ],
+ "execution_count": 23,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 226.33\n",
+ " period 01 : 216.09\n",
+ " period 02 : 205.94\n",
+ " period 03 : 195.90\n",
+ " period 04 : 185.97\n",
+ " period 05 : 176.17\n",
+ " period 06 : 166.54\n",
+ " period 07 : 157.10\n",
+ " period 08 : 147.88\n",
+ " period 09 : 138.93\n",
+ "Model training finished.\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "pZa8miwu6_tQ",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below for a solution."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "PzABdyjq7IZU",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Aside from `latitude`, we'll also keep `median_income`, to compare with the previous results.\n",
+ "\n",
+ "We decided to bucketize the latitude. This is fairly straightforward in Pandas using `Series.apply`."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "xdVF8siZ7Lup",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def select_and_transform_features(source_df):\n",
+ " LATITUDE_RANGES = zip(range(32, 44), range(33, 45))\n",
+ " selected_examples = pd.DataFrame()\n",
+ " selected_examples[\"median_income\"] = source_df[\"median_income\"]\n",
+ " for r in LATITUDE_RANGES:\n",
+ " selected_examples[\"latitude_%d_to_%d\" % r] = source_df[\"latitude\"].apply(\n",
+ " lambda l: 1.0 if l >= r[0] and l < r[1] else 0.0)\n",
+ " return selected_examples\n",
+ "\n",
+ "selected_training_examples = select_and_transform_features(training_examples)\n",
+ "selected_validation_examples = select_and_transform_features(validation_examples)"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "U4iAdY6t7Pkh",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 2268
+ },
+ "outputId": "f225d61c-0e4a-44f6-e505-2ca13d766e35"
+ },
+ "cell_type": "code",
+ "source": [
+ "_ = train_model(\n",
+ " learning_rate=0.01,\n",
+ " steps=500,\n",
+ " batch_size=5,\n",
+ " training_examples=selected_training_examples,\n",
+ " training_targets=training_targets,\n",
+ " validation_examples=selected_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 : 226.40\n",
+ " period 01 : 216.24\n",
+ " period 02 : 206.18\n",
+ " period 03 : 196.19\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "error",
+ "ename": "KeyboardInterrupt",
+ "evalue": "ignored",
+ "traceback": [
+ "\u001b[0;31m\u001b[0m",
+ "\u001b[0;31mKeyboardInterrupt\u001b[0mTraceback (most recent call last)",
+ "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0mtraining_targets\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtraining_targets\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mvalidation_examples\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mselected_validation_examples\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m validation_targets=validation_targets)\n\u001b[0m",
+ "\u001b[0;32m\u001b[0m in \u001b[0;36mtrain_model\u001b[0;34m(learning_rate, steps, batch_size, training_examples, training_targets, validation_examples, validation_targets)\u001b[0m\n\u001b[1;32m 64\u001b[0m linear_regressor.train(\n\u001b[1;32m 65\u001b[0m \u001b[0minput_fn\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtraining_input_fn\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 66\u001b[0;31m \u001b[0msteps\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msteps_per_period\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 67\u001b[0m )\n\u001b[1;32m 68\u001b[0m \u001b[0;31m# Take a break and compute predictions.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow_estimator/python/estimator/estimator.pyc\u001b[0m in \u001b[0;36mtrain\u001b[0;34m(self, input_fn, hooks, steps, max_steps, saving_listeners)\u001b[0m\n\u001b[1;32m 352\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 353\u001b[0m \u001b[0msaving_listeners\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_check_listeners_type\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msaving_listeners\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 354\u001b[0;31m \u001b[0mloss\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_train_model\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput_fn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhooks\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msaving_listeners\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 355\u001b[0m \u001b[0mlogging\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minfo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Loss for final step: %s.'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mloss\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 356\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow_estimator/python/estimator/estimator.pyc\u001b[0m in \u001b[0;36m_train_model\u001b[0;34m(self, input_fn, hooks, saving_listeners)\u001b[0m\n\u001b[1;32m 1181\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_train_model_distributed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput_fn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhooks\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msaving_listeners\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1182\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1183\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_train_model_default\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput_fn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhooks\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msaving_listeners\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1184\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1185\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_train_model_default\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minput_fn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhooks\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msaving_listeners\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow_estimator/python/estimator/estimator.pyc\u001b[0m in \u001b[0;36m_train_model_default\u001b[0;34m(self, input_fn, hooks, saving_listeners)\u001b[0m\n\u001b[1;32m 1215\u001b[0m return self._train_with_estimator_spec(estimator_spec, worker_hooks,\n\u001b[1;32m 1216\u001b[0m \u001b[0mhooks\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mglobal_step_tensor\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1217\u001b[0;31m saving_listeners)\n\u001b[0m\u001b[1;32m 1218\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1219\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_train_model_distributed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minput_fn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhooks\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msaving_listeners\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow_estimator/python/estimator/estimator.pyc\u001b[0m in \u001b[0;36m_train_with_estimator_spec\u001b[0;34m(self, estimator_spec, worker_hooks, hooks, global_step_tensor, saving_listeners)\u001b[0m\n\u001b[1;32m 1406\u001b[0m \u001b[0msave_summaries_steps\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_config\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msave_summary_steps\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1407\u001b[0m \u001b[0mconfig\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_session_config\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1408\u001b[0;31m log_step_count_steps=self._config.log_step_count_steps) as mon_sess:\n\u001b[0m\u001b[1;32m 1409\u001b[0m \u001b[0mloss\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1410\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mmon_sess\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshould_stop\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/monitored_session.pyc\u001b[0m in \u001b[0;36mMonitoredTrainingSession\u001b[0;34m(master, is_chief, checkpoint_dir, scaffold, hooks, chief_only_hooks, save_checkpoint_secs, save_summaries_steps, save_summaries_secs, config, stop_grace_period_secs, log_step_count_steps, max_wait_secs, save_checkpoint_steps, summary_dir)\u001b[0m\n\u001b[1;32m 506\u001b[0m \u001b[0msession_creator\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msession_creator\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 507\u001b[0m \u001b[0mhooks\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mall_hooks\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 508\u001b[0;31m stop_grace_period_secs=stop_grace_period_secs)\n\u001b[0m\u001b[1;32m 509\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 510\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/monitored_session.pyc\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, session_creator, hooks, stop_grace_period_secs)\u001b[0m\n\u001b[1;32m 932\u001b[0m super(MonitoredSession, self).__init__(\n\u001b[1;32m 933\u001b[0m \u001b[0msession_creator\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhooks\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mshould_recover\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mTrue\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 934\u001b[0;31m stop_grace_period_secs=stop_grace_period_secs)\n\u001b[0m\u001b[1;32m 935\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 936\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/monitored_session.pyc\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, session_creator, hooks, should_recover, stop_grace_period_secs)\u001b[0m\n\u001b[1;32m 646\u001b[0m stop_grace_period_secs=stop_grace_period_secs)\n\u001b[1;32m 647\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mshould_recover\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 648\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sess\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_RecoverableSession\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_coordinated_creator\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 649\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 650\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sess\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_coordinated_creator\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcreate_session\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/monitored_session.pyc\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, sess_creator)\u001b[0m\n\u001b[1;32m 1120\u001b[0m \"\"\"\n\u001b[1;32m 1121\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sess_creator\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msess_creator\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1122\u001b[0;31m \u001b[0m_WrappedSession\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_create_session\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1123\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1124\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_create_session\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/monitored_session.pyc\u001b[0m in \u001b[0;36m_create_session\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 1125\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1126\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1127\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sess_creator\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcreate_session\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1128\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0m_PREEMPTION_ERRORS\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1129\u001b[0m logging.info('An error was raised while a session was being created. '\n",
+ "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/monitored_session.pyc\u001b[0m in \u001b[0;36mcreate_session\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 810\u001b[0m \u001b[0;31m# Inform the hooks that a new session has been created.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 811\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhook\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_hooks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 812\u001b[0;31m \u001b[0mhook\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mafter_create_session\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtf_sess\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcoord\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 813\u001b[0m return _CoordinatedSession(\n\u001b[1;32m 814\u001b[0m \u001b[0m_HookedSession\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtf_sess\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_hooks\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcoord\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/basic_session_run_hooks.pyc\u001b[0m in \u001b[0;36mafter_create_session\u001b[0;34m(self, session, coord)\u001b[0m\n\u001b[1;32m 563\u001b[0m \u001b[0mgraph_def\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mgraph\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mas_graph_def\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0madd_shapes\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 564\u001b[0m saver_def=saver_def)\n\u001b[0;32m--> 565\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_summary_writer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd_graph\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mgraph\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 566\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_summary_writer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd_meta_graph\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmeta_graph_def\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 567\u001b[0m \u001b[0;31m# The checkpoint saved here is the state at step \"global_step\".\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/summary/writer/writer.pyc\u001b[0m in \u001b[0;36madd_graph\u001b[0;34m(self, graph, global_step, graph_def)\u001b[0m\n\u001b[1;32m 192\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 193\u001b[0m \u001b[0;31m# Serialize the graph with additional info.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 194\u001b[0;31m \u001b[0mtrue_graph_def\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgraph\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mas_graph_def\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0madd_shapes\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 195\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_write_plugin_assets\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mgraph\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 196\u001b[0m elif (isinstance(graph, graph_pb2.GraphDef) or\n",
+ "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.pyc\u001b[0m in \u001b[0;36mas_graph_def\u001b[0;34m(self, from_version, add_shapes)\u001b[0m\n\u001b[1;32m 3148\u001b[0m \"\"\"\n\u001b[1;32m 3149\u001b[0m \u001b[0;31m# pylint: enable=line-too-long\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3150\u001b[0;31m \u001b[0mresult\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_as_graph_def\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfrom_version\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0madd_shapes\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3151\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3152\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.pyc\u001b[0m in \u001b[0;36m_as_graph_def\u001b[0;34m(self, from_version, add_shapes)\u001b[0m\n\u001b[1;32m 3118\u001b[0m \u001b[0mop\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_nodes_by_name\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mnode\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3119\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mop\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moutputs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3120\u001b[0;31m node.attr[\"_output_shapes\"].list.shape.extend(\n\u001b[0m\u001b[1;32m 3121\u001b[0m [output.get_shape().as_proto() for output in op.outputs])\n\u001b[1;32m 3122\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mgraph\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_version\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
From f3f5fd6a427bb133ea3c2048725cee9966e276e6 Mon Sep 17 00:00:00 2001
From: Aditya Joardar <30207466+joardar-aditya@users.noreply.github.com>
Date: Tue, 12 Feb 2019 08:08:02 +0530
Subject: [PATCH 02/13] feature_sets_solved
From 60978f8a98546bc9bb0f6f4c27d57b238d0e63b5 Mon Sep 17 00:00:00 2001
From: Aditya Joardar <30207466+joardar-aditya@users.noreply.github.com>
Date: Tue, 12 Feb 2019 21:26:56 +0530
Subject: [PATCH 03/13] Solved the feature_cross notebook
---
feature_crosses.ipynb | 1565 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 1565 insertions(+)
create mode 100644 feature_crosses.ipynb
diff --git a/feature_crosses.ipynb b/feature_crosses.ipynb
new file mode 100644
index 0000000..336dfc8
--- /dev/null
+++ b/feature_crosses.ipynb
@@ -0,0 +1,1565 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "name": "feature_crosses.ipynb",
+ "version": "0.3.2",
+ "provenance": [],
+ "collapsed_sections": [
+ "JndnmDMp66FL",
+ "ZTDHHM61NPTw",
+ "0i7vGo9PTaZl"
+ ],
+ "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": [
+ "# Feature Crosses"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "F7dke6skIK-k",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "**Learning Objectives:**\n",
+ " * Improve a linear regression model with the addition of additional synthetic features (this is a continuation of the previous exercise)\n",
+ " * Use an input function to convert pandas `DataFrame` objects to `Tensors` and invoke the input function in `fit()` and `predict()` operations\n",
+ " * Use the FTRL optimization algorithm for model training\n",
+ " * Create new synthetic features through one-hot encoding, binning, and feature crosses"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "NS_fcQRd8B97",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Setup"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "4IdzD8IdIK-l",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "First, as we've done in previous exercises, let's define the input and create the data-loading code."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "CsfdiLiDIK-n",
+ "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": "10rhoflKIK-s",
+ "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": "ufplEkjN8KUp",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1224
+ },
+ "outputId": "c292ac02-172d-450c-c24f-5e439d74933b"
+ },
+ "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.6 28.6 2616.4 533.7 \n",
+ "std 2.1 2.0 12.6 2123.9 410.9 \n",
+ "min 32.5 -124.3 1.0 2.0 1.0 \n",
+ "25% 33.9 -121.8 18.0 1454.0 297.0 \n",
+ "50% 34.2 -118.5 29.0 2112.0 432.0 \n",
+ "75% 37.7 -118.0 37.0 3127.2 640.0 \n",
+ "max 42.0 -114.3 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 1415.3 496.8 3.9 2.0 \n",
+ "std 1085.1 376.6 1.9 1.1 \n",
+ "min 6.0 1.0 0.5 0.1 \n",
+ "25% 786.0 281.0 2.6 1.5 \n",
+ "50% 1165.0 408.0 3.5 1.9 \n",
+ "75% 1705.0 598.0 4.8 2.3 \n",
+ "max 16122.0 5189.0 15.0 55.2 "
+ ],
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " latitude \n",
+ " longitude \n",
+ " housing_median_age \n",
+ " total_rooms \n",
+ " total_bedrooms \n",
+ " population \n",
+ " households \n",
+ " median_income \n",
+ " rooms_per_person \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " 35.6 \n",
+ " -119.6 \n",
+ " 28.6 \n",
+ " 2616.4 \n",
+ " 533.7 \n",
+ " 1415.3 \n",
+ " 496.8 \n",
+ " 3.9 \n",
+ " 2.0 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 2.1 \n",
+ " 2.0 \n",
+ " 12.6 \n",
+ " 2123.9 \n",
+ " 410.9 \n",
+ " 1085.1 \n",
+ " 376.6 \n",
+ " 1.9 \n",
+ " 1.1 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 32.5 \n",
+ " -124.3 \n",
+ " 1.0 \n",
+ " 2.0 \n",
+ " 1.0 \n",
+ " 6.0 \n",
+ " 1.0 \n",
+ " 0.5 \n",
+ " 0.1 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 33.9 \n",
+ " -121.8 \n",
+ " 18.0 \n",
+ " 1454.0 \n",
+ " 297.0 \n",
+ " 786.0 \n",
+ " 281.0 \n",
+ " 2.6 \n",
+ " 1.5 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 34.2 \n",
+ " -118.5 \n",
+ " 29.0 \n",
+ " 2112.0 \n",
+ " 432.0 \n",
+ " 1165.0 \n",
+ " 408.0 \n",
+ " 3.5 \n",
+ " 1.9 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 37.7 \n",
+ " -118.0 \n",
+ " 37.0 \n",
+ " 3127.2 \n",
+ " 640.0 \n",
+ " 1705.0 \n",
+ " 598.0 \n",
+ " 4.8 \n",
+ " 2.3 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 42.0 \n",
+ " -114.3 \n",
+ " 52.0 \n",
+ " 37937.0 \n",
+ " 5471.0 \n",
+ " 16122.0 \n",
+ " 5189.0 \n",
+ " 15.0 \n",
+ " 55.2 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ },
+ {
+ "output_type": "stream",
+ "text": [
+ "Validation examples summary:\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " latitude longitude housing_median_age total_rooms total_bedrooms \\\n",
+ "count 5000.0 5000.0 5000.0 5000.0 5000.0 \n",
+ "mean 35.6 -119.6 28.6 2709.2 553.2 \n",
+ "std 2.1 2.0 12.6 2307.8 445.7 \n",
+ "min 32.5 -124.3 2.0 18.0 3.0 \n",
+ "25% 33.9 -121.8 18.0 1475.8 297.0 \n",
+ "50% 34.2 -118.5 29.0 2174.0 437.5 \n",
+ "75% 37.7 -118.0 37.0 3196.2 668.0 \n",
+ "max 41.9 -114.6 52.0 32627.0 6445.0 \n",
+ "\n",
+ " population households median_income rooms_per_person \n",
+ "count 5000.0 5000.0 5000.0 5000.0 \n",
+ "mean 1463.8 511.9 3.9 2.0 \n",
+ "std 1285.6 402.7 1.9 1.3 \n",
+ "min 3.0 4.0 0.5 0.0 \n",
+ "25% 798.8 283.0 2.5 1.5 \n",
+ "50% 1172.0 411.0 3.5 1.9 \n",
+ "75% 1758.2 619.2 4.7 2.3 \n",
+ "max 35682.0 6082.0 15.0 52.0 "
+ ],
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " latitude \n",
+ " longitude \n",
+ " housing_median_age \n",
+ " total_rooms \n",
+ " total_bedrooms \n",
+ " population \n",
+ " households \n",
+ " median_income \n",
+ " rooms_per_person \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " 35.6 \n",
+ " -119.6 \n",
+ " 28.6 \n",
+ " 2709.2 \n",
+ " 553.2 \n",
+ " 1463.8 \n",
+ " 511.9 \n",
+ " 3.9 \n",
+ " 2.0 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 2.1 \n",
+ " 2.0 \n",
+ " 12.6 \n",
+ " 2307.8 \n",
+ " 445.7 \n",
+ " 1285.6 \n",
+ " 402.7 \n",
+ " 1.9 \n",
+ " 1.3 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 32.5 \n",
+ " -124.3 \n",
+ " 2.0 \n",
+ " 18.0 \n",
+ " 3.0 \n",
+ " 3.0 \n",
+ " 4.0 \n",
+ " 0.5 \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 33.9 \n",
+ " -121.8 \n",
+ " 18.0 \n",
+ " 1475.8 \n",
+ " 297.0 \n",
+ " 798.8 \n",
+ " 283.0 \n",
+ " 2.5 \n",
+ " 1.5 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 34.2 \n",
+ " -118.5 \n",
+ " 29.0 \n",
+ " 2174.0 \n",
+ " 437.5 \n",
+ " 1172.0 \n",
+ " 411.0 \n",
+ " 3.5 \n",
+ " 1.9 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 37.7 \n",
+ " -118.0 \n",
+ " 37.0 \n",
+ " 3196.2 \n",
+ " 668.0 \n",
+ " 1758.2 \n",
+ " 619.2 \n",
+ " 4.7 \n",
+ " 2.3 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 41.9 \n",
+ " -114.6 \n",
+ " 52.0 \n",
+ " 32627.0 \n",
+ " 6445.0 \n",
+ " 35682.0 \n",
+ " 6082.0 \n",
+ " 15.0 \n",
+ " 52.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ },
+ {
+ "output_type": "stream",
+ "text": [
+ "Training targets summary:\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " median_house_value\n",
+ "count 12000.0\n",
+ "mean 207.8\n",
+ "std 116.3\n",
+ "min 15.0\n",
+ "25% 120.0\n",
+ "50% 180.5\n",
+ "75% 265.9\n",
+ "max 500.0"
+ ],
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " median_house_value \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 12000.0 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " 207.8 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 116.3 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 15.0 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 120.0 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 180.5 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 265.9 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 500.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ },
+ {
+ "output_type": "stream",
+ "text": [
+ "Validation targets summary:\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " median_house_value\n",
+ "count 5000.0\n",
+ "mean 206.0\n",
+ "std 115.2\n",
+ "min 15.0\n",
+ "25% 118.5\n",
+ "50% 179.8\n",
+ "75% 263.4\n",
+ "max 500.0"
+ ],
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " median_house_value \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 5000.0 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " 206.0 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 115.2 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 15.0 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 118.5 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 179.8 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 263.4 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 500.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "oJlrB4rJ_2Ma",
+ "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": "NBxoAfp2AcB6",
+ "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": "hweDyy31LBsV",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## FTRL Optimization Algorithm\n",
+ "\n",
+ "High dimensional linear models benefit from using a variant of gradient-based optimization called FTRL. This algorithm has the benefit of scaling the learning rate differently for different coefficients, which can be useful if some features rarely take non-zero values (it also is well suited to support L1 regularization). We can apply FTRL using the [FtrlOptimizer](https://www.tensorflow.org/api_docs/python/tf/train/FtrlOptimizer)."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "S0SBf1X1IK_O",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def train_model(\n",
+ " learning_rate,\n",
+ " steps,\n",
+ " batch_size,\n",
+ " feature_columns,\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",
+ " feature_columns: A `set` specifying the input feature columns to use.\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.FtrlOptimizer(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",
+ " 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",
+ " 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",
+ " 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",
+ " \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": "1Cdr02tLIK_Q",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 768
+ },
+ "outputId": "3ec2fe05-99b9-42c9-9f32-e0850ad1f1bb"
+ },
+ "cell_type": "code",
+ "source": [
+ "_ = train_model(\n",
+ " learning_rate=1.0,\n",
+ " steps=500,\n",
+ " batch_size=100,\n",
+ " feature_columns=construct_feature_columns(training_examples),\n",
+ " training_examples=training_examples,\n",
+ " training_targets=training_targets,\n",
+ " validation_examples=validation_examples,\n",
+ " validation_targets=validation_targets)"
+ ],
+ "execution_count": 10,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "WARNING: The TensorFlow contrib module will not be included in TensorFlow 2.0.\n",
+ "For more information, please see:\n",
+ " * https://github.com/tensorflow/community/blob/master/rfcs/20180907-contrib-sunset.md\n",
+ " * https://github.com/tensorflow/addons\n",
+ "If you depend on functionality not listed there, please file an issue.\n",
+ "\n",
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 165.51\n",
+ " period 01 : 120.92\n",
+ " period 02 : 131.34\n",
+ " period 03 : 208.18\n",
+ " period 04 : 129.76\n",
+ " period 05 : 119.78\n",
+ " period 06 : 119.61\n",
+ " period 07 : 119.78\n",
+ " period 08 : 122.31\n",
+ " period 09 : 133.58\n",
+ "Model training finished.\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGACAYAAACz01iHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xl4VPX1P/D3nS3JJDPZJ/sCBJRN\nwhLLIrtAWKyiiCv1Z631W6FapdXaoq3Fqri1WkWt1g1rRSkuKBaliIJWZBMRwYQtyWRfZ0sms93f\nH2Em28xkm8kseb+ex+cxc+/MnOQm5OTzOfccQRRFEUREREQhRBLoAIiIiIj6igkMERERhRwmMERE\nRBRymMAQERFRyGECQ0RERCGHCQwRERGFHFmgAyAKZueddx6ys7MhlUoBAHa7HQUFBVi3bh2USmW/\nX/ett97CypUruz2+detW3HPPPXjuuecwd+5c1+NmsxnTp0/HwoUL8fDDD/f7fXurtLQUDz74IM6c\nOQMAiIqKwpo1a3DxxRf7/b37YuPGjSgtLe32Ndm3bx9uuukmZGZmdnvOf/7zn8EKb0C0Wi3mz5+P\nYcOGAQBEUURSUhJ+//vfY8yYMX16rccffxzp6em45pprev2c9957D1u2bMGmTZv69F5Eg4UJDFEP\nNm3ahNTUVACAxWLBHXfcgeeffx533HFHv16vtrYWL774otsEBgDS0tLwwQcfdEpgPv30U6jV6n69\nX3/8+te/xqWXXornnnsOAHDkyBHccMMN+Oijj5CWljZocQxEWlpayCQrnkil0k6fw/bt27F69Wrs\n2LEDCoWi16+zdu1af4RHFFDcQiLqA4VCgZkzZ+L48eMAgNbWVtx3331YtGgRFi9ejIcffhh2ux0A\ncOLECVx99dUoLCzEpZdeij179gAArr76alRUVKCwsBAWi6Xbe0yaNAn79u1DS0uL67Ht27djxowZ\nro8tFgseeOABLFq0CPPmzXMlGgBw+PBhXH755SgsLMSSJUvw5ZdfAmj7i/6iiy7Ca6+9hksuuQQz\nZ87E9u3b3X6eRUVFmDBhguvjCRMmYMeOHa5E7umnn8bs2bNx2WWX4e9//zvmzZsHAPjtb3+LjRs3\nup7X8eOe4nrwwQdx/fXXAwAOHjyIK664AgsWLMDKlStRVlYGoG0l6le/+hXmzp2L66+/HlVVVT1c\nMfe2bt2KNWvW4IYbbsAjjzyCffv24eqrr8btt9/u+mX/0UcfYdmyZSgsLMRPfvITlJaWAgD+9re/\nYd26dVixYgVeeeWVTq97++2346WXXnJ9fPz4cVx00UVwOBz4y1/+gkWLFmHRokX4yU9+gurq6j7H\nvWTJEpjNZpw+fRoAsHnzZhQWFmLevHm48847YTabAbR93R966CFccskl+OijjzpdB0/flw6HA3/6\n058wZ84crFixAidOnHC979dff43ly5djyZIlWLx4MT766KM+x07kcyIReTRq1CixsrLS9XFTU5N4\n3XXXiRs3bhRFURSff/558eabbxatVqvY0tIiXnHFFeK7774r2u12cfHixeK2bdtEURTFb7/9Viwo\nKBANBoP41VdfiRdffLHb9/v3v/8t3n333eKvf/1r13MNBoM4f/588e233xbvvvtuURRF8emnnxZv\nuOEGsbW1VTSZTOJll10m7tq1SxRFUVy2bJn4wQcfiKIoiu+8847rvcrKysQxY8aImzZtEkVRFLdv\n3y4uWLDAbRy//OUvxblz54qvvvqqePLkyU7HfvjhB3HKlCliTU2NaLVaxV/84hfi3LlzRVEUxbvv\nvlt85plnXOd2/NhbXGPHjhW3bt3q+nwLCgrEvXv3iqIoitu2bROXL18uiqIovv766+J1110nWq1W\nsaGhQZw7d67ra9KRt6+x8+ucn58vnjlzxnX++PHjxS+//FIURVEsLy8XJ0+eLJ49e1YURVH8xz/+\nId5www2iKIriU089JV500UVifX19t9f98MMPxeuuu8718ZNPPimuX79eLCoqEhcuXChaLBZRFEXx\ntddeE9955x2P8Tm/LqNHj+72eEFBgXjq1Clx//794rRp08SqqipRFEXx3nvvFR9++GFRFNu+7pdc\ncoloNptdHz/zzDNevy93794tLly4UDQajWJLS4u4YsUK8frrrxdFURQvv/xycd++faIoiuKZM2fE\nO++802vsRIOBKzBEPVi1ahUKCwsxf/58zJ8/H1OnTsXNN98MANi9ezdWrlwJmUyGyMhIXHLJJfji\niy+g1WpRV1eHpUuXAgDGjx+P9PR0HD16tFfvuXTpUnzwwQcAgJ07d2Lu3LmQSNp/XD/99FNce+21\nUCgUUCqVuPTSS/Hxxx8DAN59910sXrwYADB58mTX6gUA2Gw2XH755QCAsWPHoqKiwu37P/roo7ju\nuuuwbds2LFu2DPPmzcO//vUvAG2rIwUFBUhOToZMJsOyZct69Tl5i8tqtWLBggWu109JSXGtOC1b\ntgylpaWoqKjAgQMHsGDBAshkMsTHx3faZuuqsrIShYWFnf7rWCuTm5uL3Nxc18eRkZGYNm0aAOCL\nL77Aj370I+Tk5AAArrzySuzbtw82mw1A24pUQkJCt/ecM2cOvv/+ezQ1NQEAPvnkExQWFkKtVqOh\noQHbtm2DTqfDqlWrcNlll/Xq6+YkiiI2b96MlJQU5ObmYteuXViyZAlSUlIAANdcc43rewAApk2b\nhoiIiE6v4e37cv/+/Zg9ezaio6MRGRnpulYAkJiYiHfffRenTp1Cbm4uHn/88T7FTuQPrIEh6oGz\nBqahocG1/SGTtf3oNDQ0IDY21nVubGws6uvr0dDQAJVKBUEQXMecv8SSkpJ6fM8ZM2Zg3bp1aGpq\nwocffohbb73VVVALAAaDAQ899BCeeOIJAG1bShdccAEAYNu2bXjttddgMpngcDggdhh3JpVKXcXH\nEokEDofD7ftHRETgpptuwk033QS9Xo///Oc/ePDBB5GZmQmdTtepHicxMbHHz6c3ccXExAAA9Ho9\nysrKUFhY6DquUCjQ0NAAnU4HlUrlelytVsNkMrl9v55qYDpet64fNzY2dvocVSoVRFFEY2Oj2+c6\nKZVKTJ8+Hbt378bkyZOh1+sxefJkCIKAv/3tb3jppZewfv16FBQU4P777++xnshut7u+DqIoIi8v\nDxs3boREIoHBYMAnn3yCvXv3uo5brVaPnx8Ar9+XOp0OGo2m0+NODz74IJ599lnceOONiIyMxJ13\n3tnp+hAFAhMYol5KSEjAqlWr8Oijj+LZZ58FACQlJbn+2gaApqYmJCUlITExETqdDqIoun5ZNDU1\n9fqXvVwux9y5c/Huu++ipKQEEydO7JTAaDQa/PSnP+22AlFdXY1169bh7bffxujRo3H27FksWrSo\nT59nQ0MDjh8/7loBUavVWLlyJfbs2YOioiKoVCoYDIZO5zt1TYp0Ol2f49JoNBg+fDi2bt3a7Zha\nrfb43r6UmJiIw4cPuz7W6XSQSCSIj4/v8bmLFi3CJ598gsbGRixatMh1/adOnYqpU6eiubkZGzZs\nwGOPPdbjSkbXIt6ONBoNli9fjrvvvrtPn5en70tvX9ukpCTce++9uPfee7F371788pe/xMyZMxEd\nHd3r9ybyNW4hEfXBjTfeiMOHD+Prr78G0LZlsGXLFtjtdjQ3N+O9997D7NmzkZmZidTUVFeR7KFD\nh1BXV4cLLrgAMpkMzc3Nru0IT5YuXYoXXnjB7a3L8+fPx9tvvw273Q5RFLFx40Z8/vnnaGhogFKp\nxPDhw2Gz2bB582YA8LhK4Y7ZbMZtt93mKu4EgJKSEhw5cgRTpkzBxIkTceDAATQ0NMBms+Hdd991\nnZecnOwq/iwrK8OhQ4cAoE9xTZgwAbW1tThy5IjrdX7zm99AFEXk5+dj165dsNvtaGhowOeff97r\nz6svZsyYgQMHDri2ud58803MmDHDtfLmzdy5c3H48GHs3LnTtQ2zd+9e3H///XA4HFAqlTj//PM7\nrYL0x7x58/Dxxx+7Eo2dO3fi73//u9fnePu+nDhxIvbu3YuWlha0tLS4Eier1YpVq1ahpqYGQNvW\no0wm67SlSRQIXIEh6oOYmBj8/Oc/x4YNG7BlyxasWrUKZWVlWLp0KQRBQGFhIRYvXgxBEPDEE0/g\nD3/4A55++mlERUXhySefhFKpxHnnnYfY2FjMmDED77zzDtLT092+14UXXghBELBkyZJux6699lpo\ntVosXboUoihi3LhxuOGGG6BUKjFr1iwsWrQIiYmJ+O1vf4tDhw5h1apVeOqpp3r1Oaanp+PZZ5/F\nU089hQceeACiKCImJgb33HOP686kq666CsuXL0d8fDwWLlyI4uJiAMDKlSuxZs0aLFy4EGPGjHGt\nspx//vm9jisyMhJPPfUU1q9fD5PJBLlcjttvvx2CIGDlypU4cOAALr74YqSnp+Piiy/utGrQkbMG\npqtHHnmkx69BamoqHnjgAdx6662wWq3IzMzE+vXre/X1i4mJwdixY/HDDz8gPz8fAFBQUIAPP/wQ\nixYtgkKhQEJCAh588EEAwF133eW6k6gvxo4di//7v//DqlWr4HA4kJiYiPvvv9/rc7x9X86dOxe7\nd+9GYWEhkpKSMHv2bBw4cAByuRwrVqzA//t//w9A2yrbunXrEBUV1ad4iXxNEDtuRBMR9dGBAwdw\n1113YdeuXYEOhYiGEK4BEhERUchhAkNEREQhh1tIREREFHK4AkNEREQhhwkMERERhZyQvI26ttb9\nbZO+EB+vRGNjs99en/qP1yY48boEL16b4MVr0zvJySqPx7gC04VMJg10COQBr01w4nUJXrw2wYvX\nZuCYwBAREVHIYQJDREREIYcJDBEREYUcJjBEREQUcpjAEBERUchhAkNEREQhhwkMERERhRwmMERE\nRGFm9+7/9uq8J598HBUV5R6P//a3d/oqJJ9jAkNERBRGKisrsHPnjl6de/vta5GenuHx+MMPP+Gr\nsHwuJEcJEBERkXtPPLEBx48fw8yZBVi4cDEqKyvw179uxEMP/Qm1tTVoaWnBT3/6c8yYMRNr1vwc\nd955Fz799L8wmYwoLS1BebkWt922FtOmzcDSpfPx4Yf/xZo1P0dBwY9w6NABNDU1YcOGvyApKQl/\n+tO9qKqqxPjxF2DXrp14553tg/Z5MoEhIiLyk7d2ncT+EzXdHpdKBdjtYr9es+B8DVbOy/N4/Jpr\nVmHr1rcwbNgIlJaexcaNL6KxsQEXXjgVixcvQ3m5Fvfe+1vMmDGz0/Nqaqrx2GNP4auvvsR77/0b\n06bN6HQ8OjoaTz75LJ599m/4/PNdSE/PhMXSir///RV88cUevPXWv/r1+fQXExiiQVbX0gCDxYBh\nsTmBDoWIwtzo0WMBACqVGsePH8P772+FIEig1+u6nXvBBfkAAI1GA6PR2O34hAkTXcd1Oh1KSs5g\n/PgJAIBp02ZAKh3c+U5MYIgG2evH38IZfSk2XHQfImWRgQ6HiPxo5bw8t6slyckq1NYa/P7+crkc\nAPDJJ/+BXq/HM8+8CL1ej5/9bFW3czsmIKLYfXWo63FRFCGRtD0mCAIEQfB1+F6xiJdoENkddpzV\nl8HmsKHM4Lnyn4iovyQSCex2e6fHmpqakJaWDolEgs8+2wWr1Trg98nIyMQPP3wPAPj666+6vae/\nMYEhGkRVzTWwOtr+4TirLwtwNEQUjnJyhuGHH07AZGrfBpozZx6+/HIPbr/9F4iKioJGo8HLL78w\noPeZPn0mTCYTfvGLm3DkyGGo1bEDDb1PBNHdOlGQ8+ey22At61HfhcO1+V/Ffrx+4m0AQH7yeNw8\nvvsybqgJh+sSrnhtglc4XBu9XodDhw5gzpz5qK2twe23/wJvvPFvn75HcrLK4zHWwBANolKDFgAg\nQEAJV2CIKIQpldHYtWsn3nhjE0TRgV/+cnCb3jGBIRpEJQYtpIIUo+JH4HhDEXStesRGqAMdFhFR\nn8lkMvzpTw8F7P1ZA0M0SGwOG8qNlciISUVe3DAArIMhIuovv67APPLIIzh48CBsNhtuueUWjB8/\nHvfccw9sNhtkMhkeffRRJCcn4/3338err74KiUSClStX4sorr/RnWEQBUWGqgs1hQ7YqEznqLABA\nib4ME5LHBjgyIqLQ47cE5quvvkJxcTE2b96MxsZGLF++HD/60Y+wcuVKLFmyBP/85z/x8ssvY82a\nNXjmmWewZcsWyOVyrFixAgsWLEBcXJy/QiMKiFJ9W/1LjjoLOar2BIaIiPrObwlMQUEBLrjgAgCA\nWq1GS0sL/vCHPyAiIgIAEB8fj2PHjuHIkSMYP348VKq2SuNJkybh0KFDmDdvnr9CIwoIZwFvtioT\nSnkUUpTJKDGUwSE6IBG4m0tE1Bd+S2CkUimUSiUAYMuWLZg1a5brY7vdjjfeeAOrV69GXV0dEhIS\nXM9LSEhAbW2t19eOj1dCJvNfy2Jvt21RYIXytak4VAm5VI7xuXmQSaQ4L3k4Pi/ZB1tkCzLUqYEO\nb0BC+bqEO16b4BXoazNv3jxs27YN//znP1FQUICJEye6jplMJlxyySXYtWuXx+fv2LEDixYtwtat\nW6FSqbBgwYLBCNvF73ch7dy5E1u2bMFLL70EoC15ueuuuzB16lRMmzYN27Zt63R+b9rSNDY2+yVW\nIDzuzQ9XoXxtrHYrSnTlyFFlorG+7fs3JaItaTl89gQUadGBDG9AQvm6hDtem+AVDNfGbnegrs6I\n5cuvAdC5x1pzczPsdofHGCsrK7B167uYNGk6Zs5c0O35vhKwPjB79uzBc889hxdffNG1RXTPPfcg\nJycHa9asAdA2FKqurs71nJqaGuTn5/szLKJBV26qhEN0IFud6XpsmDobQNudSD9Kmxyo0IgozPz0\np9fhwQcfR2pqKqqqKnHPPWuRnKxBS0sLzGYz7rjjNxgzZpzr/D//+Y+YM2c+8vMn4ve/vwsWi8U1\n2BEAPv74I2zZshlSqQS5uSNw992/xxNPbMDx48fw8ssvwOFwIC4uDldccRU2bnwSR48egc1mxxVX\nrERh4VKsWfNzFBT8CIcOHUBTUxM2bPgLUlMHvurstwTGYDDgkUcewSuvvOIqyH3//fchl8tx2223\nuc6bMGEC1q1bB71eD6lUikOHDuF3v/udv8IiCghnAW+2qj2BSY9Jg0yQspCXKIxtPfkBDtcc7fa4\nVCLA7uhfI/yJmvG4PG+Zx+OzZs3FF198jiuuWIk9ez7DrFlzMWLESMyaNQcHD+7HP//5Kv7850e7\nPW/Hjo8wfPgI3HbbWvz3vx9j584dAICWlhY8/vjfoFKpsHr1zTh16iSuuWYVtm59CzfeeDP+8Y/n\nAQDffHMIp0+fwrPPvoSWlhbccMPVmDVrDgAgOjoaTz75LJ599m/4/PNdWLny2n597h35LYHZvn07\nGhsb8atf/cr1WEVFBdRqNVatamufPmLECPzxj3/E2rVrcdNNN0EQBKxevdq1WkMULkoM3RMYuUSG\nDFU6tIYKWO1WyKXyQIVHRGFk1qy5ePrpv+KKK1Zi797PsGbNHXjzzU341782wWq1IjIy0u3zzp49\njfz8ttXgiRPbV4XVajXuuWctAKCk5Ax0uia3zz9x4nvk508CAERFRSE3dzjKytr+QJswoa2+RqPR\nQKfT+eTz9FsCc9VVV+Gqq67q1bmFhYUoLCz0VyhEAVeq10IhkSM1WtPp8Vx1Fkr0ZdAaKzEsNjtA\n0RGRv1yet8ztaok/a2CGDx+B+vpaVFdXwWAwYM+e3UhK0uDee9fjxInv8fTTf3X7PFEEJBIBAOA4\ntzpktVrxxBOP4JVX3kBiYhLuuutXbp8LAIIgoGMZq81mdb2eVNp+442vRjDy3k0iP7PYLag0VSNL\nldHtduncc3Uw3EYiIl+aNu0i/P3vGzFz5mzodE3IyGhb/f3ss09hs9ncPic7OwcnThwHABw6dAAA\n0NxsglQqRWJiEqqrq3DixHHYbDZIJBLY7fZOzz///LE4fPjguec1o7xci8xM//1hxgSGyM+0xgqI\nEDsV8Do5O/JypAAR+dLs2XOxc+cOzJkzH4WFS7F58z9xxx2rMXbsONTX1+PDD9/v9pzCwqU4duwo\nbr/9FygrK4EgCIiNjUNBwY/ws5/9BC+//AKuvXYVnnrqCeTkDMMPP5zAU0897nr+hAn5OO+887F6\n9c24447V+L//W4OoqCi/fY6C6Ku1nEHkz1vPguHWNnIvVK/Np2V7saX4fdww5mpcmDqp0zGH6MBd\ne+6HSh6NP0y7K0ARDkyoXpehgNcmePHa9I6326i5AkPkZ84OvDmq7iswEkGCHFUmalrqYLL6r78R\nEVG4YQJD5Gelei0ipRFIVia5PZ57rnjXeas1ERH1jAkMkR+ZbWZUN9e6LeB1ymUdDBFRnzGBIfKj\nMoPnAl6nbJUzgSkdrLCIiEIeExgiPyoxtK2quKt/cYqNUCE+Ig4l+jKf9UcgIgp3TGCI/MhZ1+K8\nXdqTXHUWDFYjGszuO1wSEVFnTGCI/KjUoIVSFoXEyASv5zkLeZ0rNkRE5B0TGCI/abY2o7alHtmq\nTAiC4PXcHGcdjI51MEREvcEEhshPSg3lAOC1gNcpS5UBAQLvRCIi6iUmMER+4q2BXVeRsgikRaeg\nzKCF3WHv8XwioqGOCQyRnzgLeHuzAgO0DXa0OKyoaq7xZ1hERGGBCQyRn5QatIiRRyM+Iq5X57sa\n2rEOhoioR0xgiPzAaDGh3tyIbHXPBbxOnExNRNR7TGCI/KAv9S9OadEpUEjkvJWaiKgXmMAQ+YEz\ngcnuQwIjlUiRpcpEhbEKrXaLv0IjIgoLTGCI/KCvBbxOueosiBA5mZqIqAdMYIj8oMSgRaxChbiI\n2D49z1kHw20kIiLvmMAQ+Ziu1YCmVl2fV1+ADncisZCXiMgrJjBEPlbWj/oXp4TIeKjkMShhAkNE\n5BUTGCIfKxlAAiMIAnLUWWgwN0JvMfg6NCKisMEEhsjHSs+tnjjrWfrKuY3EVRgiIs+YwBD5kCiK\nKDFoER8RB5Uipl+vwYZ2REQ9YwJD5ENNrToYLEbk9KOA1ymHKzBERD1iAkPkQ/1pYNdVtFwJTVQS\nzurL4BAdvgqNiCisMIEh8qHeNLD758dFuO8f++BwiB7PyVFnocXWgtqWep/HSEQUDpjAEPlQT3cg\nOUQRX31fBW2tCdpao8fX4TYSEZF3TGCIfEQURZQatEiKTEC0XOn2nMr6ZpjMNgBAsVbn8bVy1dkA\nWMhLROQJExgiH2kwN8Jkbfa6fVSsbXL9/8lyzwlMZkwapIIUZ/WlPo2RiChcMIEh8pHeNLArLmtL\nWqQSASc7JDNdyaVyZMSkodxQAavD5ttAiYjCABMYIh9xFvB6u4W6WNuE6EgZxg9PRL2+FQ16s8dz\nc9VZsIl2VBgrfR4rEVGoYwJD5CPOW6izVBlujzfozajTmTEyMw4js9qmVHvbRmIdDBGRZ0xgiHzA\nWcCrUSYhShbl9hxnsjIyKxYjM+IAeC/kbe/IyzoYIqKumMAQ+UBtSz1abGav9S9FZW01LyMz45CT\nqoJMKsFJLwmMRpmESGkkb6UmInKDCQyRDzi3j3K8FfBqdZDLJMhJUUEukyA3TYWyGiPMFvdFuhJB\nghx1Jqqba9FsbfFL3EREoYoJDJEPtHfgdT+Butlsg7bGiGFpashlbT92IzNi4RBFnK7Qe3xdZx2M\nM0EiIqI2TGCIfKDUoIUAAZkx6W6Pn6rQQQQw6lzxLgDkZZ4r5GUdDBFRnzGBIRogh+hAqUGL1GgN\nImURbs/pWP/ilJfRlsAUe70TyZnAsA6GiKgjJjBEA1TTXItWu8V7AzutDgKAEentKzAqpQKpCUqc\nKtd5HOwYG6FGXEQszupLIYqehz8SEQ01TGCIBqikhwnUVpsDZyr1yNLEQBkp63QsLzMWZovd62DH\nXHU2DBYjmlo9r9QQEQ01TGCIBqinO5BKqg2w2hydto+cRmb0pqFd2zbSGdbBEBG5MIEhGqBSgxYS\nQYIMDwW8xc76lw4FvE7OQt7eNLRjPxgionZMYIgGwO6wo8xQgbToFCikcrfnOJMTdyswqQlKxETJ\nvQ52zFZlQIDABIaIqAMmMEQDUNVcA6vD6nH7yCGKKNY2ISk2EvGq7ncoCYKAvIxYr4MdI2WRSItO\nQYlBC4fo8Gn8REShigkM0QCU9lDAW1lngslsc7v64tSbwY456ixY7BZUmWoGEC0RUfhgAkM0AM4C\nXk+3ULu2j9zUvzhxsCMRUd/Jej6l/x555BEcPHgQNpsNt9xyC8aPH4+77roLdrsdycnJePTRR6FQ\nKPD+++/j1VdfhUQiwcqVK3HllVf6MywinykxaCEVpEiPSXN7vFjbvYFdV70Z7Nixod309AsHEDER\nUXjwWwLz1Vdfobi4GJs3b0ZjYyOWL1+OadOm4dprr8XixYvxxBNPYMuWLbjsssvwzDPPYMuWLZDL\n5VixYgUWLFiAuDjP/+ATBQObw4ZyYyUyYlIhl7j/USrW6hATJUd6otLj6zgHO54u18NssSFS0f21\n0qNTIZfIWchLRHSO37aQCgoK8OSTTwIA1Go1WlpasG/fPsyfPx8AMHfuXPzvf//DkSNHMH78eKhU\nKkRGRmLSpEk4dOiQv8Ii8plKUzVsDpvH7aMGvRl1OjPyMmIhCILX1+ppsKNUIkWWKgMVpipY7JYB\nx05EFOr8tgIjlUqhVLb91bllyxbMmjULe/fuhUKhAAAkJiaitrYWdXV1SEhIcD0vISEBtbW1Xl87\nPl4JmUzqr9CRnKzy22vTwATTtTmirwMAjE3PcxvX8XNbQhPP1/QY9+QxqfhoXykqGs2YXeD+3NEp\nI3BadxYGaSPOT84bYPS+FUzXhTrjtQlevDYD49caGADYuXMntmzZgpdeegkLFy50Pe5prktv5r00\nNjb7LL6ukpNVqK01+O31qf+C7docqzgJAIgXkt3GdfD7KgBAenxUj3Enq9oS+yNFNbh4ovuGeBp5\nCgDgm9IfkIiUfsfta8F2Xagdr03w4rXpHW9Jnl/vQtqzZw+ee+45vPDCC1CpVFAqlTCb23pdVFdX\nQ6PRQKPRoK6uzvWcmpoaaDSHcl8yAAAgAElEQVQaf4ZF5BOlBi3kEhnSo90nE0VlOshlEuSk9vxX\nVm8GO+ayIy8RkYvfEhiDwYBHHnkEzz//vKsgd/r06dixYwcA4OOPP8bMmTMxYcIEHD16FHq9HiaT\nCYcOHcKUKVP8FRaRT1jtVlQYq5AZkw6ppPt2ZrPZivJaI4anqSGT9u7HrKfBjomRCYiRR+MsExgi\nIv9tIW3fvh2NjY341a9+5Xrs4Ycfxrp167B582akp6fjsssug1wux9q1a3HTTTdBEASsXr0aKhX3\nBSm4VZiqYBftHhvYnSzXQ4T3/i9djcyIxd5vK3GyXIfslO4/A4IgIEedhWP1J2CwGKFSxPQ3fCKi\nkOe3BOaqq67CVVdd1e3xl19+udtjhYWFKCws9FcoRD7n3Mbx3MCurf/LKC/9X7pyDnY8qdVh3iT3\nr+tMYEr0ZRiXNLovIRMRhRV24iXqh5KeOvCWNUEQgBEZvV+BcQ529NaRt2NDOyKioYwJDFE/lOq1\nUEjkSI3uXnButTlwutKArOQYREX0fpGzfbCj2eNgxxwW8hIRAWACQ9RnFrsFlaZqZKkyIBG6/wiV\nVBlgszswMqvv3aRHZnof7Bgjj0ZSVCJK9GW9ajlARBSumMAQ9ZHWWAERoscC3vb5R73fPnJy1sH0\ntI1ksjWjtqW+z69PRBQumMAQ9VGJ3nv9S1FZzwMcPclNVUEmFbwOduQ2EhERExiiPis9V8Cb4yaB\ncYgiTpbrkBQbiXhVRJ9fWy6TIjdVjbIaI8wWm9tzctXZAJjAENHQxgSGqI9K9VpESiOQrEzqdqyy\nzgST2YZR/ah/cRqZ6X2wY2ZMOiSCBGf1pf1+DyKiUMcEhqgPzDYzqptrPRbwFp3b+ulP/YtTx34w\n7iikcmTEpKHMWAGbw/0qDRFRuGMCQ9QHZYbeFvD2fwUm71zvmGIPdyIBbXUwNocNFcaqfr8PEVEo\nYwJD1Afe6l8AoLhMh5goOdISlf1+j94Ndmyrg2FDOyIaqpjAEPVBqasDb1a3Yw16M+r1ZozMjIUg\nCAN6n54GO7Z35GUdDBENTUxgiPqgVK9FlCwKSVEJ3Y4V+WD7yGlkhveGdinKZERKI3gnEhENWUxg\niHqp2dqCmpY65Kgy3a6wFPuggNepp0JeiSBBtioT1c21aLG1DPj9iIhCDRMYol4qM5QDgOcC3jId\nFDIJclJVA36vXg12jM2GCBGl+vIBvx8RUahhAkPUS94KeJvNVpTXGjE8XQ2ZdOA/Vh0HOzYaWt2e\nk8M6GCIawpjAEPWSs97E3QrMyXIdRAB5Pqh/cRrpmovU5PZ4LkcKENEQxgSGqJdKDVrEyKMRH9E9\nSXFu9YzyQf2LU091MHERsYhVqHkrNRENSUxgiHrBaDGh3tyIbLWHAt6yJggCMCLDdwmMc7Cjt4Z2\nubHZ0Fn0aGr1fA4RUThiAkPUC97qX6w2B05XGpCliUFUhMxn7+ka7FjtZbDjuX40Z3WsgyGioYUJ\nDFEvtDew657AnK3Sw2Z3+KT/S1d5PQx2bC/k5TYSEQ0tTGCIeqFUfy6BcVPA68v+L125Gtp5qIPJ\nVmdCgMBCXiIacpjAEPVCiUGLWIUKcRHdk5TiMt914O1qRKb3wY5RskikRGtQatDCITp8/v5ERMGK\nCQxRD3StBjS16tyuvjhEESfLdUiOi0S8KsLn761WKpDS02BHVRbM9lZUmWp8/v5ERMGKCQxRD8q8\n1L9U1JlgMtv8svriNLKHwY457AdDREMQExiiHpR4SWBc/V+y/JjA9DDY0TWZ2sAEhoiGDiYwRD3w\nWsDrqn/xfQGvU08N7TJi0iCTyLgCQ0RDChMYIi9EUUSpQYv4iDioFd2HNBZrmxATJUdqgtJvMfQ0\n2FEqkSIrJgPlxkpY7Fa/xUFEFEyYwBB5obPoobcY3K6+1OvMqNe3YmRmrNvuvL7Sm8GOueosOEQH\ntEZOpiaioYEJDJEXJXrPHXiLy/13+3RXPQ12ZEM7IhpqmMAQeeHqwOu2/uVcA7ss/9W/OPVUB5Or\nzgbAO5GIaOhgAkPkhauA1+0dSE1QyCTISeleG+NrPQ12TIpKQLRMyZlIRDRkMIEh8sBZwJsUmYBo\neeciXZPZivJaE4anqyGT+v/HqKfBjoIgIEedhTpzA4wWk9/jISIKNCYwRB40mBthtJrcbh+dKtdB\nxODUvzg5Bzue6WGwYwn7wRDREMAEhsgDbw3sigax/sXJ2dDO0zZSLgt5iWgIYQJD5IGz/iXH7QTq\nJggCMCJ98BKYET0U8rbficQ6GCIKf0xgiDxw3oGUpcro9LjVZseZSj2yNSpERcgGLR7nYMeTHgY7\nqhQxSIxMQIm+DKLofvAjEVG4YAJD5IazgFejTEKULKrTsTOVBtjsol/HB3gyMsP7YMdcdRZM1mbU\nmxsGOTIiosHFBIbIjdqWerTYzB5vnwaAkX4c4OiJqx8M62CIaIhjAkPkhnP7yG0H3nM1KAFZgemx\nDqatoR3rYIgo3DGBIXKjfQJ1VqfHHaKIk1odNHFRiIuJGPS4ehrsmKVKh0SQsCMvEYU9JjBEbpQa\ntBAgIDMmvdPjFbUmNLfaArL6AvQ82FEhVSA9OhVlhnLYHfYAREhENDiYwBB14RAdKDVokRKtQaSs\n8ypLIOtfnHoz2NHqsKHCVDWYYRERDSomMERd1DTXodVuCbr6F6feDnZkHQwRhTMmMERdlHrrwKtt\nQkyUHKkJym7HBktPgx15JxIRDQVMYIi68NSBt15nRoO+FSMzYyEIQiBCA9DzYMfUaA0UUgULeYko\nrDGBIeqixKCFRJAgo0sBr6v+ZRAHOHribbCjRJAgR5WJKlMNzDZzAKIjIvI/JjBEHdgddmgN5UiL\nToFCKu90zFn/MiqABbxOPQ92zIYI0bUdRkQUbvyawBQVFeHiiy/G66+/DgDYv38/rrnmGqxatQq3\n3HILdLq2f3xffPFFrFixAldeeSU+++wzf4ZE5FV1cy0sDqvbAt4ibRMUMgmyU2ICEFlnvR/syG0k\nIgpPfptE19zcjPXr12PatGmuxx566CE89thjGD58OJ577jls3rwZixcvxvbt2/Hmm2/CaDTi2muv\nxUUXXQSpVOqv0Ig8ctaNZHepfzGZrSivNeH87DjIpIFfuHQOdjxV0TbYUSLpXJPjLORlHQwRhSu/\n/UusUCjwwgsvQKPRuB6Lj49HU1NbHYFOp0N8fDz27duHmTNnQqFQICEhARkZGTh58qS/wiLyytMd\nSCeDaPvIaWRGLFpa7SivM3U7FhcRC7VCxRUYIgpbfktgZDIZIiMjOz32u9/9DqtXr8aiRYtw8OBB\nLF++HHV1dUhISHCdk5CQgNraWn+FReRViUELqSBFekxap8fb+78ETwLT3g+me0M7QRCQq85GU6sO\nTa3ut5mIiEKZ37aQ3Fm/fj2efvppTJ48GRs2bMAbb7zR7RxRFHt8nfh4JWQy/20xJSer/PbaNDD+\nvDY2uw0VxkrkxGUgPSW+07EzVQZIBODCC9KhjJR7eIXBdeH4dLzy0QmU1TW7/bqMSRuBb+uOoRF1\nGJncvabHl/gzE7x4bYIXr83ADGoC88MPP2Dy5MkAgOnTp2Pbtm2YOnUqzpw54zqnurq607aTO42N\nzX6LMTlZhdpag99en/rP39emzFAOq8OG9Ki0Tu9jtdlRXNaILI0KJoMZJkNw3JocIYiIiZLj6Mk6\nt1+XZGkKAOBbbRGGRYzwWxz8mQlevDbBi9emd7wleYNajZiUlOSqbzl69ChycnIwdepU7N69GxaL\nBdXV1aipqUFeXt5ghkUEoOME6s6rFWcqDbDZRYzMCtz4AHd6GuzorONhIS8RhSO/rcB899132LBh\nA8rLyyGTybBjxw7cf//9WLduHeRyOWJjY/Hggw9CrVZj5cqVuP766yEIAv74xz9CIgn8XR409JS4\nCnizOj3ubGA3KojqX5zyMmPxzck6FGubcOHolE7HlPIopCg1KNFr4RAdkAj8uSKi8OG3BGbcuHHY\ntGlTt8fffPPNbo+tWrUKq1at8lcoRL1SatBCJpEhPbpzIuAs4M0L4ABHT/Iy2vvBdE1ggLbbqfdV\nHURNcy1So7sfJyIKVfyTjAiA1W5FhbEKmTHpkEraC8QdoohirQ6auCjExUQEMEL3hqV5H+zIhnZE\nFK6YwBABqDBVwS7au/V/qag1oaXVFnT1L05ymRQ5qSqPgx3Z0I6IwhUTGCIAJR4KeIuCaICjJyMz\n4zwOdsyISYNMkOKsvjQAkRER+Q8TGCK0d+DtOgOpvYFdcK7AAN4HO8okMmSqMqA1VsJqtw52aERE\nfsMEhghtCYxCIkdqdOceRMXaJqiUcqQmKAMUWc96M9jRITqgNVYMZlhERH7V7wTm7NmzPgyDKHAs\ndgsqTdXIUmV0utW4XmdGg74VIzPjIAiCl1cIrK6DHbvKZSEvEYUhrwnMjTfe2OnjjRs3uv7/vvvu\n809EAWR32GHhMvuQozVWwiE6vNS/BO/2kZO3wY7tCQzrYIgofHhNYGy2znc1fPXVV67/783MolDz\nzqkPseaDdTDbgqNVPA0OVwdej/UvwVvA6+RtsGNyVBKiZFG8E4mIworXBKbrsnnHpCWYl9T7K0oW\nhSazHt/WfR/oUGgQlRjafrF3L+BtgkIuQXZKTCDC6hPnKpG7Qt62ydRZqG2ph8nqvzliRESDqU81\nMOGYtHQ0JSUfALC/6nCAI6HBVKrXIlIagWRlkusxY4sV5bUmjEiPhUwa/LXuqQlKxETJvRbyAuwH\nQ0Thw+soAZ1Oh//973+uj/V6Pb766iuIogi9vnvPiVCXokzGiPgcnGgshsFihEoR/H9508CYbWZU\nN9ciL25YpwLek+XBf/t0R87Bjt+crEOjoRXxqs5dgzvWwYxJPC8QIRIR+ZTXBEatVncq3FWpVHjm\nmWdc/x+OZuQU4FRjCQ7VfIvZmdMDHQ75WZmhAiLEbgW8xSHQwK4r52DHk+U6FJzf+XZwrsAQUbjx\nmsC4G8YY7mZkT8Gmb/6N/VWHmcAMAd4a2EkEAcPT1YEIq1+cgx2LtU3dEhi1QoWEyHic1ZdBFMWw\n3w4movDndXPfaDTilVdecX385ptv4tJLL8Vtt92Guro6f8cWEPFRsRgVPwJn9CWoa6kPdDjkZ84E\nJluV5XrMarPjbKUeWSkxiIrw28B2n3MNdvRSB2O0mtBgbhzkyIiIfM9rAnPfffehvr7tl/iZM2fw\nxBNP4O6778b06dPx5z//eVACDIQpKRMBAAeqjwQ4EvK3Ur0WUbIoJEUluB47U2mAzS6GTP2LU28H\nO7IfDBGFA68JTFlZGdauXQsA2LFjBwoLCzF9+nRcffXVYbsCAwATNeMgk8iwv/pwWPa7oTbN1hbU\ntNQhR5XZaUvFWf8yKoTqX5xGZnge7JirzgbAjrxEFB68JjBKZfv8l6+//hpTp051fRzOe+hRsiiM\nSzwfVaZqlBsrAx0O+UmZoRyAmwnUZaF1B1JHeV76wWSpMiBAYCEvEYUFrwmM3W5HfX09SktLcfjw\nYcyYMQMAYDKZ0NLSMigBBkr7NtI3AY6E/KW9/qU9gXE4RJws10ETH4XYmAhPTw1azkJed/1gIqQK\npMekotRQDrvDPtihERH5lNcE5uabb8aSJUtwySWX4NZbb0VsbCzMZjOuvfZaXHbZZYMVY0CMSzwf\nkdJIHKj+Bg7REehwyA9K3CQw5XUmtLTaQnL1BQDU0QqkxEd5HexodVhRYaoOQHRERL7jNYGZPXs2\n9u7diy+++AI333wzACAyMhK/+c1vcN111w1KgIEil8qRrxmHxtYmnGo6G+hwyA9K9VrEyKORENle\n6xLK9S9OIzPjPA52bO8Hw0JeIgptXhOYiooK1NbWQq/Xo6KiwvXf8OHDUVFRMVgxBkyBaxuJowXC\njdFqQr25AdnqzgW8RWXnGthlhW4C422wo7OQl3UwRBTqvDa5mDdvHoYNG4bk5GQA3Yc5vvbaa/6N\nLsBGxY+AWqHC4ZqjuHLUpZBJQqcnCHlXpm8r4O3YwE4URRRrdVAr5UiJjwpUaAPWcbDj3EmdC5RT\nlRooJHLeiUREIc/rb+QNGzbgvffeg8lkwtKlS7Fs2TIkJCR4e0pYkQgSTE6ZgE/L9uJ4QxHGJ40J\ndEjkI+7qX+r1ZjQaWjF5VHJI32XnbbCjVCJFtjoTp5rOwmxrRaQs9AqViYiAHraQLr30Urz00kv4\n61//CqPRiOuuuw4/+9nPsG3bNpjN5sGKMaCc20icUB1eXHcgdbiF2tnBNlQLeJ2cgx3rdG0JWVc5\n6iyIEFF27mtARBSKvCYwTmlpabj11lvx0UcfYdGiRXjggQdw0UUX+Tu2oJCtykRyVCK+rfseZlv3\nXwYUmkr1WsQqVIiLaE9WisOg/sXJVQfjph8MG9oRUTjoVQKj1+vx+uuv4/LLL8frr7+OW265Bdu3\nb/d3bEFBEAQUpEyE1WHFt3XHAh0O+YDeYkBja5ObCdQ6KOQSZGliAhSZ73Qc7NhVjoqTqYko9Hmt\ngdm7dy/+/e9/47vvvsPChQvx8MMPY9SoUYMVW9CYkpKP7Wd3Yn/1YVyYOinQ4dAAleq7178YW6wo\nrzNhdE48ZNJe5fVBzTnY0V0dTEJkHFSKGK7AEFFI85rA/OxnP0Nubi4mTZqEhoYGvPzyy52OP/TQ\nQ34NLlikRGuQrcrAiYZiGCxGqBSh/xf6UOaugPdkmNS/ODkHO56pMKDVYkeEQuo6JggCctVZOFp3\nHLpWPWIj1AGMlIiof7wmMM7bpBsbGxEfH9/pmFY7tAoAp6RMRKmhHIdrvsWszOmBDocGwLUC06mA\nN3zqX5xGZsThVLkepyv1GJ3T+ec3R5WNo3XHUaIvwwXJYwMUIRFR/3ldK5dIJFi7di3uvfde3Hff\nfUhJScGFF16IoqIi/PWvfx2sGIPC5JQJECBgP5vahTRRFFFq0CI+Ig5qhcr1eLFWB4kgYER6+KxG\nuAY7um1oxzoYIgptXldg/vKXv+CVV17BiBEj8N///hf33XcfHA4HYmNj8fbbbw9WjEEhLiIWI+NH\noKjxJOpaGpAUNXT64YQTnUUPvcWACcnjXI9ZrHacqdQjOyUGkYrwaVbobbBjzrnVJ9bBEFGo6nEF\nZsSIEQCA+fPno7y8HD/5yU/w9NNPIyUlZVACDCYFKfkAgIOcUB2yStwU8J6p1MPuEDEyhOcfueNt\nsKNSroRGmYQSQxmHlRJRSPKawHTtRpqWloYFCxb4NaBglp88HjJBigNMYEKWs4FdxxEC4dLAzp28\nzFjPgx1V2WixmVHbXBeAyIiIBqZP94uGcnt1X1DKozA2aTQqTFUoN1YGOhzqB2cBb5Y6w/WYK4EJ\nowJeJ+eqkvvBjm11MNxGIqJQ5HXD//Dhw5gzZ47r4/r6esyZMweiKEIQBOzevdvP4QWfKSn5OFL7\nHfZXHUZGXlqgw6E+cBbwJkUmIEYeDQBwOEScLG9CSnwUYqMVAY7Q91wN7dwMdszpkMD8KG3yoMdG\nRDQQXhOY//znP4MVR1DY9uVZHDlVj7uuzodCLnV7zrjE0YiURuJA9Tf48YhCSITQb3o2VDSYm2C0\nmjAqfoTrMW2tES2tdkweFX6rLwCQmqhEdKTMbSFvpiodUkHKO5GIKCR5TWAyMjK8HQ47Fqsdp8t1\nOPBDDaaPc7+6opDKkZ88Dl9VHcBpXQny4oYNcpTUX6VuGtiFc/0LAEgEASMz4/DNyTo0GloRr2qf\nPi2XyJAZkw6tsQJWhw1ySfjcgUVE4Y/LBx3MnJAOQQB2H67wet6U1La7kdgTJrS4CnjdNLAbFYb1\nL07eBjvmqLNgF+0oN3r/niciCjZMYDrQxEVh4nkanCzXQVtj9HjeqLgRUClicLj6W9gctkGMkAbC\nVcCraltZFEURxVod1Eo5NPFRgQzNr7wNdnQV8uq4jUREoYUJTBeLp+UCAHZ/U+7xHKlEiimafJhs\nzTjRUDxIkdFAiKKIEoMWGmUSomRtyUq9zoxGQytGZsaF9R123gY78k4kIgpVTGC6KBidgnhVBL78\nrgpmi+fVFW4jhZa6lga02FqGVP2Lk3OwY2m1Ea0We6djycokRMkiUWIoDVB0RET9wwSmC6lUglkT\n0mG22PH18RqP5+WospAUlYhva4/BbGsdxAipP0oMbSsMnRvYhd8AR09GZsTBIYo4Xanv9LhEkCBH\nlYWa5jo0W5sDFB0RUd8xgXFj1oR0SAQBnx72vI0kCAIKUibC4rDiaN33gxgd9Uf7BOos12NFWh0i\n5FJkp8QEKqxB4yrkdVMHk+Ma7Di0JswTUWhjAuNGvCoCE/ISUVJlwJkuf7F2NCWF20ihotSghQAB\nmTHpAABjixUVdSYMT1dDKgn/H4OODe26Yh0MEYWi8P+Xu5/mTGy7U2W3l1WY1GgNslQZON5QBIPF\n811LFFgO0YFSgxYp0RpEytr6oDgLWsP59umOXIMdy/VwiJ0HO7pWYFgHQ0QhhAmMB2OHJSApNhL7\njlej2Wz1eN6UlHw4RAcO1xwdxOioL2qa69Bqt3Sqfyly1r+EeQFvR22DHW2oqO082DE2Qo34iDic\n1ZdB7JLcEBEFKyYwHkgEAbPz02GxOvC/Y9Uez5uSkg8BAg5wGyloue/A2wSJIGB4ujpQYQ0652BH\nd/1gctRZMFiMaDB3P0ZEFIyYwHhx0QXpkEoE7P6m3ONfpnERsRgZNxyndGdR39I4yBFSb7QX8LYl\nMBarHWcrDchOiUGkYui0z+9NHYzzbi0iomDn1wSmqKgIF198MV5//XUAgNVqxdq1a7FixQrccMMN\n0Ona/iF9//33ccUVV+DKK6/E22+/7c+Q+iQ2WoHJ5yWjvNbktg27k7MnzMHqbwYrNOqDEoMWEkGC\nzJi2+VZnKvWwO8QhU//i5G2wY3shL+tgiCg0+C2BaW5uxvr16zFt2jTXY2+99Rbi4+OxZcsWLFmy\nBAcOHEBzczOeeeYZvPLKK9i0aRNeffVVNDUFzzL2nPyei3knJo+HTJDybqQgZHfYoTWUIy06BQqp\nAkDb7dPA0Kp/Adq2RfMyYlF3rgNxR1mqTAgQOJmaiEKG3xIYhUKBF154ARqNxvXYp59+ih//+McA\ngKuuugrz58/HkSNHMH78eKhUKkRGRmLSpEk4dOiQv8Lqs/Oy45CaoMT+E7UwNFvcnqOUKzE28XxU\nmKpQbqwc5AjJm+rmWlgcVrcN7PIyh9YKDOB5sGOkLAJp0Sko1Wthd9jdPZWIKKj4rQBAJpNBJuv8\n8uXl5fj888/x6KOPIikpCX/4wx9QV1eHhIQE1zkJCQmora31+trx8UrIZFK/xA0AycmqTh8vmzkc\nL773HY6cacTyOXlunzNv1DQcqTuG7w3fI3/YKL/FNtR1vTY9OWb8DgAwJj0Pyckq2B0iTlfokZEc\njbzcRH+EGNQKxqXj35+dRnl9M5Z0+VqerxmOXWeq0BphRE5cpodXcK+v14UGD69N8OK1GZhBrWAU\nRRHDhg3DmjVrsHHjRjz//PMYM2ZMt3N60tjov5bnyckq1NYaOj12QW48ZFIJPtx7GtPHaCBxM/gv\nWz4MkdIIfH7ma8xPnQuJwPpoX3N3bXryXflJAECCkITaWgNKqw1oNtswaVRyn18rHMRFSiGVCPi2\nuLbb55+iSAUAHC45AaW199tr/bkuNDh4bYIXr03veEvyBvW3bFJSEgoKCgAAF110EU6ePAmNRoO6\nujrXOTU1NZ22nYJBTJQcF47WoLqxBSdK3N9ppJDKMSF5HBrMjTitKxnkCMmTUoMWUkGK9HMFvENl\ngKMnCrkUuWnuBzvmqLMBgHUwRBQSBjWBmTVrFvbs2QMAOHbsGIYNG4YJEybg6NGj0Ov1MJlMOHTo\nEKZMmTKYYfVKbzrzFqRMBAAc4N1IQcHusENrrEBGTCrkkrbFRmf9y6ghWP/i5GmwY3p0CuQSOUcK\nEFFI8NsW0nfffYcNGzagvLwcMpkMO3bswGOPPYY///nP2LJlC5RKJTZs2IDIyEisXbsWN910EwRB\nwOrVq6FSBd++4Ih0NTKTY3C4uA46YytiYyK6nTMqfgRU8hgcqjmCK0f+GFKJ/+p0qGcVpmrYHDZX\nAztRFFFU1gR1tAKa+KgARxc4eZmxwNdtgx1H58S7HpdKpMhWZeC0rgStdgsizt21RUQUjPyWwIwb\nNw6bNm3q9vhTTz3V7bHCwkIUFhb6KxSfEAQBcyemY9PHRdjzbSWWTc/tdo5UIsXklAnYrf0CxxuK\nMC5p9OAHSi6l55qyORvY1enMaDJaMPm8ZAhu6piGCm8N7XLUWTilO4syQzny4oYNdmhERL3GStM+\nmDo2FRFyKT77pgIOh/ti4ynntpHYEybwSpwdeFVtTdqKXfOPhu72EeB9sCMb2hFRqGAC0wdRETJM\nHZuCer0Z352pd3tOrjoLSVGJ+Lb2GFrt7vvG0OAoNWghk8iQHp0CgAW8HXka7MhCXiIKFUxg+qi9\nM2+F2+OCIKAgJR8WhxVHa48NZmjUgdVuRYWxCpkx6a5apGKtDhFyKbJTYgIcXeC5Bjt22UZKjIxH\njDyahbxEFPSYwPRRTqoKw9JUOHKqDvU6s9tzpqS0zUbiNlLgVJiqYBftrgJeY4sVFXUmjMhQQyrh\nt72zDuZkl8nUgiAgV52FBnMj9Bb2qCCi4MV/yfthTn4GRBH4/Ij7VZjU6BRkxaTj+4YiGC0mt+eQ\nf5V0mUDN+pfOnIMdi90MdsxxTqbmKgwRBTEmMP1w4egUREXI8Pm3FbDZHW7PmZI6EQ7RgcO13w5y\ndAS01b8AcM1Acv6iHsX6FwDeBzuyDoaIQgETmH6IUEgxfVwqdEYLjpysc3vOZM0ECBCwv4pN7QKh\n1KCFQiJHijIZAFBc1gSJIGB4OhMYJ0+DHdvvRGICQ0TBiwlMP83JTwcA7P7G/TZSfGQc8uKG4ZTu\nDOpb3I8fIP+w2C2oNI8RTsgAACAASURBVFUjU5UBqUSKVqsdZ6sMyEmNQYSCzQWdXIW8XepgouVK\nJEcl4qy+rFezyYiIAoEJTD9lJMdgVGYsjp1pQI2H4ZLO0QIHa7gKM5i0xko4RAdyztW/nK3Uw+4Q\nWf/SRW6qClKJgJMe6mBabC2obXG/wkhEFGhMYAbAOR/pMw+rMBM14yEVpJyNNMhKXQ3s2hKYIlf/\nFyYwHSnkUuSmuh/smHuuDobbSEQUrJjADMDk8zSIiZJjz7eVsNq6F/Mq5UqMTTwf5cZKVBirAhDh\n0NStgLfMeQcS61+6ysuMdTvYkXUwRBTsmMAMgFwmwUXj02BsseJgUY3bc9gTZvCVGLSIlEYgWZkE\nh0PEyXIdUhKUUEdzOGFXeRltq1Jd+8FkxqRDIkh4JxIRBS0mMAM021nM66Ez7/ik0YiQKnCg+hsW\nRA4Cs60V1aYaZKkyIBEk0NYaYbbYefu0B847kbp25JVL5ciMSYPWUA6bwxaI0IiIvGICM0ApCUqM\nyY1HUVkTyuu6N61TSBXITx6PBnMjzuhLAhDh0KI1VkCE2KGBHetfvIn1MtgxR50Nm2hHubEyQNER\nEXnGBMYHnPORPjtc7va4axupittI/lZ6bsvDWf9S5Kx/yeIKjCeeBjuyDoaIghkTGB/IH5mE2GgF\nvvyuCq1We7fj58XnQSWPwaGab2F3dD9OvlNicN6BlAVRFFGsbYI6WgFNXFSAIwtengY75nKkABEF\nMSYwPiCTSjBzQjqaW23Yf7x7Ma9UIsWklAkwWk040VgcgAiHjlKDFlGyKCRFJaBOZ0aT0YJRmbEQ\nBCHQoQUtT4MdNcpkREojuAJDREGJCYyPzJ6QDkEAdn/jfhupgNtIftdsbUFNcx1yVJkQBKF9+4j1\nL155GuwoESTIVmehurkGLbaWAEVHROQeExgfSYyNxAXDE3G6Qo+SKkO347nqbCRFJuBI3TG02i0B\niDD8lRnaksduBbysf/Gq42DHJmPnwY7t20jaQIRGROQRExgfmu3qzNt9FUYQBExJnQiL3YKjdd8P\ndmhDQqmhcwfeYm0TIhRSZGliAhlWSHANdtRysCMRhQYmMD50wfBEJKgj8L/vq9HS2r13hnMb6QCb\n2vlFSYcExtBsQWV9M/LS1ZBK+G3ek/bBjp0TmBwW8hJRkOK/7D4kkQiYPSEdrRY7vvq+utvx1OgU\nZMak41j9DzBau/eMoYEp1WsRI49GQmScayWB9S+94xrsWN65kDcuIhZxEbE4qy9lI0YiCipMYHxs\n5oR0SAQBuw+Xu/0Hf0pKPhyiA4drjgYguvBltJpQb25A9rkC3vYGdqx/6Q3nYMeSqu6DHXPUWdBb\nDGhq7T61mogoUJjA+FhcTAQmjkpCWY0Rpyv03Y5PScmHAIHbSD5Wpu9awNsEqUTA8HQmML3FwY5E\nFEqYwPjBnHPFvO5uqY6PjENe3DCcbDqDBnPjYIcWtko6TKButdpxtsqA7BQVIhTSAEcWOjwNdmRD\nOyIKRkxg/GB0Tjw08VH4+ngNTGZrt+PO0QIHq48Mdmhhy3UHkjoTZyr0sDtEbh/1kafBjlmqTAgQ\ncFZfGoiwiIjcYgLjBxJBwJz8DFhtDnx5tKrb8YmaCyAVpNjPbSSfKdVrEatQIS4iFsVaNrDrj9ho\nBTRuBjtGySKREq1BqUELh+gIYIRERO2YwPjJjPGpkEkF7P6mezFvtFyJMYnnodxYiQpj9wSH+kZv\nMaCxtYkN7HxgZIbnwY6tdguqTN1HZRARBQITGD9RKRWYcp4GlfXNrpb2HbX3hPlmsEMLO6X69v4v\nDoeIk+U6pCYooVYqAhxZ6PG0jcRCXiIKNkxg/MhZzPvp4e7FvOOTxiBCqsCB6sPsrzFAHTvwltUY\nYbbYWf/ST3mZ7gt52xvasQ6GiIIDExg/GpkZi/SkaBz8oRZ6U+f5RwqpAhOSx6He3Igz/KUwIB0L\neFn/MjBpHgY7ZkSnQS6RcQWGiIIGExg/EgQBc/LTYXeI2Hu0stvxKSkTAXBC9UCV6rWIj4iDWqFy\n/eIdxfqXfvE02FEqkSJLlYEKUxUsHEZKREGACYyfTR+XCoVMgs++Ke90ZwcAnB+fhxh59P9v777D\nozzPfI9/p6p3adQbkkB0CRCY3o17oxqDk6yzZ/fYTjt2Ettx4uw6uwlxsuskdqqdxMGN4gIugMEg\njDFdBURTRUK915E07T1/qCCBMHLQaGak+3NdviS90x78aqSfnud+n5uM6mysNut1nkF8mcbOJppM\nLcT4RqEoCrmljfh56Qnx93D00FzW9Ro7xvpGY1NsXG4pd8SwhBCiHwkwdubprmPmhFBqGjs4d6m+\n320atYbpoVNpNbdxoSHfQSN0bcV9CnhrmjpoajWRFOWHSqVy8Mhc1/UaO8b5SB2MEMJ5SIAZBot7\ndubNvPYvV1lGujklfXbgzeu+2ispWupfbsb1GjvG+sYAciWSEMI5SIAZBnFhPsSEepOVV0tDS2e/\n2+J9YwhyDyS7NkdqC/4JPZdQR/tG9hbwjpUC3pvS09ixpKqVTvOVpc1gj0C8dJ4SYIQQTkECzDBQ\nqVQsSo3Epigcyi6/5ra00BRMVhNnas85aISuSVEUSlpKCXIPxFvnRV5pE256DVEGL0cPzeUlRvlh\ntSkU9WlIqlKpiPWNpq6jnhZTqwNHJ4QQEmCGzazxobjrNRzMLsdq678d+4yw7mUk2dTuK6nvaKTV\n3EaMbxTNRhMVdUYSI3zRqOXb+mb1NHa8ZkM7H2nsKIRwDvKTfph4uGmZPTGMhpZOThfU9bst3CuU\nSO9wztVdpM1sdNAIXU/f+peC3vYBsnw0FHp35L3OhnayjCSEcDQJMMNoYUoEMHAxb1poKlbFSmb1\n6eEelsvqDTC+UeTKBnZD6nqNHeO6C3llBkYI4WgSYIZRTKgPCZG+5BTWUdvY3u+2GdIb6SvrLeD1\niSSvtAmNWsWYCF8Hj2rkGKixo7fei2D3QIqbL0sLDCGEQ0mAGWaLUiJRgINXFfMGuPuT6B9PXmMh\nDR3XNn8U/SmKQnFLKQbPYNSKnuLKFmLDfHDTaRw9tBHjeo0dY32jabMYqW2vH+hhQggxLCTADLO0\nZANe7loOna7AYr2qmLd7TxiZhbmx2vZ62i3txPhEUVTejNWmSAPHIXa9xo5XOlPLhnZCCMeRADPM\n9DoNcyaF09xmIjOvtt9tqYbJaFQaCTCDUNLSVYMR6yP1L/ZyvcaOcX5SByOEcDwJMA6wKLWnmLes\n33FvnRcTgsZS2lpORVuVI4bmMop7O1BH9/6CTZQZmCGlVqlIGKCxY5R3JGqVWq5EEkI4lAQYBwgP\n8iI5xp/zxQ1U1LX1u613GUlaC3ypkuZSVKiI8Awjv6yJ8CBPfD31jh7WiJM0QGNHvUZHpFcYl1vL\npAmpEMJhJMA4yKLu/kgHs/oX804OnoBeo+dEVZZc5XEdXR2Rywj1MlBTb6HTZJX6FztJjOzZD+ba\nQl6LzUJZa4UjhiWEEBJgHGXa2BB8PHUcPlOBqU+/GTeNnqnBk6jrqJciyeuoMdbSYe2U+pdhEB/u\nO2Bjxzhp7CiEcDC7Bpjc3FyWLVvG66+/3u/4oUOHGDduXO/XO3fuZOXKlaxevZpt27bZc0hOQ6tR\nM39KBG0dFk5erO53W1pY154wJ6pkGWkgvfUvPlG9MwMyA2Mf12vs2LMjrxTyCiEcxW4Bxmg08vzz\nzzN79ux+xzs7O/nzn/9MSEhI7/1efvll/v73v7N582Zee+01GhtHxz4oC1IiUAHpVy0jJQck4a3z\n4lRVttQYDKD/BnaN+HnrCfH3cPCoRq6BGjuGeRlw0+i51CIBRgjhGHYLMHq9nr/85S8YDIZ+x//4\nxz+yfv169Pqugsvs7GwmT56Mj48P7u7uTJs2jYyMDHsNy6kY/D2YGB9IfmkTpdVXuvtq1BqmGabS\nam7jYkO+A0fonIpbSlGr1Lhb/WlqNZEU5Y9KpXL0sEasgRo7qlVqYnyiqGqrxmhuv95DhRDCbrR2\ne2KtFq22/9MXFRVx4cIFvvOd7/DCCy8AUFtbS2BgYO99AgMDqamp+dLnDgjwRKu1346rISE+dnvu\nq92zMJGcouMcu1hD6sTw3uPLVXP4rOwLzjTlsDB5xrCNx9kFBnlS1lpOtG84dS1dRc6pyYZhPWej\nzSx3HS+/d4aS6tZ+/58nhCWS11hIYX0xk0KTHThC8WXkveG85NzcHLsFmIH8/Oc/59lnn/3S+wzm\nypuGBvt1bA4J8aGmpsVuz3+1eIMn/t56Pj1Rwp2zonHXd52SACWEIPcAjl3O5P7Yu9Fr5BLhkBAf\ncooL6bSaiPCMION8JQAR/h7Des5GI0OAB+eL6qmqbkbdPdtl0IYCkF9fTKg60pHDE9cx3D/PxODJ\nuRmcLwt5w3YVUlVVFYWFhTz55JOsWbOG6upqNmzYgMFgoLb2yo601dXV1yw7jWQatZoFUyPoMFk5\nfv5KMa9KpWJGaCqdVhNnas87cITOpW8Bb+7lJtz1GqIMXg4e1ciXFOmHsdNCee2VfYt6Cnnz6y45\naFRCCEfqsHTyQcFu9lza75DXH7YAExoayr59+9i6dStbt27FYDDw+uuvM3XqVM6cOUNzczNtbW1k\nZGQwY8boWjJZMDUClQoOXLUzr3SovlZPAW+QPpTKeiMJkX5o1LIbgL0lDrChnb+bH356H/Lqixw1\nLCGEAyiKQnZNDs8f+xW7i/dzwUG1mnZbQsrJyWHTpk2UlZWh1WrZs2cPv/vd7/D3779fh7u7O088\n8QSPPPIIKpWKxx57DB+f0bUuGOjrTkpiMJl5tRRVNBMf7gtAhHcYkd7hnK27QJvZiJfO08EjdbyS\nllI0Kg3Ghq6rjuTy6eHR09gxr7SxdxNGlUpFnG8M2bVnaexswt9NzoUQI11dewPb8t7nTO15NCoN\nt8UtZUXsEoeMxW4BZtKkSWzevPm6t+/ff2XK6bbbbuO2226z11BcwqLUSDLzaknPLOsNMNA1C7Oj\nYBdZ1WeYGznLgSN0PIvNSmlrOZHeYRSWdV21NVY2sBsW123s2B1gtuXuYMP4NXho3R00QiGEPVlt\nVvZfPsTHRXsx2cwk+Y9h3bgHCPNyXMmHzL07iYnxgQT7uXPsfBXGDkvv8Z5lJNnUDkqbyrHYLL31\nLxq1ivgI3xs/UNy06zV2nBc5i+TgBLJqcth04jeUtpR/ybMIIVxRQeMlfnHiN7xf8DF6jZ6Hx6/l\nO6n/5tDwAhJgnIZapWJhSgQms40jZyt7jwe6B5DgF09+YxENHaNjg7/rKagvBiDCM5KSqhZiw3xw\n09nvcnrR30CNHT11nvxk8fdYHrOImvY6fnXqJQ6XH5M+XkKMAG1mI2+c387/ZPye8rZK5kbM5Ce3\nfJ9Z4dOdYu8tCTBOZN6UCDRqFelZZf1+AaSFpaCgcKo624Gjc7yChq7eUKoOf6w2RZaPhtn1Gjtq\n1RruS7yDf5/ydXRqHW9eeId/nN9Cp9XkiGEKIW6SoigcqzjFfx59gS8qjhPhFcb/m/Yo65NXOVUt\npgQYJ+LnpWfa2BDKatrI77PraaphCmqVmpOVo3sZqbC+GK1aS311V+mWFPAOr+s1duwxOXgCT6V9\nh1ifaI5XZvDLk7+jsq1qmEcphLgZlW3V/CbzT/zj/BZMVhP3JdzBU2nfIcE/ztFDu4YEGCfTc4VH\nep9Lqr11XkwIHMfl1vJR+wvBbLNQ3FRGlHcEBaVdmz8lSIAZVnqdhtgBGjv2FeQRyP+b/n9ZGDWX\nyrYqNp34LccrR0drECFcmclq5oPCPfz38f8lr7GQycHjeXbWkyyPXYRG7ZxL9RJgnExyjD+hgZ6c\nuFBDi/HKFHxabzHv6NwTpry1AqvNSrR3JPnlzYQHeeLrKbsTD7fEyGsbO15Nq9ayZuy9PDJpA2qV\nmtfOvc2bF97BbDUP40iFEIN1ru4i/3Xs1+y+9Ck+em/+z+SH+bfJXyfII8DRQ/tSEmCcjEqlYnFK\nBBarjcNnrhTzTg6ZiF6j52Rl5qgskCzp3oHXmxA6TVaSpP7FIXqW7fo2dryeaYYp/DDt20R6h3O4\n/Bi/OvUy1cbaGz5OCDE8mjqb+WvOG7yc/Sr1nY0siZ7Pj2c9ydSQSU5RpHsjEmCc0JzJ4Wg1ag5m\nlWHrDituGj1TgydS21HPpebLDh7h8OvZgbez0RuQ+hdH6dnQLr/0xgEGwOAZwpPTH2duxExKW8vZ\ndOK3ZFafsecQhRA3YFNspJce5j+P/opT1dnE+cbwgxnfZmXS3bhr3Rw9vEGTAOOEvD10zBxvoKqh\nnQvFDb3HR/OeMMUtpbhp9FRWdP1VkBQtMzCO4OelxxDgQUFZU2+4vhG9Rsf65FU8PH4tNsXKKzmb\n2Z67E4vNcuMHCyGGVElLKS+cfIltuTtQqWDduPt5YvqjRPtEOHpoX5kEGCe1KKW7mDfrysZg4wPH\n4q3zIqMqG6tt4CLKkcZis/BpyWeUt1YS6x9FfmkLft56Qvxkx1dHGaix42DMCp/O92d8izBPAwdK\nP+d/M/5IfUfDjR8ohLhp7ZYOtuXu4JcnfkdJSylpoan85JbvMz9yNmqVa0YB1xz1KJAQ6UtUiBeZ\nuTU0de98qlFrmGaYQou5ldyGAgeP0L4UReFM7Tn+69j/8G7+h3ho3VkSvZSmNhNjo/xdYn12pBqo\nseNgRXiH8f0Z3yItNJVLzSX84vhvyJFu60LYjaIoZFSf5vmjvyK99DAhHkF8K+Vf+frEB/HVu3bf\nQQkwTkqlUrEoNRKrTeHQ6Yre4zNCU4GRvYxU3lrJS1mv8MfTf6e2o56FUXP56ewfYmsKBqT+xdGu\nNHb86gEGwF3rxtcmrGP9uJV02kz84fTf2FGwa9TMKgoxXGrb6/j96b/yas7rtJnbuCN+Oc/M/B7J\ngUlD9hoF5U399i0bTnZr5ihu3uyJYWw7UMDBrHLuuCUWtVpFvF8Mge4BZNfkYLI+gF6jc/Qwh0yr\nuY2PCvfyeflRbIqN8YFjWZl0N+FeoQCcK+paTpMrkByrp7Hj9Ta0GwyVSsXcyFnE+EbzSs5mPik+\nQGHTJb4xcb10tRbiJvUsve+6tA+zzcK4gETWjrufUM+QIXuNFqOJrfvzOZxTSUSwFz/75vA3G5YA\n48Q83LTMmhDKZ9nl5BTVMSUhGLVKzYzQFD4pPkBO3XmmGaY4epg3zWqz8lnZET4q2ku7pR2DZzAr\nE+9mYlByv6Wic0X1uOs1RBu8HTha0dPY8XRBHU2tnYSE/PPT0NE+ETyV9m1eP7+drJoz/Pz4i3xj\n4voh/QtRiNEkr6GQty++S6WxGh+dNw8l382M0JQhW3ZXFIXPz1SwdX8+bR0WYkK9+cbt44fkub8q\nCTBOblFqBJ9ll5OeWc6UhK4llLTQVD4pPsDJykyXDzBn6y7wTt6HVBmr8dC6szLpbhZEzkar7v+t\n2Ww0UVbTyqT4QNRqqX9xtKSorgCTV9pEYnzwTT2Xh9aDb07awMHSL3g3/0NeynqFO+KXcVvcUpct\nLhRiuLWa2niv4COOVpxEhYp5kbdw75jb8BzC3kXltW38Y89Fci834qbXsG5pEkunR6JRO+Z9KgHG\nycWF+RIf7kN2QS11TR0E+bkT4R1GhFcYZ+suYDQbh/QbdLhUtlXzTv4HnKu7iAoV8yNnc1f8rXjr\nvQa8f97lrjVWqX9xDn0bO94+BM+nUqlYFD2XWN9oXs15nY+K9lLQeImvT3wQH73MuAlxPTbFxtGK\nU7yf/xFtFiOR3uE8OO4B4v1ih+w1TGYrHx4pZtfRYqw2hdSkYB5aPpZAX8deDSoBxgUsSonkb7su\n8Fl2OfcvGAN0zcLsKNxFZs0Z5kYM/9rjP8toNvJx0T4Oln2BTbExLiCRlUl3E+kd/qWPyyvtqreQ\n+hfncKPGjv/08/rF8PTM7/KPc1vIqTvPz4+/yL9MeohE//ghfR0hRoLy1krevvgeBU1F6DV6Vibe\nxcKouUPau+jspXo277lIdUM7gb5uPLRsLKljh66W5mZIgHEBM8eH8vb+PD47Xc7dc+PQatRMD01h\nR+EuTlZmuUSAsdqsfF5+jI8KP6HNYiTYI4gHEu9iSvCEQa3N5pU2odWoiI/wHYbRihvpaexYXNlC\nh2loN6Tz0nnyb1O+xqcln7GzcDe/yfwT94y5jaUxC2RJSQjAZDWx69Kn7Cs5iE2xMTVkEquT7iHA\nfej+wGtqM7Hl0zyOnqtCpYJb06K5b3487nrniQ3OMxJxXW56DXMmhvNpRinZ+XVMHxdCkEcACX5x\n5DUW0tjZ5NRXbpyvz+WdvA+oaKvCXePO/Yl3sjBqLjr1jb/9zBYrn5y4THFlC0nR/rjpnLMr6miU\nGOlHYXkzeSWNhPkN7fbjapWa5bGLiPeL5a85b/B+wccUNBWxcfxavFxwyVSIoZJTe56tue9T19FA\ngJs/a8fdx+TgCUP2/DZF4bPscrYfKMDYaSE+3IeHVyQTG+Z8e8ZIgHERC1Mj+DSjlPSsMqaP65q+\nmxGaSkHTJU5WZbEsZqGDR3itamMN7+Z/yJna86hQMTdiJneNWTGozZMURSEjt5Yt+/OoberA20PH\nhtuTh2HUYrCSovz45MRlzl2qI2yqfbYhT/SP5+mZ3+XvZ9/iTO15fnHiNzwy6SHifGPs8npCOKuG\njka2531AVs2ZroAfs4jb45fhptEP2WuU1rTyj90XyS9rwl2v4aHlY1mcGum0F05IgHERUSHeJEX5\ncbaonuoGI4YAT6YZprAtb4fTBRijuZ3dlz4lvfQwVsVKkv8YVibdM+heG5erW3lrXy4XShrRqFXc\nmhbNPXPjiI0OpKamxc6jF4PVs6Hd+aJ6ltgpwAD46L15LOURdl36lF1F+/ifU3/ggcS7WBg1R3Zk\nFiNezzYTHxTuptNqYoxfLOvGPXDDusGvotNs5YPDl9hzvASrTWFGsoEHlyYR4OPcjR0lwLiQRamR\n5JU2cTCrnNWLE/HWezEhcCw5dReobKsmzMvg0PHZFBuHy4/zYeEeWs1tBLkHcH/iXaQMsjV7i9HE\ne4eKOJhVhqLAlIQg1i5JJDxo4CuThGP5eekx+HtwobgBm6KgtmOYUKvU3Bm/nAS/OP529k225e0g\nv6mIh5JX4aGVvlhiZLrUXMLbF97lcms5nloP1ievZHZ42pDWgp0uqOP1Ty5S29RBkK87G1eM7d2y\nw9lJgHEhM8aF8NY+HYdOV3Df/DHotGpmhKaSU3eBk1WZ3DVmhcPGltuQz/a8DyhrrUCv0XPPmNtY\nEj0f3SB2CrZYbezPKGPn50UYOy2EB3mydkkSUxKChmHk4mYkRvnxRU4leZcbGRcTYPfXSw5M4umZ\n3+WvOW+SWX2a0pYyvjlpI1Eu2ElXiOtpt7Szs2APh8qOoKAwK2w69yfeOaRbCjS2dvLWvjxOXKhG\nrVJx+6wY7pkbj5vedeoMJcC4EJ1Ww7zJ4ew+XsKp3GpumRDG5OAJ6NU6TlRlcWf8rcM+pV7bXse7\n+R+RXZODChW3hM/gnjG34ec2uKuFThfUsWV/HhV1RjzdtDy4NInF0yLRauRqE1eQkhjMFzmVvPBW\nFgtSIrh3Xjx+XkO3Jj8Qfzc/vpP6f/igcA97S9J54dRLrBl7L3PCZ8qSknBpiqJwqjqbd/I+oNnU\nQqhnCOvGPcDYgIQhew2bTSE9q4x3DhbQ3mklIcKXh29LdskdziXAuJiFKRHsPl5CemY5t0wIw13r\nxpSQiZysyqK45fKwFTe2WzrYc2k/By4fwqJYGeMXx+qke4jxjRrU4yvq2tiyP5/TBXWoVLA4NZL7\n5sfj42nfX35iaE0fF8Kz35jJKztySM8s48jZSm6fFcOKtBi7/iWnUWu4L/EOEvzj+Me5Lbx54R3y\nG4tYN+6BIS1qFGK4VBtr2Zr7Pufrc9Gptdw9ZgVLYxYO6mrNwSqpauG13RcpqmjGw03LwyvGsSAl\nwq7Lv/YkAcbFhAZ6Mj42gPPFDZTVthEZ7EVaaConq7I4WZll9wDTtevjSXYW7qbF1EqAmz/3J97B\nNMPUQf31a+wws/PwJT49VYrVppAc48+Dy8a6ZPoXXTvozpoUTkywJ4eyy9nxeRHvHyoiPbOM++aP\nYd7kcLtewTA5eAJPpX2XV8++zvHKDEpayvjmpA29DUCFcHZmm4V9xensLt6PxWZhfOBY1o69nxDP\noVtC7zBZ2PF5EXtPlGJTFGZNCGXdkkT8vJ27SPdGVIqiKI4exFdlzytRQkJ8nP5Kl5MXqvn9+zks\nmxHF+mVjsdqsPH34edQqNf8150dDugtjX/mNRWzP3cHl1nL0ah23xi5maczCQXXEttm69hZ497NC\nWtvNhPi7s2ZxEtPGBg962t8Vzs1o1Pe8tHda2HWshE+Ol2Cy2IgK8WL14kQmxQfadXnHYrPwfv7H\nHCj9HL1ax4PJK5kZNs1ur+cq5D3jvEJCfDicm8nbF9+jyliDr96HVUn3MM0wZUjfK1l5tbyx9yJ1\nzZ2E+LuzccU4JsW7Tn3hlzWLlQBzFVd4w1usNr7/+y8wW2z8+vG5uOk0vH3xPQ6VHeHxlG8yPnDs\nkL5eXXs97xV8TGb1aQDSQqdxb8Jtg9718XxxA2/ty6O0phU3vYa7Zsdya1o0Ou1XC1qucG5Go4HO\nS0NLJ+99VsjhMxUowIS4ANYsTiQm1L6bYWVUn+aN89vosHYyN2IWq5PuGVQh+Ugl7xnn1GJq5ePL\ne/is+BgqVCyIms3dY1bgofUYsteob+7grX15nMqtQaNWcfstMdw1Ow69i20G+mUBRpaQXJBWo2b+\n1HA+/KKYE+ermTclnBmhKRwqO8LJyqwhCzAdlk72Fh9g3+XPsNgsxPnGsCrp7kE3CatpbGfr/nxO\n5dYAMHdyGCsXJuDv4tOW4sYCfNz4lzvHszwtmm0H8skpquc//naCOZPCuH/BGLs1gZtmmEKUdwSv\n5rzO4fJjFDdfVMic/wAAGQBJREFU5pFJGzB4usZloWLkUBSFZlMr1cYaqttrqDHWUW2soaq9llpj\nLRbFSrRPJA+Oe4BY3+ghe12bTeHTjFLe/ayQTpOVpCg/Hr4tmcjgkbcdhczAXMVV/mKpbWrnh384\nQnyEL88+PAObYuMnX/yCdks7P5/3k0Et61yPTbFxvDKDnQW7aDK14O/mx70JtzMjNGVQ+w90mCx8\ndKSYPccvY7HaSIz048FlScSH31wfI1c5N6PNYM5LTlEdW/cXUFrTik6r5ta0aO64JRYPN/v8DWWy\nmtmet5PD5cdw17ixYfwaUg2T7fJazkzeM/bXbmmn2ljb/V8N1e3dH421dFg7r7m/u8Ydg2cwSxPn\nMM1/2pDu6XKpspnXdl+kuLIFL3ctqxcnMm9KuMsW6YLMwIxIwX4eTE4I4nRBHcWVLcSG+TAjNIW9\nJenk1J1nmmHKP/W8hU2X2J77AcUtl9Gptdwet4zlsYsGdWWHTVE4klPJ9oMFNLWaCPBxY/XiBGaN\nD5XLW0e5SfFBTPhGIF/kVPLeoUI+OlLMwaxy7p0Xz8KUiCG/bF6v0bE+eSWJ/vG8deEdXsnZzOKo\nedyXeAfaIbyqQ4wOZquZmva6fuGk52OLufWa+2vVWkI8gjB4hmDwCO766BlMqGcI3jovVCrVkIbL\n9k4L7x0q5NNTpSgKzJ4YxtolifjaeUsDR5N3sgtblBrJ6YI6DmaV8fBtyaSFpbK3JJ2TVVlfOcA0\ndDTyfsHHnKzKAmC6YSr3Jd5BoPvgNifLL2virX15FFU0o9OquWduHLfPinWpTZGEfanVKuZNCSdt\nvIG9Jy7z8dFi3tiby75TpaxamPCVCroHa2bYNKJ9Inkl53UOlH5OYXMxj0zcQJCH/TfdE67Fptio\n72igqk84qekOLPUdjSj0X6xQoSLIPYBon3EYPK+EFINHMAHu/sPSOb2nZ9yb+3JpaOkkNMCDh1eM\nY3xcoN1f2xlIgHFhU8YEEejrxpFzVaxenEikdzgRXmGcrT2P0WzEcxBde01WE3uL09lbchCzzUyM\nTySrku4lwT9uUGOob+5g+8ECjp6tAmDmeAOrFyUS5Cfbu4uBuek03DUnjgVTI9hxuIiDmeW8/N4Z\nkqL8WLMkkYSIoe2sHu4Vyg9mfIu3L77L8coMfnHiRR6esHZIO/gK19BVl9LSNYPSXtNv6ae2vQ6L\nYr3mMX56HxL94zF4BhPSPZsS6hlMkEfQkO7R8lXVNXXwxt5csvJr0WpU3DM3jjtnx37liyNcmdTA\nXMXV1ox3Hu7ad2PjinEsTo1kz6X97CzczUPJq5gTMfO6j1MUhRNVmewo2EVjZxO+eh/uSbidWWGD\nW5M1ma3sPl7Cx0eLMZltxIb68OCyJMZGD+7KpH+Gq52b0eJmz0tFXRvb0wvIzKsFIC3ZwMpFCRj8\nh+6KDOj6nv+i4jhbc3dgsVlYHrOIu8essNu2A85gtL5njOZ2atprqeq73NM9m9JpNV1zfw+tOwaP\n7hmUq2ZT3O3Ua+ufPTdWm429J0rZ8XkRnWYryTH+bFwxbsT2jJMamBFs/pQIdn5+ifTMMhalRDAj\nNIWdhbs5UZV13QBzqbmE7bk7KWouQavWsiJ2CbfGLhrUG1VRFE5erGHr/nzqmjvw9dLz0LIxzHXx\nQjHhOOFBXnxr5RQuljSw9UA+Jy5Uk5Fbw5JpUdw9Nw5vj6G5DFqlUjE3YhYxPtG8mrOZvSXpFDYV\n8y+T1uPvNrSzPsL+TFYzte11vcs9Vd0zKjVfUpfSVY8SfE1tSk9dirMrLG/mH7svUFLdireHjg23\njmXOpDCXGLs9SIBxcQE+bqQmBXMqt4bCimYSIgIZ4xdHXkMBjZ1N/X4wN3Y2saNgF8crMwBIDZnM\nfYl3EuwxuPXS4soW3tqXS25pU9e+ArNiuGtOnN2uJBGjy7iYAH708AxOnK/mnYMF7D15mcNnKrhr\nThxLp0cO2dR4tE8EP0z7Dm+c30ZmzRl+fvxFvjFxPcmBSUPy/OLmmW0W2sxttJraaDW30WZu674k\n+cpsSsP16lI8Aon2jSS0e0YlxDMYg0cIAe5+w1KXYg/GDgvvflbAgYwyFGDelHDWLE4csnDvquQ3\nzwiwKDWSU7k1pGeWkRDhR1poCoVNlzhVlc3SmAWYrGY+LfmMT4r3Y7KZifKOYFXS3SQNskFYU5uJ\n9z4r4FB216ZkqUnBrFmSSGjAjWtshPgq1CoVsyaEMm1sCPszSvnwi0tsPZDPp6dKWblwDDMnhA7J\nTJ+H1p1HJm3gYOkXvJv/IS9lvcLt8cu4PW6py/6Sc1Y2xUab2dgVSMxGWk2ttHZ/3nWsO6SYjL1h\nZaDLj/vy0/v21qX0nU0J9ggcUVeZ9cx4v7kvl6ZWE+FBnjy8YtywdH53BVIDcxVXXDO2KQrP/Oko\nDa2d/M/jc1HUJp4+/DyR3uEsj1nIe/kf09DZiI/Om7sTVjA7PG1QP6QtVhv7Tpay83ARHSYrkcFe\nrFuWxEQHVbi74rkZDex5XlrbzXz4xSX2Z5RisSrEhfmwdknikP4Av9Rcwqs5b1Df0UByQBJLYuaj\nV+vRa3To1Dr0Gn33Rx16tc6lamaG+twoikK7paM3aPQLIqauYy19bmszGTFa2q+ZKRmIVqXBW++N\nl84TH13XR2+9F146L7x1XvjovQnxCCLEI8hudSnD6Ubnpqaxndc/yeVMYR1ajZq758Ry26xYdNrR\nFbCllcBX4Kq/JHcdK2bbgQIeXJrE8rRofp/9V87WXQBAo9KwOHoet8UtxWOQdS7Z+XVs2Z9HVUM7\nXu5a7l8whoUpEWjUjnvzuOq5GemG47zUNLbzzsECjp+vBiAlMZhVixKIGKLdRdvMRv5xbgs5dedv\neF+1Sn1VwNGhV+vRabTdH7uCTt8ApFfreo/3PqZPMNKp9ejV2n7HtGrtTc8G3ejcmKymfjMgLeZW\n2szGPsd6lnCuHLMpthu+rgoV3jovvPReeOs8uz7vDiLeeq8+X1+5zU2jH1W1HNc7NxarjU9OXGbn\n50WYLDYmxAWwccW4UTvjLQHmK3DVX5LNRhNPvnyYEH8PfvbNWeTUneePp//O1OCJ3Jd456C3Ui+r\naeXtT/M4e6kBtUrF4mmR3Dsv3inWWl313Ix0w3leCsub2bo/j9zSJtQqFQtSIrh3Xjx+Q7Bhl02x\nkVl9htr2Okw2M2aruc9HEyarGbPNjKn7657Pe+9nMw/Bv7A/nbp/KLrysX8o6go+2mtmi7y89VTW\n1/eGj55ZktbuQDLYMXtoPbrDhjfees8rYaRvEOmeLfHReeGudZeluBsY6H2TX9rEa3suUFbThq+n\njnVLk5g1YXRvBCoB5itw5V+Sf955lqPnqvjh+lTGxQRgsprQD2IHXeiaqt9xqIgDmWXYFIWJ8YGs\nW5rkVP0zXPncjGTDfV4URSErr5Zt6QVU1htx02u4fVYMK9JiHLpxok2xYbFZu8JNd6jpCj1Xhx8z\nZqvpOiHJMsD9Tf1CkslqxjrAfiWDpdfou8NH/yDSd7mm9za9F15aT5daNnMVfd83bR1mtqcXcDCr\nHICFKRGsWpSAl7vj/3B0NLmMepRYmBLB0XNVHMgsY1xMwKDCi9VmIz2znPcPFdLWYSE0wIO1S5OY\nmhA0qlO/cF4qlYrUsSFMTgjiUHY573/etRdSemYZ980fw7zJ4ajVw/+9q1ap0WvUXX3I7Px7x2qz\ndoWZ3pBkxmQ1YbZZMPUJR76+Htg61P1mS26mT5oYWoqicOxcFW9/mkez0UxkiBcPrxhHUpT99tMa\nSSTAjCBjo/0JD/Lk1MUamttMN+yDcfZSPW/vy6Ostg0PNw1rFieybEbUkPelEcIetBo1i6dFccvE\nMHYdK+aT45f5+64L7Dt5mdWLE5kUHzhiQ7hGrUGj1uDOl9e0yayl8yqvbeW3W7I4e6kBvVbNqkUJ\n3JoWLT9/vwIJMCOISqViUWokb+3L4/CZCm6/JXbA+1U1GNnyaT5Z+bWogAVTI3hgwZgR3/hLjEwe\nbloeWJDAopRI3j9UxOEzFfzv1mwmxAWwZnEiMaHXn4IWYriYzFZqGtupbminoLyZvScvY7bYmDQm\nkI23jiNkiHeeHg2kBuYqrv4XS1uHmSdeOoyft56f/9vsfntmtHda+OCLS+w9cRmrTWFstD8PLk0i\nNsw1fsC7+rkZqZztvJRUtbAtvYCzRfWogDmTwrh/wRgCfV3/0tuvytnOzUjX3mmhuqGd6sZ2qhuM\nXZ93f93Q0n9vmwAfN9YuSSQt2TBiZwqHgtTAjCJe7jpmjg/l8zMVnLtUz6T4IGw2hc/PVPDuwQKa\njWaCfN1ZuySR6eNC5I0jRpyYUB+eWJtCTlEdW/cXcDinkuMXqrk1LZo7bomVnaPFTWltN3cHk66A\nUtXQ3j2zYqTZeO1VXSog0NeN8bEBGAI8uv7z92TBjGjaWjqG/x8wgsg7eQRalBrJ52cqSM8sR6/V\n8Na+PIqrWtDr1Nw/P54VM2PQ6+SqAjGyTYoPYsI3Avkip5J3PyvgoyPFHMwq59558SxMiZBaAzEg\nRVFobjN1z6J0BZS+synGTss1j1GrVAT7uxMT6tMdUjwxBHgQGuBBsJ/7gG0wPN11EmBukl0DTG5u\nLo8++ihf//rX2bBhAxUVFTz99NNYLBa0Wi0vvPACISEh7Ny5k9deew21Ws2aNWtYvXq1PYc14sWH\n+xAT6k1mbg0ZuTUAzJ4YyqpFiQT4uDl4dEIMH7Vaxbwp4aSNN/DJict8fLSYN/bmsu9UKasWJjBt\nbLDMQo5CNkWhsaWzfzjpDizVDe10mq+9TF2rURHi78HYaH8MAR6E+HcFFEOAB4G+7hKIHcBuAcZo\nNPL8888ze/bs3mMvvvgia9as4Y477uCNN97gb3/7G48//jgvv/wy27dvR6fTsWrVKpYvX46/v1xG\n9s9SqVQsnxHNqx+dJz7cl/XLkkiIlG67YvRy02m4e04cC6dGsONwEQczy3n5vTMkRfmxZkkiCRHy\n/hhprDYbdc2d/WtRGtqpajBS09iBxXrtjsJ6nRqDv2dvMOmdTfH3IMDHzSGX54vrs1uA0ev1/OUv\nf+Evf/lL77HnnnsON7euGYCAgADOnj1LdnY2kydPxsenq1Bn2rRpZGRksGTJEnsNbVSYOzmcxCg/\nQvw9hqT5nRAjga+Xno23jmPZ9Ci2pxeQmVfLf/3jFGnJBlYuSsAgV4K4FLPFRm1Tdx1KT0Bp7Aos\ndU0dWG3XXqPi4aYlKsSrXz1Kz3KPr9foamfg6uwWYLRaLVpt/6f39Ozq5WC1WnnzzTd57LHHqK2t\nJTDwSnPAwMBAampq7DWsUWW09s4Q4kbCg7z41sopXCxpYOuBfE5cqCYjt4Yl06KYPCYQlVqFmq4l\nKJVKhUrVVefQ//Mrt6v7HOv6us/n6iuPUQ94+5Vjzk5RFBSlawlGURRsCths/Y9d+bznNuXK192P\nURTlqsdd9XjblefvebzJbKOmqb3fbEp9c8eAbSJ9PHXEhfv0zqaEdIeV0ABPvNy1ElJGiGEv4rVa\nrfzgBz/glltuYfbs2XzwwQf9bh/MVd0BAZ5oByiKGipfdtmWcCw5N87JVc9LSIgPc1Kj+Ty7jNc+\nPs/ek5fZe/Kyw8aj7hd6uoPRgJ93hyF1z+f9A5WmOzQBKApYbT3hQMFm6wkSCopN6Q0VfUND7+e2\n7q/7hAtnEejrzoQxQUQEexHe/V9YkBfhQV54OUHvtsFw1feNsxj2APP0008TGxvL448/DoDBYKC2\ntrb39urqalJSUr70ORoajHYbn+yb4Lzk3DinkXBexkf58fy/zOTouUqaWk29swL9Zg9sfWcR+t5O\nv3Bw9czBlduvBAOFgWYZBn69681gKIqCzapgxXadWQu6ZnmgNwCp+gYdumZ/tGr1lQCkuhKWusLR\nVceumXm6akZKpbrqcVfNXKn7P1f/4NX/ta4OZVq1imB/j94CWrfrXElpbO3A2Or8V/eMhPfNcHCa\nfWB27tyJTqfj29/+du+xqVOn8uyzz9Lc3IxGoyEjI4NnnnlmOIclhBDotGrmT4lw9DCGlPySFCOZ\n3QJMTk4OmzZtoqysDK1Wy549e6irq8PNzY2NGzcCkJCQwE9/+lOeeOIJHnnkEVQqFY899lhvQa8Q\nQgghxECklcBV5C8W5yXnxjnJeXFecm6cl5ybwfmyJSTZeUcIIYQQLkcCjBBCCCFcjgQYIYQQQrgc\nCTBCCCGEcDkSYIQQQgjhciTACCGEEMLlSIARQgghhMuRACOEEEIIlyMBRgghhBAuRwKMEEIIIVyO\nBBghhBBCuByX7IUkhBBCiNFNZmCEEEII4XIkwAghhBDC5UiAEUIIIYTLkQAjhBBCCJcjAUYIIYQQ\nLkcCjBBCCCFcjgSYPv77v/+btWvXsm7dOk6fPu3o4Yg+fvnLX7J27VpWrlzJJ5984ujhiD46OjpY\ntmwZ7777rqOHIvrYuXMn99xzDw888ADp6emOHo4A2traePzxx9m4cSPr1q3j0KFDjh6SS9M6egDO\n4vjx4xQXF7NlyxYKCgp45pln2LJli6OHJYCjR4+Sl5fHli1baGho4P777+fWW2919LBEtz/84Q/4\n+fk5ehiij4aGBl5++WXeeecdjEYjv/vd71i0aJGjhzXqvffee8THx/PEE09QVVXF1772NXbv3u3o\nYbksCTDdjhw5wrJlywBISEigqamJ1tZWvL29HTwykZaWxpQpUwDw9fWlvb0dq9WKRqNx8MhEQUEB\n+fn58svRyRw5coTZs2fj7e2Nt7c3zz//vKOHJICAgAAuXrwIQHNzMwEBAQ4ekWuTJaRutbW1/b6Z\nAgMDqampceCIRA+NRoOnpycA27dvZ8GCBRJenMSmTZt46qmnHD0McZXS0lI6Ojr493//d9avX8+R\nI0ccPSQB3HnnnZSXl7N8+XI2bNjAD3/4Q0cPyaXJDMx1SIcF57Nv3z62b9/OX//6V0cPRQDvv/8+\nKSkpREdHO3ooYgCNjY289NJLlJeX8/DDD3PgwAFUKpWjhzWq7dixg4iICF599VUuXLjAM888I7Vj\nN0ECTDeDwUBtbW3v19XV1YSEhDhwRKKvQ4cO8cc//pFXXnkFHx8fRw9HAOnp6Vy+fJn09HQqKyvR\n6/WEhYUxZ84cRw9t1AsKCiI1NRWtVktMTAxeXl7U19cTFBTk6KGNahkZGcybNw+A5ORkqqurZTn8\nJsgSUre5c+eyZ88eAM6ePYvBYJD6FyfR0tLCL3/5S/70pz/h7+/v6OGIbi+++CLvvPMOW7duZfXq\n1Tz66KMSXpzEvHnzOHr0KDabjYaGBoxGo9RbOIHY2Fiys7MBKCsrw8vLS8LLTZAZmG7Tpk1j4sSJ\nrFu3DpVKxXPPPefoIYluH3/8MQ0NDXz3u9/tPbZp0yYiIiIcOCohnFdoaCgrVqxgzZo1ADz77LOo\n1fL3qqOtXbuWZ555hg0bNmCxWPjpT3/q6CG5NJUixR5CCCGEcDESyYUQQgjhciTACCGEEMLlSIAR\nQgghhMuRACOEEEIIlyMBRgghhBAuRwKMEMKuSktLmTRpEhs3buztwvvEE0/Q3Nw86OfYuHEjVqt1\n0Pd/8MEHOXbs2D8zXCGEi5AAI4Swu8DAQDZv3szmzZt5++23MRgM/OEPfxj04zdv3iwbfgkh+pGN\n7IQQwy4tLY0tW7Zw4cIFNm3ahMViwWw285Of/IQJEyawceNGkpOTOX/+PK+99hoTJkzg7NmzmEwm\nfvzjH1NZWYnFYuHee+9l/fr1tLe3873vfY+GhgZiY2Pp7OwEoKqqiieffBKAjo4O1q5dy6pVqxz5\nTxdCDBEJMEKIYWW1Wtm7dy/Tp0/n+9//Pi+//DIxMTHXNLfz9PTk9ddf7/fYzZs34+vry69//Ws6\nOjq44447mD9/Pl988QXu7u5s2bKF6upqli5dCsCuXbsYM2YM//Ef/0FnZyfbtm0b9n+vEMI+JMAI\nIeyuvr6ejRs3AmCz2ZgxYwYrV67kt7/9LT/60Y9679fa2orNZgO62ntcLTs7mwceeAAAd3d3Jk2a\nxNmzZ8nNzWX69OlAV2PWMWPGADB//nzefPNNnnrqKRYuXMjatWvt+u8UQgwfCTBCCLvrqYHpq6Wl\nBZ1Od83xHjqd7ppjKpWq39eKoqBSqVAUpV+vn54QlJCQwEcffcSJEyfYvXs3r732Gm+//fbN/nOE\nEE5AiniFEA7h4+NDVFQUBw8eBKCoqIiXXnrpSx8zdepUDh06BIDRaOTs2bNMnDiRhIQEMjMzAaio\nqKCoqAiADz74gDNnzjBnzhyee+45KioqsFgsdvxXCSGGi8zACCEcZtOmTfzsZz/jz3/+MxaLhaee\neupL779x40Z+/OMf89BDD2EymXj00UeJiori3nvvZf/+/axfv56oqCgmT54MQGJiIs899xx6vR5F\nUfjXf/1XtFr5sSfESCDdqIUQQgjhcmQJSQghhBAuRwKMEEIIIVyOBBghhBBCuBwJMEIIIYRwORJg\nhBBCCOFyJMAIIYQQwuVIgBFCCCGEy5EAI4QQQgiX8/8Byjajm+gmd20AAAAASUVORK5CYII=\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "i4lGvqajDWlw",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## One-Hot Encoding for Discrete Features\n",
+ "\n",
+ "Discrete (i.e. strings, enumerations, integers) features are usually converted into families of binary features before training a logistic regression model.\n",
+ "\n",
+ "For example, suppose we created a synthetic feature that can take any of the values `0`, `1` or `2`, and that we have a few training points:\n",
+ "\n",
+ "| # | feature_value |\n",
+ "|---|---------------|\n",
+ "| 0 | 2 |\n",
+ "| 1 | 0 |\n",
+ "| 2 | 1 |\n",
+ "\n",
+ "For each possible categorical value, we make a new **binary** feature of **real values** that can take one of just two possible values: 1.0 if the example has that value, and 0.0 if not. In the example above, the categorical feature would be converted into three features, and the training points now look like:\n",
+ "\n",
+ "| # | feature_value_0 | feature_value_1 | feature_value_2 |\n",
+ "|---|-----------------|-----------------|-----------------|\n",
+ "| 0 | 0.0 | 0.0 | 1.0 |\n",
+ "| 1 | 1.0 | 0.0 | 0.0 |\n",
+ "| 2 | 0.0 | 1.0 | 0.0 |"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "KnssXowblKm7",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Bucketized (Binned) Features\n",
+ "\n",
+ "Bucketization is also known as binning.\n",
+ "\n",
+ "We can bucketize `population` into the following 3 buckets (for instance):\n",
+ "- `bucket_0` (`< 5000`): corresponding to less populated blocks\n",
+ "- `bucket_1` (`5000 - 25000`): corresponding to mid populated blocks\n",
+ "- `bucket_2` (`> 25000`): corresponding to highly populated blocks\n",
+ "\n",
+ "Given the preceding bucket definitions, the following `population` vector:\n",
+ "\n",
+ " [[10001], [42004], [2500], [18000]]\n",
+ "\n",
+ "becomes the following bucketized feature vector:\n",
+ "\n",
+ " [[1], [2], [0], [1]]\n",
+ "\n",
+ "The feature values are now the bucket indices. Note that these indices are considered to be discrete features. Typically, these will be further converted in one-hot representations as above, but this is done transparently.\n",
+ "\n",
+ "To define feature columns for bucketized features, instead of using `numeric_column`, we can use [`bucketized_column`](https://www.tensorflow.org/api_docs/python/tf/feature_column/bucketized_column), which takes a numeric column as input and transforms it to a bucketized feature using the bucket boundaries specified in the `boundaries` argument. The following code defines bucketized feature columns for `households` and `longitude`; the `get_quantile_based_boundaries` function calculates boundaries based on quantiles, so that each bucket contains an equal number of elements."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "cc9qZrtRy-ED",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def get_quantile_based_boundaries(feature_values, num_buckets):\n",
+ " boundaries = np.arange(1.0, num_buckets) / num_buckets\n",
+ " quantiles = feature_values.quantile(boundaries)\n",
+ " return [quantiles[q] for q in quantiles.keys()]\n",
+ "\n",
+ "# Divide households into 7 buckets.\n",
+ "households = tf.feature_column.numeric_column(\"households\")\n",
+ "bucketized_households = tf.feature_column.bucketized_column(\n",
+ " households, boundaries=get_quantile_based_boundaries(\n",
+ " california_housing_dataframe[\"households\"], 7))\n",
+ "\n",
+ "# Divide longitude into 10 buckets.\n",
+ "longitude = tf.feature_column.numeric_column(\"longitude\")\n",
+ "bucketized_longitude = tf.feature_column.bucketized_column(\n",
+ " longitude, boundaries=get_quantile_based_boundaries(\n",
+ " california_housing_dataframe[\"longitude\"], 10))"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "U-pQDAa0MeN3",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Task 1: Train the Model on Bucketized Feature Columns\n",
+ "**Bucketize all the real valued features in our example, train the model and see if the results improve.**\n",
+ "\n",
+ "In the preceding code block, two real valued columns (namely `households` and `longitude`) have been transformed into bucketized feature columns. Your task is to bucketize the rest of the columns, then run the code to train the model. There are various heuristics to find the range of the buckets. This exercise uses a quantile-based technique, which chooses the bucket boundaries in such a way that each bucket has the same number of examples."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "YFXV9lyMLedy",
+ "colab_type": "code",
+ "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",
+ " #\n",
+ " # YOUR CODE HERE: bucketize the following columns, following the example above:\n",
+ " #\n",
+ " bucketized_latitude = tf.feature_column.bucketized_column(latitude, boundaries=get_quantile_based_boundaries(training_examples[\"latitude\"], 10))\n",
+ " bucketized_housing_median_age = tf.feature_column.bucketized_column(housing_median_age,boundaries=get_quantile_based_boundaries(training_examples[\"housing_median_age\"], 10))\n",
+ " bucketized_median_income = tf.feature_column.bucketized_column(median_income, boundaries=get_quantile_based_boundaries(training_examples[\"median_income\"], 10))\n",
+ " bucketized_rooms_per_person =tf.feature_column.bucketized_column(rooms_per_person, boundaries=get_quantile_based_boundaries(training_examples[\"rooms_per_person\"], 10))\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",
+ " \n",
+ " return feature_columns\n"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "0FfUytOTNJhL",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 640
+ },
+ "outputId": "be4a46da-d200-41a3-fedf-25be458106f8"
+ },
+ "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": 17,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 170.93\n",
+ " period 01 : 144.56\n",
+ " period 02 : 127.90\n",
+ " period 03 : 116.56\n",
+ " period 04 : 108.53\n",
+ " period 05 : 102.54\n",
+ " period 06 : 98.03\n",
+ " period 07 : 94.37\n",
+ " period 08 : 91.46\n",
+ " period 09 : 89.03\n",
+ "Model training finished.\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\nJXjyyScxMTGBf/zjH0v+fYlocbDAENGiGxoawq5duwAA4XAYV199Ne677z789re/xfe///3o6zwe\nD8LhMIDI9h4fd+LECdx7770AAI1GgzVr1qCxsRFNTU246qqrAEQ2Zi0pKQEAbNu2DX/729/w2GOP\n4frrr8eOHTsW9XsS0dJhgSGiRTc9B2a2sbExqFSqOT+fplKp5vxMJpPF/HdJkiCTySBJUsxeP9Ml\nqLS0FP/5z3/w4YcfYt++fXj++efx97///XK/DhEJgJN4iSgpDAYD8vLy8O677wIALly4gKeffvqS\n71m3bh1qa2sBAD6fD42NjVi9ejVKS0tRX18PAOjp6cGFCxcAAK+99hpOnjyJzZs344knnkBPTw+C\nweAifisiWiq8AkNESbN792789Kc/xZ///GcEg0E89thjl3z9rl278MMf/hBf+MIXMDk5iUceeQR5\neXm46667sH//fjz88MPIy8vD2rVrAQBlZWV44oknoFarIUkSvvKVr0Cp5F97RFcC7kZNREREKYe3\nkIiIiCjlsMAQERFRymGBISIiopTDAkNEREQphwWGiIiIUg4LDBEREaUcFhgiIiJKOSwwRERElHL+\nPycLor7isB8gAAAAAElFTkSuQmCC\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "ZTDHHM61NPTw",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below for a solution."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "JQHnUhL_NRwA",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "You may be wondering how to determine how many buckets to use. That is of course data-dependent. Here, we just selected arbitrary values so as to obtain a not-too-large model."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "Ro5civQ3Ngh_",
+ "colab_type": "code",
+ "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",
+ " 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",
+ " \n",
+ " return feature_columns"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "RNgfYk6OO8Sy",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "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": 0,
+ "outputs": []
+ },
+ {
+ "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([bucketized_longitude, bucketized_latitude], 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": 640
+ },
+ "outputId": "798af178-f18a-45cc-bd09-870ec51db1f6"
+ },
+ "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": 21,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 164.03\n",
+ " period 01 : 135.74\n",
+ " period 02 : 118.66\n",
+ " period 03 : 107.39\n",
+ " period 04 : 99.54\n",
+ " period 05 : 93.75\n",
+ " period 06 : 89.23\n",
+ " period 07 : 85.71\n",
+ " period 08 : 82.92\n",
+ " period 09 : 80.59\n",
+ "Model training finished.\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\nzvg2drZ2+ZfM1vtyNVNvbJd6Uzuuro7nXWYy6uGfgOnp+XW2bl9f9zpdv1y6+tSb9KJMPtk3j+P5\nSQS6BnBn+8kEuPpVL0/OKGTRhjh2Hk4HoF2wJ+P6hxHSpJG1Sr5k9akvVxv1xnapN7Xj6+t+3mUa\ngfkDpWLbVZ9642rvwnUBXSmqKGFv5gG2pkbj5dSYpm5NgFO3Iejexp+OYd5k5BazPyGbDbHJJKUX\nEOTnhruLg5X3oPbqU1+uNuqN7VJvaqemERgFmD/Ql8p21bfe2JntaO/z+5TSfnamxZJTkls9pQTg\n6e5Ir/ZNaBnkQUpmEfsTslm3K4nMvBKa+7nj4mSx8l5cWH3ry9VEvbFd6k3t1BRgbP//jiL1XBe/\njgS5BfLp3nlsSdlOQl7iWVNKbYO9aNPCk5jDGSzccJRNu1PYuu8kg7o0ZUTPFjSqRyMyIiJXgkZg\n/kCp2HbV5978b0qpmL2ZB9mSvI2iimKauTfF0e5UODGZTAT6uDKwc1N8GzuTkJLH3vgs1u1KoqKi\nihYB7thbbO/Ewfrcl4ZOvbFd6k3taArpIuhLZbvqe29OTSm1IdA1gPi8Y+zPOsTGpJ+pqKqgmXtT\n7M2nBkRNJhPN/d0Z2DkIdxd7jiblsicuiw2xydiZTTT3d8PObDtBpr73pSFTb2yXelM7OgvpIujI\ncNvVkHpTXlXB5uRtrEz4kfyyAlztXRjWYiD9mvbCwc7+jNcWl1awOvo4q7YnUlxaiVcjR8b0DqF3\nhwCbCDINqS8NjXpju9Sb2qnpLCQFmD/Ql8p2NcTelFaWse74JtYkrqe4ooTGjh6MCB5Cjybdqg/0\n/V1BcTnLfz7GjzEnKK+oIsDLhXH9Qul6rS8mk8lKe9Aw+9JQqDe2S72pHQWYi6Avle1qyL0pLC9i\n9bH1rD+xmfKqcvycfRgVOozOfh0xm84cZcnKK2HJ5gQ27U6hyjBoEeDO+P6htAv2skqQach9qe/U\nG9ul3tSOAsxF0JfKdl0NvckpzWVlwlo2J2+jyqiimVsgo8OiaOt17VnhJDWriO82xrH9wKn7LrVu\n3pjxA8IIC/S4ojVfDX2pr9Qb26Xe1I4CzEXQl8p2XU29SS/KZFn8D0Sf/AUDgzCPEMaGDSescfBZ\nrz2Wms+3G46yNy4LgM4tfRjXL5Smvm5XpNarqS/1jXpju9Sb2lGAuQj6Utmuq7E3SQUpLI1byZ6M\n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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "0i7vGo9PTaZl",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below for the solution."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "3tAWu8qSTe2v",
+ "colab_type": "code",
+ "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(\n",
+ " 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": "-_vvNYIyTtPC",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "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": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "ymlHJ-vrhLZw",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Optional Challenge: Try Out More Synthetic Features\n",
+ "\n",
+ "So far, we've tried simple bucketized columns and feature crosses, but there are many more combinations that could potentially improve the results. For example, you could cross multiple columns. What happens if you vary the number of buckets? What other synthetic features can you think of? Do they improve the model?"
+ ]
+ }
+ ]
+}
\ No newline at end of file
From 5980ee0cb60b9c2bc06a3631276f2e3b4522c48c Mon Sep 17 00:00:00 2001
From: Aditya Joardar <30207466+joardar-aditya@users.noreply.github.com>
Date: Tue, 12 Feb 2019 23:38:52 +0530
Subject: [PATCH 04/13] Created using Colaboratory
---
feature_crosses.ipynb | 320 +++++++++++++++++++++---------------------
1 file changed, 157 insertions(+), 163 deletions(-)
diff --git a/feature_crosses.ipynb b/feature_crosses.ipynb
index 336dfc8..0832001 100644
--- a/feature_crosses.ipynb
+++ b/feature_crosses.ipynb
@@ -201,7 +201,7 @@
"base_uri": "https://localhost:8080/",
"height": 1224
},
- "outputId": "c292ac02-172d-450c-c24f-5e439d74933b"
+ "outputId": "ee4ca52c-8e70-46ef-8c7f-d8319276a6fa"
},
"cell_type": "code",
"source": [
@@ -224,7 +224,7 @@
"print(\"Validation targets summary:\")\n",
"display.display(validation_targets.describe())"
],
- "execution_count": 4,
+ "execution_count": 24,
"outputs": [
{
"output_type": "stream",
@@ -239,23 +239,23 @@
"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 2616.4 533.7 \n",
- "std 2.1 2.0 12.6 2123.9 410.9 \n",
- "min 32.5 -124.3 1.0 2.0 1.0 \n",
- "25% 33.9 -121.8 18.0 1454.0 297.0 \n",
- "50% 34.2 -118.5 29.0 2112.0 432.0 \n",
- "75% 37.7 -118.0 37.0 3127.2 640.0 \n",
- "max 42.0 -114.3 52.0 37937.0 5471.0 \n",
+ "mean 35.6 -119.6 28.5 2652.5 539.7 \n",
+ "std 2.1 2.0 12.6 2212.3 425.0 \n",
+ "min 32.5 -124.3 1.0 8.0 1.0 \n",
+ "25% 33.9 -121.8 18.0 1465.0 297.0 \n",
+ "50% 34.3 -118.5 28.0 2129.0 433.0 \n",
+ "75% 37.7 -118.0 37.0 3148.0 649.0 \n",
+ "max 41.9 -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 1415.3 496.8 3.9 2.0 \n",
- "std 1085.1 376.6 1.9 1.1 \n",
- "min 6.0 1.0 0.5 0.1 \n",
- "25% 786.0 281.0 2.6 1.5 \n",
- "50% 1165.0 408.0 3.5 1.9 \n",
- "75% 1705.0 598.0 4.8 2.3 \n",
- "max 16122.0 5189.0 15.0 55.2 "
+ "mean 1437.1 502.2 3.9 2.0 \n",
+ "std 1149.5 389.9 1.9 1.1 \n",
+ "min 3.0 1.0 0.5 0.1 \n",
+ "25% 788.0 282.0 2.6 1.5 \n",
+ "50% 1167.0 409.0 3.5 1.9 \n",
+ "75% 1724.0 605.0 4.8 2.3 \n",
+ "max 28566.0 6082.0 15.0 55.2 "
],
"text/html": [
"\n",
@@ -304,11 +304,11 @@
"
mean \n",
"
35.6 \n",
"
-119.6 \n",
- "
28.6 \n",
- "
2616.4 \n",
- "
533.7 \n",
- "
1415.3 \n",
- "
496.8 \n",
+ "
28.5 \n",
+ "
2652.5 \n",
+ "
539.7 \n",
+ "
1437.1 \n",
+ "
502.2 \n",
"
3.9 \n",
"
2.0 \n",
" \n",
@@ -317,10 +317,10 @@
"
2.1 \n",
"
2.0 \n",
"
12.6 \n",
- "
2123.9 \n",
- "
410.9 \n",
- "
1085.1 \n",
- "
376.6 \n",
+ "
2212.3 \n",
+ "
425.0 \n",
+ "
1149.5 \n",
+ "
389.9 \n",
"
1.9 \n",
"
1.1 \n",
" \n",
@@ -329,9 +329,9 @@
"
32.5 \n",
"
-124.3 \n",
"
1.0 \n",
- "
2.0 \n",
+ "
8.0 \n",
"
1.0 \n",
- "
6.0 \n",
+ "
3.0 \n",
"
1.0 \n",
"
0.5 \n",
"
0.1 \n",
@@ -341,22 +341,22 @@
"
33.9 \n",
"
-121.8 \n",
"
18.0 \n",
- "
1454.0 \n",
+ "
1465.0 \n",
"
297.0 \n",
- "
786.0 \n",
- "
281.0 \n",
+ "
788.0 \n",
+ "
282.0 \n",
"
2.6 \n",
"
1.5 \n",
" \n",
"
\n",
" 50% \n",
- " 34.2 \n",
+ " 34.3 \n",
" -118.5 \n",
- " 29.0 \n",
- " 2112.0 \n",
- " 432.0 \n",
- " 1165.0 \n",
- " 408.0 \n",
+ " 28.0 \n",
+ " 2129.0 \n",
+ " 433.0 \n",
+ " 1167.0 \n",
+ " 409.0 \n",
" 3.5 \n",
" 1.9 \n",
" \n",
@@ -365,22 +365,22 @@
"
37.7 \n",
"
-118.0 \n",
"
37.0 \n",
- "
3127.2 \n",
- "
640.0 \n",
- "
1705.0 \n",
- "
598.0 \n",
+ "
3148.0 \n",
+ "
649.0 \n",
+ "
1724.0 \n",
+ "
605.0 \n",
"
4.8 \n",
"
2.3 \n",
" \n",
"
\n",
" max \n",
- " 42.0 \n",
+ " 41.9 \n",
" -114.3 \n",
" 52.0 \n",
" 37937.0 \n",
- " 5471.0 \n",
- " 16122.0 \n",
- " 5189.0 \n",
+ " 6445.0 \n",
+ " 28566.0 \n",
+ " 6082.0 \n",
" 15.0 \n",
" 55.2 \n",
" \n",
@@ -406,23 +406,23 @@
"text/plain": [
" latitude longitude housing_median_age total_rooms total_bedrooms \\\n",
"count 5000.0 5000.0 5000.0 5000.0 5000.0 \n",
- "mean 35.6 -119.6 28.6 2709.2 553.2 \n",
- "std 2.1 2.0 12.6 2307.8 445.7 \n",
- "min 32.5 -124.3 2.0 18.0 3.0 \n",
- "25% 33.9 -121.8 18.0 1475.8 297.0 \n",
- "50% 34.2 -118.5 29.0 2174.0 437.5 \n",
- "75% 37.7 -118.0 37.0 3196.2 668.0 \n",
- "max 41.9 -114.6 52.0 32627.0 6445.0 \n",
+ "mean 35.6 -119.5 28.9 2622.5 538.7 \n",
+ "std 2.1 2.0 12.6 2100.3 413.0 \n",
+ "min 32.6 -124.3 2.0 2.0 2.0 \n",
+ "25% 33.9 -121.7 18.0 1453.0 295.0 \n",
+ "50% 34.2 -118.5 29.0 2124.0 436.0 \n",
+ "75% 37.7 -118.0 37.0 3162.0 648.0 \n",
+ "max 42.0 -114.5 52.0 30401.0 4957.0 \n",
"\n",
" population households median_income rooms_per_person \n",
"count 5000.0 5000.0 5000.0 5000.0 \n",
- "mean 1463.8 511.9 3.9 2.0 \n",
- "std 1285.6 402.7 1.9 1.3 \n",
- "min 3.0 4.0 0.5 0.0 \n",
- "25% 798.8 283.0 2.5 1.5 \n",
- "50% 1172.0 411.0 3.5 1.9 \n",
- "75% 1758.2 619.2 4.7 2.3 \n",
- "max 35682.0 6082.0 15.0 52.0 "
+ "mean 1411.6 498.8 3.9 2.0 \n",
+ "std 1143.8 371.3 1.9 1.2 \n",
+ "min 6.0 2.0 0.5 0.0 \n",
+ "25% 794.8 281.0 2.6 1.5 \n",
+ "50% 1166.0 410.0 3.5 1.9 \n",
+ "75% 1718.0 606.0 4.7 2.3 \n",
+ "max 35682.0 4769.0 15.0 41.3 "
],
"text/html": [
"
\n",
@@ -470,12 +470,12 @@
"
\n",
" mean \n",
" 35.6 \n",
- " -119.6 \n",
- " 28.6 \n",
- " 2709.2 \n",
- " 553.2 \n",
- " 1463.8 \n",
- " 511.9 \n",
+ " -119.5 \n",
+ " 28.9 \n",
+ " 2622.5 \n",
+ " 538.7 \n",
+ " 1411.6 \n",
+ " 498.8 \n",
" 3.9 \n",
" 2.0 \n",
" \n",
@@ -484,35 +484,35 @@
"
2.1 \n",
"
2.0 \n",
"
12.6 \n",
- "
2307.8 \n",
- "
445.7 \n",
- "
1285.6 \n",
- "
402.7 \n",
+ "
2100.3 \n",
+ "
413.0 \n",
+ "
1143.8 \n",
+ "
371.3 \n",
"
1.9 \n",
- "
1.3 \n",
+ "
1.2 \n",
" \n",
"
\n",
" min \n",
- " 32.5 \n",
+ " 32.6 \n",
" -124.3 \n",
" 2.0 \n",
- " 18.0 \n",
- " 3.0 \n",
- " 3.0 \n",
- " 4.0 \n",
+ " 2.0 \n",
+ " 2.0 \n",
+ " 6.0 \n",
+ " 2.0 \n",
" 0.5 \n",
" 0.0 \n",
" \n",
"
\n",
" 25% \n",
" 33.9 \n",
- " -121.8 \n",
+ " -121.7 \n",
" 18.0 \n",
- " 1475.8 \n",
- " 297.0 \n",
- " 798.8 \n",
- " 283.0 \n",
- " 2.5 \n",
+ " 1453.0 \n",
+ " 295.0 \n",
+ " 794.8 \n",
+ " 281.0 \n",
+ " 2.6 \n",
" 1.5 \n",
" \n",
"
\n",
@@ -520,10 +520,10 @@
" 34.2 \n",
" -118.5 \n",
" 29.0 \n",
- " 2174.0 \n",
- " 437.5 \n",
- " 1172.0 \n",
- " 411.0 \n",
+ " 2124.0 \n",
+ " 436.0 \n",
+ " 1166.0 \n",
+ " 410.0 \n",
" 3.5 \n",
" 1.9 \n",
" \n",
@@ -532,24 +532,24 @@
"
37.7 \n",
"
-118.0 \n",
"
37.0 \n",
- "
3196.2 \n",
- "
668.0 \n",
- "
1758.2 \n",
- "
619.2 \n",
+ "
3162.0 \n",
+ "
648.0 \n",
+ "
1718.0 \n",
+ "
606.0 \n",
"
4.7 \n",
"
2.3 \n",
" \n",
"
\n",
" max \n",
- " 41.9 \n",
- " -114.6 \n",
+ " 42.0 \n",
+ " -114.5 \n",
" 52.0 \n",
- " 32627.0 \n",
- " 6445.0 \n",
+ " 30401.0 \n",
+ " 4957.0 \n",
" 35682.0 \n",
- " 6082.0 \n",
+ " 4769.0 \n",
" 15.0 \n",
- " 52.0 \n",
+ " 41.3 \n",
" \n",
" \n",
"\n",
@@ -573,12 +573,12 @@
"text/plain": [
" median_house_value\n",
"count 12000.0\n",
- "mean 207.8\n",
- "std 116.3\n",
+ "mean 207.5\n",
+ "std 115.8\n",
"min 15.0\n",
- "25% 120.0\n",
- "50% 180.5\n",
- "75% 265.9\n",
+ "25% 120.1\n",
+ "50% 180.4\n",
+ "75% 265.0\n",
"max 500.0"
],
"text/html": [
@@ -610,11 +610,11 @@
" \n",
"
\n",
" mean \n",
- " 207.8 \n",
+ " 207.5 \n",
" \n",
"
\n",
" std \n",
- " 116.3 \n",
+ " 115.8 \n",
" \n",
"
\n",
" min \n",
@@ -622,15 +622,15 @@
" \n",
"
\n",
" 25% \n",
- " 120.0 \n",
+ " 120.1 \n",
" \n",
"
\n",
" 50% \n",
- " 180.5 \n",
+ " 180.4 \n",
" \n",
"
\n",
" 75% \n",
- " 265.9 \n",
+ " 265.0 \n",
" \n",
"
\n",
" max \n",
@@ -658,12 +658,12 @@
"text/plain": [
" median_house_value\n",
"count 5000.0\n",
- "mean 206.0\n",
- "std 115.2\n",
- "min 15.0\n",
- "25% 118.5\n",
- "50% 179.8\n",
- "75% 263.4\n",
+ "mean 206.9\n",
+ "std 116.5\n",
+ "min 27.5\n",
+ "25% 118.1\n",
+ "50% 180.2\n",
+ "75% 265.4\n",
"max 500.0"
],
"text/html": [
@@ -695,27 +695,27 @@
" \n",
"
\n",
" mean \n",
- " 206.0 \n",
+ " 206.9 \n",
" \n",
"
\n",
" std \n",
- " 115.2 \n",
+ " 116.5 \n",
" \n",
"
\n",
" min \n",
- " 15.0 \n",
+ " 27.5 \n",
" \n",
"
\n",
" 25% \n",
- " 118.5 \n",
+ " 118.1 \n",
" \n",
"
\n",
" 50% \n",
- " 179.8 \n",
+ " 180.2 \n",
" \n",
"
\n",
" 75% \n",
- " 263.4 \n",
+ " 265.4 \n",
" \n",
"
\n",
" max \n",
@@ -919,9 +919,9 @@
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
- "height": 768
+ "height": 640
},
- "outputId": "3ec2fe05-99b9-42c9-9f32-e0850ad1f1bb"
+ "outputId": "30383cf6-9021-4af9-f19b-df584d9f6f7d"
},
"cell_type": "code",
"source": [
@@ -935,30 +935,23 @@
" validation_examples=validation_examples,\n",
" validation_targets=validation_targets)"
],
- "execution_count": 10,
+ "execution_count": 28,
"outputs": [
{
"output_type": "stream",
"text": [
- "\n",
- "WARNING: The TensorFlow contrib module will not be included in TensorFlow 2.0.\n",
- "For more information, please see:\n",
- " * https://github.com/tensorflow/community/blob/master/rfcs/20180907-contrib-sunset.md\n",
- " * https://github.com/tensorflow/addons\n",
- "If you depend on functionality not listed there, please file an issue.\n",
- "\n",
"Training model...\n",
"RMSE (on training data):\n",
- " period 00 : 165.51\n",
- " period 01 : 120.92\n",
- " period 02 : 131.34\n",
- " period 03 : 208.18\n",
- " period 04 : 129.76\n",
- " period 05 : 119.78\n",
- " period 06 : 119.61\n",
- " period 07 : 119.78\n",
- " period 08 : 122.31\n",
- " period 09 : 133.58\n",
+ " period 00 : 145.53\n",
+ " period 01 : 159.50\n",
+ " period 02 : 116.73\n",
+ " period 03 : 313.37\n",
+ " period 04 : 353.00\n",
+ " period 05 : 316.81\n",
+ " period 06 : 311.05\n",
+ " period 07 : 283.78\n",
+ " period 08 : 265.21\n",
+ " period 09 : 224.52\n",
"Model training finished.\n"
],
"name": "stdout"
@@ -966,7 +959,7 @@
{
"output_type": "display_data",
"data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGACAYAAACz01iHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xl4VPX1P/D3nS3JJDPZJ/sCBJRN\nwhLLIrtAWKyiiCv1Z631W6FapdXaoq3Fqri1WkWt1g1rRSkuKBaliIJWZBMRwYQtyWRfZ0sms93f\nH2Em28xkm8kseb+ex+cxc+/MnOQm5OTzOfccQRRFEUREREQhRBLoAIiIiIj6igkMERERhRwmMERE\nRBRymMAQERFRyGECQ0RERCGHCQwRERGFHFmgAyAKZueddx6ys7MhlUoBAHa7HQUFBVi3bh2USmW/\nX/ett97CypUruz2+detW3HPPPXjuuecwd+5c1+NmsxnTp0/HwoUL8fDDD/f7fXurtLQUDz74IM6c\nOQMAiIqKwpo1a3DxxRf7/b37YuPGjSgtLe32Ndm3bx9uuukmZGZmdnvOf/7zn8EKb0C0Wi3mz5+P\nYcOGAQBEUURSUhJ+//vfY8yYMX16rccffxzp6em45pprev2c9957D1u2bMGmTZv69F5Eg4UJDFEP\nNm3ahNTUVACAxWLBHXfcgeeffx533HFHv16vtrYWL774otsEBgDS0tLwwQcfdEpgPv30U6jV6n69\nX3/8+te/xqWXXornnnsOAHDkyBHccMMN+Oijj5CWljZocQxEWlpayCQrnkil0k6fw/bt27F69Wrs\n2LEDCoWi16+zdu1af4RHFFDcQiLqA4VCgZkzZ+L48eMAgNbWVtx3331YtGgRFi9ejIcffhh2ux0A\ncOLECVx99dUoLCzEpZdeij179gAArr76alRUVKCwsBAWi6Xbe0yaNAn79u1DS0uL67Ht27djxowZ\nro8tFgseeOABLFq0CPPmzXMlGgBw+PBhXH755SgsLMSSJUvw5ZdfAmj7i/6iiy7Ca6+9hksuuQQz\nZ87E9u3b3X6eRUVFmDBhguvjCRMmYMeOHa5E7umnn8bs2bNx2WWX4e9//zvmzZsHAPjtb3+LjRs3\nup7X8eOe4nrwwQdx/fXXAwAOHjyIK664AgsWLMDKlStRVlYGoG0l6le/+hXmzp2L66+/HlVVVT1c\nMfe2bt2KNWvW4IYbbsAjjzyCffv24eqrr8btt9/u+mX/0UcfYdmyZSgsLMRPfvITlJaWAgD+9re/\nYd26dVixYgVeeeWVTq97++2346WXXnJ9fPz4cVx00UVwOBz4y1/+gkWLFmHRokX4yU9+gurq6j7H\nvWTJEpjNZpw+fRoAsHnzZhQWFmLevHm48847YTabAbR93R966CFccskl+OijjzpdB0/flw6HA3/6\n058wZ84crFixAidOnHC979dff43ly5djyZIlWLx4MT766KM+x07kcyIReTRq1CixsrLS9XFTU5N4\n3XXXiRs3bhRFURSff/558eabbxatVqvY0tIiXnHFFeK7774r2u12cfHixeK2bdtEURTFb7/9Viwo\nKBANBoP41VdfiRdffLHb9/v3v/8t3n333eKvf/1r13MNBoM4f/588e233xbvvvtuURRF8emnnxZv\nuOEGsbW1VTSZTOJll10m7tq1SxRFUVy2bJn4wQcfiKIoiu+8847rvcrKysQxY8aImzZtEkVRFLdv\n3y4uWLDAbRy//OUvxblz54qvvvqqePLkyU7HfvjhB3HKlCliTU2NaLVaxV/84hfi3LlzRVEUxbvv\nvlt85plnXOd2/NhbXGPHjhW3bt3q+nwLCgrEvXv3iqIoitu2bROXL18uiqIovv766+J1110nWq1W\nsaGhQZw7d67ra9KRt6+x8+ucn58vnjlzxnX++PHjxS+//FIURVEsLy8XJ0+eLJ49e1YURVH8xz/+\nId5www2iKIriU089JV500UVifX19t9f98MMPxeuuu8718ZNPPimuX79eLCoqEhcuXChaLBZRFEXx\ntddeE9955x2P8Tm/LqNHj+72eEFBgXjq1Clx//794rRp08SqqipRFEXx3nvvFR9++GFRFNu+7pdc\ncoloNptdHz/zzDNevy93794tLly4UDQajWJLS4u4YsUK8frrrxdFURQvv/xycd++faIoiuKZM2fE\nO++802vsRIOBKzBEPVi1ahUKCwsxf/58zJ8/H1OnTsXNN98MANi9ezdWrlwJmUyGyMhIXHLJJfji\niy+g1WpRV1eHpUuXAgDGjx+P9PR0HD16tFfvuXTpUnzwwQcAgJ07d2Lu3LmQSNp/XD/99FNce+21\nUCgUUCqVuPTSS/Hxxx8DAN59910sXrwYADB58mTX6gUA2Gw2XH755QCAsWPHoqKiwu37P/roo7ju\n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\n",
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGACAYAAACz01iHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xd4FNX6wPHvbnovm2wqIfQA6RCQ\nTgAhFEUBEQRExYZiw4aK93e9Kuq1o4JiF0UBRRSR3osCKYQAgQBJSEJ67213fn9EckE2oZhsEvJ+\nnoeH7M6ZmXf27G7enDlFpSiKghBCCCFEG6Ju6QCEEEIIIa6WJDBCCCGEaHMkgRFCCCFEmyMJjBBC\nCCHaHElghBBCCNHmSAIjhBBCiDbHtKUDEKI169GjBz4+PpiYmACg0+kICwtj4cKFWFtbX/NxV61a\nxdSpUy95fs2aNTz33HN8/PHHhIeH1z9fWVnJwIEDGT16NK+//vo1n/dKpaSksGjRIpKSkgCwsrJi\n3rx5jBo1qtnPfTWWLFlCSkrKJa/JgQMHmDNnDt7e3pfss3HjRmOF94+kpaUxcuRIOnXqBICiKLi4\nuPDCCy/Qq1evqzrW22+/jaenJ9OnT7/ifX755Rd+/PFHli9fflXnEsJYJIER4jKWL1+Ou7s7ANXV\n1TzxxBN88sknPPHEE9d0vJycHD777DODCQyAh4cHv/3220UJzI4dO7C3t7+m812Lp556iokTJ/Lx\nxx8DEBsby+zZs9mwYQMeHh5Gi+Of8PDwaDPJSkNMTEwuuobff/+dhx9+mE2bNmFubn7Fx3nyySeb\nIzwhWpTcQhLiKpibmzNkyBDi4+MBqKqq4l//+hdjxoxh7NixvP766+h0OgBOnDjBtGnTiIiIYOLE\niezZsweAadOmkZ6eTkREBNXV1ZecIzQ0lAMHDlBRUVH/3O+//86gQYPqH1dXV/PKK68wZswYRowY\nUZ9oAMTExDBp0iQiIiIYN24c+/fvB+r+oh88eDDffPMNN910E0OGDOH33383eJ0JCQkEBQXVPw4K\nCmLTpk31idyHH37IsGHDuOWWW1i2bBkjRowAYMGCBSxZsqR+vwsfXy6uRYsWMXPmTACioqKYPHky\nN954I1OnTiU1NRWoa4l6/PHHCQ8PZ+bMmWRmZl6mxgxbs2YN8+bNY/bs2fz3v//lwIEDTJs2jcce\ne6z+l/2GDRuYMGECERER3HnnnaSkpADwwQcfsHDhQqZMmcJXX3110XEfe+wxvvjii/rH8fHxDB48\nGL1ez7vvvsuYMWMYM2YMd955J1lZWVcd97hx46isrCQxMRGAlStXEhERwYgRI5g/fz6VlZVA3ev+\n2muvcdNNN7Fhw4aL6qGh96Ver+c///kPw4cPZ8qUKZw4caL+vAcPHuTWW29l3LhxjB07lg0bNlx1\n7EI0OUUI0aDu3bsrGRkZ9Y8LCwuVGTNmKEuWLFEURVE++eQT5b777lNqamqUiooKZfLkycratWsV\nnU6njB07Vlm3bp2iKIpy5MgRJSwsTCkpKVH+/PNPZdSoUQbP99NPPynPPvus8tRTT9XvW1JSoowc\nOVJZvXq18uyzzyqKoigffvihMnv2bKWqqkopKytTbrnlFmX79u2KoijKhAkTlN9++01RFEX5+eef\n68+Vmpqq9OrVS1m+fLmiKIry+++/KzfeeKPBOB555BElPDxc+frrr5XTp09ftO3kyZNK3759lezs\nbKWmpkaZO3euEh4eriiKojz77LPKRx99VF/2wseNxdW7d29lzZo19dcbFham7N27V1EURVm3bp1y\n6623KoqiKN9++60yY8YMpaamRsnPz1fCw8PrX5MLNfYan3+dg4ODlaSkpPryAQEByv79+xVFUZRz\n584pffr0UZKTkxVFUZTPP/9cmT17tqIoirJ48WJl8ODBSl5e3iXHXb9+vTJjxoz6x++//77y8ssv\nKwkJCcro0aOV6upqRVEU5ZtvvlF+/vnnBuM7/7r07NnzkufDwsKUM2fOKIcOHVIGDBigZGZmKoqi\nKC+++KLy+uuvK4pS97rfdNNNSmVlZf3jjz76qNH35c6dO5XRo0crpaWlSkVFhTJlyhRl5syZiqIo\nyqRJk5QDBw4oiqIoSUlJyvz58xuNXQhjkBYYIS5j1qxZREREMHLkSEaOHMkNN9zAfffdB8DOnTuZ\nOnUqpqamWFpactNNN7Fv3z7S0tLIzc1l/PjxAAQEBODp6UlcXNwVnXP8+PH89ttvAGzdupXw8HDU\n6v99XHfs2MEdd9yBubk51tbWTJw4kc2bNwOwdu1axo4dC0CfPn3qWy8AamtrmTRpEgC9e/cmPT3d\n4PnffPNNZsyYwbp165gwYQIjRozg+++/B+paR8LCwnB1dcXU1JQJEyZc0TU1FldNTQ033nhj/fHd\n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\n",
"text/plain": [
""
]
@@ -1114,6 +1107,7 @@
" bucketized_median_income = tf.feature_column.bucketized_column(median_income, boundaries=get_quantile_based_boundaries(training_examples[\"median_income\"], 10))\n",
" bucketized_rooms_per_person =tf.feature_column.bucketized_column(rooms_per_person, boundaries=get_quantile_based_boundaries(training_examples[\"rooms_per_person\"], 10))\n",
" \n",
+ " \n",
" feature_columns = set([\n",
" bucketized_longitude,\n",
" bucketized_latitude,\n",
@@ -1135,7 +1129,7 @@
"base_uri": "https://localhost:8080/",
"height": 640
},
- "outputId": "be4a46da-d200-41a3-fedf-25be458106f8"
+ "outputId": "4ebc66b2-8688-4901-b601-d3e3dc857220"
},
"cell_type": "code",
"source": [
@@ -1149,23 +1143,23 @@
" validation_examples=validation_examples,\n",
" validation_targets=validation_targets)"
],
- "execution_count": 17,
+ "execution_count": 31,
"outputs": [
{
"output_type": "stream",
"text": [
"Training model...\n",
"RMSE (on training data):\n",
- " period 00 : 170.93\n",
- " period 01 : 144.56\n",
- " period 02 : 127.90\n",
- " period 03 : 116.56\n",
- " period 04 : 108.53\n",
- " period 05 : 102.54\n",
- " period 06 : 98.03\n",
- " period 07 : 94.37\n",
- " period 08 : 91.46\n",
- " period 09 : 89.03\n",
+ " period 00 : 170.32\n",
+ " period 01 : 143.98\n",
+ " period 02 : 127.43\n",
+ " period 03 : 116.14\n",
+ " period 04 : 108.01\n",
+ " period 05 : 101.93\n",
+ " period 06 : 97.29\n",
+ " period 07 : 93.64\n",
+ " period 08 : 90.67\n",
+ " period 09 : 88.19\n",
"Model training finished.\n"
],
"name": "stdout"
@@ -1173,7 +1167,7 @@
{
"output_type": "display_data",
"data": {
- "image/png": "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\nJXjyyScxMTGBf/zjH0v+fYlocbDAENGiGxoawq5duwAA4XAYV199Ne677z789re/xfe///3o6zwe\nD8LhMIDI9h4fd+LECdx7770AAI1GgzVr1qCxsRFNTU246qqrAEQ2Zi0pKQEAbNu2DX/729/w2GOP\n4frrr8eOHTsW9XsS0dJhgSGiRTc9B2a2sbExqFSqOT+fplKp5vxMJpPF/HdJkiCTySBJUsxeP9Ml\nqLS0FP/5z3/w4YcfYt++fXj++efx97///XK/DhEJgJN4iSgpDAYD8vLy8O677wIALly4gKeffvqS\n71m3bh1qa2sBAD6fD42NjVi9ejVKS0tRX18PAOjp6cGFCxcAAK+99hpOnjyJzZs344knnkBPTw+C\nweAifisiWiq8AkNESbN792789Kc/xZ///GcEg0E89thjl3z9rl278MMf/hBf+MIXMDk5iUceeQR5\neXm46667sH//fjz88MPIy8vD2rVrAQBlZWV44oknoFarIUkSvvKVr0Cp5F97RFcC7kZNREREKYe3\nkIiIiCjlsMAQERFRymGBISIiopTDAkNEREQphwWGiIiIUg4LDBEREaUcFhgiIiJKOSwwRERElHL+\nPycLor7isB8gAAAAAElFTkSuQmCC\n",
+ "image/png": "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\nixcvBiA1NZXbb7+d6dOnc/vtt5ORcf7bHqtWrWLy5MlMnTqVpUuXVmckkUrp3yWUv87oid+5zhQf\n6oGjzMr7B5fywcH/UeooMzueiEi9V20FpqCggDlz5hAdHV1+3X/+8x+mTZvG4sWLGTFiBO+88w4F\nBQXMnz+fhQsXsmjRIt59911ycnKqK5ZIpTVv7MPf7oiig39bCvb0wVrkx7cpW3lxx6ucKdLvqIiI\nmaqtwLi5ufHmm28SEhJSft3f/vY3Ro0aBYC/vz85OTnEx8cTERGBj48PHh4edO/enbi4uOqKJXJV\nvD1deXBaV8Z070D+3l44sppw8uwpntn+Eoeyj5gdT0Sk3rJV2xPbbNhsFz69l5cXAHa7nQ8++ID7\n7ruPzMxMAgICyu8TEBBQvmnpSvz9vbDZXKo+9I+Cg32q7bnl+pg1m99P6UpkuxBe/NCNkrN+5Lc4\nyLxdb3JLl4n8qv0ILBaLKbmchT4zzkuzcV6azfWptgJzJXa7nYcffpg+ffoQHR3N6tWrL7i9Muej\nOXOmoLriERzsQ0bG2Wp7frl2Zs+mTWMfHrutJ68sdydtvw9e7Xbz/u5P2Jd6mOkdpuFp8zAtm5nM\nnotcmWbjvDSbyqmo5NX4t5AeffRRmjdvzqxZswAICQkhMzOz/Pb09PQLNjuJOJPQwAY8dltPujVp\ny7n4PljyA9mVsZdnY+dxOj/N7HgiIvVGjRaYVatW4erqyv33319+XWRkJHv27CEvL4/8/Hzi4uLo\n2bNnTcYSuSqe7jbundiZqf07Uri/B/bTLUkryODfsfOIS99tdjwRkXqh2jYh7d27l7lz55KcnIzN\nZmPNmjVkZWXh7u7OjBkzAGjdujV///vfmT17NnfddRcWi4X77rsPHx9tFxTnZrFYGN2nOc0a+/D6\nSncKzvphbbOXt/Yu5kSzgUxoNRoXa/XtpyUiUt9ZjMrsdOJkqnO7obZLOi9nnU1mbiHzP9lLYk4q\nDTrswu56jhsatuKuztPxcfM2O161c9a5iGbjzDSbynGqfWBE6pogP0/+3/Tu9LvhBs7F94HcxhzO\nOcYz21/ieO5Js+OJiNRJKjAiVcDV5sIdY9pz24hOlBzuSumptuQU5/Fi3GtsSvq+Ut+uExGRylOB\nEakiFouFwd2a8Jdbe+BzrgPFB3uC3cbHCZ+w6MASSuylZkcUEakzVGBEqljrJn48cXsUN/i1Jn93\n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\n",
"text/plain": [
""
]
@@ -1398,7 +1392,7 @@
"base_uri": "https://localhost:8080/",
"height": 640
},
- "outputId": "798af178-f18a-45cc-bd09-870ec51db1f6"
+ "outputId": "b4f97380-8835-4641-bcb8-b6abc11c76b6"
},
"cell_type": "code",
"source": [
@@ -1412,23 +1406,23 @@
" validation_examples=validation_examples,\n",
" validation_targets=validation_targets)"
],
- "execution_count": 21,
+ "execution_count": 33,
"outputs": [
{
"output_type": "stream",
"text": [
"Training model...\n",
"RMSE (on training data):\n",
- " period 00 : 164.03\n",
- " period 01 : 135.74\n",
- " period 02 : 118.66\n",
- " period 03 : 107.39\n",
- " period 04 : 99.54\n",
- " period 05 : 93.75\n",
- " period 06 : 89.23\n",
- " period 07 : 85.71\n",
- " period 08 : 82.92\n",
- " period 09 : 80.59\n",
+ " period 00 : 163.60\n",
+ " period 01 : 135.47\n",
+ " period 02 : 118.48\n",
+ " period 03 : 107.22\n",
+ " period 04 : 99.25\n",
+ " period 05 : 93.33\n",
+ " period 06 : 88.78\n",
+ " period 07 : 85.17\n",
+ " period 08 : 82.21\n",
+ " period 09 : 79.75\n",
"Model training finished.\n"
],
"name": "stdout"
@@ -1436,7 +1430,7 @@
{
"output_type": "display_data",
"data": {
- "image/png": "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\nzvg2drZ2+ZfM1vtyNVNvbJd6Uzuuro7nXWYy6uGfgOnp+XW2bl9f9zpdv1y6+tSb9KJMPtk3j+P5\nSQS6BnBn+8kEuPpVL0/OKGTRhjh2Hk4HoF2wJ+P6hxHSpJG1Sr5k9akvVxv1xnapN7Xj6+t+3mUa\ngfkDpWLbVZ9642rvwnUBXSmqKGFv5gG2pkbj5dSYpm5NgFO3Iejexp+OYd5k5BazPyGbDbHJJKUX\nEOTnhruLg5X3oPbqU1+uNuqN7VJvaqemERgFmD/Ql8p21bfe2JntaO/z+5TSfnamxZJTkls9pQTg\n6e5Ir/ZNaBnkQUpmEfsTslm3K4nMvBKa+7nj4mSx8l5cWH3ry9VEvbFd6k3t1BRgbP//jiL1XBe/\njgS5BfLp3nlsSdlOQl7iWVNKbYO9aNPCk5jDGSzccJRNu1PYuu8kg7o0ZUTPFjSqRyMyIiJXgkZg\n/kCp2HbV5978b0qpmL2ZB9mSvI2iimKauTfF0e5UODGZTAT6uDKwc1N8GzuTkJLH3vgs1u1KoqKi\nihYB7thbbO/Ewfrcl4ZOvbFd6k3taArpIuhLZbvqe29OTSm1IdA1gPi8Y+zPOsTGpJ+pqKqgmXtT\n7M2nBkRNJhPN/d0Z2DkIdxd7jiblsicuiw2xydiZTTT3d8PObDtBpr73pSFTb2yXelM7OgvpIujI\ncNvVkHpTXlXB5uRtrEz4kfyyAlztXRjWYiD9mvbCwc7+jNcWl1awOvo4q7YnUlxaiVcjR8b0DqF3\nhwCbCDINqS8NjXpju9Sb2qnpLCQFmD/Ql8p2NcTelFaWse74JtYkrqe4ooTGjh6MCB5Cjybdqg/0\n/V1BcTnLfz7GjzEnKK+oIsDLhXH9Qul6rS8mk8lKe9Aw+9JQqDe2S72pHQWYi6Avle1qyL0pLC9i\n9bH1rD+xmfKqcvycfRgVOozOfh0xm84cZcnKK2HJ5gQ27U6hyjBoEeDO+P6htAv2skqQach9qe/U\nG9ul3tSOAsxF0JfKdl0NvckpzWVlwlo2J2+jyqiimVsgo8OiaOt17VnhJDWriO82xrH9wKn7LrVu\n3pjxA8IIC/S4ojVfDX2pr9Qb26Xe1I4CzEXQl8p2XU29SS/KZFn8D0Sf/AUDgzCPEMaGDSescfBZ\nrz2Wms+3G46yNy4LgM4tfRjXL5Smvm5XpNarqS/1jXpju9Sb2lGAuQj6Utmuq7E3SQUpLI1byZ6M\n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\n",
+ "image/png": "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\nvn37NnJIIiIikoM29AjM/v37OXToEPfeey/RaJTHHnsMj8fDI488QjweZ+fOnezZs2cjhyQiIiI5\naEMLjM1m43vf+947Hn/uuec2chgiIiKS44x1XWARERGRdVCBERERkZyjAiMiIiI5RwVGREREco4K\njIiIiOQcFRgRERHJOSowIiIiknNUYERERCTnqMCIiIhIzlGBERERkZxjSiQSiWwPQkRERCQTOgIj\nIiIiOUcFRkRERHKOCoyIiIjkHBUYERERyTkqMCIiIpJzVGBEREQk56jArPLtb3+b/fv3c/fdd9PZ\n2Znt4cgqTzzxBPv37+euu+7itddey/ZwZJWFhQVuvfVWXnrppWwPRVb51a9+xcc//nHuvPNOjh07\nlu3hCBCJRPjiF7/IgQMHuPvuu3njjTeyPaScZs32AIzib3/7GwMDAxw9epTz589z6NAhjh49mu1h\nCfDmm2/S09PD0aNHCQQCfOITn+AjH/lItoclKU8//TSlpaXZHoasEggEeOqpp3jxxReZm5vjBz/4\nAR/60IeyPayr3ssvv0xTUxMHDx5kfHyc++67j1dffTXbw8pZKjApx48f59ZbbwWgpaWFYDDI7Ows\ndrs9yyOT66+/no6ODgBKSkqYn58nFothsViyPDI5f/48vb29+uVoMMePH+eGG27Abrdjt9v55je/\nme0hCeByueju7gYgFArhcrmyPKLcpiWkFL/fv2YylZWVMTk5mcURyUUWi4Xi4mIAXnjhBW666SaV\nF4M4fPgwDz30ULaHIZcYGhpiYWGBL3zhC9xzzz0cP34820MS4Pbbb2dkZITbbruNe++9lwcffDDb\nQ8ppOgLzLnSHBeP54x//yAsvvMBPf/rTbA9FgF/+8pfs2rWL+vr6bA9F/oWZmRmefPJJRkZG+Nzn\nPsef//xnTCZTtod1VXvllVeoqanhmWee4ezZsxw6dEh7x94HFZiUiooK/H5/+t8nJibweDxZHJGs\n9sYbb/DDH/6Qn/zkJzgcjmwPR4Bjx44xODjIsWPHGBsbIz8/n6qqKvbs2ZPtoV31ysvL2b17N1ar\nFa/Xi81mY3p6mvLy8mwP7ap24sQJ9u7dC8CWLVuYmJjQcvj7oCWklBtvvJHf//73AHR1dVFRUaH9\nLwYRDod54okn+NGPfoTT6cz2cCTlu9/9Li+++CI///nP+dSnPsX999+v8mIQe/fu5c033yQejxMI\nBJibm9N+CwNoaGjg1KlTAAwPD2Oz2VRe3gcdgUm55ppr2LZtG3fffTcmk4lHH30020OSlN/+9rcE\nAgG+9KUvpR87fPgwNTU1WRyViHFVVlby0Y9+lE9/+tMAfP3rX8ds1v+vZtv+/fs5dOgQ9957L9Fo\nlMceeyzbQ8pppoQ2e4iIiEiOUSUXERGRnKMCIyIiIjlHBUZERERyjgqMiIiI5BwVGBEREck5KjAi\nclkNDQ2xfft2Dhw4kL4L78GDBwmFQut+jQMHDhCLxdb9/M985jP89a9//U+GKyI5QgVGRC67srIy\njhw5wpEjR3j++eepqKjg6aefXvfPHzlyRBf8EpE1dCE7Edlw119/PUePHuXs2bMcPnyYaDTK8vIy\njzzyCO3t7Rw4cIAtW7Zw5swZnn32Wdrb2+nq6mJpaYmHH36YsbExotEod9xxB/fccw/z8/N8+ctf\nJhAI0NDQwOLiIgDj4+N85StfAWBhYYH9+/fzyU9+MptvXUQ+ICowIrKhYrEYf/jDH7j22mv56le/\nylNPPYXX633Hze2Ki4v52c9+tuZnjxw5QklJCd/5zndYWFjgYx/7GPv27eMvf/kLhYWFHD16lImJ\nCW655RYAfve739Hc3Mzjjz/O4uIiv/jFLzb8/YrI5aECIyKX3fT0NAcOHAAgHo9z3XXXcdddd/H9\n73+fr33ta+nnzc7OEo/HgeTtPS516tQp7rzzTgAKCwvZvn07XV1dnDt3jmuvvRZI3pi1ubkZgH37\n9vHcc8/x0EMPcfPNN7N///7L+j5FZOOowIjIZXdxD8xq4XCYvLy8dzx+UV5e3jseM5lMa/49kUhg\nMplIJBJr7vVzsQS1tLTwm9/8hr///e+8+uqrPPvsszz//PPv9+2IiAFoE6+IZIXD4aCuro7XX38d\ngP7+fp588sn3/JmdO3fyxhtvADA3N0dXVxfbtm2jpaWFkydPAjA6Okp/fz8Av/71r3n77bfZs2cP\njz76KKOjo0Sj0cv4rkRko+gIjIhkzeHDh/nWt77Fj3/8Y6LRKA899NB7Pv/AgQM8/PDDfPazn2Vp\naYn777+furo67rjjDv70pz9xzz33UFdXx44dOwBobW3l0UcfJT8/n0Qiwec//3msVv21J3Il0N2o\nRUREJOdoCUlERERyjgqMiIiI5BwVGBEREck5KjAiIiKSc1RgREREJOeowIiIiEjOUYERERGRnKMC\nIyIiIjnn/wOrfpbT0cmDEwAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
From 018b0d7e97d2c16acbf7dc6457e15b4102d16ac0 Mon Sep 17 00:00:00 2001
From: Aditya Joardar <30207466+joardar-aditya@users.noreply.github.com>
Date: Sun, 17 Feb 2019 20:40:32 +0530
Subject: [PATCH 05/13] Created using Colaboratory
---
logistic_regression.ipynb | 945 ++++++++++++++++++++++++++++++++++++++
1 file changed, 945 insertions(+)
create mode 100644 logistic_regression.ipynb
diff --git a/logistic_regression.ipynb b/logistic_regression.ipynb
new file mode 100644
index 0000000..b7aad9c
--- /dev/null
+++ b/logistic_regression.ipynb
@@ -0,0 +1,945 @@
+{
+ "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": {}
+ },
+ "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": 0,
+ "outputs": []
+ },
+ {
+ "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": {}
+ },
+ "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": 0,
+ "outputs": []
+ },
+ {
+ "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": "dPpJUV862FYI",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below to display the solution."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "kXFQ5uig2RoP",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "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",
+ "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": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "rYpy336F9wBg",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Task 2: Train a Logistic Regression Model and Calculate LogLoss on the Validation Set\n",
+ "\n",
+ "To use logistic regression, simply use [LinearClassifier](https://www.tensorflow.org/api_docs/python/tf/estimator/LinearClassifier) instead of `LinearRegressor`. Complete the code below.\n",
+ "\n",
+ "**NOTE**: When running `train()` and `predict()` on a `LinearClassifier` model, you can access the real-valued predicted probabilities via the `\"probabilities\"` key in the returned dict—e.g., `predictions[\"probabilities\"]`. Sklearn's [log_loss](http://scikit-learn.org/stable/modules/generated/sklearn.metrics.log_loss.html) function is handy for calculating LogLoss using these probabilities.\n"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "JElcb--E9wBm",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def train_linear_classifier_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 classification 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 `LinearClassifier` object trained on the training data.\n",
+ " \"\"\"\n",
+ "\n",
+ " periods = 10\n",
+ " steps_per_period = steps / periods\n",
+ " \n",
+ " # Create a linear classifier 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_classifier = # YOUR CODE HERE: Construct the linear classifier.\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(\"LogLoss (on training data):\")\n",
+ " training_log_losses = []\n",
+ " validation_log_losses = []\n",
+ " for period in range (0, periods):\n",
+ " # Train the model, starting from the prior state.\n",
+ " linear_classifier.train(\n",
+ " input_fn=training_input_fn,\n",
+ " steps=steps_per_period\n",
+ " )\n",
+ " # Take a break and compute predictions. \n",
+ " training_probabilities = linear_classifier.predict(input_fn=predict_training_input_fn)\n",
+ " training_probabilities = np.array([item['probabilities'] for item in training_probabilities])\n",
+ " \n",
+ " validation_probabilities = linear_classifier.predict(input_fn=predict_validation_input_fn)\n",
+ " validation_probabilities = np.array([item['probabilities'] for item in validation_probabilities])\n",
+ " \n",
+ " training_log_loss = metrics.log_loss(training_targets, training_probabilities)\n",
+ " validation_log_loss = metrics.log_loss(validation_targets, validation_probabilities)\n",
+ " # Occasionally print the current loss.\n",
+ " print(\" period %02d : %0.2f\" % (period, training_log_loss))\n",
+ " # Add the loss metrics from this period to our list.\n",
+ " training_log_losses.append(training_log_loss)\n",
+ " validation_log_losses.append(validation_log_loss)\n",
+ " print(\"Model training finished.\")\n",
+ " \n",
+ " # Output a graph of loss metrics over periods.\n",
+ " plt.ylabel(\"LogLoss\")\n",
+ " plt.xlabel(\"Periods\")\n",
+ " plt.title(\"LogLoss vs. Periods\")\n",
+ " plt.tight_layout()\n",
+ " plt.plot(training_log_losses, label=\"training\")\n",
+ " plt.plot(validation_log_losses, label=\"validation\")\n",
+ " plt.legend()\n",
+ "\n",
+ " return linear_classifier"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "VM0wmnFUIYH9",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "linear_classifier = train_linear_classifier_model(\n",
+ " learning_rate=0.000005,\n",
+ " steps=500,\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": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "i2e3TlyL57Qs",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below to see the solution.\n",
+ "\n"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "5YxXd2hn6MuF",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def train_linear_classifier_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 classification 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 `LinearClassifier` object trained on the training data.\n",
+ " \"\"\"\n",
+ "\n",
+ " periods = 10\n",
+ " steps_per_period = steps / periods\n",
+ " \n",
+ " # Create a linear classifier 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_classifier = tf.estimator.LinearClassifier(\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(\"LogLoss (on training data):\")\n",
+ " training_log_losses = []\n",
+ " validation_log_losses = []\n",
+ " for period in range (0, periods):\n",
+ " # Train the model, starting from the prior state.\n",
+ " linear_classifier.train(\n",
+ " input_fn=training_input_fn,\n",
+ " steps=steps_per_period\n",
+ " )\n",
+ " # Take a break and compute predictions. \n",
+ " training_probabilities = linear_classifier.predict(input_fn=predict_training_input_fn)\n",
+ " training_probabilities = np.array([item['probabilities'] for item in training_probabilities])\n",
+ " \n",
+ " validation_probabilities = linear_classifier.predict(input_fn=predict_validation_input_fn)\n",
+ " validation_probabilities = np.array([item['probabilities'] for item in validation_probabilities])\n",
+ " \n",
+ " training_log_loss = metrics.log_loss(training_targets, training_probabilities)\n",
+ " validation_log_loss = metrics.log_loss(validation_targets, validation_probabilities)\n",
+ " # Occasionally print the current loss.\n",
+ " print(\" period %02d : %0.2f\" % (period, training_log_loss))\n",
+ " # Add the loss metrics from this period to our list.\n",
+ " training_log_losses.append(training_log_loss)\n",
+ " validation_log_losses.append(validation_log_loss)\n",
+ " print(\"Model training finished.\")\n",
+ " \n",
+ " # Output a graph of loss metrics over periods.\n",
+ " plt.ylabel(\"LogLoss\")\n",
+ " plt.xlabel(\"Periods\")\n",
+ " plt.title(\"LogLoss vs. Periods\")\n",
+ " plt.tight_layout()\n",
+ " plt.plot(training_log_losses, label=\"training\")\n",
+ " plt.plot(validation_log_losses, label=\"validation\")\n",
+ " plt.legend()\n",
+ "\n",
+ " return linear_classifier"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "UPM_T1FXsTaL",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "linear_classifier = train_linear_classifier_model(\n",
+ " learning_rate=0.000005,\n",
+ " steps=500,\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": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "i-Xo83_aR6s_",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Task 3: Calculate Accuracy and plot a ROC Curve for the Validation Set\n",
+ "\n",
+ "A few of the metrics useful for classification are the model [accuracy](https://en.wikipedia.org/wiki/Accuracy_and_precision#In_binary_classification), the [ROC curve](https://en.wikipedia.org/wiki/Receiver_operating_characteristic) and the area under the ROC curve (AUC). We'll examine these metrics.\n",
+ "\n",
+ "`LinearClassifier.evaluate` calculates useful metrics like accuracy and AUC."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "DKSQ87VVIYIA",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "evaluation_metrics = linear_classifier.evaluate(input_fn=predict_validation_input_fn)\n",
+ "\n",
+ "print(\"AUC on the validation set: %0.2f\" % evaluation_metrics['auc'])\n",
+ "print(\"Accuracy on the validation set: %0.2f\" % evaluation_metrics['accuracy'])"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "47xGS2uNIYIE",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "You may use class probabilities, such as those calculated by `LinearClassifier.predict`,\n",
+ "and Sklearn's [roc_curve](http://scikit-learn.org/stable/modules/model_evaluation.html#roc-metrics) to\n",
+ "obtain the true positive and false positive rates needed to plot a ROC curve."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "xaU7ttj8IYIF",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "validation_probabilities = linear_classifier.predict(input_fn=predict_validation_input_fn)\n",
+ "# Get just the probabilities for the positive class.\n",
+ "validation_probabilities = np.array([item['probabilities'][1] for item in validation_probabilities])\n",
+ "\n",
+ "false_positive_rate, true_positive_rate, thresholds = metrics.roc_curve(\n",
+ " validation_targets, validation_probabilities)\n",
+ "plt.plot(false_positive_rate, true_positive_rate, label=\"our model\")\n",
+ "plt.plot([0, 1], [0, 1], label=\"random classifier\")\n",
+ "_ = plt.legend(loc=2)"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "PIdhwfgzIYII",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "**See if you can tune the learning settings of the model trained at Task 2 to improve AUC.**\n",
+ "\n",
+ "Often times, certain metrics improve at the detriment of others, and you'll need to find the settings that achieve a good compromise.\n",
+ "\n",
+ "**Verify if all metrics improve at the same time.**"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "XKIqjsqcCaxO",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "# TUNE THE SETTINGS BELOW TO IMPROVE AUC\n",
+ "linear_classifier = train_linear_classifier_model(\n",
+ " learning_rate=0.000005,\n",
+ " steps=500,\n",
+ " batch_size=20,\n",
+ " training_examples=training_examples,\n",
+ " training_targets=training_targets,\n",
+ " validation_examples=validation_examples,\n",
+ " validation_targets=validation_targets)\n",
+ "\n",
+ "evaluation_metrics = linear_classifier.evaluate(input_fn=predict_validation_input_fn)\n",
+ "\n",
+ "print(\"AUC on the validation set: %0.2f\" % evaluation_metrics['auc'])\n",
+ "print(\"Accuracy on the validation set: %0.2f\" % evaluation_metrics['accuracy'])"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "wCugvl0JdWYL",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below for a possible solution."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "VHosS1g2aetf",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "One possible solution that works is to just train for longer, as long as we don't overfit. \n",
+ "\n",
+ "We can do this by increasing the number the steps, the batch size, or both.\n",
+ "\n",
+ "All metrics improve at the same time, so our loss metric is a good proxy\n",
+ "for both AUC and accuracy.\n",
+ "\n",
+ "Notice how it takes many, many more iterations just to squeeze a few more \n",
+ "units of AUC. This commonly happens. But often even this small gain is worth \n",
+ "the costs."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "dWgTEYMddaA-",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "linear_classifier = train_linear_classifier_model(\n",
+ " learning_rate=0.000003,\n",
+ " steps=20000,\n",
+ " batch_size=500,\n",
+ " training_examples=training_examples,\n",
+ " training_targets=training_targets,\n",
+ " validation_examples=validation_examples,\n",
+ " validation_targets=validation_targets)\n",
+ "\n",
+ "evaluation_metrics = linear_classifier.evaluate(input_fn=predict_validation_input_fn)\n",
+ "\n",
+ "print(\"AUC on the validation set: %0.2f\" % evaluation_metrics['auc'])\n",
+ "print(\"Accuracy on the validation set: %0.2f\" % evaluation_metrics['accuracy'])"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ }
+ ]
+}
\ No newline at end of file
From c6377e761f82b804593d9cf9c909e28144437501 Mon Sep 17 00:00:00 2001
From: Aditya Joardar <30207466+joardar-aditya@users.noreply.github.com>
Date: Sun, 17 Feb 2019 23:18:07 +0530
Subject: [PATCH 06/13] Created using Colaboratory
---
logistic_regression.ipynb | 696 +++++++++++++++++++++++++++++++++++++-
1 file changed, 679 insertions(+), 17 deletions(-)
diff --git a/logistic_regression.ipynb b/logistic_regression.ipynb
index b7aad9c..ea99620 100644
--- a/logistic_regression.ipynb
+++ b/logistic_regression.ipynb
@@ -223,7 +223,11 @@
"metadata": {
"id": "FwOYWmXqWA6D",
"colab_type": "code",
- "colab": {}
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1224
+ },
+ "outputId": "f24b25b6-61da-4833-e0cc-013dcba900c8"
},
"cell_type": "code",
"source": [
@@ -246,8 +250,513 @@
"print(\"Validation targets summary:\")\n",
"display.display(validation_targets.describe())"
],
- "execution_count": 0,
- "outputs": []
+ "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 2645.6 539.5 \n",
+ "std 2.1 2.0 12.6 2204.2 425.1 \n",
+ "min 32.5 -124.3 2.0 8.0 1.0 \n",
+ "25% 33.9 -121.8 18.0 1459.0 296.0 \n",
+ "50% 34.2 -118.5 29.0 2127.0 433.0 \n",
+ "75% 37.7 -118.0 37.0 3143.2 648.0 \n",
+ "max 42.0 -114.3 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 1432.2 501.2 3.9 2.0 \n",
+ "std 1156.5 388.7 1.9 1.2 \n",
+ "min 3.0 1.0 0.5 0.0 \n",
+ "25% 790.0 281.8 2.6 1.5 \n",
+ "50% 1166.0 409.0 3.5 1.9 \n",
+ "75% 1720.0 603.0 4.8 2.3 \n",
+ "max 35682.0 5189.0 15.0 55.2 "
+ ],
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " latitude \n",
+ " longitude \n",
+ " housing_median_age \n",
+ " total_rooms \n",
+ " total_bedrooms \n",
+ " population \n",
+ " households \n",
+ " median_income \n",
+ " rooms_per_person \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " 35.6 \n",
+ " -119.6 \n",
+ " 28.6 \n",
+ " 2645.6 \n",
+ " 539.5 \n",
+ " 1432.2 \n",
+ " 501.2 \n",
+ " 3.9 \n",
+ " 2.0 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 2.1 \n",
+ " 2.0 \n",
+ " 12.6 \n",
+ " 2204.2 \n",
+ " 425.1 \n",
+ " 1156.5 \n",
+ " 388.7 \n",
+ " 1.9 \n",
+ " 1.2 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 32.5 \n",
+ " -124.3 \n",
+ " 2.0 \n",
+ " 8.0 \n",
+ " 1.0 \n",
+ " 3.0 \n",
+ " 1.0 \n",
+ " 0.5 \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 33.9 \n",
+ " -121.8 \n",
+ " 18.0 \n",
+ " 1459.0 \n",
+ " 296.0 \n",
+ " 790.0 \n",
+ " 281.8 \n",
+ " 2.6 \n",
+ " 1.5 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 34.2 \n",
+ " -118.5 \n",
+ " 29.0 \n",
+ " 2127.0 \n",
+ " 433.0 \n",
+ " 1166.0 \n",
+ " 409.0 \n",
+ " 3.5 \n",
+ " 1.9 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 37.7 \n",
+ " -118.0 \n",
+ " 37.0 \n",
+ " 3143.2 \n",
+ " 648.0 \n",
+ " 1720.0 \n",
+ " 603.0 \n",
+ " 4.8 \n",
+ " 2.3 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 42.0 \n",
+ " -114.3 \n",
+ " 52.0 \n",
+ " 37937.0 \n",
+ " 5471.0 \n",
+ " 35682.0 \n",
+ " 5189.0 \n",
+ " 15.0 \n",
+ " 55.2 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ },
+ {
+ "output_type": "stream",
+ "text": [
+ "Validation examples summary:\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " latitude longitude housing_median_age total_rooms total_bedrooms \\\n",
+ "count 5000.0 5000.0 5000.0 5000.0 5000.0 \n",
+ "mean 35.6 -119.6 28.5 2639.1 539.1 \n",
+ "std 2.1 2.0 12.6 2120.7 412.7 \n",
+ "min 32.5 -124.3 1.0 2.0 2.0 \n",
+ "25% 33.9 -121.8 18.0 1467.8 297.0 \n",
+ "50% 34.3 -118.5 28.0 2128.5 435.0 \n",
+ "75% 37.7 -118.0 37.0 3166.0 650.0 \n",
+ "max 41.9 -114.6 52.0 32627.0 6445.0 \n",
+ "\n",
+ " population households median_income rooms_per_person \n",
+ "count 5000.0 5000.0 5000.0 5000.0 \n",
+ "mean 1423.4 501.2 3.9 2.0 \n",
+ "std 1127.0 374.4 1.9 1.0 \n",
+ "min 6.0 2.0 0.5 0.2 \n",
+ "25% 789.0 282.0 2.6 1.5 \n",
+ "50% 1168.0 409.0 3.6 1.9 \n",
+ "75% 1723.2 610.0 4.8 2.3 \n",
+ "max 28566.0 6082.0 15.0 34.2 "
+ ],
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " latitude \n",
+ " longitude \n",
+ " housing_median_age \n",
+ " total_rooms \n",
+ " total_bedrooms \n",
+ " population \n",
+ " households \n",
+ " median_income \n",
+ " rooms_per_person \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " 35.6 \n",
+ " -119.6 \n",
+ " 28.5 \n",
+ " 2639.1 \n",
+ " 539.1 \n",
+ " 1423.4 \n",
+ " 501.2 \n",
+ " 3.9 \n",
+ " 2.0 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 2.1 \n",
+ " 2.0 \n",
+ " 12.6 \n",
+ " 2120.7 \n",
+ " 412.7 \n",
+ " 1127.0 \n",
+ " 374.4 \n",
+ " 1.9 \n",
+ " 1.0 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 32.5 \n",
+ " -124.3 \n",
+ " 1.0 \n",
+ " 2.0 \n",
+ " 2.0 \n",
+ " 6.0 \n",
+ " 2.0 \n",
+ " 0.5 \n",
+ " 0.2 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 33.9 \n",
+ " -121.8 \n",
+ " 18.0 \n",
+ " 1467.8 \n",
+ " 297.0 \n",
+ " 789.0 \n",
+ " 282.0 \n",
+ " 2.6 \n",
+ " 1.5 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 34.3 \n",
+ " -118.5 \n",
+ " 28.0 \n",
+ " 2128.5 \n",
+ " 435.0 \n",
+ " 1168.0 \n",
+ " 409.0 \n",
+ " 3.6 \n",
+ " 1.9 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 37.7 \n",
+ " -118.0 \n",
+ " 37.0 \n",
+ " 3166.0 \n",
+ " 650.0 \n",
+ " 1723.2 \n",
+ " 610.0 \n",
+ " 4.8 \n",
+ " 2.3 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 41.9 \n",
+ " -114.6 \n",
+ " 52.0 \n",
+ " 32627.0 \n",
+ " 6445.0 \n",
+ " 28566.0 \n",
+ " 6082.0 \n",
+ " 15.0 \n",
+ " 34.2 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ },
+ {
+ "output_type": "stream",
+ "text": [
+ "Training targets summary:\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " median_house_value_is_high\n",
+ "count 12000.0\n",
+ "mean 0.2\n",
+ "std 0.4\n",
+ "min 0.0\n",
+ "25% 0.0\n",
+ "50% 0.0\n",
+ "75% 0.0\n",
+ "max 1.0"
+ ],
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " median_house_value_is_high \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 12000.0 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " 0.2 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 0.4 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 1.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ },
+ {
+ "output_type": "stream",
+ "text": [
+ "Validation targets summary:\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " median_house_value_is_high\n",
+ "count 5000.0\n",
+ "mean 0.3\n",
+ "std 0.4\n",
+ "min 0.0\n",
+ "25% 0.0\n",
+ "50% 0.0\n",
+ "75% 1.0\n",
+ "max 1.0"
+ ],
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " median_house_value_is_high \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 5000.0 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " 0.3 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 0.4 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 1.0 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 1.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
},
{
"metadata": {
@@ -436,7 +945,11 @@
"metadata": {
"id": "TDBD8xeeIYH2",
"colab_type": "code",
- "colab": {}
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 640
+ },
+ "outputId": "0460c7f6-1552-4dce-f4c9-7e1a88553d6b"
},
"cell_type": "code",
"source": [
@@ -449,8 +962,40 @@
" validation_examples=validation_examples,\n",
" validation_targets=validation_targets)"
],
- "execution_count": 0,
- "outputs": []
+ "execution_count": 10,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 0.45\n",
+ " period 01 : 0.45\n",
+ " period 02 : 0.45\n",
+ " period 03 : 0.44\n",
+ " period 04 : 0.44\n",
+ " period 05 : 0.44\n",
+ " period 06 : 0.44\n",
+ " period 07 : 0.44\n",
+ " period 08 : 0.45\n",
+ " period 09 : 0.44\n",
+ "Model training finished.\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj4AAAGACAYAAACtGmg0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xd4VFX6wPHvTHqvMymUhISeRm8R\n6RKKiwoigthYd12NspZV4Serroq6u7oKCKuui8qqi7IBUVGQpqD0QBoESIEkkDLJpPfM3N8fkREE\nQsjMpL6f5+F5MjP3nvveOZnMyznnvVelKIqCEEIIIUQXoG7rAIQQQgghWoskPkIIIYToMiTxEUII\nIUSXIYmPEEIIIboMSXyEEEII0WVI4iOEEEKILsO2rQMQojPq168fPXv2xMbGBgCDwcDw4cN59tln\ncXZ2bnG7n332GXPnzr3s+bi4OJYsWcI///lPJkyYYHq+pqaGMWPGcNNNN/Hqq6+2+LjNlZWVxfLl\ny8nMzATAycmJ2NhYJk+ebPVjX4/Vq1eTlZV12Xty4MABFi1aRPfu3S/b59tvv22t8MySk5PDpEmT\n6NWrFwCKouDr68v//d//MXDgwOtq6/XXXycwMJA777yz2ft88cUXbNiwgXXr1l3XsYRoLZL4CGEl\n69atw9/fH4C6ujoee+wx3nnnHR577LEWtafT6fjXv/51xcQHICAggK+++uqSxGfXrl24u7u36Hgt\n8eSTTzJr1iz++c9/ApCQkMA999zDN998Q0BAQKvFYY6AgIAOk+RcjY2NzSXnsGXLFh5++GG2bt2K\nvb19s9t54oknrBGeEG1KprqEaAX29vaMHTuWEydOAFBbW8uf//xnpk6dyrRp03j11VcxGAwApKam\nMm/ePGJiYpg1axZ79uwBYN68eZw/f56YmBjq6uouO8aQIUM4cOAA1dXVpue2bNlCdHS06XFdXR0v\nvfQSU6dOZeLEiaYEBeDo0aPcdtttxMTEMH36dH766SegcQThhhtu4KOPPuLmm29m7NixbNmy5Yrn\neerUKaKiokyPo6Ki2Lp1qykBXLVqFePGjeOWW27h3XffZeLEiQA888wzrF692rTfxY+vFdfy5cu5\n6667ADhy5AizZ89mypQpzJ07l+zsbKBx5OuPf/wjEyZM4K677iIvL+8aPXZlcXFxxMbGcs899/DX\nv/6VAwcOMG/ePBYvXmxKEr755htmzpxJTEwMd999N1lZWQCsXLmSZ599ljlz5vDBBx9c0u7ixYv5\n97//bXp84sQJbrjhBoxGI//4xz+YOnUqU6dO5e677yY/P/+6454+fTo1NTVkZGQAsH79emJiYpg4\ncSKPP/44NTU1QOP7/sorr3DzzTfzzTffXNIPV/u9NBqN/OUvf2H8+PHMmTOH1NRU03EPHjzIrbfe\nyvTp05k2bRrffPPNdccuhMUpQgiL69u3r5Kbm2t6XFJSoixYsEBZvXq1oiiK8s477ygPPPCAUl9f\nr1RXVyuzZ89WNm3apBgMBmXatGnKl19+qSiKoiQmJirDhw9XysvLlf379yuTJ0++4vH+97//KU8/\n/bTy5JNPmvYtLy9XJk2apHz++efK008/rSiKoqxatUq55557lNraWqWyslK55ZZblJ07dyqKoigz\nZ85UvvrqK0VRFGXjxo2mY2VnZysDBw5U1q1bpyiKomzZskWZMmXKFeN45JFHlAkTJigffvihkpaW\ndslrJ0+eVIYNG6YUFBQo9fX1yh/+8AdlwoQJiqIoytNPP628/fbbpm0vftxUXGFhYUpcXJzpfIcP\nH67s3btXURRF+fLLL5Vbb71VURRF+c9//qMsWLBAqa+vV/R6vTJhwgTTe3Kxpt7jC+/zoEGDlMzM\nTNP2ERERyk8//aQoiqKcO3dOGTp0qHLmzBlFURTl/fffV+655x5FURRlxYoVyg033KAUFRVd1u7X\nX3+tLFiwwPT4rbfeUl588UXl1KlTyk033aTU1dUpiqIoH330kbJx48arxnfhfRkwYMBlzw8fPlxJ\nT09XDh06pIwePVrJy8tTFEVRli1bprz66quKojS+7zfffLNSU1Njevz22283+Xu5e/du5aabblIq\nKiqU6upqZc6cOcpdd92lKIqi3HbbbcqBAwcURVGUzMxM5fHHH28ydiFag4z4CGElCxcuJCYmhkmT\nJjFp0iRGjRrFAw88AMDu3buZO3cutra2ODo6cvPNN/Pjjz+Sk5NDYWEhM2bMACAiIoLAwECSkpKa\ndcwZM2bw1VdfAbB9+3YmTJiAWv3Lx3zXrl3Mnz8fe3t7nJ2dmTVrFtu2bQNg06ZNTJs2DYChQ4ea\nRksAGhoauO222wAICwvj/PnzVzz+3/72NxYsWMCXX37JzJkzmThxIp9++inQOBozfPhwNBoNtra2\n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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
},
{
"metadata": {
@@ -487,6 +1032,44 @@
"Click below to display the solution."
]
},
+ {
+ "metadata": {
+ "id": "yiVTBuHIcIXx",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 347
+ },
+ "outputId": "ea6b2617-6ea4-41b8-961f-9a2c0028e70c"
+ },
+ "cell_type": "code",
+ "source": [
+ "predict_validation = lambda: my_input_fn(validation_examples, \n",
+ " validation_targets[\"median_house_value_is_high\"], \n",
+ " num_epochs=1, \n",
+ " shuffle=False)\n",
+ "\n",
+ "validation_predictions = linear_regressor.predict(input_fn=predict_validation)\n",
+ "validation_predictions = np.array([item['predictions'][0] for item in validation_predictions])\n",
+ "\n",
+ "_ = plt.hist(validation_predictions)"
+ ],
+ "execution_count": 13,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\ntzt37tTcuXNna6lT7ujRo9q0aZN+9atfaePGjWPui/V9H2/2WN/37du367333tO5c+d0zz33aPXq\n1ZH7Ynnfx5s7lvd8YGBAVVVVOn36tL744gtt2rRJeXl5kfsves+tS8xf/vIXa9u2bZZlWdahQ4es\nBx544Lxzrrvuuple1rRpb2+3fv3rX1uWZVkfffSRtX79+jH3r1271jpx4oQ1MjJilZaWWh9++OFs\nLHNaRJs9Ly/P+vzzz2djadOur6/P2rhxo/X4449b+/btO+/+WN73aLPH8r4HAgHrrrvusizLss6c\nOWPdcMMNY+6P1X2PNncs7/nf/vY3a8+ePZZlWdbHH39srV69esz9F7vnl9zl8UAgoIKCAklSTk6O\ngsHgLK9oen3Tx7xK0rFjx3TllVdq3rx5stvtuuGGGxQIBGZzuVNqvNljncvl0t69e+Xz+c67L9b3\nfbzZY92yZcv03HPPSZKSkpI0MDCgkZERSbG97+PNHeuKiop09913S5JOnjw55grCZPb8krs8Hg6H\n5fV6JUl2u102m01DQ0NyuVyRc4aGhlRZWanjx49rzZo1uuOOO2Zrud/aeB/zGgqFIv8uvrrv2LFj\ns7HMaTGRj7h96qmndPz4cf3sZz9TZWWlbDbbbCx1yjmdTjmdF/7PL9b3fbzZvxKr++5wOJSYmChJ\n8vv9WrlyZeSScCzv+3hzfyVW9/wrGzZs0CeffKLdu3dHjk1mz2c12gcOHNCBAwfGHOvo6Bhz27rA\nT6Rt2bJFv/jFL2Sz2bRx40ZlZWUpPT19Wtc6Uy40b7z4+uy//e1vtWLFCl155ZWqqKhQS0uLCgsL\nZ2l1mCnxsO9vvfWW/H6/6uvrZ3spM+qb5o6HPX/99df1wQcf6JFHHlFTU9Ok/1Iyq5fHS0pK9Kc/\n/WnMPzfffLNCoZCkL78pzbKsMa+yJam0tFSXX365EhMTdf311+vo0aOzsfwpMd7HvH79vlOnTsXU\nJcVoH3FbXFyslJQUOZ1OrVy50uh9vhixvu/RxPq+Hzp0SLt379bevXvl8fz/z52O9X3/prml2N7z\nrq4unTx5UpKUlpamkZERnTlzRtLk9vySe087NzdXzc3NkqTW1lZlZ2ePuf8///mPKisrZVmWzp07\np2AwqIULF87GUqfEeB/zetVVV+nzzz/Xxx9/rHPnzqm1tVW5ubmzudwpNd7sZ8+eVXl5uYaGhiRJ\n7777rtH7fDFifd/HE+v7fvbsWW3fvl0vvviikpOTx9wXy/s+3tyxvudHjhyJXFkIh8Pq7+/XnDlz\nJE1uzy+5T0QbGRnR448/rv/+979yuVyqqanRvHnztGfPHi1btkxLly7Vjh079M4778hutys/P1+/\n+c1vZnvZ38rOnTt15MiRyMe8/utf/5LH41FBQYHeffdd7dy5U5K0evVqlZeXz/Jqp9Z4szc0NOiv\nf/2rvvOd7+gnP/mJnnjiiZh5n6urq0vPPPOMjh8/LqfTqblz5yo/P19XXXVVzO97tNljed8bGxv1\nhz/8QT/84Q8jx7Kzs/XjH/84pvc92tyxvOeDg4N67LHHdPLkSQ0ODuq+++7Tp59+Ouk/4y+5aAMA\ngAu75C6PAwCACyPaAAAYgmgDAGAIog0AgCGINgAAhiDaAAAYgmgDAGAIog0AgCH+H2BD3QnIuESO\nAAAAAElFTkSuQmCC\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
{
"metadata": {
"id": "kXFQ5uig2RoP",
@@ -567,7 +1150,10 @@
" # Create a linear classifier 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_classifier = # YOUR CODE HERE: Construct the linear classifier.\n",
+ " linear_classifier = tf.estimator.LinearClassifier(\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",
@@ -628,7 +1214,11 @@
"metadata": {
"id": "VM0wmnFUIYH9",
"colab_type": "code",
- "colab": {}
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 640
+ },
+ "outputId": "3905c6bb-1b9d-42b7-fbb7-2586e2de6f15"
},
"cell_type": "code",
"source": [
@@ -641,8 +1231,40 @@
" validation_examples=validation_examples,\n",
" validation_targets=validation_targets)"
],
- "execution_count": 0,
- "outputs": []
+ "execution_count": 15,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "LogLoss (on training data):\n",
+ " period 00 : 0.60\n",
+ " period 01 : 0.58\n",
+ " period 02 : 0.57\n",
+ " period 03 : 0.55\n",
+ " period 04 : 0.55\n",
+ " period 05 : 0.54\n",
+ " period 06 : 0.54\n",
+ " period 07 : 0.53\n",
+ " period 08 : 0.54\n",
+ " period 09 : 0.53\n",
+ "Model training finished.\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
},
{
"metadata": {
@@ -863,27 +1485,67 @@
"metadata": {
"id": "XKIqjsqcCaxO",
"colab_type": "code",
- "colab": {}
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 677
+ },
+ "outputId": "2d1e1c73-75e8-4e4d-8448-49dfd03f6506"
},
"cell_type": "code",
"source": [
"# TUNE THE SETTINGS BELOW TO IMPROVE AUC\n",
"linear_classifier = train_linear_classifier_model(\n",
- " learning_rate=0.000005,\n",
- " steps=500,\n",
- " batch_size=20,\n",
+ " learning_rate=0.000003,\n",
+ " steps=50000,\n",
+ " batch_size=50,\n",
" training_examples=training_examples,\n",
" training_targets=training_targets,\n",
" validation_examples=validation_examples,\n",
" validation_targets=validation_targets)\n",
"\n",
- "evaluation_metrics = linear_classifier.evaluate(input_fn=predict_validation_input_fn)\n",
+ "#I hope that it doesn't overfit\n",
+ "\n",
+ "evaluation_metrics = linear_classifier.evaluate(input_fn=predict_validation)\n",
"\n",
"print(\"AUC on the validation set: %0.2f\" % evaluation_metrics['auc'])\n",
"print(\"Accuracy on the validation set: %0.2f\" % evaluation_metrics['accuracy'])"
],
- "execution_count": 0,
- "outputs": []
+ "execution_count": 19,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "LogLoss (on training data):\n",
+ " period 00 : 0.50\n",
+ " period 01 : 0.49\n",
+ " period 02 : 0.48\n",
+ " period 03 : 0.48\n",
+ " period 04 : 0.47\n",
+ " period 05 : 0.47\n",
+ " period 06 : 0.47\n",
+ " period 07 : 0.47\n",
+ " period 08 : 0.46\n",
+ " period 09 : 0.46\n",
+ "Model training finished.\n",
+ "AUC on the validation set: 0.80\n",
+ "Accuracy on the validation set: 0.78\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\n3AAAAABJRU5ErkJggg==\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
},
{
"metadata": {
From c5341e3f677fc6afde915f53f0731179979f3b1f Mon Sep 17 00:00:00 2001
From: Aditya Joardar <30207466+joardar-aditya@users.noreply.github.com>
Date: Sun, 17 Feb 2019 23:56:35 +0530
Subject: [PATCH 07/13] Sparsity and l1 Regularisation completed!
---
sparsity_and_l1_regularization.ipynb | 1141 ++++++++++++++++++++++++++
1 file changed, 1141 insertions(+)
create mode 100644 sparsity_and_l1_regularization.ipynb
diff --git a/sparsity_and_l1_regularization.ipynb b/sparsity_and_l1_regularization.ipynb
new file mode 100644
index 0000000..dfcfda5
--- /dev/null
+++ b/sparsity_and_l1_regularization.ipynb
@@ -0,0 +1,1141 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "name": "sparsity_and_l1_regularization.ipynb",
+ "version": "0.3.2",
+ "provenance": [],
+ "collapsed_sections": [
+ "JndnmDMp66FL",
+ "yjUCX5LAkxAX"
+ ],
+ "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": [
+ "# Sparsity and L1 Regularization"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "g8ue2FyFIjnQ",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "**Learning Objectives:**\n",
+ " * Calculate the size of a model\n",
+ " * Apply L1 regularization to reduce the size of a model by increasing sparsity"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "ME_WXE7cIjnS",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "One way to reduce complexity is to use a regularization function that encourages weights to be exactly zero. For linear models such as regression, a zero weight is equivalent to not using the corresponding feature at all. In addition to avoiding overfitting, the resulting model will be more efficient.\n",
+ "\n",
+ "L1 regularization is a good way to increase sparsity.\n",
+ "\n"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "fHRzeWkRLrHF",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Setup\n",
+ "\n",
+ "Run the cells below to load the data and create feature definitions."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "pb7rSrLKIjnS",
+ "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": "3V7q8jk0IjnW",
+ "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": "pAG3tmgwIjnY",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1224
+ },
+ "outputId": "f23c8fd3-fc57-4f90-8310-aa821841bdb0"
+ },
+ "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.6 28.5 2641.0 538.3 \n",
+ "std 2.1 2.0 12.6 2175.0 420.9 \n",
+ "min 32.5 -124.3 1.0 2.0 1.0 \n",
+ "25% 33.9 -121.8 18.0 1463.0 297.0 \n",
+ "50% 34.2 -118.5 29.0 2128.0 433.0 \n",
+ "75% 37.7 -118.0 37.0 3156.0 647.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 1422.1 500.0 3.9 2.0 \n",
+ "std 1121.6 383.7 1.9 1.3 \n",
+ "min 3.0 1.0 0.5 0.0 \n",
+ "25% 790.0 282.0 2.6 1.5 \n",
+ "50% 1161.0 408.0 3.6 1.9 \n",
+ "75% 1710.0 604.2 4.8 2.3 \n",
+ "max 28566.0 6082.0 15.0 55.2 "
+ ],
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " latitude \n",
+ " longitude \n",
+ " housing_median_age \n",
+ " total_rooms \n",
+ " total_bedrooms \n",
+ " population \n",
+ " households \n",
+ " median_income \n",
+ " rooms_per_person \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " 35.6 \n",
+ " -119.6 \n",
+ " 28.5 \n",
+ " 2641.0 \n",
+ " 538.3 \n",
+ " 1422.1 \n",
+ " 500.0 \n",
+ " 3.9 \n",
+ " 2.0 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 2.1 \n",
+ " 2.0 \n",
+ " 12.6 \n",
+ " 2175.0 \n",
+ " 420.9 \n",
+ " 1121.6 \n",
+ " 383.7 \n",
+ " 1.9 \n",
+ " 1.3 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 32.5 \n",
+ " -124.3 \n",
+ " 1.0 \n",
+ " 2.0 \n",
+ " 1.0 \n",
+ " 3.0 \n",
+ " 1.0 \n",
+ " 0.5 \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 33.9 \n",
+ " -121.8 \n",
+ " 18.0 \n",
+ " 1463.0 \n",
+ " 297.0 \n",
+ " 790.0 \n",
+ " 282.0 \n",
+ " 2.6 \n",
+ " 1.5 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 34.2 \n",
+ " -118.5 \n",
+ " 29.0 \n",
+ " 2128.0 \n",
+ " 433.0 \n",
+ " 1161.0 \n",
+ " 408.0 \n",
+ " 3.6 \n",
+ " 1.9 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 37.7 \n",
+ " -118.0 \n",
+ " 37.0 \n",
+ " 3156.0 \n",
+ " 647.0 \n",
+ " 1710.0 \n",
+ " 604.2 \n",
+ " 4.8 \n",
+ " 2.3 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 42.0 \n",
+ " -114.3 \n",
+ " 52.0 \n",
+ " 37937.0 \n",
+ " 6445.0 \n",
+ " 28566.0 \n",
+ " 6082.0 \n",
+ " 15.0 \n",
+ " 55.2 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ },
+ {
+ "output_type": "stream",
+ "text": [
+ "Validation examples summary:\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " latitude longitude housing_median_age total_rooms total_bedrooms \\\n",
+ "count 5000.0 5000.0 5000.0 5000.0 5000.0 \n",
+ "mean 35.6 -119.6 28.7 2650.1 542.1 \n",
+ "std 2.1 2.0 12.5 2191.9 423.0 \n",
+ "min 32.6 -124.3 1.0 15.0 3.0 \n",
+ "25% 33.9 -121.8 18.0 1461.0 296.0 \n",
+ "50% 34.3 -118.5 29.0 2126.5 436.0 \n",
+ "75% 37.7 -118.0 37.0 3139.2 654.0 \n",
+ "max 41.9 -114.6 52.0 30401.0 4957.0 \n",
+ "\n",
+ " population households median_income rooms_per_person \n",
+ "count 5000.0 5000.0 5000.0 5000.0 \n",
+ "mean 1447.6 504.2 3.8 2.0 \n",
+ "std 1208.4 386.4 1.9 0.9 \n",
+ "min 8.0 4.0 0.5 0.1 \n",
+ "25% 788.0 281.0 2.5 1.5 \n",
+ "50% 1183.0 411.0 3.5 1.9 \n",
+ "75% 1743.2 607.0 4.7 2.3 \n",
+ "max 35682.0 4769.0 15.0 15.8 "
+ ],
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " latitude \n",
+ " longitude \n",
+ " housing_median_age \n",
+ " total_rooms \n",
+ " total_bedrooms \n",
+ " population \n",
+ " households \n",
+ " median_income \n",
+ " rooms_per_person \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " 35.6 \n",
+ " -119.6 \n",
+ " 28.7 \n",
+ " 2650.1 \n",
+ " 542.1 \n",
+ " 1447.6 \n",
+ " 504.2 \n",
+ " 3.8 \n",
+ " 2.0 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 2.1 \n",
+ " 2.0 \n",
+ " 12.5 \n",
+ " 2191.9 \n",
+ " 423.0 \n",
+ " 1208.4 \n",
+ " 386.4 \n",
+ " 1.9 \n",
+ " 0.9 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 32.6 \n",
+ " -124.3 \n",
+ " 1.0 \n",
+ " 15.0 \n",
+ " 3.0 \n",
+ " 8.0 \n",
+ " 4.0 \n",
+ " 0.5 \n",
+ " 0.1 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 33.9 \n",
+ " -121.8 \n",
+ " 18.0 \n",
+ " 1461.0 \n",
+ " 296.0 \n",
+ " 788.0 \n",
+ " 281.0 \n",
+ " 2.5 \n",
+ " 1.5 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 34.3 \n",
+ " -118.5 \n",
+ " 29.0 \n",
+ " 2126.5 \n",
+ " 436.0 \n",
+ " 1183.0 \n",
+ " 411.0 \n",
+ " 3.5 \n",
+ " 1.9 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 37.7 \n",
+ " -118.0 \n",
+ " 37.0 \n",
+ " 3139.2 \n",
+ " 654.0 \n",
+ " 1743.2 \n",
+ " 607.0 \n",
+ " 4.7 \n",
+ " 2.3 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 41.9 \n",
+ " -114.6 \n",
+ " 52.0 \n",
+ " 30401.0 \n",
+ " 4957.0 \n",
+ " 35682.0 \n",
+ " 4769.0 \n",
+ " 15.0 \n",
+ " 15.8 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ },
+ {
+ "output_type": "stream",
+ "text": [
+ "Training targets summary:\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " median_house_value_is_high\n",
+ "count 12000.0\n",
+ "mean 0.3\n",
+ "std 0.4\n",
+ "min 0.0\n",
+ "25% 0.0\n",
+ "50% 0.0\n",
+ "75% 1.0\n",
+ "max 1.0"
+ ],
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " median_house_value_is_high \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 12000.0 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " 0.3 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 0.4 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 1.0 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 1.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ },
+ {
+ "output_type": "stream",
+ "text": [
+ "Validation targets summary:\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " median_house_value_is_high\n",
+ "count 5000.0\n",
+ "mean 0.2\n",
+ "std 0.4\n",
+ "min 0.0\n",
+ "25% 0.0\n",
+ "50% 0.0\n",
+ "75% 0.0\n",
+ "max 1.0"
+ ],
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " median_house_value_is_high \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 5000.0 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " 0.2 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 0.4 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 1.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "gHkniRI1Ijna",
+ "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": "bLzK72jkNJPf",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def get_quantile_based_buckets(feature_values, num_buckets):\n",
+ " quantiles = feature_values.quantile(\n",
+ " [(i+1.)/(num_buckets + 1.) for i in range(num_buckets)])\n",
+ " return [quantiles[q] for q in quantiles.keys()]"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "al2YQpKyIjnd",
+ "colab_type": "code",
+ "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",
+ "\n",
+ " bucketized_households = tf.feature_column.bucketized_column(\n",
+ " tf.feature_column.numeric_column(\"households\"),\n",
+ " boundaries=get_quantile_based_buckets(training_examples[\"households\"], 10))\n",
+ " bucketized_longitude = tf.feature_column.bucketized_column(\n",
+ " tf.feature_column.numeric_column(\"longitude\"),\n",
+ " boundaries=get_quantile_based_buckets(training_examples[\"longitude\"], 50))\n",
+ " bucketized_latitude = tf.feature_column.bucketized_column(\n",
+ " tf.feature_column.numeric_column(\"latitude\"),\n",
+ " boundaries=get_quantile_based_buckets(training_examples[\"latitude\"], 50))\n",
+ " bucketized_housing_median_age = tf.feature_column.bucketized_column(\n",
+ " tf.feature_column.numeric_column(\"housing_median_age\"),\n",
+ " boundaries=get_quantile_based_buckets(\n",
+ " training_examples[\"housing_median_age\"], 10))\n",
+ " bucketized_total_rooms = tf.feature_column.bucketized_column(\n",
+ " tf.feature_column.numeric_column(\"total_rooms\"),\n",
+ " boundaries=get_quantile_based_buckets(training_examples[\"total_rooms\"], 10))\n",
+ " bucketized_total_bedrooms = tf.feature_column.bucketized_column(\n",
+ " tf.feature_column.numeric_column(\"total_bedrooms\"),\n",
+ " boundaries=get_quantile_based_buckets(training_examples[\"total_bedrooms\"], 10))\n",
+ " bucketized_population = tf.feature_column.bucketized_column(\n",
+ " tf.feature_column.numeric_column(\"population\"),\n",
+ " boundaries=get_quantile_based_buckets(training_examples[\"population\"], 10))\n",
+ " bucketized_median_income = tf.feature_column.bucketized_column(\n",
+ " tf.feature_column.numeric_column(\"median_income\"),\n",
+ " boundaries=get_quantile_based_buckets(training_examples[\"median_income\"], 10))\n",
+ " bucketized_rooms_per_person = tf.feature_column.bucketized_column(\n",
+ " tf.feature_column.numeric_column(\"rooms_per_person\"),\n",
+ " boundaries=get_quantile_based_buckets(\n",
+ " training_examples[\"rooms_per_person\"], 10))\n",
+ "\n",
+ " long_x_lat = tf.feature_column.crossed_column(\n",
+ " set([bucketized_longitude, bucketized_latitude]), hash_bucket_size=1000)\n",
+ "\n",
+ " feature_columns = set([\n",
+ " long_x_lat,\n",
+ " bucketized_longitude,\n",
+ " bucketized_latitude,\n",
+ " bucketized_housing_median_age,\n",
+ " bucketized_total_rooms,\n",
+ " bucketized_total_bedrooms,\n",
+ " bucketized_population,\n",
+ " bucketized_households,\n",
+ " bucketized_median_income,\n",
+ " bucketized_rooms_per_person])\n",
+ " \n",
+ " return feature_columns"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "hSBwMrsrE21n",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Calculate the Model Size\n",
+ "\n",
+ "To calculate the model size, we simply count the number of parameters that are non-zero. We provide a helper function below to do that. The function uses intimate knowledge of the Estimators API - don't worry about understanding how it works."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "e6GfTI0CFhB8",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def model_size(estimator):\n",
+ " variables = estimator.get_variable_names()\n",
+ " size = 0\n",
+ " for variable in variables:\n",
+ " if not any(x in variable \n",
+ " for x in ['global_step',\n",
+ " 'centered_bias_weight',\n",
+ " 'bias_weight',\n",
+ " 'Ftrl']\n",
+ " ):\n",
+ " size += np.count_nonzero(estimator.get_variable_value(variable))\n",
+ " return size"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "XabdAaj67GfF",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Reduce the Model Size\n",
+ "\n",
+ "Your team needs to build a highly accurate Logistic Regression model on the *SmartRing*, a ring that is so smart it can sense the demographics of a city block ('median_income', 'avg_rooms', 'households', ..., etc.) and tell you whether the given city block is high cost city block or not.\n",
+ "\n",
+ "Since the SmartRing is small, the engineering team has determined that it can only handle a model that has **no more than 600 parameters**. On the other hand, the product management team has determined that the model is not launchable unless the **LogLoss is less than 0.35** on the holdout test set.\n",
+ "\n",
+ "Can you use your secret weapon—L1 regularization—to tune the model to satisfy both the size and accuracy constraints?"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "G79hGRe7qqej",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Task 1: Find a good regularization coefficient.\n",
+ "\n",
+ "**Find an L1 regularization strength parameter which satisfies both constraints — model size is less than 600 and log-loss is less than 0.35 on validation set.**\n",
+ "\n",
+ "The following code will help you get started. There are many ways to apply regularization to your model. Here, we chose to do it using `FtrlOptimizer`, which is designed to give better results with L1 regularization than standard gradient descent.\n",
+ "\n",
+ "Again, the model will train on the entire data set, so expect it to run slower than normal."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "1Fcdm0hpIjnl",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def train_linear_classifier_model(\n",
+ " learning_rate,\n",
+ " regularization_strength,\n",
+ " steps,\n",
+ " batch_size,\n",
+ " feature_columns,\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",
+ " regularization_strength: A `float` that indicates the strength of the L1\n",
+ " regularization. A value of `0.0` means no regularization.\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",
+ " feature_columns: A `set` specifying the input feature columns to use.\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 `LinearClassifier` object trained on the training data.\n",
+ " \"\"\"\n",
+ "\n",
+ " periods = 7\n",
+ " steps_per_period = steps / periods\n",
+ "\n",
+ " # Create a linear classifier object.\n",
+ " my_optimizer = tf.train.FtrlOptimizer(learning_rate=learning_rate, l1_regularization_strength=regularization_strength)\n",
+ " my_optimizer = tf.contrib.estimator.clip_gradients_by_norm(my_optimizer, 5.0)\n",
+ " linear_classifier = tf.estimator.LinearClassifier(\n",
+ " feature_columns=feature_columns,\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(\"LogLoss (on validation data):\")\n",
+ " training_log_losses = []\n",
+ " validation_log_losses = []\n",
+ " for period in range (0, periods):\n",
+ " # Train the model, starting from the prior state.\n",
+ " linear_classifier.train(\n",
+ " input_fn=training_input_fn,\n",
+ " steps=steps_per_period\n",
+ " )\n",
+ " # Take a break and compute predictions.\n",
+ " training_probabilities = linear_classifier.predict(input_fn=predict_training_input_fn)\n",
+ " training_probabilities = np.array([item['probabilities'] for item in training_probabilities])\n",
+ " \n",
+ " validation_probabilities = linear_classifier.predict(input_fn=predict_validation_input_fn)\n",
+ " validation_probabilities = np.array([item['probabilities'] for item in validation_probabilities])\n",
+ " \n",
+ " # Compute training and validation loss.\n",
+ " training_log_loss = metrics.log_loss(training_targets, training_probabilities)\n",
+ " validation_log_loss = metrics.log_loss(validation_targets, validation_probabilities)\n",
+ " # Occasionally print the current loss.\n",
+ " print(\" period %02d : %0.2f\" % (period, validation_log_loss))\n",
+ " # Add the loss metrics from this period to our list.\n",
+ " training_log_losses.append(training_log_loss)\n",
+ " validation_log_losses.append(validation_log_loss)\n",
+ " print(\"Model training finished.\")\n",
+ "\n",
+ " # Output a graph of loss metrics over periods.\n",
+ " plt.ylabel(\"LogLoss\")\n",
+ " plt.xlabel(\"Periods\")\n",
+ " plt.title(\"LogLoss vs. Periods\")\n",
+ " plt.tight_layout()\n",
+ " plt.plot(training_log_losses, label=\"training\")\n",
+ " plt.plot(validation_log_losses, label=\"validation\")\n",
+ " plt.legend()\n",
+ "\n",
+ " return linear_classifier"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "9H1CKHSzIjno",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 603
+ },
+ "outputId": "b3934f8a-25de-4c47-8e2c-9b6d17df5be1"
+ },
+ "cell_type": "code",
+ "source": [
+ "linear_classifier = train_linear_classifier_model(\n",
+ " learning_rate=0.1,\n",
+ " # TWEAK THE REGULARIZATION VALUE BELOW\n",
+ " regularization_strength=0.9,\n",
+ " steps=300,\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)\n",
+ "print(\"Model size:\", model_size(linear_classifier))"
+ ],
+ "execution_count": 14,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "LogLoss (on validation data):\n",
+ " period 00 : 0.33\n",
+ " period 01 : 0.29\n",
+ " period 02 : 0.27\n",
+ " period 03 : 0.26\n",
+ " period 04 : 0.25\n",
+ " period 05 : 0.25\n",
+ " period 06 : 0.24\n",
+ "Model training finished.\n",
+ "Model size: 559\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAGACAYAAABY5OOEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xd4lfX9//Hnfc7J3jvshDASNgSU\nJUNWQHAw4whoq35bF61tLdhasRXqtmqtraMVQbYIKkuQjQiyMZBAAglhhAwyyJ6/P/w1rTXjHOBk\nvh7X5dXmnM/nPu/zvu6LvHKPz21UVlZWIiIiItJEmRq6ABEREZHroTAjIiIiTZrCjIiIiDRpCjMi\nIiLSpCnMiIiISJOmMCMiIiJNmsKMSDPXtWtXUlNTb8i2zp8/T7du3W7IthpCTEwMQ4cOJSoqinHj\nxjFhwgQWLlxo83aOHTvGT3/6U5vndevWjfPnz9s8T0RqZ2noAkRE6tNvfvMb7rjjDgDS09OZMWMG\noaGhDBs2zOpt9OrViw8++MBeJYqIjXRkRqSFKi4u5g9/+APjxo1j/PjxvPDCC5SXlwOwa9cuhg8f\nzvjx41m+fDn9+vWr84hCdnY2s2fPrjri8e6771a99/rrrzNu3DjGjRvHzJkzuXz5cq2v/9uOHTuY\nNGnSD16744472LlzJ/v37+euu+5iwoQJjB8/ng0bNtjcg4CAAKKiotizZw8ACQkJ3HfffYwbN45J\nkyZx/PhxAPbt20d0dDSzZ8/mV7/6Ffv27WPMmDF19nHHjh2MGTOG8ePH8/7771d9bn5+Po8++ijj\nx49n1KhR/P73v6e0tNTm+kXkewozIi3UwoULSU1NZd26dXz66accOHCAL774gvLycubMmcMf//hH\nNmzYQFJSEoWFhXVu77XXXsPLy4tNmzaxZMkSli5dyoEDBzh9+jQbN27kiy++YNOmTYwZM4a9e/fW\n+Pp/GzRoEKmpqaSkpACQkpJCamoqgwcP5sUXX2Tu3LmsX7+ed955hy1btlxTH8rKynB0dKSiooJH\nH32UO+64g02bNjFv3jweeeQRysrKADhx4gTR0dG8+uqrVvfxd7/7Hc8++ywbNmzAZDJVhZw1a9bg\n6enJhg0b2LRpE2azmYSEhGuqX0QUZkRarO3btzN9+nQsFgvOzs5MmjSJPXv2kJSURElJCcOHDwe+\nv86koqKizu3t2LGDe+65BwBvb2/GjBnDnj178PT05MqVK3z++efk5OQQExPDnXfeWePr/83R0ZGR\nI0eydetWALZs2cLo0aOxWCz4+fmxZs0aEhMTCQkJ+VHIsEZKSgobN25kzJgxnDlzhszMTKZOnQpA\nZGQkvr6+HD58GABnZ2cGDRpkcx+HDh0KwF133VU159/b3b17NxUVFTz33HNERETYXL+IfE9hRqSF\nunLlCl5eXlU/e3l5kZmZSU5ODp6enlWvBwYGWr29/57n6elJZmYmQUFBvPXWW2zcuJERI0bw8MMP\nc+nSpRpf/1/jxo37QZiZMGECAAsWLMDFxYUHHniAsWPHsnHjRqvqfPnll6suAH7yySeZM2cOvXr1\nIjc3l6KiIsaPH09UVBRRUVFkZmaSnZ1d1Z+avndNfXR3d//B6/82fvx47r//ft544w0GDRrEc889\nR0lJiVX1i8iPKcyItFD+/v5Vv6jh+2te/P39cXd3p6CgoOr1jIyM69oewMCBA3n33XfZs2cPrVq1\n4pVXXqn19f92yy23EBcXR1JSEklJSQwcOLDq85555hl27tzJH/7wB+bOnUt+fn6ddf7mN79h48aN\nbNq0iZUrV1aFo8DAQNzc3Ni4cWPVf7t37666NsbW7+3l5UVeXl7V61euXPnBvOjoaFauXMn69euJ\njY1lzZo1ddYuItVTmBFpoUaMGMGqVasoLy+noKCAtWvXMnz4cEJCQigrK2Pfvn0ALF26FMMwrNre\n8uXLge9/cW/evJkRI0awe/dunnvuOSoqKnB1dSU8PBzDMGp8/X85OjoydOhQXn75ZUaNGoXZbKa0\ntJSYmBjS0tIA6N69OxaLBZPp2v9Ja9OmDcHBwVVHeK5cucKTTz75g2BX0/euro/t27fHbDZX9XH1\n6tVV3+/tt99m1apVAAQFBdG2bVureiwi1dOt2SItQExMDGazuern559/npiYGFJSUrjtttswDIOo\nqCjGjx+PYRjMmzePuXPn4uHhwQMPPIDJZMIwDCorKykvLycqKuoH23/vvff4xS9+wbx584iKisJk\nMvHwww/Tq1cviouLWbduHePGjcPR0RFfX18WLFhAYGBgta9XZ9y4cTz++ON8+OGHADg4ODB16lTu\nv/9+AEwmE7///e9xcXFh8+bNbN26lT//+c829cgwDF577TXmzZvHX/7yF0wmEw888ACurq519ram\n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\nSUVORK5CYII=\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "yjUCX5LAkxAX",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below to see a possible solution."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "hgGhy-okmkWL",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "A regularization strength of 0.1 should be sufficient. Note that there is a compromise to be struck:\n",
+ "stronger regularization gives us smaller models, but can affect the classification loss."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "_rV8YQWZIjns",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "linear_classifier = train_linear_classifier_model(\n",
+ " learning_rate=0.1,\n",
+ " regularization_strength=0.1,\n",
+ " steps=300,\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)\n",
+ "print(\"Model size:\", model_size(linear_classifier))"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ }
+ ]
+}
\ No newline at end of file
From d0244772b860409b881aad25a37aa6b56bb866d6 Mon Sep 17 00:00:00 2001
From: Aditya Joardar <30207466+joardar-aditya@users.noreply.github.com>
Date: Mon, 18 Feb 2019 00:04:55 +0530
Subject: [PATCH 08/13] intro_to_pandas solved!
---
Copy_of_intro_to_pandas.ipynb | 1625 +++++++++++++++++++++++++++++++++
1 file changed, 1625 insertions(+)
create mode 100644 Copy_of_intro_to_pandas.ipynb
diff --git a/Copy_of_intro_to_pandas.ipynb b/Copy_of_intro_to_pandas.ipynb
new file mode 100644
index 0000000..152ab6e
--- /dev/null
+++ b/Copy_of_intro_to_pandas.ipynb
@@ -0,0 +1,1625 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "name": "Copy of 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",
+ "outputId": "b7efd0ab-e05a-4af2-93ad-e7ac5b9ce519",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "from __future__ import print_function\n",
+ "\n",
+ "import pandas as pd\n",
+ "pd.__version__"
+ ],
+ "execution_count": 0,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "u'0.22.0'"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 2
+ }
+ ]
+ },
+ {
+ "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",
+ "outputId": "1fc176a3-a09d-46a2-c7e7-7177171c619e",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 90
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "pd.Series(['San Francisco', 'San Jose', 'Sacramento'])"
+ ],
+ "execution_count": 0,
+ "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": 8
+ }
+ ]
+ },
+ {
+ "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",
+ "outputId": "2e452a81-6b72-4ccd-cad4-acbce1557f0a",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 143
+ }
+ },
+ "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": 0,
+ "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": 7
+ }
+ ]
+ },
+ {
+ "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",
+ "outputId": "733e8298-c448-41d1-91e6-42225cda9115",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 300
+ }
+ },
+ "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": 0,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " longitude \n",
+ " latitude \n",
+ " housing_median_age \n",
+ " total_rooms \n",
+ " total_bedrooms \n",
+ " population \n",
+ " households \n",
+ " median_income \n",
+ " median_house_value \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 17000.000000 \n",
+ " 17000.000000 \n",
+ " 17000.000000 \n",
+ " 17000.000000 \n",
+ " 17000.000000 \n",
+ " 17000.000000 \n",
+ " 17000.000000 \n",
+ " 17000.000000 \n",
+ " 17000.000000 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " -119.562108 \n",
+ " 35.625225 \n",
+ " 28.589353 \n",
+ " 2643.664412 \n",
+ " 539.410824 \n",
+ " 1429.573941 \n",
+ " 501.221941 \n",
+ " 3.883578 \n",
+ " 207300.912353 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 2.005166 \n",
+ " 2.137340 \n",
+ " 12.586937 \n",
+ " 2179.947071 \n",
+ " 421.499452 \n",
+ " 1147.852959 \n",
+ " 384.520841 \n",
+ " 1.908157 \n",
+ " 115983.764387 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " -124.350000 \n",
+ " 32.540000 \n",
+ " 1.000000 \n",
+ " 2.000000 \n",
+ " 1.000000 \n",
+ " 3.000000 \n",
+ " 1.000000 \n",
+ " 0.499900 \n",
+ " 14999.000000 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " -121.790000 \n",
+ " 33.930000 \n",
+ " 18.000000 \n",
+ " 1462.000000 \n",
+ " 297.000000 \n",
+ " 790.000000 \n",
+ " 282.000000 \n",
+ " 2.566375 \n",
+ " 119400.000000 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " -118.490000 \n",
+ " 34.250000 \n",
+ " 29.000000 \n",
+ " 2127.000000 \n",
+ " 434.000000 \n",
+ " 1167.000000 \n",
+ " 409.000000 \n",
+ " 3.544600 \n",
+ " 180400.000000 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " -118.000000 \n",
+ " 37.720000 \n",
+ " 37.000000 \n",
+ " 3151.250000 \n",
+ " 648.250000 \n",
+ " 1721.000000 \n",
+ " 605.250000 \n",
+ " 4.767000 \n",
+ " 265000.000000 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " -114.310000 \n",
+ " 41.950000 \n",
+ " 52.000000 \n",
+ " 37937.000000 \n",
+ " 6445.000000 \n",
+ " 35682.000000 \n",
+ " 6082.000000 \n",
+ " 15.000100 \n",
+ " 500001.000000 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " longitude latitude housing_median_age total_rooms \\\n",
+ "count 17000.000000 17000.000000 17000.000000 17000.000000 \n",
+ "mean -119.562108 35.625225 28.589353 2643.664412 \n",
+ "std 2.005166 2.137340 12.586937 2179.947071 \n",
+ "min -124.350000 32.540000 1.000000 2.000000 \n",
+ "25% -121.790000 33.930000 18.000000 1462.000000 \n",
+ "50% -118.490000 34.250000 29.000000 2127.000000 \n",
+ "75% -118.000000 37.720000 37.000000 3151.250000 \n",
+ "max -114.310000 41.950000 52.000000 37937.000000 \n",
+ "\n",
+ " total_bedrooms population households median_income \\\n",
+ "count 17000.000000 17000.000000 17000.000000 17000.000000 \n",
+ "mean 539.410824 1429.573941 501.221941 3.883578 \n",
+ "std 421.499452 1147.852959 384.520841 1.908157 \n",
+ "min 1.000000 3.000000 1.000000 0.499900 \n",
+ "25% 297.000000 790.000000 282.000000 2.566375 \n",
+ "50% 434.000000 1167.000000 409.000000 3.544600 \n",
+ "75% 648.250000 1721.000000 605.250000 4.767000 \n",
+ "max 6445.000000 35682.000000 6082.000000 15.000100 \n",
+ "\n",
+ " median_house_value \n",
+ "count 17000.000000 \n",
+ "mean 207300.912353 \n",
+ "std 115983.764387 \n",
+ "min 14999.000000 \n",
+ "25% 119400.000000 \n",
+ "50% 180400.000000 \n",
+ "75% 265000.000000 \n",
+ "max 500001.000000 "
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 3
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "WrkBjfz5kEQu"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "The example above used `DataFrame.describe` to show interesting statistics about a `DataFrame`. Another useful function is `DataFrame.head`, which displays the first few records of a `DataFrame`:"
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "s3ND3bgOkB5k",
+ "outputId": "bd0aa8ed-5571-481f-8e18-6caff065bac5",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 206
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "california_housing_dataframe.head()"
+ ],
+ "execution_count": 0,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " longitude \n",
+ " latitude \n",
+ " housing_median_age \n",
+ " total_rooms \n",
+ " total_bedrooms \n",
+ " population \n",
+ " households \n",
+ " median_income \n",
+ " median_house_value \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " -114.31 \n",
+ " 34.19 \n",
+ " 15.0 \n",
+ " 5612.0 \n",
+ " 1283.0 \n",
+ " 1015.0 \n",
+ " 472.0 \n",
+ " 1.4936 \n",
+ " 66900.0 \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " -114.47 \n",
+ " 34.40 \n",
+ " 19.0 \n",
+ " 7650.0 \n",
+ " 1901.0 \n",
+ " 1129.0 \n",
+ " 463.0 \n",
+ " 1.8200 \n",
+ " 80100.0 \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " -114.56 \n",
+ " 33.69 \n",
+ " 17.0 \n",
+ " 720.0 \n",
+ " 174.0 \n",
+ " 333.0 \n",
+ " 117.0 \n",
+ " 1.6509 \n",
+ " 85700.0 \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " -114.57 \n",
+ " 33.64 \n",
+ " 14.0 \n",
+ " 1501.0 \n",
+ " 337.0 \n",
+ " 515.0 \n",
+ " 226.0 \n",
+ " 3.1917 \n",
+ " 73400.0 \n",
+ " \n",
+ " \n",
+ " 4 \n",
+ " -114.57 \n",
+ " 33.57 \n",
+ " 20.0 \n",
+ " 1454.0 \n",
+ " 326.0 \n",
+ " 624.0 \n",
+ " 262.0 \n",
+ " 1.9250 \n",
+ " 65500.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " longitude latitude housing_median_age total_rooms total_bedrooms \\\n",
+ "0 -114.31 34.19 15.0 5612.0 1283.0 \n",
+ "1 -114.47 34.40 19.0 7650.0 1901.0 \n",
+ "2 -114.56 33.69 17.0 720.0 174.0 \n",
+ "3 -114.57 33.64 14.0 1501.0 337.0 \n",
+ "4 -114.57 33.57 20.0 1454.0 326.0 \n",
+ "\n",
+ " population households median_income median_house_value \n",
+ "0 1015.0 472.0 1.4936 66900.0 \n",
+ "1 1129.0 463.0 1.8200 80100.0 \n",
+ "2 333.0 117.0 1.6509 85700.0 \n",
+ "3 515.0 226.0 3.1917 73400.0 \n",
+ "4 624.0 262.0 1.9250 65500.0 "
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 4
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "w9-Es5Y6laGd"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Another powerful feature of *pandas* is graphing. For example, `DataFrame.hist` lets you quickly study the distribution of values in a column:"
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "nqndFVXVlbPN",
+ "outputId": "f0d57711-259e-4f37-cb01-4127e4e7950d",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 399
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "california_housing_dataframe.hist('housing_median_age')"
+ ],
+ "execution_count": 0,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "array([[]],\n",
+ " dtype=object)"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 5
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeoAAAFZCAYAAABXM2zhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzt3X1UlHX+//HXMDAH0UEEGTfLarf0\naEmaa5l4U0Iokp7IVRPWdU3q6Iqtlql499WTlajRmmZZmunRU7GNtofcAjJxyyRanT0uuu0p2VOr\neTejKCqgSPP7o9Os/FRguP1Az8dfcTEz1+d6H+3pdQ1zYfF6vV4BAAAjBTT3AgAAwPURagAADEao\nAQAwGKEGAMBghBoAAIMRagAADEaogVo6cuSI7rjjjkbdxz//+U+lpKQ06j4a0h133KEjR47o448/\n1ty5c5t7OUCrZOFz1EDtHDlyREOHDtW//vWv5l6KMe644w7l5ubqpptuau6lAK0WZ9SAn5xOp0aO\nHKn7779f27dv1w8//KA//elPio+PV3x8vNLS0lRaWipJiomJ0d69e33P/enry5cva/78+Ro2bJji\n4uI0bdo0nT9/XgUFBYqLi5MkrV69Ws8++6xSU1MVGxur0aNH6+TJk5KkgwcPaujQoRo6dKheeeUV\njRw5UgUFBdWue/Xq1Vq0aJEmT56sgQMHatasWcrLy9OoUaM0cOBA5eXlSZIuXbqk5557TsOGDVNM\nTIzWrl3re42//e1viouL0/Dhw7V+/Xrf9m3btmnixImSJI/Ho5SUFMXHxysmJkZvvfVWleN/9913\nNXr0aA0cOFDp6ek1zrusrEwzZszwrWfZsmW+71U3hx07dmjkyJGKjY3VpEmTdPr06Rr3BZiIUAN+\n+OGHH1RRUaEPPvhAc+fO1cqVK/XRRx/p008/1bZt2/TXv/5VJSUl2rhxY7Wvs3v3bh05ckTZ2dnK\nzc3V7bffrn/84x9XPS47O1vz5s3Tjh07FBERoa1bt0qSFi5cqIkTJyo3N1ft2rXTt99+W6v179q1\nSy+88II++OADZWdn+9Y9ZcoUrVu3TpK0bt06HTp0SB988IG2b9+unJwc5eXlqbKyUvPnz9eiRYv0\n0UcfKSAgQJWVlVft47XXXtNNN92k7Oxsbdq0SRkZGTp27Jjv+3//+9+VmZmprVu3asuWLTp+/Hi1\n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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "XtYZ7114n3b-"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Accessing Data\n",
+ "\n",
+ "You can access `DataFrame` data using familiar Python dict/list operations:"
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "_TFm7-looBFF",
+ "outputId": "c1cd77fa-8787-463a-cf68-66eb85b9fa5a",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 109
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "cities = pd.DataFrame({ 'City name': city_names, 'Population': population })\n",
+ "print(type(cities['City name']))\n",
+ "cities['City name']"
+ ],
+ "execution_count": 0,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "0 San Francisco\n",
+ "1 San Jose\n",
+ "2 Sacramento\n",
+ "Name: City name, dtype: object"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 9
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "V5L6xacLoxyv",
+ "outputId": "b3f245ac-049f-4f23-a90b-69163c97d2ef",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 54
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "print(type(cities['City name'][1]))\n",
+ "cities['City name'][1]"
+ ],
+ "execution_count": 0,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "'San Jose'"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 10
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "gcYX1tBPugZl",
+ "outputId": "2166cc30-ad36-4415-db65-941b9624efcf",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 130
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "print(type(cities[0:2]))\n",
+ "cities[0:2]"
+ ],
+ "execution_count": 0,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "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",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " City name Population\n",
+ "0 San Francisco 852469\n",
+ "1 San Jose 1015785"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 11
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "65g1ZdGVjXsQ"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "In addition, *pandas* provides an extremely rich API for advanced [indexing and selection](http://pandas.pydata.org/pandas-docs/stable/indexing.html) that is too extensive to be covered here."
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "RM1iaD-ka3Y1"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Manipulating Data\n",
+ "\n",
+ "You may apply Python's basic arithmetic operations to `Series`. For example:"
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "XWmyCFJ5bOv-",
+ "outputId": "5b0fc03e-46d1-43c6-f218-65908fae75d8",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 90
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "population / 1000."
+ ],
+ "execution_count": 0,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "0 852.469\n",
+ "1 1015.785\n",
+ "2 485.199\n",
+ "dtype: float64"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 12
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "TQzIVnbnmWGM"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "[NumPy](http://www.numpy.org/) is a popular toolkit for scientific computing. *pandas* `Series` can be used as arguments to most NumPy functions:"
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "ko6pLK6JmkYP",
+ "outputId": "7b21b0e9-b3ab-4cb5-df15-411463a285f0",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 90
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "import numpy as np\n",
+ "\n",
+ "np.log(population)"
+ ],
+ "execution_count": 0,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "0 13.655892\n",
+ "1 13.831172\n",
+ "2 13.092314\n",
+ "dtype: float64"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 13
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "xmxFuQmurr6d"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "For more complex single-column transformations, you can use `Series.apply`. Like the Python [map function](https://docs.python.org/2/library/functions.html#map), \n",
+ "`Series.apply` accepts as an argument a [lambda function](https://docs.python.org/2/tutorial/controlflow.html#lambda-expressions), which is applied to each value.\n",
+ "\n",
+ "The example below creates a new `Series` that indicates whether `population` is over one million:"
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "Fc1DvPAbstjI",
+ "outputId": "62c07efd-2723-4d98-c1d0-7c0c67e434c2",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "population.apply(lambda val: val > 1000000)"
+ ],
+ "execution_count": 0,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "pandas.core.series.Series"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 16
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "ZeYYLoV9b9fB"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "\n",
+ "Modifying `DataFrames` is also straightforward. For example, the following code adds two `Series` to an existing `DataFrame`:"
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "0gCEX99Hb8LR",
+ "outputId": "ec254f3c-ee7c-4e5d-82e6-a0296499864c",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 143
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "cities['Area square miles'] = pd.Series([46.87, 176.53, 97.92])\n",
+ "cities['Population density'] = cities['Population'] / cities['Area square miles']\n",
+ "cities"
+ ],
+ "execution_count": 0,
+ "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",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " San Francisco \n",
+ " 852469 \n",
+ " 46.87 \n",
+ " 18187.945381 \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " San Jose \n",
+ " 1015785 \n",
+ " 176.53 \n",
+ " 5754.177760 \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " Sacramento \n",
+ " 485199 \n",
+ " 97.92 \n",
+ " 4955.055147 \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"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 15
+ }
+ ]
+ },
+ {
+ "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",
+ "outputId": "02ff55bc-b37d-41a6-a42b-45224f370350",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 182
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "#Important logic for adding and generating series in DataFrame\n",
+ "cities['new_column'] = (cities['Area square miles']>50)&cities['City name'].apply(lambda name: name[0:3]=='San')\n",
+ "print(cities.head())"
+ ],
+ "execution_count": 0,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ " 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",
+ " new_column \n",
+ "0 False \n",
+ "1 True \n",
+ "2 False \n"
+ ],
+ "name": "stdout"
+ }
+ ]
+ },
+ {
+ "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",
+ "outputId": "83620eae-ea29-43f6-9ea6-5b6493432917",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "city_names.index"
+ ],
+ "execution_count": 0,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "RangeIndex(start=0, stop=3, step=1)"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 24
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "F_qPe2TBjfWd",
+ "outputId": "d593928e-f1e9-4ef4-c4ae-a51b6bb1b365",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "cities.index"
+ ],
+ "execution_count": 0,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "RangeIndex(start=0, stop=3, step=1)"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 25
+ }
+ ]
+ },
+ {
+ "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",
+ "outputId": "7fcd04b9-9460-4cc1-933d-5fc0a7771f2c",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 143
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "cities.reindex([2, 0, 1])"
+ ],
+ "execution_count": 0,
+ "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",
+ " new_column \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",
+ " new_column \n",
+ "2 False \n",
+ "0 False \n",
+ "1 True "
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 26
+ }
+ ]
+ },
+ {
+ "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",
+ "outputId": "3cc02e8d-9eff-42ac-a96a-d18954ae727f",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 143
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "#important for training and reindexing\n",
+ "cities.reindex(np.random.permutation(cities.index))"
+ ],
+ "execution_count": 0,
+ "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",
+ " new_column \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",
+ " new_column \n",
+ "2 False \n",
+ "0 False \n",
+ "1 True "
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 30
+ }
+ ]
+ },
+ {
+ "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",
+ "outputId": "4d3fd3aa-8a07-42df-bf08-bbfe84ffd68c",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 143
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "cities.reindex([3,5,6])"
+ ],
+ "execution_count": 0,
+ "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",
+ " new_column \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 3 \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",
+ " 6 \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " NaN \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " City name Population Area square miles Population density new_column\n",
+ "3 NaN NaN NaN NaN NaN\n",
+ "5 NaN NaN NaN NaN NaN\n",
+ "6 NaN NaN NaN NaN NaN"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 31
+ }
+ ]
+ },
+ {
+ "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
From a594dce5d643429e8130a8e4ad8debc0d09e850f Mon Sep 17 00:00:00 2001
From: Aditya Joardar <30207466+joardar-aditya@users.noreply.github.com>
Date: Mon, 18 Feb 2019 00:09:20 +0530
Subject: [PATCH 09/13] First Steps with tensorflow solved!
---
Copy_of_first_steps_with_tensor_flow.ipynb | 1763 ++++++++++++++++++++
1 file changed, 1763 insertions(+)
create mode 100644 Copy_of_first_steps_with_tensor_flow.ipynb
diff --git a/Copy_of_first_steps_with_tensor_flow.ipynb b/Copy_of_first_steps_with_tensor_flow.ipynb
new file mode 100644
index 0000000..75bb337
--- /dev/null
+++ b/Copy_of_first_steps_with_tensor_flow.ipynb
@@ -0,0 +1,1763 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "name": "Copy of first_steps_with_tensor_flow.ipynb",
+ "version": "0.3.2",
+ "provenance": [],
+ "collapsed_sections": [
+ "JndnmDMp66FL",
+ "ajVM7rkoYXeL",
+ "ci1ISxxrZ7v0"
+ ],
+ "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": "4f3CKqFUqL2-",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "# First Steps with TensorFlow"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "Bd2Zkk1LE2Zr",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "**Learning Objectives:**\n",
+ " * Learn fundamental TensorFlow concepts\n",
+ " * Use the `LinearRegressor` class in TensorFlow to predict median housing price, at the granularity of city blocks, based on one input feature\n",
+ " * Evaluate the accuracy of a model's predictions using Root Mean Squared Error (RMSE)\n",
+ " * Improve the accuracy of a model by tuning its hyperparameters"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "MxiIKhP4E2Zr",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "The [data](https://developers.google.com/machine-learning/crash-course/california-housing-data-description) is based on 1990 census data from California."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "6TjLjL9IU80G",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Setup\n",
+ "In this first cell, we'll load the necessary libraries."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "rVFf5asKE2Zt",
+ "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"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "ipRyUHjhU80Q",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Next, we'll load our data set."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "9ivCDWnwE2Zx",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "california_housing_dataframe = pd.read_csv(\"https://download.mlcc.google.com/mledu-datasets/california_housing_train.csv\", sep=\",\")"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "vVk_qlG6U80j",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "We'll randomize the data, just to be sure not to get any pathological ordering effects that might harm the performance of Stochastic Gradient Descent. Additionally, we'll scale `median_house_value` to be in units of thousands, so it can be learned a little more easily with learning rates in a range that we usually use."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "r0eVyguIU80m",
+ "colab_type": "code",
+ "outputId": "bc8685d2-a49e-484d-f25c-7a57fe7fcefb",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 424
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "california_housing_dataframe = california_housing_dataframe.reindex(\n",
+ " np.random.permutation(california_housing_dataframe.index))\n",
+ "california_housing_dataframe[\"median_house_value\"] /= 1000.0\n",
+ "california_housing_dataframe"
+ ],
+ "execution_count": 0,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " longitude \n",
+ " latitude \n",
+ " housing_median_age \n",
+ " total_rooms \n",
+ " total_bedrooms \n",
+ " population \n",
+ " households \n",
+ " median_income \n",
+ " median_house_value \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 6775 \n",
+ " -118.3 \n",
+ " 33.7 \n",
+ " 36.0 \n",
+ " 3135.0 \n",
+ " 746.0 \n",
+ " 1815.0 \n",
+ " 697.0 \n",
+ " 3.8 \n",
+ " 300.0 \n",
+ " \n",
+ " \n",
+ " 11469 \n",
+ " -121.2 \n",
+ " 38.7 \n",
+ " 14.0 \n",
+ " 3713.0 \n",
+ " 637.0 \n",
+ " 1845.0 \n",
+ " 635.0 \n",
+ " 4.3 \n",
+ " 143.4 \n",
+ " \n",
+ " \n",
+ " 15693 \n",
+ " -122.4 \n",
+ " 38.4 \n",
+ " 33.0 \n",
+ " 1066.0 \n",
+ " 191.0 \n",
+ " 403.0 \n",
+ " 163.0 \n",
+ " 6.8 \n",
+ " 240.8 \n",
+ " \n",
+ " \n",
+ " 16627 \n",
+ " -122.7 \n",
+ " 38.4 \n",
+ " 30.0 \n",
+ " 2099.0 \n",
+ " 406.0 \n",
+ " 1156.0 \n",
+ " 401.0 \n",
+ " 2.8 \n",
+ " 152.3 \n",
+ " \n",
+ " \n",
+ " 5927 \n",
+ " -118.2 \n",
+ " 34.1 \n",
+ " 36.0 \n",
+ " 2000.0 \n",
+ " 533.0 \n",
+ " 1234.0 \n",
+ " 535.0 \n",
+ " 3.7 \n",
+ " 241.7 \n",
+ " \n",
+ " \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " \n",
+ " \n",
+ " 4956 \n",
+ " -118.1 \n",
+ " 34.1 \n",
+ " 45.0 \n",
+ " 1106.0 \n",
+ " 226.0 \n",
+ " 779.0 \n",
+ " 205.0 \n",
+ " 4.5 \n",
+ " 244.8 \n",
+ " \n",
+ " \n",
+ " 4901 \n",
+ " -118.1 \n",
+ " 33.9 \n",
+ " 36.0 \n",
+ " 1124.0 \n",
+ " 217.0 \n",
+ " 707.0 \n",
+ " 234.0 \n",
+ " 4.4 \n",
+ " 174.5 \n",
+ " \n",
+ " \n",
+ " 11053 \n",
+ " -121.0 \n",
+ " 37.6 \n",
+ " 7.0 \n",
+ " 8489.0 \n",
+ " 1673.0 \n",
+ " 5807.0 \n",
+ " 1575.0 \n",
+ " 2.9 \n",
+ " 127.8 \n",
+ " \n",
+ " \n",
+ " 16928 \n",
+ " -124.1 \n",
+ " 41.0 \n",
+ " 19.0 \n",
+ " 1734.0 \n",
+ " 365.0 \n",
+ " 866.0 \n",
+ " 342.0 \n",
+ " 3.0 \n",
+ " 81.7 \n",
+ " \n",
+ " \n",
+ " 11461 \n",
+ " -121.2 \n",
+ " 37.8 \n",
+ " 7.0 \n",
+ " 5151.0 \n",
+ " 867.0 \n",
+ " 2553.0 \n",
+ " 805.0 \n",
+ " 4.1 \n",
+ " 195.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
17000 rows × 9 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " longitude latitude housing_median_age total_rooms total_bedrooms \\\n",
+ "6775 -118.3 33.7 36.0 3135.0 746.0 \n",
+ "11469 -121.2 38.7 14.0 3713.0 637.0 \n",
+ "15693 -122.4 38.4 33.0 1066.0 191.0 \n",
+ "16627 -122.7 38.4 30.0 2099.0 406.0 \n",
+ "5927 -118.2 34.1 36.0 2000.0 533.0 \n",
+ "... ... ... ... ... ... \n",
+ "4956 -118.1 34.1 45.0 1106.0 226.0 \n",
+ "4901 -118.1 33.9 36.0 1124.0 217.0 \n",
+ "11053 -121.0 37.6 7.0 8489.0 1673.0 \n",
+ "16928 -124.1 41.0 19.0 1734.0 365.0 \n",
+ "11461 -121.2 37.8 7.0 5151.0 867.0 \n",
+ "\n",
+ " population households median_income median_house_value \n",
+ "6775 1815.0 697.0 3.8 300.0 \n",
+ "11469 1845.0 635.0 4.3 143.4 \n",
+ "15693 403.0 163.0 6.8 240.8 \n",
+ "16627 1156.0 401.0 2.8 152.3 \n",
+ "5927 1234.0 535.0 3.7 241.7 \n",
+ "... ... ... ... ... \n",
+ "4956 779.0 205.0 4.5 244.8 \n",
+ "4901 707.0 234.0 4.4 174.5 \n",
+ "11053 5807.0 1575.0 2.9 127.8 \n",
+ "16928 866.0 342.0 3.0 81.7 \n",
+ "11461 2553.0 805.0 4.1 195.0 \n",
+ "\n",
+ "[17000 rows x 9 columns]"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 4
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "HzzlSs3PtTmt",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Examine the Data\n",
+ "\n",
+ "It's a good idea to get to know your data a little bit before you work with it.\n",
+ "\n",
+ "We'll print out a quick summary of a few useful statistics on each column: count of examples, mean, standard deviation, max, min, and various quantiles."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "gzb10yoVrydW",
+ "colab_type": "code",
+ "cellView": "both",
+ "outputId": "fa104dd5-e32b-4e84-e0df-2ce1a653784f",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 300
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "california_housing_dataframe.describe()"
+ ],
+ "execution_count": 0,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " longitude \n",
+ " latitude \n",
+ " housing_median_age \n",
+ " total_rooms \n",
+ " total_bedrooms \n",
+ " population \n",
+ " households \n",
+ " median_income \n",
+ " median_house_value \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 17000.0 \n",
+ " 17000.0 \n",
+ " 17000.0 \n",
+ " 17000.0 \n",
+ " 17000.0 \n",
+ " 17000.0 \n",
+ " 17000.0 \n",
+ " 17000.0 \n",
+ " 17000.0 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " -119.6 \n",
+ " 35.6 \n",
+ " 28.6 \n",
+ " 2643.7 \n",
+ " 539.4 \n",
+ " 1429.6 \n",
+ " 501.2 \n",
+ " 3.9 \n",
+ " 207.3 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 2.0 \n",
+ " 2.1 \n",
+ " 12.6 \n",
+ " 2179.9 \n",
+ " 421.5 \n",
+ " 1147.9 \n",
+ " 384.5 \n",
+ " 1.9 \n",
+ " 116.0 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " -124.3 \n",
+ " 32.5 \n",
+ " 1.0 \n",
+ " 2.0 \n",
+ " 1.0 \n",
+ " 3.0 \n",
+ " 1.0 \n",
+ " 0.5 \n",
+ " 15.0 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " -121.8 \n",
+ " 33.9 \n",
+ " 18.0 \n",
+ " 1462.0 \n",
+ " 297.0 \n",
+ " 790.0 \n",
+ " 282.0 \n",
+ " 2.6 \n",
+ " 119.4 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " -118.5 \n",
+ " 34.2 \n",
+ " 29.0 \n",
+ " 2127.0 \n",
+ " 434.0 \n",
+ " 1167.0 \n",
+ " 409.0 \n",
+ " 3.5 \n",
+ " 180.4 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " -118.0 \n",
+ " 37.7 \n",
+ " 37.0 \n",
+ " 3151.2 \n",
+ " 648.2 \n",
+ " 1721.0 \n",
+ " 605.2 \n",
+ " 4.8 \n",
+ " 265.0 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " -114.3 \n",
+ " 42.0 \n",
+ " 52.0 \n",
+ " 37937.0 \n",
+ " 6445.0 \n",
+ " 35682.0 \n",
+ " 6082.0 \n",
+ " 15.0 \n",
+ " 500.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "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": 5
+ }
+ ]
+ },
+ {
+ "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",
+ "outputId": "254ca935-1bec-4451-ef0d-9039c2628847",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 35
+ }
+ },
+ "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\")]\n",
+ "\n",
+ "{key:np.array(value) for key,value in dict(my_feature).items()}\n"
+ ],
+ "execution_count": 0,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "{'total_rooms': array([3135., 3713., 1066., ..., 8489., 1734., 5151.])}"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 26
+ }
+ ]
+ },
+ {
+ "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\"]\n"
+ ],
+ "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",
+ "outputId": "5ea6fda6-8ca1-4e09-d8ca-0ad37d2e90bb",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 90
+ }
+ },
+ "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)\n",
+ "predictions"
+ ],
+ "execution_count": 0,
+ "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"
+ },
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "array([0.15674996, 0.18564996, 0.05330002, ..., 0.42444986, 0.0867 ,\n",
+ " 0.25754994], dtype=float32)"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 34
+ }
+ ]
+ },
+ {
+ "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": {}
+ },
+ "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": 0,
+ "outputs": []
+ },
+ {
+ "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",
+ "outputId": "381526f4-b195-405d-f1b7-7b48d1dec42e",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 300
+ }
+ },
+ "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": 0,
+ "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": 35
+ }
+ ]
+ },
+ {
+ "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",
+ "outputId": "260cea61-17ee-476f-ab63-424a335fe38f",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 361
+ }
+ },
+ "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": 0,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\nQgjhwf4F80/9fTlIK+0AAAAASUVORK5CYII=\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",
+ "outputId": "ac6e3e85-1e9d-46a9-b41e-92ccd3ab8675",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 977
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "train_model(\n",
+ " learning_rate=0.0001,\n",
+ " steps=300,\n",
+ " batch_size=1000\n",
+ ")"
+ ],
+ "execution_count": 0,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 204.04\n",
+ " period 01 : 179.23\n",
+ " period 02 : 167.79\n",
+ " period 03 : 166.39\n",
+ " period 04 : 166.53\n",
+ " period 05 : 166.32\n",
+ " period 06 : 166.39\n",
+ " period 07 : 166.32\n",
+ " period 08 : 166.53\n",
+ " period 09 : 166.53\n",
+ "Model training finished.\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " predictions targets\n",
+ "count 17000.0 17000.0\n",
+ "mean 137.5 207.3\n",
+ "std 113.4 116.0\n",
+ "min 0.1 15.0\n",
+ "25% 76.0 119.4\n",
+ "50% 110.6 180.4\n",
+ "75% 163.9 265.0\n",
+ "max 1973.1 500.0"
+ ],
+ "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",
+ " 137.5 \n",
+ " 207.3 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 113.4 \n",
+ " 116.0 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 0.1 \n",
+ " 15.0 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 76.0 \n",
+ " 119.4 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 110.6 \n",
+ " 180.4 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 163.9 \n",
+ " 265.0 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 1973.1 \n",
+ " 500.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ },
+ {
+ "output_type": "stream",
+ "text": [
+ "Final RMSE (on training data): 166.53\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\nSUREREREREROsWaRlAB4+OGHAx2CiIiIiIiIiDShZtF9Q0RERERERERaHiUlRERERERERCQgmk33\nDREREZFKaWlpTJ8+nRtuuIHk5GQ8Hg8zZsxgz549hISE8OKLLxIREUGvXr0YOHBg1fPmzZuHxXJy\npw0XERGRU0dJCREREWlWSktLeeqppxg6dGjVsnfffZeoqCief/55Fi9ezNq1axk9ejShoaHMnz8/\ngNGKiIjIiVD3DREREWlW7HY7c+bMIT4+vmrZihUrmDRpEgDXXHMNo0ePDlR4IiIichIpKSEiIiLN\nitVqxel01liWmZnJ119/TUpKCg888AD5+fkAuN1uHnroIaZMmcJbb70ViHBFRETkBKj7hoiIiDR7\nhmHQsWNH7r77bl555RVee+01Hn30UR555BEmTZqEyWQiOTmZQYMG0adPn3r3ExUVjNV6asaciIsL\nOyX7leOnzyDw9BkEnj6DwNNn0DhKSoiIiEizFxsby+DBgwEYMWIEL730EgBTp06t2mbIkCGkpaU1\nmJTIyys9JfHFxYWRnV10SvYtx0efQeDpMwg8fQaBp8+gbg0latR9Q0RERJq98847j2+++QaALVu2\n0LFjR37++WceeughDMPA6/Wyfv16unbtGuBIRUREpDFUKSEiIiLNyubNm5k1axaZmZlYrVaWLl3K\n7Nmz+cMf/sCSJUsIDg5m1qxZxMbG0rp1ayZPnozZbObCCy+kb9++gQ5fREREGkFJCREREWlWevfu\nXec0ny+++GKtZb/+9a+bIiQRERE5RUyGYRiBDkJEREREREREWh6NKSEiIiIiIiIiAaGkhIiIiIiI\niIgEhJISIiIiIiIiIhIQSkqIiIiIiIiISEAoKSEiIiIiIiIiAaGkhIiIiIiIiIgEhDXQATQHzzzz\nDBs3bsRkMjFz5kz69u0b6JCaxOrVq7nvvvvo2rUrAN26deOWW27hkUcewefzERcXx//93/9ht9v5\n8MMPefvttzGbzVx99dVcddVVeDweZsyYwb59+7BYLDz77LO0a9cuwO/q5EhLS2P69OnccMMNJCcn\nk5WVdcLtsm3bNp588kkAunfvzu9///vAvskTcHT7zJgxgy1bthAZGQnAzTffzPnnn99i2+ePf/wj\n69atw+v1cvvtt9OnTx8dP9Uc3T7Lly/X8QOUlZUxY8YMDh06hMvlYvr06fTo0UPHTjPXUs8hmpOj\n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\nQGigSxEREREREREJCCUlRERERERERCQglJQQERERERERkYBQUkJEREREREREAkJJCREREREREREJ\niP8PbW0DRibYCHsAAAAASUVORK5CYII=\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "ajVM7rkoYXeL",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below for one possible solution."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "T3zmldDwYy5c",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "train_model(\n",
+ " learning_rate=0.00002,\n",
+ " steps=500,\n",
+ " batch_size=5\n",
+ ")"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "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",
+ "outputId": "c8091026-424f-4fbd-a8bd-44d0287dfbc9",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 977
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "train_model(\n",
+ " learning_rate=0.0001,\n",
+ " steps=500,\n",
+ " batch_size=1000,\n",
+ " input_feature=\"population\"\n",
+ ")"
+ ],
+ "execution_count": 0,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 209.51\n",
+ " period 01 : 188.58\n",
+ " period 02 : 177.30\n",
+ " period 03 : 175.95\n",
+ " period 04 : 175.92\n",
+ " period 05 : 175.95\n",
+ " period 06 : 175.92\n",
+ " period 07 : 176.06\n",
+ " period 08 : 175.99\n",
+ " period 09 : 175.92\n",
+ "Model training finished.\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " predictions targets\n",
+ "count 17000.0 17000.0\n",
+ "mean 122.9 207.3\n",
+ "std 98.7 116.0\n",
+ "min 0.3 15.0\n",
+ "25% 67.9 119.4\n",
+ "50% 100.3 180.4\n",
+ "75% 148.0 265.0\n",
+ "max 3068.1 500.0"
+ ],
+ "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",
+ " 122.9 \n",
+ " 207.3 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 98.7 \n",
+ " 116.0 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 0.3 \n",
+ " 15.0 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 67.9 \n",
+ " 119.4 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 100.3 \n",
+ " 180.4 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 148.0 \n",
+ " 265.0 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 3068.1 \n",
+ " 500.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ },
+ {
+ "output_type": "stream",
+ "text": [
+ "Final RMSE (on training data): 175.92\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAABCUAAAGkCAYAAAAG3J9IAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xd8VGX2+PHPzGRKJsmkBwgBKUno\nvQrSQkkAXVEUFMWyrn7dtaGsrrpYWF3r6lrW3stvVxQVBaUKqCgCIQFR0BBAIJS0SWaSTDL1/v4Y\nMlJSJpBkZsJ5v16+ZMq9c+bJJHPvuc9zjkpRFAUhhBBCCCGEEEKIVqYOdABCCCGEEEIIIYQ4O0lS\nQgghhBBCCCGEEAEhSQkhhBBCCCGEEEIEhCQlhBBCCCGEEEIIERCSlBBCCCGEEEIIIURASFJCCCGE\nEEIIIYQQASFJCSFaWY8ePTh69Gigw2jQNddcwyeffHLK/c8//zx///vfT7m/sLCQ888/v9lef+7c\nuXz22Wenvf3zzz/P0KFDycrKIisri8zMTB544AGqq6ubvK+srCxKSkqatE194yeEECK09ejRg8mT\nJ/u+XyZPnsy9996LzWY7o/1++OGHdd7/ySef0KNHD9atW3fC/TU1NQwePJi77777jF7XXwcOHODG\nG28kMzOTzMxMZsyYwZo1a1rltZvixRdfrHNMNm3aRN++fX0/t+P/CxUFBQX06NHjhGObK664gp07\ndzZ5X0899RT/+9//mrTNZ599xty5c5v8WkL4IyzQAQghQl+7du1YtmxZoMM4QWZmJv/85z8BcDgc\nzJs3jxdeeIG//vWvTdrPihUrWiI8IYQQIeq9996jffv2gPf75fbbb+eVV17h9ttvP639FRcX8/rr\nrzNr1qw6H+/QoQPLli1jwoQJvvvWrVuHyWQ6rdc7HX/961+58MILefnllwHYvn07V199NcuXL6dD\nhw6tFseZ6NChQ8h/p2s0mhPew5dffslNN93EypUr0el0fu9n/vz5LRGeEKdNZkoIESQcDgcPP/ww\nmZmZZGRk+L74AXJzc7n44ovJyspi2rRpfP/994A3a37eeefxyCOPcOWVVwLeqzhLlixhxowZnHfe\nebz99tu+/SxatIisrCwyMjK44447qKmpAeDgwYNceumlTJo0ifnz5+N2u5sUe0FBAb179wa8V3Vu\nvfVW7r33XjIzM5k2bRq7d+8GwGq1cuedd5KZmcnEiRP5+OOP691nXl4el1xyCePGjWPBggW43W5u\nvfVW3njjjROeM3LkSFwuV4Px6XQ6Zs+ezXfffddoHD169OCVV14hMzMTt9t9wsyWd999l2nTppGV\nlcWf//xnzGZzs4yfEEKI0KTT6RgzZgy7du0CwG63c//995OZmcnUqVN57LHHfN8Jv/zyC5dddhlZ\nWVlceOGFfPvttwBcdtllHD58mKysLBwOxymvMXjwYDZt2nTCbL8vv/yS0aNH+26fyTHEu+++ywUX\nXMCYMWP48ssv63yfeXl5DBgwwHd7wIABrFy50pec+c9//sO4ceOYMWMGr776KhkZGQDcfffdvPji\ni77tjr/dlGObrVu3MnPmTCZPnsysWbM4ePAg4J0xMm/ePCZMmMCVV1552jNRP/nkE26++Wauvvpq\nnnjiCTZt2sRll13Gbbfd5juBX758Oeeffz5ZWVlcddVVHDhwAPDOzlywYAGXXHLJCcdcALfddhtv\nvvmm7/auXbs477zz8Hg8/Pvf//bNPLnqqqsoLCxsctzTpk2jpqaGvXv3AvUf59199908+uijXHDB\nBSxfvvyEn0N9n0uPx8M//vEPxo8fzyWXXMIvv/zie93Nmzdz0UUXMW3aNKZOncry5cubHLsQx5Ok\nhBBB4rXXXiM/P5+lS5eybNkyVq5c6Zuuef/993PdddexYsUKbrjhBh544AHfduXl5fTq1Yv333/f\nd19+fj5LlizhxRdf5Omnn8btdpOdnc2zzz7LO++8w9q1a4mMjOTZZ58F4F//+hfnnnsua9as4eqr\nryYnJ+eM3ss333zDnDlzWLlyJSNGjOCdd94B4LHHHkOtVrN8+XI++ugjnn/+efLy8urcx6ZNm3jv\nvfdYsWIFW7ZsYd26dZx//vknzMhYvXo1U6ZMISys8UlfTqfTdxWhsTgURWHlypVoNBrffdu2beON\nN97wxZScnMxTTz0FNP/4CSGECA0Wi4Vly5YxaNAgAN555x2OHj3KF198waeffkp2djbLli3D4/Fw\nxx13cOWVV7JixQoefvhh5s+fT2VlJY888ojvKn5dV7t1Oh3nnnsuX331FQCVlZXs2rXL95pw+scQ\nZWVlqNVqli5dyr333sszzzxT5/scO3Yst956K++++y579uwBvLMkVSoVeXl5vPPOOyxevJjFixez\n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\nPaUbEC07AGhxdCX0gB0IRvhbVQupKSpXL84Z0mtJhnBY48dP1LP7ww4umZPBFz47vmcKzEC6y1CE\nEEIIcXYmjE2nrCiTvfXtHG3rJD8n/kQvIYQQYjASDkrs3LmTLVu2YDQah3M9SWU26pldlsOm7U1D\ncr5Mi5GKqXmsWFqKqh7g9W0nz3uxyYnf6SVwzM7RiRdhs1mYNTmb9/7ho4swpvQg2VYzsyZnEwpH\neOiJzTg9frKsJsrLclmxtBSdGjsD4o132nG5Q9z4sTGkpozuDAFN0/j1/xzh/e0upk+18MBdxeh0\niffHEEIIIcTQuLqikJoGJ1XbGvnstVOSvRwhhBDniYSDEtOnT8fv95/XQQmAlZWTqWlw0tTaeVbn\nsaYZeORf5pOeGr1fofDJsZ4mvUJesI222mifibbSKXzz9gqMej0v/Wkn+WNNPPyl+VhSDTz2+2oa\nWjw9x9rdfqq2Np5Ya/+JHOGIxl83NKPXK3yyMnbDx9Hk2T8dpeotO5MmpPD1L5dgNIz+UhQhhBBi\nNCqfnEu21cy7u49x0xWTsKQYkr0kIYQQ54GEgxLNzc0sXbqUkpKSPj0lfv/73w/LwpIhHI6OA/X5\nz36qyJyy3J6AhD8Y7tNAc3KeDrVXP4naMZPw+kN8VNNFIKBxSXkmebZUntnwUZ+ARG/VNW0sX1zS\nr5RjS7WLo81+Khdlk2Ub3QGkF15p5s8vN5M/xsQ37i8d9VkfQgghxGimqgpXzS3kj5tqeWvnUT62\nYEKylySEEOI8kHBQ4gtf+MJwrmNEeOqlvT1ZCGerttFFOBLNjvjd3z/E3XUy0LEg2wv2IM4DbXjT\nMogUFZFhMfHBjmjgYn55RjSQcaAt7vnbY0zk0DSNv/z9OADXx5lMMVq8/pad3/2xiWybgYcfLCXT\nKm9jhBBCiGS7YtY4/vp2Pa9vb+Sa+UVxS0mFEEKIRCUclJg/f/5wriPp/MEwm/ccG7LzNbZ28vvX\naqhrcvfLdphmctJ1vIOwu5OGKXNISzVi0Kls3eEiw6pn8qQ07C4vTk8g7vkz00z9JnJ8eKCTmoNd\nzC/PoHCceciu5Vx7v9rJr357GEuajocfKCUvZ3CTR4QQQggxPFLNBi6dMZZN25vYXtPGvKl5yV6S\nEEKIUU7C2ye4PH5and4hPec7u472C0iY9Qo5/jYcB6L9JBrHT6bLF2JvTQdOd4h5szIAjQ1bGlAH\n6Oc4uyynX+lGd5bEjR8bvVkSe/Z38KP/qsdoVPnGfaUUFaQke0lCCCGE6KVybiEAr21tSPJKhBBC\nnA8kKHFChsVEbubQPgAHw/23TR2jQ3W20l4f7SfRVFSKw+Pn7S3tAMybncH6jbVs2t5ERIt93sLc\nNCrnFuLv9QFHmrxs3elmamkaU0stQ3od58rBw11872d1aBr8+92TKCuRcWNCCCHESDMuO40Zk7Kp\nbXRRf8yd7OUIIYQY5SQocYLJoGPB9HHD/jmXZHeiBQK4a1txZo+j05IBwHvbHBiNClPL0vo0xexN\nAcblpNLlC7J67fusXruZdVU1hCMR/vpKMwA3jNIsiaPNPh75cS0+f4T77pjI7OnWZC9JCCGEEHFc\nXRHNlqiSbAkhhBBnKeGeEheCf7nuYrq8Aapr2nB0+Mi0mOj0BfEHI6c/OEEXGVy4DzvRAkGOFE4C\nIBxQ6XBrzJ1lxRcI0u72xzxWA461dfX8u3s8qLcrwj82eykYazpR/jG62B0BvvXDWtwdIe5aVcRl\n823JXpIQQgghBnBxcRbjslP54MMWbllSSqZF+j8JIYQ4M5Ip0YtOp7Kysozv3HEJ37tzAd+9cwGL\nZuXH3vcM7lyKQSHL34qz9mQ/CYCgJzpZYsJ4AykmPVnWwX2xv/2em1BY44ZlY1AHakQxAnV4Qjzy\n41pa7QFW3jiOZUtyk70kIYQQQpyGoihUVhQRjmi8Ud2U7OUIIYQYxSQoEYPJoCPPlorJoGPF0lIq\nKwrJtppRFci2mlgwLY+MNOOgzzttjA7V2UZ7nYuIquNYQTRTIthpADQ27j3It3+7hVRz4uMvtTC4\nWnVY03UsXpg16DUlk88f5js/q6OhyccnK3O5+ZNjk70kIYQQQiTo0ovHkmrSs6m6iWAoRiMtIYQQ\nIgFSvnEaOjWaPbF8cQkuj58Mi4lWp5f3930w6HNdkuUh1OCn84id1vxJBI1mImGFkFeHzhxG0WvY\n3X7sbj9FeRa6fCHaO3woELfppd9lQosofKIyD4Nh9MSYgqEIP/hlPTV1nSxemMXnPl2IooyuLA8h\nhBDiQmYy6lg8O5+/v3+E9/e1cPnM4e/NJYQQ4vwzep5ik8xk0JGdYeZPb9bx0z/uIE6MYEBT9U5c\nB+2gabRMKkMBwp16QMFoCfbZt8sX4pu3V/CVFbPjBiS0CPgcJvR6+MRVo6fsIRLR+PmTh6ne42bu\nTCtf+tyEUVd2IoQQQghYOqcQVVGo2tqApp3JX0dCCCEudBKUGIT1G2up2tpIe0dg0MemGRUyfa04\nDkT7Sdx430185dOz8Z/oJ2E4JSjh6PDh9YeYVJBBdpweE0GPES2s8rGluaSljo6kF03TeHJdI29/\n4GBqaRr/798moddLQEIIIYQYjbIzzMyZksuRFg81Dc5kL0cIIcQoJEGJBPmD4bijOk9HAS4eo6K6\n7TjqnERSUrHNm0GeLZVQlwHVEEZn7Dvhw5ZuJsNiwmTQUV7WPwtC00DtTEOng09dM3rGgK7/6zH+\nvrGViYUprL6vBJNJ/hMUQgghRrPu8aCvbW1M8kqEEEKMRqPj9foI4PL4447qPJ1LLh7DqolO/Bs7\n8be6Sb3ycv73jYO8/YEdLWLCmBHsd0x5WQ4mgw6AFUtLAaiuaaO9w0dmmokxaZm8d8DPksuyyMka\nfNPNZHj59RbWv3icMblGvvFA6ajJ7hBCCCFEfKUFGUwYm071gVZanV5yM1OSvSQhhBCjiLymTlCG\nxTToUZ0AJoPKbdeUYWw70jMKtKGohKqtjdhPJF707ieRbTVTWVHYE4iAaLPNFUtLmVmSRUaaEYfH\nT3V1FwDXXTM6ekn8Y3M7a3/fSKZVz8MPTiYrM/EJI0IIIYQYuRRF4ZqKIjQNXt8m2RJCCCEGR4IS\nCTIZdMyenDPo4y6dMY5Ug4LZfbynn8Tb+jFoGgQ9BhRdBJ05OkbLZjHxzdsrWFlZhk7t+6tZv7GW\nTdVHcXoChLw6fB4dhrQg7+0f+bPBN1c7+NmTh0hNUfnmA6WMyxt8cEcIIYQQI9e8i6Lj0t/adQxf\nIJTs5QghhBhFJCgxCKFw5PQ79WJJ0XPjFcX8+eUt4LTjqGvHa82i2ZJN2KdDC6sY0oJ0T8J0dfrx\n+vt/kZ/az8LXHn2oN9l8VNe04Q+em9ng/mCYFkdXwp8XjkT4+f9+yA9+eZCIpmEb7+W9mkbCkcHd\nRyGEEEKMbHqdypLyArz+EO/sPp7s5QghhBhFpKg/Qf5gmJ0nyi8S5fGGeOiJzdwx2U3XMTfhTj8N\n02aCohDs7J66cTIIkWkxkWHpn0XQu59FOKAS7DSgM4fQp4RxdIRxefzk2VLP4uoGFo5EWL+xluqa\nVtrdfrKsJi6bVcB1C8f3y+jo7Td/3s8br3eiRRTS8jvp0kJUnWiCtbKybNjWK4QQQohz78ryAv72\n3iGqtjawZE4BqiLTtYQQQpyeZEokyOXx4/QMfhSoxxtiss7RU7pxpCjaKyLgMYCiYUg92U9i6gRb\nT3PL3nr3s4hmSSiYbX4U5eSUjuHUPQrV7vajAXa3nxffOsj6jbVxj2k41sXrr3WhRVRSx3Zh7BV8\nOWcPs94AACAASURBVJfZHUIIIYQ4N6xpRi6ZNoZmh5c9Bwf3IkcIIcSFS4ISCQhHImzY0oB6BgH/\ndLNKeldzT5PLpqJSwgGVSECHITWEcuI3YDbqWHn15Jjn6B4LGgkpBDqMqIYwhhPNMXtP6RgOA41C\njRdccLqCrPlxHeGgQkpuFyZr3+kijg4fLs+ZTTIRQgghampqqKys5NlnnwVgy5YtfOYzn2HVqlXc\ndddduFwuGhsbKS8vZ9WqVaxatYp77rknyau+MFxdUQTIeFAhhBCJk/KNBKzfWMum7WfWULJ8rIbm\naMdV78CZV4Q3NZ2g40TpRtrJh/XLZ44j1RR/IsWKpaXs3uHHpQVJyfKTk2GmvCynz5SO4TDQKNTu\n4ELv0pHOrjDf/kktrfYgtnFBSO+fXXIusjuEEEKcn7q6ulizZg0LFy7s2fboo4/ywx/+kEmTJvHr\nX/+a9evX8/GPf5zi4mKeeeaZJK72wjN+TDpTijLZW99OU1snBTlpyV6SEEKIEU4yJU5joEyBRMy3\nenAfcqCFwhwuKAYg6InGgkzpwZgjQGMJ+DWO1EfISNfz/ftn8507Lok5pWOoDTQK9dTggj8Q4Xs/\nr6P+iJdrrszhqiszYx433NkdQgghzl9Go5G1a9eSl5fXs81ms+F0OgFwuVzYbLZkLU8AlSeyJV7f\n2pDklQghhBgNJFPiNAbKFEhEqa6dtgNtADQWTYaIQsirp2RiCl/94lQyLKZ+D+j+YLR5Ze+fvfqP\nNrq8YVbeOI7CPMuZX9AgdZeOVMVIw+wdXAiHNX7063r21Xi4tCKTO28rAjQURaG6pg1Hhw9b+rnJ\n7hBCCHH+0uv16PV9/3x56KGHuO2227BarWRkZPDggw9y/Phx2trauOeee2hpaWHlypV86lOfStKq\nLyzlk3PIyTDz7p7j3LS4BEtK/ExQIYQQQoISp9GdKWCPEZiwpZtwdMQPWGSkqKR1NnOgtp2ITs+x\ngmKKs3JwEGThXFu/iRmxplyUl+Vy0xWTeOnVFswmlWVLcof8Gk+nO4jQO7hw2ax8rls4HoBIROOX\nvz3Mlh0uZk1L5747JqJTFUBhZWUZyxeX9AuyCCGEEENlzZo1PP7448ydO5fHHnuMdevWcdNNN3Hv\nvffyqU99io6ODm655RYWLFjQJ8PiVDZbKnr90H9P5eamD/k5R7rrF5fw3y/uZVutnZuXxu6Zda5c\niPd/JJH7nzxy75NL7n/iJChxGgNlCpgMA5dOzB0bIdxip/Ooi9aiKYQMRmoO+AAd82dn9Nu/e8pF\nN7vbT9XWRg4dDGJ3BPlkZS7plnP/K9Opar/gQmF+Jq2tHWiaxu/+2MSmd9qZXJzKv39pEoZT7ovJ\noBvWkaVCCCEubPv372fu3LkAXHrppbz00kt89rOfZfny5QBkZWUxffp0Dh48OGBQwuHoGvK15eam\n09raMeTnHenKJ2VhMuh48R91XDYtD70uORXDF+r9Hynk/ieP3Pvkkvvf30BBGukpkYAVS0uprCgk\n22pCATLSDKSa9Bxv9w543Lz0jujUDQ0OFRSjRcDjVMnNNlCYb+6zb7zeFZoGO3d4UVW47pr4f0id\nC93Bhd7ZDn9+uZkXX22hcJyZ1feVkmKWTAghhBDnVk5ODrW10THVu3fvZsKECWzevJlHH30UiDbH\n/OijjyguLk7mMi8oqWYDl80Yi6PDz/az6M0lhBDi/CeZEgnSNI2OrgAa4OoMnnZ/gElqO8dO9JNo\nKiol5NWDpjC/PBNF6TtfNF7vilCnnoBPZf4cK3k5I2tixatvtvHsn46Sm23k4QdLsabLf05CCCGG\n1549e3jsscdoampCr9ezYcMGHnnkEVavXo3BYCAjI4Pvfe97pKam8sILL7BixQrC4TB33nknY8aM\nSfbyLyiVFUVs3N5E1dZG5l8k914IIURs8hSZgPUba3l92+BGgmamqqR2HMdRayeYkkZrXiHB1mij\npwVz+0+liNe7wueIBiKWf3xsn+2xmmGeS2+808oT/3MEq0XPww+UkpNlPOdrEEIIceGZPn16zDGf\nf/jDH/pt+/73v38uliTiGJuVysySbHbV2ak/5qZ4nDXZSxJCCDECSVDiNDq6Amz9qCXh/RUlWnIx\nb0wIf2MrfoeXY5PLiSgqwU4DljQdF5X2n54Rq3dFyKsj5DUwZpyOsknRY+I1w1yxtHTYx4N227XP\nzXd+WofRqPKN+0soGGc+/UFCCCGEuOBUVhSyq87Oa1sbuPO6i5O9HCGEECOQBCXi6H743/ZRK05P\nIOHjrpiVTzAUYZ5SE+0nAdQXTCTs1xEJqVTMy0CnU2Iee+qUi4gn2hzyCysn9uwTrxkmwMrKskFd\n45k4UN/Jo784CMDX7ymhtDht2D9TCCGEEKPTxROzGJedypYPW7h1SSmZlpFViiqEECL5pNFlHN0P\n/w5P/JGfpyrKs3DbNWV87uNTKda14zjRT6Jz2nQKrVkAzC/vP3XDHwzT4ugiFNZYvriEe2+ewd2f\nmk2XU0fJhFRmTbP27BerGSZEAxn+YHiwlzkojcd8rPlJLYFAhG/9v4uYeZGMuRFCiGTp/u4Y7v/3\nC3E2FEXh6ooiwhGNTdsHVworhBDiwiCZEjEM9PAfj0Gn8NlrygiFNUxKGIPzGM66doI5Y/naVz/B\n1797AL0+xOzpJ+spe5di2N1+zEYVUPAHwoQcFjRNz6euze1pihmvGSaAo8OHy+MfttGbbe0BHvnR\nATo8Yb54+3gWX5orY26EECIJRkIZnxCDsXD6WP70Zh1v7Gjik5dOwKCXSV1CCCFOkr9eYhjo4T+e\nYFjju89u5/5fvM3296vpPHicsDdIxqJ5uN1hDjV4mXlRep+Rmd3ZGN3NLX2BCL5AmHBIwd2mQzWE\nOeJu69m/uxlmLLZ0MxnDlBLp7gjxrR8doK09yKqb87n6ipxh+RwhhBCn1/u7Q+NkGd/6jbXJXpoQ\nMZkMOq6YnU9HV5DN+5qTvRwhhBAjjAQlYrCkGjAazuzW+AJhMl1HcRyI9pOwXTmfD6pdQN/SjYGy\nMfxOE2gKJpufnbX2ntRcvU4h1WyIeUx5Wc6wTOHwesOs+WktTcf8XL8sjxs/JiO9hBAiWZJdxifE\nmbpqTiGqolC1tRFN05K9HCGEECOIBCVieOGtevzByBkfP1Fpw3mgDU1R+N7eEOtfPgLAvFkngxLx\nsjG0CPidRhQ1gska6CnLgOjbsYYWT79jivIsPU0yh1IwGOGxXx6ktr6LpZdl8c+3FPSUkgghhDj3\nEinjE2IkyrKamTMll4YWD/uPOJO9HCGEECOIBCVOcSb9JHrLsagYWptwH3biGjuRToMFj0shxaKR\nZTP27BevFMPvMqJFVEw2P4p6sixjoHV1+UKEwkP71iEc0fjJ2kPs3NfBvNkZfPH2CRKQEEKIJEtW\nGZ8QQ+GaiiIAXtvakOSVCCGEGEkkKHGKM+kn0dvCvADumuNo4QhHCiYR6tQDCph92F1eGls6aGyN\nZjuUl+X2OVbTwO8wg6Jhygyc2CdalnEu345pmsZvnmngva1OLp5i4cEvFMcdYyqEEOLcMRl0/b47\nug1XGZ8QQ6WkwMrEsensONBGi9Ob7OUIIYQYIWT6xim630LZzzAwMSetA+eJUaCHCycR6Iz2gDCk\nBfmPte8TCEXLQsxGHZdOH8PSuQXsPGCn3e1D85qIhFTMmX5ybSbKy3J6yjIGWtdQvx37/Z+P8uqb\nbRSPT+HrXy7BZJTYlRBCjBTd3wvVNW04OnzY0s19vi+EGKm6x4Ou/ds+Nm5r5NNXTU72koQQQowA\nEpQ4RfdbqKqtjWd0/HjFzr5aOxG9gWPjJhI8bEA1hFGNEQKhk/v5AmE2bj9KZUUh37njEpwdPh79\n6WFcio9vfPEiSiak93njNdC6hvLt2IuvNvOn/2tmXJ6Jb95fSlqqvHUTQoiRRKeqrKwsY/niElwe\nPxkWk2RIiFFj3kV5/HFTLW/tOsr1lxeTYpI/RYUQ4kInr8BPEY5E0DQN0xlM3xiTrqI0HqbzWAdt\nRVPwB1IgomBICxGvHUN3n4hjR8McbvRx2Twb00ozY/6BuWJpKZUVhWRbzagKZFvNVFYUDtnbsU3v\n2Hn6D01kZRr41ldKycyIPelDCCFE8pkMOvJsqRKQEKOKXqeyZE4BXn+Yd/ccT/ZyhBBCjAASnj7F\n+o21vL6t6YyOXZjnx/Ve9Av2UMEEgp4TpRuWYNxj2jv8uDx+/vL36NzuG5bFH7l5pm/H/MEwLo+f\nFJMerz8U87gtO5w8/vRhLGk6vvlAKXk50ixNCCGEEEPvytkF/O3dQ1RtbWDJnAJUaaQthBAXNAlK\n9OILhM5q8kbvfhK3fmU5W9dp6FI08vJUHP0neQKQlW6ivT3Mrg87mHlROiUTU0/7Od1vx04nHImw\nfmMt1TWt2N1+VAUiGmSlG5kzJY8VS0vRqSr7ajz88L/qMehV/uPeEiYUpgzquoUQQgghEmVNM7Jg\n2lje3n2M3XV2ZpXmJHtJQgghkmhYyzdqamqorKzk2WefBeDYsWOsWrWKlStXcu+99xIIRCdMvPji\niyxfvpxbbrmF5557bjiXNCCH++wmbxRGWnDU2glbrHTkTsLlDlMxK4O5U/PiHlNelsv/vRYNZNz4\nsfhZEmdi/cZaqrY29jTHjJyYGtreEaBqayPrN9ZSf6SL7/6slnBE46t3FzO11DKkaxBCCCGEOFVl\nRSEAVTIeVAghLnjDFpTo6upizZo1LFy4sGfbz3/+c1auXMm6deuYMGECzz//PF1dXfzyl7/kt7/9\nLc888wy/+93vcDqdw7WsAdms8ee/q6e5U/lWhVDtQQIuH8qcCrbu6gBg/uxMViwtZencAszGkyUT\nZqOOq+YWcOWMIt7d4mBiUQqzLk4fsmvxB8Onzfp4f5edR35ci9cX4d7PT2TOjIyEz32srRN/MDwU\nSxVCCCHEBWb8mHSmFGWy95CDptY46aRCCCEuCMNWvmE0Glm7di1r167t2fb+++/zyCOPALBkyRKe\neuopiouLmTFjBunp0QfyOXPmsH37dpYuXTpcS4vLbNTHnXBxumrHS3N9uDa2AJB/7SU8V+1Er1Mo\nn2FFp6rcdvUUbrmylFZHFygKuZkpmAw61v6+gYgWzZJQhrCm0uUZOOsjElJorNcTCYa445+KWLQg\n67Tn7F0O0t7hJyvdRHlZbk8ZiBBCCCFEoq6eV8T+BidV2xr552VTk70cIYQQSTJsT5J6vR6z2dxn\nm9frxWg0ApCdnU1rayttbW1kZZ18IM7KyqK19cz7OpytFUtLKcrrX8IQjgx83ByLB8eJfhJPHDFy\n8IiXaVPS8Pj8PRkFJoOOwrx0CnMtmAw63B0hqt5qIzfbyKUVtiG9jgxL/KyPSFjB02ghEtRx8yfH\n8PGrchM6Z+9yEE0Du9vfUwYihBBCCDEYs0tzyMkw896e43i88ZuCCyGEOL8lrdGlpmmD2t6bzZaK\nXj88I9AybWlnVJYwNnCcbXV2fDljqfdGAwyHnW18/TeN5GamsGD6OP7luovR6U7GgV6qOkQgoPGZ\nm4oYN846ZNfQ7bJZBbz41sE+27QIeJrSCAd0TJ1m4t47pySUoeELhNhVZ4/5s111du5anoLZKH1T\n48nNHbrSnAuB3K/Eyb1KnNwrIUYWVVW4am4h6zfW8uaOJj6xcGKylySEECIJzulTZGpqKj6fD7PZ\nTHNzM3l5eeTl5dHW1tazT0tLC7Nnzx7wPA5H17CsLzc3nbpDdlod3kEdV5Sp4NtzgLA/TMNFU3pG\ngWKKZhS0OLy8+NZBurwBVlaWAeD3R3juxUYsaToWlFtobe3od97uUZ6Jjv481XULx9PlDfRM31CA\njqNphH16iibo+fZ9U2lrS6yOs8XRFfe+tDm91B2yJzQR5EKUm5se8/crYpP7lTi5V4mTezU4EsAR\n58qimfm88HY9G7c3ce388eh1Ug4qhBAXmnP6f/5LL72UDRs2APDqq6+yaNEiZs2axe7du3G73XR2\ndrJ9+3YqKirO5bL6GKjsIZ7Lsn04a6L9JOrGjCfUpUdnCqEa+mZ9VNe09WRhbHzHTocnzMeW5JJi\n7htwCEcirKuqYfXazXz9ic2sXruZdVU1hCOnqSE5hU5VWVlZxnfuWMD37riEqRkTCHUZmHVxOj/6\nj+kYBpFtMtB9saWbybAM7p4JIYQQQqSa9Vw+fRyODj/bz2IsuxBCiNFr2DIl9uzZw2OPPUZTUxN6\nvZ4NGzbwwx/+kK997WusX7+e/Px8brjhBgwGAw8++CCf//znURSFu+++u6fpZTKYDDpmlmSzqfpo\nwseUWzqwH7CjKQqHs6dCu4LB0r820tHhw+XxY0kx8ueXj6PXK1Qu7t9gsrt3Q7fu3g1AT6bFYBj1\nKn97pZ13t7iYUpLG1740CYN+cPEok0EXtwloeVnOGWVyCCGEEEJUVhTy+vZGXtvawPyLhnY8uhBC\niJFv2IIS06dP55lnnum3/emnn+63bdmyZSxbtmy4lpKwcDiaodDdO0FVIKJFJ2/E63ShADmeRg4d\nceIpLMETjI7VNKSF+u2bnmrg5c2HeXOzHWd7KsYMP9/63ftcNmMsn75qMjpVHXCUZ3VNG8sXlww6\nAPDcS8f5v9dbGV9g5j/uLcFsOrMAwoqlpT3rcHT4sKWbKS/L6dkuhBBCCDFYY7JSmVmSza46O/XH\n3BQPQ58tIYQQI5d0JuzlqZf29skEiJyIRBTkptHY2hnzmPE2hc7qGrSIRn1+KcFOPao+gs7Uv1mm\nqzPImzuO0dFiATTMNj++QITXtzWhKAorK8sGHOXZnWkxmN4Nr2xq5X9fOEZejpGHHygl3XLmv/Lu\ncpDli0vQGQ2EA0HJkBBCCCHEWbu6oohddXZe29rAndddnOzlCCGEOIekm9AJ/mCYzXuOxfxZm8tL\napzsgsuzvDgPRDMbDmRPQouoGCxB4g20CHn1hP16DJYgOuPJHhHVNa34g+Eh7d3w9gft/ObZBjKs\neh5+sJQsmzHhYwdiMugYl5MmAQkhhBBCDIlpE23k56Sx5cMWHB2xX84IIYQ4P0lQ4gSXx0+rM/Z0\nCV8gQpc/9pjQcosb5wE7mtFIY1q0jMGQFn/Wtq89GlQw2/p+4ba7o5/f3bsh5mcNondD9R43P1t7\nmBSzyjfvLyV/jDmh44QQQgghzjVFUaisKCQc0dhU3ZTs5QghhDiHJChxQobFRE5myqCOUQBrSz1d\nLR7sE6bh86aiqBr61P79JABCfpVQlwF9Sgh9St8ghwb89I87WFdVw81XTqKyopBsqxlVgWyrmcqK\nwoR7N+yv6+Sxxw+iKPD1e0qYNEFGdQohhBBiZFt48VjSzHreqG4iGIr9MkgIIcT5R3pKnGAy6JhR\nksPGrQ0JHzMpCzp2HACgNq+YSEjFkB5Ap4KmgS3dRJc/hC8Q/WL1t0ezFcw2X8zztXcE+kzZWL64\nBJfHT4bFlHCGxJEmL9/5aS3BUIR/v3sS06fIrHkhhBBCjHwmg47Fswt4efNhNu9tZtGs/GQvSQgh\nxDkgmRK93HnDdMzGxG/Joiwfrpo2AA5kTAbAmBbk8lnj+MqnZ/Pw5+Zx2YyxAISDCoEOA6oxjD7G\nZI7eqmva8AfDmAw68mypPQEJfzBMi6MLfzD224OWNj+P/KgWT2eYuz83gfnlmQlfixBCCCFEsi2d\nU4CqKLy2tRFNizf7TAghxPlEMiV6SUsxcvnM/D4TOAYyI9XBoVo7kXQrx/QTIKAxcaKJvQfbeWvH\nMbKsJgz6EwEFhwlQMGf54jbB7HbqlI1wJML6jbVU17TS7vaTZTVRXpbLiqWl6NRoEMXpDvKtH9XS\n7gxy+4oCll6Wfcb3QQghhBAiGbKsZuZOyWXLRy3sP+Jk6gRbspckhBBimEmmxClWLC090c9h4CkX\nigKph2oIdvg5PmEG4YCB3DE6jrZ7sLv9aIDd7ed4exeRsILfZULRRzCmR5tgqgpxszJOnbKxfmMt\nVVsb+5y3amsj6zfWAtDlDbPmx7Uca/Zz08fHcP21Y4bkXgghhBBCnGtXzysC4LVBlNQKIYQYvSQo\ncQqdqrKysox7b5454H6TbRruHXUAfGgrBkAzxe4V4XcaQVMwZ/p7siQiGswqyYm5f+8pG/5gmOqa\n1pj7Vde00dEV5NFf1HHwiJfKK7K5bbnUXwohhBBi9CrJt1I8Lp0dB9poiTMZTQghxPlDghJx5NpS\nB8yWWJztw1lrB6A5bwYAQV3/L04tAn6nCUXVMGX0HQO640C0H4V6IlCRbTX1m7Lh8vhpd8ee193u\n9vHjX9ez5yMPC+Zm8oXPjkc5XW2IEEIIIcQIFh0PWoQGbNyWWEmtEEKI0UuCEnGYDDrKy3Lj/nya\n0Y7rYDuhMeM43JWJMSVCalr/2xlwG9HCKqYMP8opAzT8oQgQzZoAmFmSzcrKsp4+ERAdVZoVIzii\naRBst7Bjj4cZF6XzwJ0T0akSkBBCCCHE6Ddvah4ZFiNv7TqK1z9wg3AhhBCjmwQlBhCvv4SqgP7D\nvUQCYQ4XzABNQU0J9Iz+7KZp4HOYQNEw2WJnO/S2q669z2QNfzCMy+NnZkn/ppXeNjMdbXpKJ6by\n9S9NwmCQX6UQQgghzg96ncrS8gK8/jDv7D6W7OUIIYQYRvIkO4Du/hKPfH4+47JSe7ZPzdJw7z4E\nwN60SQAYLNEGlmajDtOJAEHQYyAS1GFMD6DqTz/WqnvqRjgSYV1VDavXbubrT2xmV52dojwLWekm\nVAXUzjT8DjP5Y02svq+ElBTdac8thBBCCDGaLC4vQK9TqdrWSETGgwohxHlLghIJeOGteo61d/X8\ne3GOD+cBO6gqdeYpKPoIOlM0w8EXCGPUKyezJNAwZ50+SwJOTt2INW2jocXDrMk5fGLWVOxNBrJt\nBr714GQyrIZhuGIhhBBCiOSyphpZcPEYWhxedtXZk70cIYQQw0SCEqfhD4bZvr+lz7YpkWN0NDjx\nT5iET5eGMS1I7/6SHd4wIa+OsE+PIS2IzhhJ6LPKy6LTOOJN23h3i4NnnjtOukXHww+WkpttPLOL\nEkIIIYQYBa6uiI4HrZLxoEIIcd6SoMQAwpEIz27YT3tHoGebTgF27gYNanKmAydLN3rzO8wACWVJ\nmI06ls4tYMXS0rjTNoJdeo4fNGA0KKy+r5Si/JQzvCohhBBCiNGhKM/C1PGZ7DvkoKnVk+zlCCGE\nGAYSlBjA+o21vLPneJ9t03MiuPZGo/W7jKWgauhTQvSeexH2qwQ7DejMIfQpfZtfxuILhFEVBZ2q\nxpy2EfLp8BxNA+ArXyymbFLa2V2YEEIIIcQo0Z0t8dpWGQ8qhBDnIwlKxOEPhmOWUSzOivaTUMxG\nGtMmYUgNoqhg7DX9ItpLAsxZvoQ/r7qmDX8w3G8UaTig4mlKgwgsvCyFipmZZ3FVQgghxOhXU1ND\nZWUlzz77LABbtmzhM5/5DKtWreKuu+7C5XIB8OSTT3LzzTdzyy238OabbyZzyeIszCrNISfDzHt7\nj+Px9s9OFUIIMbpJUCKOeGUUxZ7DeNs66Zw0jYiqJy0zmgnhD0b7RkSCCgG3EdUYxpCW+Fzt7skb\nEB1FuqQ8H4vRhKfRghZWmTPPzIO3Tx2CKxNCCCFGr66uLtasWcPChQt7tj366KN897vf5ZlnnqG8\nvJz169fT0NDAyy+/zLp163jiiSd49NFHCYdPn70oRh5VVaicW0gwFOHNHU3JXo4QQoghJkGJOGKV\nUehVCO/YBUBt3mxUFWw5fY/zOU2Agtnm72l+mZVuxGwc+FZ3T94IRyKs31hL9X47R2uMREIq02YY\neOiui9Cp8usSQghxYTMajaxdu5a8vLyebTabDafTCYDL5cJms/H++++zaNEijEYjWVlZFBQUUFtb\nm6xli7N0+cx8TEYdG7c3EQon1kBcCCHE6CBPub34AiFaHF0xyygAZmWFce07CsDm0EQmT0rF1XUy\nmyISVvC7TCi6CMb0k80xU80GFk4fO+Bnl5flYDLoWL+xltc+aOTIRwbCAR2mTB9Hfa2s3yh/SAkh\nhBB6vR6z2dxn20MPPcTdd9/Ntddey7Zt27jxxhtpa2sjKyurZ5+srCxaW2NPtxIjX6pZz+UzxuHo\n8LM9zpQyIYQQo5M+2QsYCbqzE3bV2Wl1eMmymigvy+XmKycB0X4Pjg4fV+b6cNbaUTOt2NPG8Yk5\nmbx70I79RJlHwGWEiII5x4fSK9zT2NpJBC3mZ5sMKotm5bNiaWl0/OhHrXiOphH26TGmB0jJ9aEo\n0TUsX1yCyaAb9vshhBBCjCZr1qzh8ccfZ+7cuTz22GOsW7eu3z6aFvt7uDebLRW9fui/Z3Nz04f8\nnBeiW6+ewsbtjWzacZRPXFGa8HFy/5NL7n/yyL1PLrn/iZOgBNEpG1W9Ojrb3f6ef6+sLGP54hJc\nHj/GP/6Sms4AHXMvAUXh0rk2vPpcqrY2okVONLhUNUwZ/XtRHGvtivnZaWYDyxeXoFNVWh2dNBzQ\nEeoyYEgLkjq2q6cEpLvnRJ4tdehvgBBCCDGK7d+/n7lz5wJw6aWX8tJLL7FgwQLq6+t79mlubu5T\n8hGLwxH7u/ps5Oam09raMeTnvRAZgJmTstlZZ+f9nU1Myree9hi5/8kl9z955N4nl9z//gYK0lzw\n5RvxpmxA34kYeRkmAtV7AdhiuogJhWbG5JpYsbSUyopCDMFUtLCKKcOPEuMlS7z3M06PH5fHj6Zp\n/OmlNgIdRvQpIdLGdfYEJOBkzwkhhBBC9JWTk9PTL2L37t1MmDCBBQsW8MYbbxAIBGhubqalpYXS\n0sTfrouRqXJedDxo1daGJK9ECCHEULngMyXiTdmAvtkJ7oYGnB8eB2CPsZSPz46O5tSpKp9eOpl3\nNu5DUfyYM2OfK57uYMP/vnCMqn/YychUIbuzT/kHnOw5IYQQQlzI9uzZw2OPPUZTUxN6vZ4N5O0Z\nmQAAIABJREFUGzbwyCOPsHr1agwGAxkZGXzve9/DarVy6623ctttt6EoCt/61rdQpWH0qDdtgo2C\nnDS2fNTCLUtKsaXLCxshhBjtLvigRPeUDXuMwETv7ATPvj24D7WjFoyl05zJvPKMnv0+2OHk6HE/\n6dkhVMPpa1Z7Ky/L4bU37Dz30nHG5plY8++lvLrtcE8fC1u6mfKyHFYslbc7QgghxPTp03nmmWf6\nbf/DH/7Qb9uqVatYtWrVuViWOEcURaGyopDfvbKfTdWN3HRFSbKXJIQQ4ixd8EGJ7ikbvXtKdOud\nnWDet51IMELL+FlkZRoomXCyt8OT6w8DoFgSr0XNSjcxZ0ou41Kz+PmTR7Bl6Hn4gVJybKY+fSwy\nLCbJkBBCCCGEOGHBxWN5/o063qg+yicXTsQofycJIcSoJnmM0NMXIs+WgqpAttXMkjkFLCkvwB8M\nQySMb+dHALynXkTF7AxUNdrwYdeHbuytEQxpQXSmxOZmKwrcd+sspuSN4ZdPHyEtVcc3HyhlbN7J\nFESTQUeeLVUCEkIIIYQQvZgMOhbPLsDjDbJ5X3OylyOEEOIsXfCZEhDtC7Gysoy7lqdQc7CNqq0N\n7Kpt443tTWRZTXyiREfeR80oOpUDKZO4afbJ0o0/vxztM2Gy+RL+vKx0M+1tEX7wq4PodAr/cW8J\nE4tkqoYQQgghRCKWzinglfePULW1gUUzx6H07g4uhBBiVJFMiV7MRj2bqpvYVH0Uu9uPRnQ8aH77\nITxNLpSSiejSUplxUXScSeMxHzv3ejClhdGnhBP+nOJcGz/4ZT3hsMZXvziJiyZbhumKhBBCCCHO\nP1lWMxVTc2ls7eSjI85kL0cIIcRZkKBEL75AKOZ4UNuBnaDBobGzKZ9uxWiI3ra/vhJNGbx4upmB\nAvQ2i6mnLGTB1Hy2vBuksyvMl/9lInNnZsQ/UAghhBBCxFRZER0P+toWGQ8qhBCjmZRv9OJw9x8P\natKD94MaAN6OTOWGE1M32p1B3nivnXFjTNz/2cl89b/a8QX6Z0tkW8188/YKvP4QWljl4f+sxekK\n8fnPFLJ4YdbwX5QQQgghxHmoJN9K8TgrO2vbaHF0kWeTUlghhBiNJFOiF5s1Oh60t0W5EZw1Lagp\nJhotRcw5kdnwf1UthEIaN1w7BkuKkctnjot5zvKyHNJTjaSZjHz/F/U0twa45bqxfPLqvGG/HiGE\nEEKI85WiKFxdUYgGvL6tKdnLEUIIcYYkKNGL2ainvCy3z7ZLIo342r1oU8qYOiUDq0VPlzfMK5va\nyLDqufKyaLZD9wSPbKu5p1SjsqKQFUtL8fsjfPdndRxq8LJsSQ6fuSF2AEMIIYQQQiSuYmoeGRYj\nb+06itcfSvZyhBBCnAEp3+jFFwixpLyAcERjV60dR4cPy4c7sAMfZpcz78TUjdfebKPLG+afPpbf\n01+ie4LH8sUluDx+MiwmTAYdoZDGD39dx4cHOrl8vo1//aci6RAthBBCCDEE9DqVpXMK+cs/DvL2\n7mNcfaLPhBBCiNFDghJAOBJh/cZadtXZaXV4ybKamFmSzVWzxuK5/ScAvBWazLfLMwmGIrz0Wgtm\nk8qyJTn9zmUy6HpqGiMRjV8+fZitO93Mvjide/51AjpVAhJCCCGEEENl8ex8XnrnEK9vbeSquYWo\n8vJHCCFGFSnfANZvrKVqayMtDm/PGNBN1Uep3bIXV20b+mwrKZPGMy7PxFvvO7A7glx9RQ6WtPgx\nHU3T+O36Jt54r52ySal89e5JGPRyu4UQQgghhpI11cjCi8fQ4vSyq9ae7OUIIYQYpAv+KdkfDMcc\nAwpQeGQnoa4gwbKLmD8nE03TeOGVZlQVrrtm4EaVf/q/Zl56rYWifDP/cV8pKWbdcCxfCCGEEOKC\n11228dpWGQ8qhBCjzQUflHB5+o8B7WbetwuA7enlzJ+dyfbdbhqafCy6JIvcbGPcc254o5Xf//ko\nudlGvvlAKVaLVMkIIYQQQgyXwjwLU8dn8uFhB42tnmQvRwghxCBc8EGJDEv/MaAAFr1Gx+56AHab\nyygtTuUvf28G4IZl8bMk3t3q4IlnGrCm63n4wVJysuIHL4QQQgghxNC4el40W6JKsiWEEGJUueCD\nEiaDrt8YUICrsoO469sxjc9j+oIJ1NZ3sXe/h/LpViYWpcY81469bn7yxCHMJpVv3l9KwVjzcC9f\nCCGEEEIAs0pyyM00897eZjq6AslejhBCiARd8EEJgBVLS6msKCTPloKqQLbVzKy2vWhhja7J05k3\nO5MXXolmSdz4sTExz1FzsJPHHj+IosBD95RQMjF24EIIIYQQQgw9VVW4am4RwVCEf+w8muzlCCGE\nSJA0OwB0qsrKyjLuWp5C3SE7GRYTzf/6GwDeM5dzU46BzdudlE5MZfpUS7/jG456+c5PawkEInz1\n7klMn5p+ri9BCCGEEOKCt2jmOF546yAbtzdx7fzxyV6OEOL/t3fn0VXU9//Hn3NzsxCSQAK5YYmB\nsBgIYceFrVpRRKzgD4ogDXzRumCK8NNiiREEj/yEWLQUsAuWFhqtIMpxObTQVtRqCSCgfEkAKRC2\nECD7RtZ75/dHkkuWC2IJmUBej3Pw3jvzmZn3vJkzDu/5zGdEroB6StTi52PHEeyPWV5KYepJDLuN\nil79+Nu2LEwTHhwThlHv3deZ2eW89NoRCoucPDUjgtsGtbUoehEREZGWrZWvnRF9O5JbWMaebz2/\nXU1ERJoXFSU8SPtkF8VnCvDreRN9+oXy6ZfZhIX6cPvgugWH/IIKXnrtP2TnVjB9UmfuHtneoohF\nREREBGDUkHAMNOCliMj1QkUJD1p9/SUAed37kZlVTkWlyfh7w/DyuthLoqTEyeLlR0k/W8aDYxyX\nHGtCRERERJpOWLA//Xu05+iZAr49kWN1OCIi8h1UlPDA3J8KwN62Q9i2PZugADt3DW/nnl9R4WLJ\nqmMcOX6BUSPaMX1SZ6tCFREREZF67h4SDsCvN3zN5uTjnDhbiMs0rQ1KREQ80kCX9RRk5VNw4DT2\n1r4Ud7qZov8tZMqDHfH1rarfOF0mr68+zv6Dhdw2sA1P/U9Eg3EmRERERMQ6vbsEc2tvB7sOnufU\nuSLe//wYgf7e9OkaQp/Iqj9tA3ytDlNERFBRooFTW/9FWV4p/oN7ceRkKb4+Nu67KxQA0zT53Z9P\nsmNPHjG9Anh2ZmSdRzpERERExHqGYTBzfAyzp/jwrz0nSU3LITUthx0HzrHjQNVr3sNDA4ipLlDc\nfFMbvO1eFkctItIyqShRj/++7RQDmd0GkptXwf2jQgkKqErT25vO8M9/ZdOtSyuef7o7Pt56+kVE\nRESkuWoT4Mvt0R24PboDpmmSnlVMaloOKWk5HD6Vx+nMIrbsOom33UbUTW3dRYpO7VurJ6yISBNR\nUaKeyv2HAPiHqz82Ax4Y7QDgwy3neH/zOTqG+bLgmR74t1I1XUREROR6YRgG4aEBhIcGcO+tEZRX\nODl8Os/diyKl+g9AcKCv+1GP6K7BBPr7WBy9iMiNS0WJWk4dyaDg2wx82wdysDiEEbcGExbqy7Yv\ns1n7bjrtgr1Z9PMetA3ytjpUEREREbkKPt5exES2IyayajDz3MIyDhyvKkykpuXw5f4MvtyfgQF0\n6RBIn8gQYiJD6N65DXYv9ZYVEWksKkrUcnTDxzhLK/G7tScAD94Xxq6v83hj7QkCWnvx4rM9cLTX\noEgiIiIiN5rgQF+G9+3I8L4dcZkmp84VkZKWTWpaDv85nc/xs4VsTj6Br48XvSOC3UUKR3ArPeoh\nInIVVJSopdU3OykGToUPpH+HQEpKnSz7bRredhvz/28PIjq3sjpEEREREbnGbIZBlw6BdOkQyP1D\nu1JSVsm3p/JIPZZDyvEcvjmSxTdHsgBo38bPPRZF7y4h+Pvp8lpE5PvQWbOWspTDYMCmvD78n7Ft\nWbLiKKYJ82Z1I6p7a6vDExERERELtPK1M6BHewb0aA9AVl4JKcerHvM4cDyXz745w2ffnMFmGHTr\nFOQuUkR2DMJmUy8KEZHLUVGi2vH/PUlRWib+Ee3xdrRj/YdnKCl18eyTXRkYE2R1eCIiIiLSTLRv\n24o7B3TmzgGdcbpcpGUUVg+Wmc3RM/kcSc/ngy/T8Pe1E9215lGPdrRr42d16CIizY6KEtXyt2zB\ndJoY0VEUFVdSUOjkyWk3MeLWEKtDExEREZFmystmo0fnNvTo3IbxIyK5UFrBwRO5VW/zOJbD7m8z\n2f1tJgAdQvzdY1FERbTFz0eX4iIizeZM+Morr7Bv3z4MwyAhIYF+/fo16fZbp+6mDPhP2GAKzjp5\n+MGOjPlhaJPGICIiIiLXN38/bwZHORgc5cA0Tc7lllT1ojiWzaGTeXyy5zSf7DmNl82gZ3gbdy+K\nm8ICsGnATBFpgZpFUWLXrl2cOHGCDRs2cPToURISEtiwYUOTxlCachSb3cbGzJu5/+5QJj3QoUm3\nLyIiIiI3FsMw6BDiT4cQf0YNDqfS6eJoen5VL4q0HA6dzOPQyTze//wYgf7e9OlaNRZFn8gQ2gbo\njW/SPJimidNlUul0Uek0qah0UeF0UVnpotLpoqLm0+mistJ0z6tw1ptfeXF5d/ua6e5pVfNN08Rm\nM6r+GAY2A7xsBobNwMsw6szzshkYhoHNVtXGZtRarrpdTZuq+dRdd631XJxGg3mGzai3fhrEUTOv\nHIO8vJI6sdbedu149PaeZlKUSE5O5u677wage/fu5OfnU1RUREBAQJNsf/df9+HKyCcoOpyBgxw8\nOiVcB4eIiIiINCq7l42oiGCiIoKZeEd3Ci6Uc6B6wMyUtBx2HDjHjgPnAOgc2prgQF937wmDqiKH\nYVR/Akb1f2rG0nTPp3abqglVbarb1lrewKheD+5t2aqXqbvNWstfsk2tbQKtW/tSVFSKSdU/bE0T\n93dqfa/6Wf1Z/Z1a393TTRMTwASXu41ZvZ7a36vmuaob15l/uRhq1l/d3qi9rzX5ukTuL+aj7t+B\nx9zXzL9c7muv67/MfV5BycXiQK1CQE1xoKYgUHe+SWWls/rzYtGgJi9Nwe5lw2aAyzRxuao+b2RG\n9d+/V71CiZftckURGsy/ZJGlzm+w2Wx4GQbGJdZh97Jxa28H7ds03Zsnm0VRIisriz59+rh/h4SE\nkJmZecmiRHCwP3a7V6NtP+9UJkEGlA0Ywv9L6Ivdbmu0dd/IQkMDrQ7huqFcfT/K15VTrq6cciUi\nzU2Qvw+3R3fg9ugOmKZJelYxKcdySD2ew+FTeaRnFlsdorQABuBtt2H3smG32/D2stHK1wtv/6p/\noNbMq/tp4O1Vd3rNsjXza+Z5V8+r89vLcLd3f1ZPr39zuKZo5KruseFymdUFi5rv4HS5cJlguqrb\nmBfbOV0mputim4bL11vGhft7zXTTZeJssE3T3Yuk/jp9fL25cKG83nrrbsfT8s5663e5XLhcUOF0\n4ayotZ6amKp/N3bZpqSskol3dG/ktV5asyhK1Gd+RzUsN/dCo25v1BOj+Nj/90z4nyHk5urkfyVC\nQwPJzCy0OozrgnL1/ShfV065unLK1fejAo5I0zMMg/DQAMJDAxhzWwROV9XdbMyLd4o99wqo+o+r\n+vK5/l3/uj0Hqhq5qpep34Ogap558dNDT4Lay7uguk3D3gymadK2rT8F+SUN7+Q36M1Ru5eH554C\n7l4F1O5NUG95avVggLo9F4yGPRjq9DTwsP5rmvt6uW303Lfxp7i4tOE/+j0UDpr7IwQ1f0c2DBrx\nvvQ11dTXHfWLLBcLIFR/d9X6bjYo3tQukJhAj85tmix2aCZFCYfDQVZWlvv3+fPnCQ1tukEmDcNg\n3LTBBLcL0EWriIiIiFjOy2bD6zrvvKuCsHWU+5bFZhjYvAy4Too29TWLU93w4cPZunUrAKmpqTgc\njiYbT0JERERERERErNEsekoMGjSIPn36MGXKFAzDYOHChVaHJCIiIiIiIiLXWLMoSgDMnTvX6hBE\nREREREREpAk1m6KEiIiIyJU4fPgwcXFxzJgxg9jYWGbPnk1ubi4AeXl5DBgwgCeffJIHHniAmJgY\nAIKDg1mxYoWVYYuIiIgHKkqIiIjIdePChQu8/PLLDB061D2tdrHh+eefZ9KkSQBERkaSlJTU5DGK\niIjIlWsWA12KiIiIXAkfHx/efPNNHA5Hg3nHjh2jsLCQfv36WRCZiIiI/DfUU0JERESuG3a7Hbvd\n8+XLn//8Z2JjY92/s7KymD17NufPn2fq1KmMGzfususODvbHbm/896mFhgY2+jrlyin/1lL+raPc\nW0v5v3IqSoiIiMh1r7y8nD179rBo0SIA2rZty5w5cxg3bhyFhYVMmjSJ22+/3WMPixq5uRcaPa7Q\n0EAyMwsbfb1yZZR/ayn/1lHuraX8N3S5Io0e3xAREZHr3ldffVXnsY2AgAAmTpyIt7c3ISEhxMTE\ncOzYMQsjFBEREU9UlBAREZHr3v79++nVq5f7944dO1iyZAlQNTjmoUOHiIyMtCo8ERERuQQ9viEi\nIiLXjZSUFBITE0lPT8dut7N161ZWrlxJZmYmERER7nZDhgzhgw8+YPLkyTidTp544gnCwsIsjFxE\nREQ8UVFCRERErhsxMTEeX/O5YMGCOr/tdjtLly5tqrBERETkv6THN0RERERERETEEipKiIiIiIiI\niIglDNM0TauDEBEREREREZGWRz0lRERERERERMQSKkqIiIiIiIiIiCVUlBARERERERERS6goISIi\nIiIiIiKWUFFCRERERERERCyhooSIiIiIiIiIWMJudQDNwSuvvMK+ffswDIOEhAT69etndUiW2Llz\nJ3PmzKFnz54A3HzzzTz22GP84he/wOl0Ehoayi9/+Ut8fHz46KOPWLduHTabjYceeohJkyZRUVFB\nfHw8Z86cwcvLiyVLlnDTTTdZvFeN7/Dhw8TFxTFjxgxiY2PJyMi46hwdOnSIRYsWARAVFcVLL71k\n7U42kvq5io+PJzU1lbZt2wLw05/+lDvvvFO5Al599VX27NlDZWUlTz75JH379tVxdRn187Vt2zYd\nWx6UlJQQHx9PdnY2ZWVlxMXF0atXLx1bTUTXF9aqf54YPXq01SG1KKWlpfzoRz8iLi6OCRMmWB1O\ni/LRRx/xhz/8AbvdzuzZs7nzzjutDqnFKC4uZt68eeTn51NRUcHPfvYzRo4caXVYzZ/Zwu3cudN8\n4oknTNM0zSNHjpgPPfSQxRFZZ8eOHebTTz9dZ1p8fLz517/+1TRN03zttdfMt99+2ywuLjZHjx5t\nFhQUmCUlJeb9999v5ubmmps2bTIXLVpkmqZpfvHFF+acOXOafB+uteLiYjM2NtacP3++mZSUZJpm\n4+QoNjbW3Ldvn2mapvnss8+an332mQV717g85WrevHnmtm3bGrRr6blKTk42H3vsMdM0TTMnJ8e8\n4447dFxdhqd86djybPPmzebq1atN0zTN06dPm6NHj9ax1UR0fWEtT+cJaVqvv/66OWHCBPP999+3\nOpQWJScnxxw9erRZWFhonjt3zpw/f77VIbUoSUlJ5rJly0zTNM2zZ8+a9957r8URXR9a/OMbycnJ\n3H333QB0796d/Px8ioqKLI6q+di5cyejRo0C4Ic//CHJycns27ePvn37EhgYiJ+fH4MGDWLv3r0k\nJydzzz33ADBs2DD27t1rZejXhI+PD2+++SYOh8M97WpzVF5eTnp6uvsOWs06rneecuWJcgW33HIL\nv/71rwEICgqipKREx9VleMqX0+ls0E75grFjx/L4448DkJGRQVhYmI6tJqLrC2td6XlCro2jR49y\n5MgR3aG3QHJyMkOHDiUgIACHw8HLL79sdUgtSnBwMHl5eQAUFBQQHBxscUTXhxZflMjKyqpzsISE\nhJCZmWlhRNY6cuQIM2fO5OGHH+bf//43JSUl+Pj4ANCuXTsyMzPJysoiJCTEvUxNzmpPt9lsGIZB\neXm5Jftxrdjtdvz8/OpMu9ocZWVlERQU5G5bs47rnadcAbz11ltMnz6dZ555hpycHOUK8PLywt/f\nH4D33nuPH/zgBzquLsNTvry8vHRsXcaUKVOYO3cuCQkJOraaiK4vrHWp84Q0jcTEROLj460Oo0U6\nffo0paWlzJw5k6lTp6po3MTuv/9+zpw5wz333ENsbCzz5s2zOqTrgsaUqMc0TatDsEzXrl2ZNWsW\n9913H6dOnWL69Ol17ipcKjffd/qNrDFydCPnbfz48bRt25bevXuzevVqVq1axcCBA+u0acm5+uc/\n/8l7773HH//4xzrPPuu48qx2vlJSUnRsXcb69es5ePAgzz33XJ1907HVdJQna9Q+T0jT+OCDDxgw\nYMANOa7Y9SIvL49Vq1Zx5swZpk+fzqeffophGFaH1SJ8+OGHdOrUiTVr1nDo0CESEhLYtGmT1WE1\ney2+p4TD4SArK8v9+/z584SGhloYkXXCwsIYO3YshmEQERFB+/btyc/Pp7S0FIBz587hcDg85qxm\nes1doIqKCkzTdN+Nu5H5+/tfVY5CQ0Pd3bxqr+NGNHToUHr37g3AXXfdxeHDh5Wral988QW/+93v\nePPNNwkMDNRx9R3q50vHlmcpKSlkZGQA0Lt3b5xOJ61bt9ax1QR0fWG9+ucJaRqfffYZn3zyCQ89\n9BAbN27kN7/5Ddu3b7c6rBajXbt2DBw4ELvdTkREBK1btyYnJ8fqsFqMvXv3MmLECAB69erF+fPn\n9ejYFWjxRYnhw4ezdetWAFJTU3E4HAQEBFgclTU++ugj1qxZA0BmZibZ2dlMmDDBnZ+///3vjBw5\nkv79+7N//34KCgooLi5m7969DBkyhOHDh7NlyxYAPv30U2677TbL9qUpDRs27Kpy5O3tTbdu3di9\ne3edddyInn76aU6dOgVUjcXRs2dP5QooLCzk1Vdf5fe//7377RE6ri7NU750bHm2e/du9x3irKws\nLly4oGOriej6wlqezhPSNJYvX87777/Pu+++y6RJk4iLi2PYsGFWh9VijBgxgh07duByucjNzeXC\nhQsa16AJdenShX379gGQnp5O69at9ejYFTBM9Sdk2bJl7N69G8MwWLhwIb169bI6JEsUFRUxd+5c\nCgoKqKioYNasWfTu3Zt58+ZRVlZGp06dWLJkCd7e3mzZsoU1a9ZgGAaxsbGMGzcOp9PJ/PnzOX78\nOD4+PixdupSOHTtavVuNKiUlhcTERNLT07Hb7YSFhbFs2TLi4+OvKkdHjhzhxRdfxOVy0b9/f55/\n/nmrd/WqecpVbGwsq1evplWrVvj7+7NkyRLatWvX4nO1YcMGVq5cSWRkpHva0qVLmT9/vo4rDzzl\na8KECbz11ls6tuopLS3lhRdeICMjg9LSUmbNmkVMTMxVn9dvxFxdC7q+sI6n80RiYiKdOnWyMKqW\nZ+XKlXTu3FmvBG1i69ev57333gPgqaeecg9uLNdecXExCQkJZGdnU1lZyZw5cxg6dKjVYTV7KkqI\niIiIiIiIiCVa/OMbIiIiIiIiImINFSVERERERERExBIqSoiIiIiIiIiIJVSUEBERERERERFLqCgh\nIiIiIiIiIpZQUUJErqlp06axffv2y7b5+OOPcblc7vZOp7MpQhMRERELnD59mpiYGKZNm8a0adOY\nMmUKP//5zykoKLjidXzf64WHH36YnTt3/jfhisg1pqKEiFhu5cqV7qJEUlISXl5eFkckIiIi11JI\nSAhJSUkkJSWxfv16HA4Hv/3tb694eV0viNw47FYHICLW2rlzJ8uXL6dTp06kp6cTGBjIr371K7Zs\n2cL69etp1aoV7dq1Y/HixQQEBBAdHU1cXBw7d+6kuLiYpUuXcvPNN3PXXXfxpz/9iS5durjX+c47\n77i343K5WLhwIceOHaO8vJz+/fszf/58VqxYwYkTJ5gxYwarVq3itttuIzU1lfLychYsWMDZs2ep\nrKxk/PjxTJ06lU2bNrF9+3ZcLhdpaWl07tyZlStXYhiGhVkUERGRq3HLLbewYcMGDh06RGJiIpWV\nlVRUVPDiiy8SHR3NtGnT6NWrFwcPHmTdunVER0df9nqhpKSEZ555htzcXLp06UJZWRkA586dY+7c\nuQCUlpYyefJkfvzjH1u56yItnooSIkJqairLly8nLCyM5557jrVr17Jx40Y2b95MQEAAiYmJrF27\nllmzZuF0OunZsyezZs1i48aNrFixglWrVn3nNvLz84mKiuLll18GYMyYMRw+fJjZs2fzxhtvsHbt\nWuz2i6ekpKQkgoKCeO211ygtLWXs2LGMHDkSgK+//prNmzfj6+vLPffcw8GDB4mOjr42yREREZFr\nyul08o9//IPBgwfz3HPP8cYbbxAREcGhQ4dISEhg06ZNAPj7+/PWW2/VWfZS1wvbt2/Hz8+PDRs2\ncP78eUaNGgXA3/72N7p168ZLL71EWVkZGzdubPL9FZG6VJQQEXr06EFYWBgAgwYNYt26dfTp04eA\ngAAAbr31VtavX+9uP2LECHfbNWvWXNE2goKCyMjIYPLkyfj4+JCZmUlubu4l2+/bt48JEyYA4Ofn\nR0xMDKmpqQD069cPPz8/ADp27Eh+fv733GMRERGxUk5ODtOmTQOqelMOGTKEiRMnsmLFCl544QV3\nu6KiIvcjnoMGDWqwnktdLxw+fJjBgwcD4HA46NatGwAjR47kL3/5C/Hx8dxxxx1Mnjz5mu6niHw3\nFSVEBNM063wvLy9vML/24xG123t6bKKioqLBtM2bN7N//37efvtt7Ha7+wLiUuqvt3YM9Z8hrR2P\niIiINH81Y0rUVlhYiLe3d4PpNby9vRtMu9T1gmma2GwXh8+rKWx0796dzZs389VXX7FlyxbWrVtX\n58aLiDQ9DXQpIhw7dozz588DsGfPHiZOnEhqaipFRUUAbN++nf79+7vb79ixw902KirVm9YeAAAB\nx0lEQVQKgICAADIyMurMry07O5vIyEjsdjspKSmcPHnSXfwwDIPKyso67fv3788XX3wBwIULF0hN\nTaVPnz6NudsiIiLSjAQGBhIeHs7nn38OQFpa2nc+Inqp64Xu3bvz9ddfA5CRkUFaWhpQ9cav/fv3\nM2zYMBYuXEhGRkaDaxARaVrqKSEi9OjRg9dff50TJ07Qpk0bHnnkETp27MgjjzyCj48PHTp04Nln\nn3W3P3DgAO+88w75+fkkJiYC8Oijj/LCCy/QtWtXj90rx4wZw8yZM4mNjWXQoEE8+uijLF68mHff\nfZeRI0cyceLEOqNuT5s2jQULFvCTn/yE8vJy4uLiCA8PZ9euXdc+ISIiImKJxMREFi9ezOrVq6ms\nrCQ+Pv6y7S91vTB+/Hi2bdvG1KlTCQ8Pp2/fvkDVNc/ChQvx8fHBNE0ef/zxOmNaiUjTM0z1exZp\n0Ty9KeNyoqKiSE1N1f/ARURERETkqunxDRERERERERGxhHpKiIiIiIiIiIgl1FNCRERERERERCyh\nooSIiIiIiIiIWEJFCRERERERERGxhIoSIiIiIiIiImIJFSVERERERERExBIqSoiIiIiIiIiIJf4/\n1M4bHKTs75EAAAAASUVORK5CYII=\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "ci1ISxxrZ7v0",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below for one possible solution."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "SjdQQCduZ7BV",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "train_model(\n",
+ " learning_rate=0.00002,\n",
+ " steps=1000,\n",
+ " batch_size=5,\n",
+ " input_feature=\"population\"\n",
+ ")"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ }
+ ]
+}
\ No newline at end of file
From 00406f09cecb5e53890f96ca47983dd889141a90 Mon Sep 17 00:00:00 2001
From: Aditya Joardar <30207466+joardar-aditya@users.noreply.github.com>
Date: Mon, 18 Feb 2019 00:11:51 +0530
Subject: [PATCH 10/13] synthetic features and outliers solved
---
Copy_of_synthetic_features_and_outliers.ipynb | 1398 +++++++++++++++++
1 file changed, 1398 insertions(+)
create mode 100644 Copy_of_synthetic_features_and_outliers.ipynb
diff --git a/Copy_of_synthetic_features_and_outliers.ipynb b/Copy_of_synthetic_features_and_outliers.ipynb
new file mode 100644
index 0000000..ceb2ed1
--- /dev/null
+++ b/Copy_of_synthetic_features_and_outliers.ipynb
@@ -0,0 +1,1398 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "name": "Copy of synthetic_features_and_outliers.ipynb",
+ "version": "0.3.2",
+ "provenance": [],
+ "collapsed_sections": [
+ "JndnmDMp66FL",
+ "i5Ul3zf5QYvW",
+ "jByCP8hDRZmM",
+ "WvgxW0bUSC-c"
+ ],
+ "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": "4f3CKqFUqL2-",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "# Synthetic Features and Outliers"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "jnKgkN5fHbGy",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "**Learning Objectives:**\n",
+ " * Create a synthetic feature that is the ratio of two other features\n",
+ " * Use this new feature as an input to a linear regression model\n",
+ " * Improve the effectiveness of the model by identifying and clipping (removing) outliers out of the input data"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "VOpLo5dcHbG0",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Let's revisit our model from the previous First Steps with TensorFlow exercise. \n",
+ "\n",
+ "First, we'll import the California housing data into a *pandas* `DataFrame`:"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "S8gm6BpqRRuh",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Setup"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "9D8GgUovHbG0",
+ "colab_type": "code",
+ "outputId": "cfced8aa-fd63-4c2f-eafd-13976c87fddf",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 424
+ }
+ },
+ "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",
+ "import matplotlib.pyplot as plt\n",
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "import sklearn.metrics as 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))\n",
+ "california_housing_dataframe[\"median_house_value\"] /= 1000.0\n",
+ "california_housing_dataframe"
+ ],
+ "execution_count": 0,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " longitude \n",
+ " latitude \n",
+ " housing_median_age \n",
+ " total_rooms \n",
+ " total_bedrooms \n",
+ " population \n",
+ " households \n",
+ " median_income \n",
+ " median_house_value \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 11441 \n",
+ " -121.2 \n",
+ " 38.8 \n",
+ " 5.0 \n",
+ " 9137.0 \n",
+ " 1368.0 \n",
+ " 3667.0 \n",
+ " 1294.0 \n",
+ " 5.5 \n",
+ " 229.6 \n",
+ " \n",
+ " \n",
+ " 1033 \n",
+ " -117.1 \n",
+ " 32.7 \n",
+ " 47.0 \n",
+ " 771.0 \n",
+ " 224.0 \n",
+ " 637.0 \n",
+ " 212.0 \n",
+ " 2.0 \n",
+ " 90.3 \n",
+ " \n",
+ " \n",
+ " 2208 \n",
+ " -117.4 \n",
+ " 34.1 \n",
+ " 7.0 \n",
+ " 5059.0 \n",
+ " 780.0 \n",
+ " 3253.0 \n",
+ " 801.0 \n",
+ " 4.9 \n",
+ " 140.5 \n",
+ " \n",
+ " \n",
+ " 14787 \n",
+ " -122.2 \n",
+ " 37.5 \n",
+ " 40.0 \n",
+ " 2959.0 \n",
+ " 389.0 \n",
+ " 985.0 \n",
+ " 365.0 \n",
+ " 9.9 \n",
+ " 500.0 \n",
+ " \n",
+ " \n",
+ " 7482 \n",
+ " -118.4 \n",
+ " 34.1 \n",
+ " 36.0 \n",
+ " 2963.0 \n",
+ " 838.0 \n",
+ " 1129.0 \n",
+ " 745.0 \n",
+ " 2.6 \n",
+ " 500.0 \n",
+ " \n",
+ " \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " \n",
+ " \n",
+ " 709 \n",
+ " -117.0 \n",
+ " 32.8 \n",
+ " 37.0 \n",
+ " 1184.0 \n",
+ " 178.0 \n",
+ " 529.0 \n",
+ " 192.0 \n",
+ " 4.8 \n",
+ " 161.7 \n",
+ " \n",
+ " \n",
+ " 9642 \n",
+ " -119.5 \n",
+ " 36.7 \n",
+ " 19.0 \n",
+ " 3351.0 \n",
+ " 589.0 \n",
+ " 1578.0 \n",
+ " 542.0 \n",
+ " 3.3 \n",
+ " 160.1 \n",
+ " \n",
+ " \n",
+ " 3619 \n",
+ " -117.9 \n",
+ " 34.6 \n",
+ " 7.0 \n",
+ " 681.0 \n",
+ " 125.0 \n",
+ " 485.0 \n",
+ " 104.0 \n",
+ " 2.7 \n",
+ " 125.6 \n",
+ " \n",
+ " \n",
+ " 671 \n",
+ " -117.0 \n",
+ " 32.6 \n",
+ " 5.0 \n",
+ " 2329.0 \n",
+ " 542.0 \n",
+ " 1213.0 \n",
+ " 514.0 \n",
+ " 4.0 \n",
+ " 225.6 \n",
+ " \n",
+ " \n",
+ " 16215 \n",
+ " -122.5 \n",
+ " 37.8 \n",
+ " 50.0 \n",
+ " 2159.0 \n",
+ " 437.0 \n",
+ " 1111.0 \n",
+ " 417.0 \n",
+ " 3.6 \n",
+ " 346.4 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
17000 rows × 9 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " longitude latitude housing_median_age total_rooms total_bedrooms \\\n",
+ "11441 -121.2 38.8 5.0 9137.0 1368.0 \n",
+ "1033 -117.1 32.7 47.0 771.0 224.0 \n",
+ "2208 -117.4 34.1 7.0 5059.0 780.0 \n",
+ "14787 -122.2 37.5 40.0 2959.0 389.0 \n",
+ "7482 -118.4 34.1 36.0 2963.0 838.0 \n",
+ "... ... ... ... ... ... \n",
+ "709 -117.0 32.8 37.0 1184.0 178.0 \n",
+ "9642 -119.5 36.7 19.0 3351.0 589.0 \n",
+ "3619 -117.9 34.6 7.0 681.0 125.0 \n",
+ "671 -117.0 32.6 5.0 2329.0 542.0 \n",
+ "16215 -122.5 37.8 50.0 2159.0 437.0 \n",
+ "\n",
+ " population households median_income median_house_value \n",
+ "11441 3667.0 1294.0 5.5 229.6 \n",
+ "1033 637.0 212.0 2.0 90.3 \n",
+ "2208 3253.0 801.0 4.9 140.5 \n",
+ "14787 985.0 365.0 9.9 500.0 \n",
+ "7482 1129.0 745.0 2.6 500.0 \n",
+ "... ... ... ... ... \n",
+ "709 529.0 192.0 4.8 161.7 \n",
+ "9642 1578.0 542.0 3.3 160.1 \n",
+ "3619 485.0 104.0 2.7 125.6 \n",
+ "671 1213.0 514.0 4.0 225.6 \n",
+ "16215 1111.0 417.0 3.6 346.4 \n",
+ "\n",
+ "[17000 rows x 9 columns]"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 8
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "I6kNgrwCO_ms",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Next, we'll set up our input function, and define the function for model training:"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "5RpTJER9XDub",
+ "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": "VgQPftrpHbG3",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def train_model(learning_rate, steps, batch_size, input_feature):\n",
+ " \"\"\"Trains a linear regression model.\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",
+ " Returns:\n",
+ " A Pandas `DataFrame` containing targets and the corresponding predictions done\n",
+ " after training the model.\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]].astype('float32')\n",
+ " my_label = \"median_house_value\"\n",
+ " targets = california_housing_dataframe[my_label].astype('float32')\n",
+ "\n",
+ " # Create input functions.\n",
+ " training_input_fn = lambda: my_input_fn(my_feature_data, targets, batch_size=batch_size)\n",
+ " predict_training_input_fn = lambda: my_input_fn(my_feature_data, targets, num_epochs=1, shuffle=False)\n",
+ " \n",
+ " # Create feature columns.\n",
+ " feature_columns = [tf.feature_column.numeric_column(my_feature)]\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=predict_training_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",
+ " # Create 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)\n",
+ " \n",
+ " return calibration_data"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "FJ6xUNVRm-do",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Task 1: Try a Synthetic Feature\n",
+ "\n",
+ "Both the `total_rooms` and `population` features count totals for a given city block.\n",
+ "\n",
+ "But what if one city block were more densely populated than another? We can explore how block density relates to median house value by creating a synthetic feature that's a ratio of `total_rooms` and `population`.\n",
+ "\n",
+ "In the cell below, create a feature called `rooms_per_person`, and use that as the `input_feature` to `train_model()`.\n",
+ "\n",
+ "What's the best performance you can get with this single feature by tweaking the learning rate? (The better the performance, the better your regression line should fit the data, and the lower\n",
+ "the final RMSE should be.)"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "isONN2XK32Wo",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "**NOTE**: You may find it helpful to add a few code cells below so you can try out several different learning rates and compare the results. To add a new code cell, hover your cursor directly below the center of this cell, and click **CODE**."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "5ihcVutnnu1D",
+ "colab_type": "code",
+ "cellView": "both",
+ "outputId": "f6c044bc-ea13-4960-aa32-7d190d435cea",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1384
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "#\n",
+ "# YOUR CODE HERE\n",
+ "#\n",
+ "california_housing_dataframe[\"rooms_per_person\"] = california_housing_dataframe[\"total_rooms\"]/california_housing_dataframe[\"population\"]\n",
+ "\n",
+ "calibration_data = train_model(\n",
+ " learning_rate=0.00005,\n",
+ " steps=500,\n",
+ " batch_size=5,\n",
+ " input_feature=\"rooms_per_person\"\n",
+ ")\n",
+ "california_housing_dataframe"
+ ],
+ "execution_count": 0,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 237.51\n",
+ " period 01 : 237.49\n",
+ " period 02 : 237.46\n",
+ " period 03 : 237.44\n",
+ " period 04 : 237.41\n",
+ " period 05 : 237.39\n",
+ " period 06 : 237.36\n",
+ " period 07 : 237.34\n",
+ " period 08 : 237.31\n",
+ " period 09 : 237.29\n",
+ "Model training finished.\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " predictions targets\n",
+ "count 17000.0 17000.0\n",
+ "mean 0.3 207.3\n",
+ "std 0.1 116.0\n",
+ "min 0.1 15.0\n",
+ "25% 0.2 119.4\n",
+ "50% 0.3 180.4\n",
+ "75% 0.3 265.0\n",
+ "max 6.2 500.0"
+ ],
+ "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.3 \n",
+ " 207.3 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 0.1 \n",
+ " 116.0 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 0.1 \n",
+ " 15.0 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 0.2 \n",
+ " 119.4 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 0.3 \n",
+ " 180.4 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 0.3 \n",
+ " 265.0 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 6.2 \n",
+ " 500.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ },
+ {
+ "output_type": "stream",
+ "text": [
+ "Final RMSE (on training data): 237.29\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " longitude \n",
+ " latitude \n",
+ " housing_median_age \n",
+ " total_rooms \n",
+ " total_bedrooms \n",
+ " population \n",
+ " households \n",
+ " median_income \n",
+ " median_house_value \n",
+ " rooms_per_person \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 11441 \n",
+ " -121.2 \n",
+ " 38.8 \n",
+ " 5.0 \n",
+ " 9137.0 \n",
+ " 1368.0 \n",
+ " 3667.0 \n",
+ " 1294.0 \n",
+ " 5.5 \n",
+ " 229.6 \n",
+ " 2.5 \n",
+ " \n",
+ " \n",
+ " 1033 \n",
+ " -117.1 \n",
+ " 32.7 \n",
+ " 47.0 \n",
+ " 771.0 \n",
+ " 224.0 \n",
+ " 637.0 \n",
+ " 212.0 \n",
+ " 2.0 \n",
+ " 90.3 \n",
+ " 1.2 \n",
+ " \n",
+ " \n",
+ " 2208 \n",
+ " -117.4 \n",
+ " 34.1 \n",
+ " 7.0 \n",
+ " 5059.0 \n",
+ " 780.0 \n",
+ " 3253.0 \n",
+ " 801.0 \n",
+ " 4.9 \n",
+ " 140.5 \n",
+ " 1.6 \n",
+ " \n",
+ " \n",
+ " 14787 \n",
+ " -122.2 \n",
+ " 37.5 \n",
+ " 40.0 \n",
+ " 2959.0 \n",
+ " 389.0 \n",
+ " 985.0 \n",
+ " 365.0 \n",
+ " 9.9 \n",
+ " 500.0 \n",
+ " 3.0 \n",
+ " \n",
+ " \n",
+ " 7482 \n",
+ " -118.4 \n",
+ " 34.1 \n",
+ " 36.0 \n",
+ " 2963.0 \n",
+ " 838.0 \n",
+ " 1129.0 \n",
+ " 745.0 \n",
+ " 2.6 \n",
+ " 500.0 \n",
+ " 2.6 \n",
+ " \n",
+ " \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " \n",
+ " \n",
+ " 709 \n",
+ " -117.0 \n",
+ " 32.8 \n",
+ " 37.0 \n",
+ " 1184.0 \n",
+ " 178.0 \n",
+ " 529.0 \n",
+ " 192.0 \n",
+ " 4.8 \n",
+ " 161.7 \n",
+ " 2.2 \n",
+ " \n",
+ " \n",
+ " 9642 \n",
+ " -119.5 \n",
+ " 36.7 \n",
+ " 19.0 \n",
+ " 3351.0 \n",
+ " 589.0 \n",
+ " 1578.0 \n",
+ " 542.0 \n",
+ " 3.3 \n",
+ " 160.1 \n",
+ " 2.1 \n",
+ " \n",
+ " \n",
+ " 3619 \n",
+ " -117.9 \n",
+ " 34.6 \n",
+ " 7.0 \n",
+ " 681.0 \n",
+ " 125.0 \n",
+ " 485.0 \n",
+ " 104.0 \n",
+ " 2.7 \n",
+ " 125.6 \n",
+ " 1.4 \n",
+ " \n",
+ " \n",
+ " 671 \n",
+ " -117.0 \n",
+ " 32.6 \n",
+ " 5.0 \n",
+ " 2329.0 \n",
+ " 542.0 \n",
+ " 1213.0 \n",
+ " 514.0 \n",
+ " 4.0 \n",
+ " 225.6 \n",
+ " 1.9 \n",
+ " \n",
+ " \n",
+ " 16215 \n",
+ " -122.5 \n",
+ " 37.8 \n",
+ " 50.0 \n",
+ " 2159.0 \n",
+ " 437.0 \n",
+ " 1111.0 \n",
+ " 417.0 \n",
+ " 3.6 \n",
+ " 346.4 \n",
+ " 1.9 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
17000 rows × 10 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " longitude latitude housing_median_age total_rooms total_bedrooms \\\n",
+ "11441 -121.2 38.8 5.0 9137.0 1368.0 \n",
+ "1033 -117.1 32.7 47.0 771.0 224.0 \n",
+ "2208 -117.4 34.1 7.0 5059.0 780.0 \n",
+ "14787 -122.2 37.5 40.0 2959.0 389.0 \n",
+ "7482 -118.4 34.1 36.0 2963.0 838.0 \n",
+ "... ... ... ... ... ... \n",
+ "709 -117.0 32.8 37.0 1184.0 178.0 \n",
+ "9642 -119.5 36.7 19.0 3351.0 589.0 \n",
+ "3619 -117.9 34.6 7.0 681.0 125.0 \n",
+ "671 -117.0 32.6 5.0 2329.0 542.0 \n",
+ "16215 -122.5 37.8 50.0 2159.0 437.0 \n",
+ "\n",
+ " population households median_income median_house_value \\\n",
+ "11441 3667.0 1294.0 5.5 229.6 \n",
+ "1033 637.0 212.0 2.0 90.3 \n",
+ "2208 3253.0 801.0 4.9 140.5 \n",
+ "14787 985.0 365.0 9.9 500.0 \n",
+ "7482 1129.0 745.0 2.6 500.0 \n",
+ "... ... ... ... ... \n",
+ "709 529.0 192.0 4.8 161.7 \n",
+ "9642 1578.0 542.0 3.3 160.1 \n",
+ "3619 485.0 104.0 2.7 125.6 \n",
+ "671 1213.0 514.0 4.0 225.6 \n",
+ "16215 1111.0 417.0 3.6 346.4 \n",
+ "\n",
+ " rooms_per_person \n",
+ "11441 2.5 \n",
+ "1033 1.2 \n",
+ "2208 1.6 \n",
+ "14787 3.0 \n",
+ "7482 2.6 \n",
+ "... ... \n",
+ "709 2.2 \n",
+ "9642 2.1 \n",
+ "3619 1.4 \n",
+ "671 1.9 \n",
+ "16215 1.9 \n",
+ "\n",
+ "[17000 rows x 10 columns]"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 19
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\nZqYuXbokh8OhvXv3Kj4+XomJidqyZYsuXLggSXr//fe1b9++Gzq/48ePKzc3V5K0Z88excfH69Zb\nb9X+/fuVl5cnqayJ5oYNGyrt++mnn+rAgQMaOHCgUlNTdebMGRUXF6tnz5768ssvJUlff/21wsPD\nFRERcUNxAQCAmgkLC1O7du30xRdfSJJOnDih2bNne93HU30nLi7OVbc4c+aMTpw4IclzHQCA/6Cl\nBNBAJCcna9q0aXrooYdUVFSkKVOmqF27dmrTpo327t2rcePGqbS0VMOHD1efPn2qNU1Whw4dNGfO\nHGVkZMhut6tDhw6mTSndde3aVc8++6yys7N10003afDgwbLZbHrooYeUnJysJk2aKDo6WqNHj9aP\nP/5Y7fPr0qWLXnvtNZ08eVItWrTQqFGjFBISoueee06PPPKImjZtquDgYM2cOdN039TUVNntdjkc\nDk2aNEmBgYGaNm2aUlNTtXTpUhUXFystLa3a8QAAgF9u5syZmj59uhYsWKDi4mJNnTrV6/ae6jv3\n3XefPv/8c40fP17t2rXTrbfeKslzHQCA/zActEkG4CMrV67Utm3b9Oqrr/q0XOfsG0uXLvVpuQAA\nAACsRZoQwA1Zv369lixZYrru/vvvr3G5+/bt02uvvWa6LikpqcblAgAAAPBftJQAAAAAAACWYKBL\nAAAAAABgCZISAAAAAADAEiQlAAAAAACAJUhKAAAAAAAAS5CUAAAAAAAAliApAQAAAAAALPE/g8Sp\n0hf2dNUAAAAASUVORK5CYII=\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "i5Ul3zf5QYvW",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below for a solution."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "Leaz2oYMQcBf",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "california_housing_dataframe[\"rooms_per_person\"] = (\n",
+ " california_housing_dataframe[\"total_rooms\"] / california_housing_dataframe[\"population\"])\n",
+ "\n",
+ "calibration_data = train_model(\n",
+ " learning_rate=0.05,\n",
+ " steps=500,\n",
+ " batch_size=5,\n",
+ " input_feature=\"rooms_per_person\")"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "ZjQrZ8mcHFiU",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Task 2: Identify Outliers\n",
+ "\n",
+ "We can visualize the performance of our model by creating a scatter plot of predictions vs. target values. Ideally, these would lie on a perfectly correlated diagonal line.\n",
+ "\n",
+ "Use Pyplot's [`scatter()`](https://matplotlib.org/gallery/shapes_and_collections/scatter.html) to create a scatter plot of predictions vs. targets, using the rooms-per-person model you trained in Task 1.\n",
+ "\n",
+ "Do you see any oddities? Trace these back to the source data by looking at the distribution of values in `rooms_per_person`."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "P0BDOec4HbG_",
+ "colab_type": "code",
+ "outputId": "970d1490-b35c-4eaf-9081-299ef4778234",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 2397
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "calibration_data = train_model(\n",
+ " learning_rate=0.00005,\n",
+ " steps=500,\n",
+ " batch_size=5,\n",
+ " input_feature=\"rooms_per_person\"\n",
+ ")\n",
+ "plt.scatter(calibration_data[\"predictions\"],calibration_data[\"target\"])"
+ ],
+ "execution_count": 0,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 237.51\n",
+ " period 01 : 237.49\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "error",
+ "ename": "KeyboardInterrupt",
+ "evalue": "ignored",
+ "traceback": [
+ "\u001b[0;31m\u001b[0m",
+ "\u001b[0;31mKeyboardInterrupt\u001b[0mTraceback (most recent call last)",
+ "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0msteps\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m500\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mbatch_size\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0minput_feature\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"rooms_per_person\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m )\n\u001b[1;32m 7\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mscatter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcalibration_data\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"predictions\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mcalibration_data\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"target\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m\u001b[0m in \u001b[0;36mtrain_model\u001b[0;34m(learning_rate, steps, batch_size, input_feature)\u001b[0m\n\u001b[1;32m 61\u001b[0m \u001b[0;31m# Take a break and compute predictions.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 62\u001b[0m \u001b[0mpredictions\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlinear_regressor\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput_fn\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mpredict_training_input_fn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 63\u001b[0;31m \u001b[0mpredictions\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mitem\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'predictions'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mitem\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mpredictions\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 64\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 65\u001b[0m \u001b[0;31m# Compute loss.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.pyc\u001b[0m in \u001b[0;36mpredict\u001b[0;34m(self, input_fn, predict_keys, hooks, checkpoint_path, yield_single_examples)\u001b[0m\n\u001b[1;32m 593\u001b[0m hooks=all_hooks) as mon_sess:\n\u001b[1;32m 594\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mmon_sess\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshould_stop\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 595\u001b[0;31m \u001b[0mpreds_evaluated\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmon_sess\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpredictions\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 596\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0myield_single_examples\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 597\u001b[0m \u001b[0;32myield\u001b[0m \u001b[0mpreds_evaluated\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/monitored_session.pyc\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m 669\u001b[0m \u001b[0mfeed_dict\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfeed_dict\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 670\u001b[0m \u001b[0moptions\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0moptions\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 671\u001b[0;31m run_metadata=run_metadata)\n\u001b[0m\u001b[1;32m 672\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 673\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mrun_step_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstep_fn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/monitored_session.pyc\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m 1154\u001b[0m \u001b[0mfeed_dict\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfeed_dict\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1155\u001b[0m \u001b[0moptions\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0moptions\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1156\u001b[0;31m run_metadata=run_metadata)\n\u001b[0m\u001b[1;32m 1157\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0m_PREEMPTION_ERRORS\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1158\u001b[0m logging.info('An error was raised. This may be due to a preemption in '\n",
+ "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/monitored_session.pyc\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1238\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1239\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1240\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sess\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1241\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0m_PREEMPTION_ERRORS\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1242\u001b[0m \u001b[0;32mraise\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/monitored_session.pyc\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m 1310\u001b[0m \u001b[0mfeed_dict\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfeed_dict\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1311\u001b[0m \u001b[0moptions\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0moptions\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1312\u001b[0;31m run_metadata=run_metadata)\n\u001b[0m\u001b[1;32m 1313\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1314\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mhook\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_hooks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/monitored_session.pyc\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1074\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1075\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1076\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_sess\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1077\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1078\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mrun_step_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstep_fn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mraw_session\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrun_with_hooks\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.pyc\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m 927\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 928\u001b[0m result = self._run(None, fetches, feed_dict, options_ptr,\n\u001b[0;32m--> 929\u001b[0;31m run_metadata_ptr)\n\u001b[0m\u001b[1;32m 930\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mrun_metadata\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 931\u001b[0m \u001b[0mproto_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf_session\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTF_GetBuffer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrun_metadata_ptr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.pyc\u001b[0m in \u001b[0;36m_run\u001b[0;34m(self, handle, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m 1150\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mfinal_fetches\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mfinal_targets\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mhandle\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mfeed_dict_tensor\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1151\u001b[0m results = self._do_run(handle, final_targets, final_fetches,\n\u001b[0;32m-> 1152\u001b[0;31m feed_dict_tensor, options, run_metadata)\n\u001b[0m\u001b[1;32m 1153\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1154\u001b[0m \u001b[0mresults\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.pyc\u001b[0m in \u001b[0;36m_do_run\u001b[0;34m(self, handle, target_list, fetch_list, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m 1326\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhandle\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1327\u001b[0m return self._do_call(_run_fn, feeds, fetches, targets, options,\n\u001b[0;32m-> 1328\u001b[0;31m run_metadata)\n\u001b[0m\u001b[1;32m 1329\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1330\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_do_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_prun_fn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhandle\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfeeds\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfetches\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.pyc\u001b[0m in \u001b[0;36m_do_call\u001b[0;34m(self, fn, *args)\u001b[0m\n\u001b[1;32m 1332\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_do_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1333\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1334\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1335\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0merrors\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mOpError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1336\u001b[0m \u001b[0mmessage\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcompat\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mas_text\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmessage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.pyc\u001b[0m in \u001b[0;36m_run_fn\u001b[0;34m(feed_dict, fetch_list, target_list, options, run_metadata)\u001b[0m\n\u001b[1;32m 1317\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_extend_graph\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1318\u001b[0m return self._call_tf_sessionrun(\n\u001b[0;32m-> 1319\u001b[0;31m options, feed_dict, fetch_list, target_list, run_metadata)\n\u001b[0m\u001b[1;32m 1320\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1321\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_prun_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhandle\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfeed_dict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfetch_list\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.pyc\u001b[0m in \u001b[0;36m_call_tf_sessionrun\u001b[0;34m(self, options, feed_dict, fetch_list, target_list, run_metadata)\u001b[0m\n\u001b[1;32m 1405\u001b[0m return tf_session.TF_SessionRun_wrapper(\n\u001b[1;32m 1406\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_session\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0moptions\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfeed_dict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfetch_list\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget_list\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1407\u001b[0;31m run_metadata)\n\u001b[0m\u001b[1;32m 1408\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1409\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_call_tf_sessionprun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhandle\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfeed_dict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfetch_list\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+ "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
+ ]
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "jByCP8hDRZmM",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below for the solution."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "s0tiX2gdRe-S",
+ "colab_type": "code",
+ "outputId": "56e6c703-2e13-4b50-98bb-ad0772336506",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 392
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "plt.figure(figsize=(15, 6))\n",
+ "plt.subplot(1, 2, 1)\n",
+ "plt.scatter(calibration_data[\"predictions\"], calibration_data[\"targets\"])"
+ ],
+ "execution_count": 0,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 16
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\nkxUSifRlDgKBUM7H9nic8Pn6c/58odPz/en53gDen9bx/pQ9dyqyTs15vV74/f7h33d2dsLjSV0x\nmoiICJA5EK1evRp79+4FALz77rvwer2S03JERESAzFNz1dXVWLRoEbZv3w6DwYDvf//7ch6eiIh0\nSPY1ogcffFDuQxIRkbjaTbMAAAQVSURBVI4ZEpkyCoiIiBSkq+rbRESkPQxERESkKgYiIiJSFQMR\nERGpioGIiIhUxUBERESq0lwg+slPfoJt27Zh+/btOH78uNqXI7vW1lbU1tbiueeeU/tSFPH4449j\n27Zt2Lx5M/bt26f25cgqHA7j/vvvxx133IGtW7fiwIEDal+SIiKRCGpra/HnP/9Z7UuR1eHDh3HD\nDTdgx44d2LFjB370ox+pfUmy27NnD770pS/hK1/5Cg4ePKj25QzTVIdWvfc7CoVC+NGPfoSVK1eq\nfSmKaGpqwunTp1FfX49AIIAvf/nL+MIXvqD2ZcnmwIEDWLx4Me6++260t7fjzjvvxNq1a9W+LNn9\n+te/RmlpqdqXoYjrrrsOTz75pNqXoYhAIICnnnoKL774IkKhEH75y1/ipptuUvuyAGgsEEn1O9JL\nPTur1YqdO3di586dal+KIq699trhjr0lJSUIh8MQRREmU+6tQArJLbfcMvzrjo4OTJ8+XcWrUcaZ\nM2fQ1tZWMA8wyt6hQ4ewcuVKOBwOOByOghrxaWpqzu/3w+VyDf8+2e9IL8xmM+x2u9qXoRiTyYTi\n4mIAQENDAz7/+c/rJgiNtH37djz44IN4+OGH1b4U2T322GN46KGH1L4MxbS1teGee+7B7bffjjfe\neEPty5HVuXPnEIlEcM8996Curg6HDh1S+5KGaWpENBarE2lTY2MjGhoasGvXLrUvRRHPP/883n//\nfXzrW9/Cnj17YDAY1L4kWbz00ktYvnw5Zs+erfalKOKKK67Afffdh40bN+Ls2bP46le/in379sFq\ntap9abLp6enBr371K5w/fx5f/epXceDAgYL4/1NTgYj9jrTvtddew29+8xv89re/hdNZWF0iJ+vk\nyZMoLy/HzJkzsXDhQoiiiO7ubpSXl6t9abI4ePAgzp49i4MHD+LChQuwWq2YMWMGVq1apfalyWL6\n9OnD06tz5sxBRUUFLl68qJvAW15ejhUrVsBsNmPOnDmYNm1awfz/qampOfY70rb+/n48/vjjePrp\np1FWVqb25cjuyJEjw6M8v9+PUCg0aipZ637xi1/gxRdfxJ/+9Cds3boV3/jGN3QThIChjLJnnnkG\nAODz+dDV1aWrdb7Pfe5zaGpqQjweRyAQKKj/PzU1ItJ7v6OTJ0/iscceQ3t7O8xmM/bu3Ytf/vKX\nunlov/zyywgEAvjmN785/Npjjz2GWbNmqXhV8tm+fTu+973voa6uDpFIBI8++iiMRk1915vS1q1b\nhwcffBCvvPIKYrEYfvCDH+hqWm769OnYsGEDbrvtNgDAI488UjD/f7INBBERqaowwiEREU1ZDERE\nRKQqBiIiIlIVAxEREamKgYiIiFTFQERERKpiICIiIlUxEBERkar+f0WA+F6xIfZtAAAAAElFTkSu\nQmCC\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": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "plt.subplot(1, 2, 2)\n",
+ "_ = california_housing_dataframe[\"rooms_per_person\"].hist()"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "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",
+ "outputId": "9069e58e-14ea-47c8-e203-a8f438d71137",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 996
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "california_housing_dataframe[\"rooms_per_person\"]=california_housing_dataframe[\"rooms_per_person\"].apply(lambda x: min(x,10))\n",
+ "calibration_data = train_model(\n",
+ " learning_rate=0.0001,\n",
+ " steps=500,\n",
+ " batch_size=5000,\n",
+ " input_feature=\"rooms_per_person\"\n",
+ ")\n",
+ "plt.scatter(calibration_data[\"predictions\"],calibration_data[\"targets\"])\n",
+ "\n"
+ ],
+ "execution_count": 0,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 237.49\n",
+ " period 01 : 237.44\n",
+ " period 02 : 237.39\n",
+ " period 03 : 237.34\n",
+ " period 04 : 237.29\n",
+ " period 05 : 237.24\n",
+ " period 06 : 237.18\n",
+ " period 07 : 237.13\n",
+ " period 08 : 237.08\n",
+ " period 09 : 237.03\n",
+ "Model training finished.\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " predictions targets\n",
+ "count 17000.0 17000.0\n",
+ "mean 0.6 207.3\n",
+ "std 0.2 116.0\n",
+ "min 0.1 15.0\n",
+ "25% 0.5 119.4\n",
+ "50% 0.5 180.4\n",
+ "75% 0.6 265.0\n",
+ "max 2.4 500.0"
+ ],
+ "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.6 \n",
+ " 207.3 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 0.2 \n",
+ " 116.0 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 0.1 \n",
+ " 15.0 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 0.5 \n",
+ " 119.4 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 0.5 \n",
+ " 180.4 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 0.6 \n",
+ " 265.0 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 2.4 \n",
+ " 500.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ },
+ {
+ "output_type": "stream",
+ "text": [
+ "Final RMSE (on training data): 237.03\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 23
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "WvgxW0bUSC-c",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below for the solution."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "8YGNjXPaSMPV",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "The histogram we created in Task 2 shows that the majority of values are less than `5`. Let's clip `rooms_per_person` to 5, and plot a histogram to double-check the results."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "9YyARz6gSR7Q",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "california_housing_dataframe[\"rooms_per_person\"] = (\n",
+ " california_housing_dataframe[\"rooms_per_person\"]).apply(lambda x: min(x, 5))\n",
+ "\n",
+ "_ = california_housing_dataframe[\"rooms_per_person\"].hist()"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "vO0e1p_aSgKA",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "To verify that clipping worked, let's train again and print the calibration data once more:"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "ZgSP2HKfSoOH",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "calibration_data = train_model(\n",
+ " learning_rate=0.05,\n",
+ " steps=500,\n",
+ " batch_size=5,\n",
+ " input_feature=\"rooms_per_person\")"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "gySE-UgfSony",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "_ = plt.scatter(calibration_data[\"predictions\"], calibration_data[\"targets\"])"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ }
+ ]
+}
\ No newline at end of file
From b96950f477b782e20a07a2edde203af412382e09 Mon Sep 17 00:00:00 2001
From: Aditya Joardar <30207466+joardar-aditya@users.noreply.github.com>
Date: Mon, 18 Feb 2019 00:36:27 +0530
Subject: [PATCH 11/13] into_to_neural_nets solved!
---
intro_to_neural_nets.ipynb | 1175 ++++++++++++++++++++++++++++++++++++
1 file changed, 1175 insertions(+)
create mode 100644 intro_to_neural_nets.ipynb
diff --git a/intro_to_neural_nets.ipynb b/intro_to_neural_nets.ipynb
new file mode 100644
index 0000000..a9c8b04
--- /dev/null
+++ b/intro_to_neural_nets.ipynb
@@ -0,0 +1,1175 @@
+{
+ "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": 1224
+ },
+ "outputId": "d66fafff-9fb9-4ab8-f854-c91543948ad3"
+ },
+ "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 2657.7 542.3 \n",
+ "std 2.1 2.0 12.6 2263.0 436.3 \n",
+ "min 32.5 -124.3 1.0 2.0 2.0 \n",
+ "25% 33.9 -121.8 18.0 1461.0 296.0 \n",
+ "50% 34.2 -118.5 29.0 2117.5 431.0 \n",
+ "75% 37.7 -118.0 37.0 3152.2 650.0 \n",
+ "max 42.0 -114.5 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 1438.8 504.2 3.9 2.0 \n",
+ "std 1193.6 398.1 1.9 1.1 \n",
+ "min 3.0 2.0 0.5 0.0 \n",
+ "25% 790.8 280.8 2.6 1.5 \n",
+ "50% 1168.0 407.0 3.5 1.9 \n",
+ "75% 1724.0 607.0 4.8 2.3 \n",
+ "max 35682.0 6082.0 15.0 55.2 "
+ ],
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " latitude \n",
+ " longitude \n",
+ " housing_median_age \n",
+ " total_rooms \n",
+ " total_bedrooms \n",
+ " population \n",
+ " households \n",
+ " median_income \n",
+ " rooms_per_person \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " 35.6 \n",
+ " -119.6 \n",
+ " 28.6 \n",
+ " 2657.7 \n",
+ " 542.3 \n",
+ " 1438.8 \n",
+ " 504.2 \n",
+ " 3.9 \n",
+ " 2.0 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 2.1 \n",
+ " 2.0 \n",
+ " 12.6 \n",
+ " 2263.0 \n",
+ " 436.3 \n",
+ " 1193.6 \n",
+ " 398.1 \n",
+ " 1.9 \n",
+ " 1.1 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 32.5 \n",
+ " -124.3 \n",
+ " 1.0 \n",
+ " 2.0 \n",
+ " 2.0 \n",
+ " 3.0 \n",
+ " 2.0 \n",
+ " 0.5 \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 33.9 \n",
+ " -121.8 \n",
+ " 18.0 \n",
+ " 1461.0 \n",
+ " 296.0 \n",
+ " 790.8 \n",
+ " 280.8 \n",
+ " 2.6 \n",
+ " 1.5 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 34.2 \n",
+ " -118.5 \n",
+ " 29.0 \n",
+ " 2117.5 \n",
+ " 431.0 \n",
+ " 1168.0 \n",
+ " 407.0 \n",
+ " 3.5 \n",
+ " 1.9 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 37.7 \n",
+ " -118.0 \n",
+ " 37.0 \n",
+ " 3152.2 \n",
+ " 650.0 \n",
+ " 1724.0 \n",
+ " 607.0 \n",
+ " 4.8 \n",
+ " 2.3 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 42.0 \n",
+ " -114.5 \n",
+ " 52.0 \n",
+ " 37937.0 \n",
+ " 6445.0 \n",
+ " 35682.0 \n",
+ " 6082.0 \n",
+ " 15.0 \n",
+ " 55.2 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ },
+ {
+ "output_type": "stream",
+ "text": [
+ "Validation examples summary:\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " latitude longitude housing_median_age total_rooms total_bedrooms \\\n",
+ "count 5000.0 5000.0 5000.0 5000.0 5000.0 \n",
+ "mean 35.6 -119.5 28.6 2609.9 532.4 \n",
+ "std 2.1 2.0 12.5 1966.2 383.7 \n",
+ "min 32.5 -124.3 2.0 8.0 1.0 \n",
+ "25% 33.9 -121.7 18.0 1464.8 299.0 \n",
+ "50% 34.2 -118.5 29.0 2155.0 441.0 \n",
+ "75% 37.7 -118.0 37.0 3150.0 647.0 \n",
+ "max 41.9 -114.3 52.0 27700.0 4179.0 \n",
+ "\n",
+ " population households median_income rooms_per_person \n",
+ "count 5000.0 5000.0 5000.0 5000.0 \n",
+ "mean 1407.4 494.0 3.9 2.0 \n",
+ "std 1029.5 349.7 1.9 1.3 \n",
+ "min 8.0 1.0 0.5 0.1 \n",
+ "25% 788.0 284.0 2.6 1.5 \n",
+ "50% 1165.0 412.0 3.5 1.9 \n",
+ "75% 1706.2 601.0 4.7 2.3 \n",
+ "max 15037.0 4072.0 15.0 52.0 "
+ ],
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " latitude \n",
+ " longitude \n",
+ " housing_median_age \n",
+ " total_rooms \n",
+ " total_bedrooms \n",
+ " population \n",
+ " households \n",
+ " median_income \n",
+ " rooms_per_person \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " 35.6 \n",
+ " -119.5 \n",
+ " 28.6 \n",
+ " 2609.9 \n",
+ " 532.4 \n",
+ " 1407.4 \n",
+ " 494.0 \n",
+ " 3.9 \n",
+ " 2.0 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 2.1 \n",
+ " 2.0 \n",
+ " 12.5 \n",
+ " 1966.2 \n",
+ " 383.7 \n",
+ " 1029.5 \n",
+ " 349.7 \n",
+ " 1.9 \n",
+ " 1.3 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 32.5 \n",
+ " -124.3 \n",
+ " 2.0 \n",
+ " 8.0 \n",
+ " 1.0 \n",
+ " 8.0 \n",
+ " 1.0 \n",
+ " 0.5 \n",
+ " 0.1 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 33.9 \n",
+ " -121.7 \n",
+ " 18.0 \n",
+ " 1464.8 \n",
+ " 299.0 \n",
+ " 788.0 \n",
+ " 284.0 \n",
+ " 2.6 \n",
+ " 1.5 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 34.2 \n",
+ " -118.5 \n",
+ " 29.0 \n",
+ " 2155.0 \n",
+ " 441.0 \n",
+ " 1165.0 \n",
+ " 412.0 \n",
+ " 3.5 \n",
+ " 1.9 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 37.7 \n",
+ " -118.0 \n",
+ " 37.0 \n",
+ " 3150.0 \n",
+ " 647.0 \n",
+ " 1706.2 \n",
+ " 601.0 \n",
+ " 4.7 \n",
+ " 2.3 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 41.9 \n",
+ " -114.3 \n",
+ " 52.0 \n",
+ " 27700.0 \n",
+ " 4179.0 \n",
+ " 15037.0 \n",
+ " 4072.0 \n",
+ " 15.0 \n",
+ " 52.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ },
+ {
+ "output_type": "stream",
+ "text": [
+ "Training targets summary:\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " median_house_value\n",
+ "count 12000.0\n",
+ "mean 207.5\n",
+ "std 116.2\n",
+ "min 15.0\n",
+ "25% 120.0\n",
+ "50% 180.6\n",
+ "75% 265.0\n",
+ "max 500.0"
+ ],
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " median_house_value \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 12000.0 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " 207.5 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 116.2 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 15.0 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 120.0 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 180.6 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 265.0 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 500.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ },
+ {
+ "output_type": "stream",
+ "text": [
+ "Validation targets summary:\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " median_house_value\n",
+ "count 5000.0\n",
+ "mean 206.9\n",
+ "std 115.5\n",
+ "min 15.0\n",
+ "25% 118.8\n",
+ "50% 179.4\n",
+ "75% 265.2\n",
+ "max 500.0"
+ ],
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " median_house_value \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 5000.0 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " 206.9 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 115.5 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 15.0 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 118.8 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 179.4 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 265.2 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 500.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "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": 677
+ },
+ "outputId": "9456e61e-73a5-4871-b48d-cc8338607171"
+ },
+ "cell_type": "code",
+ "source": [
+ "dnn_regressor = train_nn_regression_model(\n",
+ " learning_rate=0.001,\n",
+ " steps=5000,\n",
+ " batch_size=10,\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": 8,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 189.98\n",
+ " period 01 : 162.18\n",
+ " period 02 : 158.25\n",
+ " period 03 : 146.24\n",
+ " period 04 : 151.64\n",
+ " period 05 : 134.54\n",
+ " period 06 : 127.59\n",
+ " period 07 : 124.71\n",
+ " period 08 : 121.16\n",
+ " period 09 : 106.83\n",
+ "Model training finished.\n",
+ "Final RMSE (on training data): 106.83\n",
+ "Final RMSE (on validation data): 103.87\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGACAYAAACz01iHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xd4VNX28PHvmZn03iskIfTQQ4TQ\nO6EoIEUFEcv1/ixc+2u76FW5gly7KBbs2EEUUBBFOtKDlCT0hISE9N6TyXn/CIxEICQhyZlJ1ud5\neB5mTlsza85kzT777K2oqqoihBBCCGFBdFoHIIQQQghRX1LACCGEEMLiSAEjhBBCCIsjBYwQQggh\nLI4UMEIIIYSwOFLACCGEEMLiGLQOQAhz1qlTJ9q2bYterwfAaDQSERHBvHnzsLe3b/B+v/vuO2bM\nmHHJ8ytXruSpp57ivffeY/jw4abnS0tLGTBgAGPGjOGll15q8HHrKjExkQULFhAfHw+AnZ0dc+fO\nZdSoUU1+7PpYsmQJiYmJl7wnu3fv5q677iIwMPCSbX755ZfmCu+anD17lpEjRxISEgKAqqp4enry\n73//m65du9ZrX6+++ir+/v7ccsstdd5m1apVrFixgmXLltXrWEI0FylghLiKZcuW4evrC0B5eTkP\nP/ww77//Pg8//HCD9peRkcGHH3542QIGwM/Pj59++qlGAbNp0yacnZ0bdLyGeOyxx5g0aRLvvfce\nAAcPHmTOnDmsW7cOPz+/ZovjWvj5+VlMsXIler2+xmtYu3Yt999/P+vXr8fa2rrO+3n00UebIjwh\nNCWXkISoB2trawYPHkxcXBwAZWVlPPvss4wdO5Zx48bx0ksvYTQaATh69Cg333wzUVFRTJo0iW3b\ntgFw8803k5KSQlRUFOXl5Zcco0+fPuzevZuSkhLTc2vXrmXgwIGmx+Xl5fz3v/9l7NixjBgxwlRo\nABw4cIAbb7yRqKgoxo8fzx9//AFU/6IfNGgQn3/+Oddffz2DBw9m7dq1l32dx48fp2fPnqbHPXv2\nZP369aZC7u2332bo0KFMnjyZDz74gBEjRgDw5JNPsmTJEtN2Fz++WlwLFizg1ltvBWD//v1MnTqV\n0aNHM2PGDJKSkoDqlqiHHnqI4cOHc+utt5KamnqVjF3eypUrmTt3LnPmzOF///sfu3fv5uabb+bB\nBx80/bFft24dEydOJCoqittuu43ExEQAFi9ezLx585g2bRqffvppjf0++OCDfPzxx6bHcXFxDBo0\niKqqKl5//XXGjh3L2LFjue2220hLS6t33OPHj6e0tJTTp08D8O233xIVFcWIESN45JFHKC0tBarf\n94ULF3L99dezbt26Gnm40ueyqqqKF154gWHDhjFt2jSOHj1qOu6ePXuYMmUK48ePZ9y4caxbt67e\nsQvR6FQhxBV17NhRPXfunOlxbm6uOmvWLHXJkiWqqqrq+++/r959991qRUWFWlJSok6dOlX98ccf\nVaPRqI4bN05ds2aNqqqqeujQITUiIkItKChQd+3apY4aNeqyx/v+++/VJ554Qn3sscdM2xYUFKgj\nR45Uly9frj7xxBOqqqrq22+/rc6ZM0ctKytTi4qK1MmTJ6sbN25UVVVVJ06cqP7000+qqqrqDz/8\nYDpWUlKS2rVrV3XZsmWqqqrq2rVr1dGjR182jn/961/q8OHD1c8++0w9efJkjWXHjh1T+/btq6an\np6sVFRXqvffeqw4fPlxVVVV94okn1Hfeece07sWPa4srLCxMXblypen1RkREqNu3b1dVVVXXrFmj\nTpkyRVVVVf3iiy/UWbNmqRUVFWp2drY6fPhw03tysdre4wvvc69evdT4+HjT+t27d1f/+OMPVVVV\nNTk5WQ0PD1cTEhJUVVXVjz76SJ0zZ46qqqr61ltvqYMGDVKzsrIu2e/PP/+szpo1y/T4zTffVOfP\nn68eP35cHTNmjFpeXq6qqqp+/vnn6g8//HDF+C68L126dLnk+YiICPXUqVPq3r171cjISDU1NVVV\nVVV95pln1JdeeklV1er3/frrr1dLS0tNj995551aP5ebN29Wx4wZoxYWFqolJSXqtGnT1FtvvVVV\nVVW98cYb1d27d6uqqqrx8fHqI488UmvsQjQHaYER4ipmz55NVFQUI0eOZOTIkfTv35+7774bgM2b\nNzNjxgwMBgO2trZcf/317Nixg7Nnz5KZmcmECRMA6N69O/7+/hw+fLhOx5wwYQI//fQTABs2bGD4\n8OHodH+drps2bWLmzJlYW1tjb2/PpEmT+PXXXwH48ccfGTduHADh4eGm1guAyspKbrzxRgDCwsJI\nSUm57PFffvllZs2axZo1a5g4cSIjRozg66+/BqpbRyIiIvDy8sJgMDBx4sQ6vaba4qqoqGD06NGm\n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\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": {}
+ },
+ "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": 0,
+ "outputs": []
+ },
+ {
+ "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": 35
+ },
+ "outputId": "bedbaf6c-3cc0-4748-ea0b-2b0704339c86"
+ },
+ "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",
+ "input_function = lambda: my_input_fn(test_examples, \n",
+ " test_targets[\"median_house_value\"], \n",
+ " num_epochs=1, \n",
+ " shuffle=False)\n",
+ "predictions = dnn_regressor.predict(input_fn=input_function)\n",
+ "predictions = np.array([item['predictions'][0] for item in predictions])\n",
+ "root_mean_squared_error = math.sqrt(\n",
+ " metrics.mean_squared_error(predictions, targets))\n",
+ "\n",
+ "print(\"Final RMSE: %0.2f\" % root_mean_squared_error)"
+ ],
+ "execution_count": 13,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Final RMSE: 107.04\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": {}
+ },
+ "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": 0,
+ "outputs": []
+ }
+ ]
+}
\ No newline at end of file
From 44284e3505c451ee62c8a66fdcbab101f4aa01ec Mon Sep 17 00:00:00 2001
From: Aditya Joardar <30207466+joardar-aditya@users.noreply.github.com>
Date: Mon, 18 Feb 2019 01:16:03 +0530
Subject: [PATCH 12/13] improving_neural_net done
---
improving_neural_net_performance.ipynb | 1780 ++++++++++++++++++++++++
1 file changed, 1780 insertions(+)
create mode 100644 improving_neural_net_performance.ipynb
diff --git a/improving_neural_net_performance.ipynb b/improving_neural_net_performance.ipynb
new file mode 100644
index 0000000..8c09a3a
--- /dev/null
+++ b/improving_neural_net_performance.ipynb
@@ -0,0 +1,1780 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "name": "improving_neural_net_performance.ipynb",
+ "version": "0.3.2",
+ "provenance": [],
+ "collapsed_sections": [
+ "JndnmDMp66FL",
+ "jFfc3saSxg6t",
+ "FSPZIiYgyh93",
+ "GhFtWjQRzD2l",
+ "P8BLQ7T71JWd"
+ ],
+ "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": {
+ "cellView": "both",
+ "colab_type": "code",
+ "id": "hMqWDc_m6rUC",
+ "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": "eV16J6oUY-HN"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "# Improving Neural Net Performance"
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "0Rwl1iXIKxkm"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "**Learning Objective:** Improve the performance of a neural network by normalizing features and applying various optimization algorithms\n",
+ "\n",
+ "**NOTE:** The optimization methods described in this exercise are not specific to neural networks; they are effective means to improve most types of models."
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "lBPTONWzKxkn"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Setup\n",
+ "\n",
+ "First, we'll load the data."
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "VtYVuONUKxko",
+ "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": {
+ "colab_type": "code",
+ "id": "B8qC-jTIKxkr",
+ "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": {
+ "colab_type": "code",
+ "id": "Ah6LjMIJ2spZ",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1224
+ },
+ "outputId": "b19a9b97-9ca6-4c34-8675-50d27b6e37d2"
+ },
+ "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 2634.2 537.6 \n",
+ "std 2.1 2.0 12.6 2176.3 418.5 \n",
+ "min 32.5 -124.3 1.0 2.0 1.0 \n",
+ "25% 33.9 -121.8 18.0 1452.0 295.0 \n",
+ "50% 34.2 -118.5 29.0 2121.0 434.0 \n",
+ "75% 37.7 -118.0 37.0 3146.0 647.2 \n",
+ "max 42.0 -114.5 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 1426.9 499.5 3.9 2.0 \n",
+ "std 1142.5 381.4 1.9 1.2 \n",
+ "min 3.0 1.0 0.5 0.1 \n",
+ "25% 786.0 280.0 2.6 1.5 \n",
+ "50% 1168.0 410.0 3.5 1.9 \n",
+ "75% 1721.0 603.0 4.7 2.3 \n",
+ "max 35682.0 5189.0 15.0 55.2 "
+ ],
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " latitude \n",
+ " longitude \n",
+ " housing_median_age \n",
+ " total_rooms \n",
+ " total_bedrooms \n",
+ " population \n",
+ " households \n",
+ " median_income \n",
+ " rooms_per_person \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " 12000.0 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " 35.6 \n",
+ " -119.6 \n",
+ " 28.6 \n",
+ " 2634.2 \n",
+ " 537.6 \n",
+ " 1426.9 \n",
+ " 499.5 \n",
+ " 3.9 \n",
+ " 2.0 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 2.1 \n",
+ " 2.0 \n",
+ " 12.6 \n",
+ " 2176.3 \n",
+ " 418.5 \n",
+ " 1142.5 \n",
+ " 381.4 \n",
+ " 1.9 \n",
+ " 1.2 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 32.5 \n",
+ " -124.3 \n",
+ " 1.0 \n",
+ " 2.0 \n",
+ " 1.0 \n",
+ " 3.0 \n",
+ " 1.0 \n",
+ " 0.5 \n",
+ " 0.1 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 33.9 \n",
+ " -121.8 \n",
+ " 18.0 \n",
+ " 1452.0 \n",
+ " 295.0 \n",
+ " 786.0 \n",
+ " 280.0 \n",
+ " 2.6 \n",
+ " 1.5 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 34.2 \n",
+ " -118.5 \n",
+ " 29.0 \n",
+ " 2121.0 \n",
+ " 434.0 \n",
+ " 1168.0 \n",
+ " 410.0 \n",
+ " 3.5 \n",
+ " 1.9 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 37.7 \n",
+ " -118.0 \n",
+ " 37.0 \n",
+ " 3146.0 \n",
+ " 647.2 \n",
+ " 1721.0 \n",
+ " 603.0 \n",
+ " 4.7 \n",
+ " 2.3 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 42.0 \n",
+ " -114.5 \n",
+ " 52.0 \n",
+ " 37937.0 \n",
+ " 5471.0 \n",
+ " 35682.0 \n",
+ " 5189.0 \n",
+ " 15.0 \n",
+ " 55.2 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ },
+ {
+ "output_type": "stream",
+ "text": [
+ "Validation examples summary:\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " latitude longitude housing_median_age total_rooms total_bedrooms \\\n",
+ "count 5000.0 5000.0 5000.0 5000.0 5000.0 \n",
+ "mean 35.6 -119.6 28.6 2666.3 543.8 \n",
+ "std 2.1 2.0 12.7 2188.8 428.7 \n",
+ "min 32.5 -124.2 2.0 15.0 3.0 \n",
+ "25% 33.9 -121.8 18.0 1481.0 300.0 \n",
+ "50% 34.3 -118.5 29.0 2158.5 433.0 \n",
+ "75% 37.7 -118.0 37.0 3166.2 652.0 \n",
+ "max 42.0 -114.3 52.0 32627.0 6445.0 \n",
+ "\n",
+ " population households median_income rooms_per_person \n",
+ "count 5000.0 5000.0 5000.0 5000.0 \n",
+ "mean 1435.9 505.3 3.9 2.0 \n",
+ "std 1160.6 392.0 2.0 1.0 \n",
+ "min 11.0 3.0 0.5 0.0 \n",
+ "25% 798.8 285.0 2.6 1.5 \n",
+ "50% 1162.5 408.0 3.6 2.0 \n",
+ "75% 1720.2 609.0 4.8 2.3 \n",
+ "max 28566.0 6082.0 15.0 29.4 "
+ ],
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " latitude \n",
+ " longitude \n",
+ " housing_median_age \n",
+ " total_rooms \n",
+ " total_bedrooms \n",
+ " population \n",
+ " households \n",
+ " median_income \n",
+ " rooms_per_person \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " 5000.0 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " 35.6 \n",
+ " -119.6 \n",
+ " 28.6 \n",
+ " 2666.3 \n",
+ " 543.8 \n",
+ " 1435.9 \n",
+ " 505.3 \n",
+ " 3.9 \n",
+ " 2.0 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 2.1 \n",
+ " 2.0 \n",
+ " 12.7 \n",
+ " 2188.8 \n",
+ " 428.7 \n",
+ " 1160.6 \n",
+ " 392.0 \n",
+ " 2.0 \n",
+ " 1.0 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 32.5 \n",
+ " -124.2 \n",
+ " 2.0 \n",
+ " 15.0 \n",
+ " 3.0 \n",
+ " 11.0 \n",
+ " 3.0 \n",
+ " 0.5 \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 33.9 \n",
+ " -121.8 \n",
+ " 18.0 \n",
+ " 1481.0 \n",
+ " 300.0 \n",
+ " 798.8 \n",
+ " 285.0 \n",
+ " 2.6 \n",
+ " 1.5 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 34.3 \n",
+ " -118.5 \n",
+ " 29.0 \n",
+ " 2158.5 \n",
+ " 433.0 \n",
+ " 1162.5 \n",
+ " 408.0 \n",
+ " 3.6 \n",
+ " 2.0 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 37.7 \n",
+ " -118.0 \n",
+ " 37.0 \n",
+ " 3166.2 \n",
+ " 652.0 \n",
+ " 1720.2 \n",
+ " 609.0 \n",
+ " 4.8 \n",
+ " 2.3 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 42.0 \n",
+ " -114.3 \n",
+ " 52.0 \n",
+ " 32627.0 \n",
+ " 6445.0 \n",
+ " 28566.0 \n",
+ " 6082.0 \n",
+ " 15.0 \n",
+ " 29.4 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ },
+ {
+ "output_type": "stream",
+ "text": [
+ "Training targets summary:\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " median_house_value\n",
+ "count 12000.0\n",
+ "mean 207.0\n",
+ "std 115.7\n",
+ "min 15.0\n",
+ "25% 119.0\n",
+ "50% 180.2\n",
+ "75% 265.0\n",
+ "max 500.0"
+ ],
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " median_house_value \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 12000.0 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " 207.0 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 115.7 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 15.0 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 119.0 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 180.2 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 265.0 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 500.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ },
+ {
+ "output_type": "stream",
+ "text": [
+ "Validation targets summary:\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ " median_house_value\n",
+ "count 5000.0\n",
+ "mean 208.1\n",
+ "std 116.7\n",
+ "min 15.0\n",
+ "25% 120.6\n",
+ "50% 180.6\n",
+ "75% 264.7\n",
+ "max 500.0"
+ ],
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " median_house_value \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 5000.0 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " 208.1 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 116.7 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 15.0 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 120.6 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 180.6 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 264.7 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 500.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "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": 805
+ },
+ "outputId": "dd7f43d6-ad8f-4b8b-ed89-c8fd1a9b81b5"
+ },
+ "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": [
+ "\n",
+ "WARNING: The TensorFlow contrib module will not be included in TensorFlow 2.0.\n",
+ "For more information, please see:\n",
+ " * https://github.com/tensorflow/community/blob/master/rfcs/20180907-contrib-sunset.md\n",
+ " * https://github.com/tensorflow/addons\n",
+ "If you depend on functionality not listed there, please file an issue.\n",
+ "\n",
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 150.63\n",
+ " period 01 : 135.21\n",
+ " period 02 : 123.19\n",
+ " period 03 : 115.75\n",
+ " period 04 : 109.58\n",
+ " period 05 : 108.87\n",
+ " period 06 : 108.01\n",
+ " period 07 : 110.06\n",
+ " period 08 : 107.97\n",
+ " period 09 : 109.78\n",
+ "Model training finished.\n",
+ "Final RMSE (on training data): 109.78\n",
+ "Final RMSE (on validation data): 109.73\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\niIiISNr5/xwdX7ddwEqgAAAAAElFTkSuQmCC\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": 677
+ },
+ "outputId": "e3e4e31f-4fee-4080-ee1f-9db0bd51091a"
+ },
+ "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",
+ " 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",
+ " pass\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.0007),\n",
+ " steps=5000,\n",
+ " batch_size=70,\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": 9,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 230.10\n",
+ " period 01 : 206.71\n",
+ " period 02 : 159.93\n",
+ " period 03 : 118.77\n",
+ " period 04 : 115.06\n",
+ " period 05 : 111.25\n",
+ " period 06 : 106.80\n",
+ " period 07 : 101.55\n",
+ " period 08 : 95.33\n",
+ " period 09 : 88.40\n",
+ "Model training finished.\n",
+ "Final RMSE (on training data): 88.40\n",
+ "Final RMSE (on validation data): 88.26\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\nHJn14x//mOeee45f//rX3HXXXdx7770KLxli8+bNvP766ySTScLhMPF4XPUWGWDZsmXU19cD0N3d\njdvtVni5BBqBmXXdddexevVq7rnnHgzD4MEHH0x3k2TWn//8Z8LhMF/+8pfnju3Zs4fS0tI0tkok\ncxUXF/PRj36Uu+++G4D7778fi0X/Xk23bdu2sXv3bnbs2MH09DTf/va3092krGaYKvYQERGRLKNI\nLiIiIllHAUZERESyjgKMiIiIZB0FGBEREck6CjAiIiKSdRRgRGRRdXV1sWbNGnbu3Dm3C+99991H\nNBq96Gvs3LmTmZmZiz7/05/+NG+88ca7aa6IZAkFGBFZdIFAgL1797J3716effZZioqKeOKJJy76\n83v37tWCXyKygBayE5HL7sYbb2Tfvn00NjayZ88epqenmZqa4lvf+harVq1i586d1NXVceLECZ55\n5hlWrVpFQ0MDk5OTPPDAA/T19TE9Pc3WrVvZvn07iUSCr3zlK4TDYZYtW8bExAQA/f39fPWrXwVg\nfHycbdu2ceedd6bz1kXkv0QBRkQuq5mZGV5++WWuv/56vva1r/H4449TUVFx3uZ2LpeLX/7ylws+\nu3fvXnw+Hz/84Q8ZHx/n4x//OFu2bOG1117D6XSyb98+QqEQH/7whwH4y1/+wvLly3nooYeYmJjg\nN7/5zWW/XxFZHAowIrLohoeH2blzJwDJZJIbbriBO+64g0cffZRvfvObc+eNjY2RTCaB1PYe56qv\nr+f2228HwOl0smbNGhoaGjh16hTXX389kNqYdfny5QBs2bKFX/3qV+zatYubbrqJbdu2Lep9isjl\nowAjIovuTA3MfKOjo9jt9vOOn2G32887ZhjGgt+bpolhGJimuWCvnzMhqLq6mj/96U+8+eabvPDC\nCzzzzDM8++yzl3o7IpIBVMQrImnh9XopLy/nH//4BwCtra089thjF/zMunXrOHDgAADxeJyGhgZW\nr15NdXU1hw8fBqC3t5fW1lYA/vjHP3L06FE2bdrEgw8+SG9vL9PT04t4VyJyuWgERkTSZs+ePXzn\nO9/h5z//OdPT0+zateuC5+/cuZMHHniAz3zmM0xOTnLvvfdSXl7O1q1b+dvf/sb27dspLy9n7dq1\nANTU1PDggw/icDgwTZMvfOEL2Gz6a0/kSqDdqEVERCTraApJREREso4CjIiIiGQdBRgRERHJOgow\nIiIiknUUYERERCTrKMCIiIhI1lGAERERkayjACMiIiJZ5/8BSNlY9Jj8Kp4AAAAASUVORK5CYII=\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": {}
+ },
+ "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": 0,
+ "outputs": []
+ },
+ {
+ "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": 677
+ },
+ "outputId": "aefe89df-c727-45e8-e0b6-b243b7886201"
+ },
+ "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.5),\n",
+ " steps=500,\n",
+ " batch_size=100,\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 : 93.44\n",
+ " period 01 : 75.53\n",
+ " period 02 : 75.13\n",
+ " period 03 : 73.52\n",
+ " period 04 : 71.01\n",
+ " period 05 : 71.45\n",
+ " period 06 : 70.28\n",
+ " period 07 : 71.60\n",
+ " period 08 : 69.35\n",
+ " period 09 : 68.68\n",
+ "Model training finished.\n",
+ "Final RMSE (on training data): 68.68\n",
+ "Final RMSE (on validation data): 67.68\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAioAAAGACAYAAACDX0mmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xl8VPW9//HXbFkm62RPCEkgCQk7\nLiirbCII+HO9uCBFa9vftWq96q1Uq1Zr69LF/qSKt/a2tdpaV9SquLMoLiCCqEDCnp3s+z4z5/dH\nwggSQoBMZpK8n48HDzLLmfOd+Zwhb77nc84xGYZhICIiIuKHzL4egIiIiMixKKiIiIiI31JQERER\nEb+loCIiIiJ+S0FFRERE/JaCioiIiPgtq68HIOIPsrKySElJwWKxAOByuZg4cSJ33XUXdrv9pF/3\nhRdeYPHixUfdv2rVKu644w7+53/+h1mzZnnub2lpYcqUKZx33nk89NBDJ73ensrPz+eBBx5g//79\nAAQHB3PjjTdy7rnnen3dJ2LlypXk5+cf9Zls3LiR6667juTk5KOWefvtt/tqeKeksLCQOXPmMGzY\nMAAMwyAmJoaf//znjBo16oRe6/e//z1JSUlceeWVPV7mtdde46WXXuKZZ545oXWJ9BUFFZFOzzzz\nDAkJCQC0tbVxyy238Kc//YlbbrnlpF6vvLyc//3f/+0yqAAkJibyxhtvHBFU1q5dS3h4+Emt72T8\n93//NxdeeCH/8z//A8C2bdtYtmwZb731FomJiX02jlORmJjYb0LJsVgsliPew+rVq7nhhht45513\nCAgI6PHr3Hbbbd4YnohPadePSBcCAgKYPn06O3fuBKC1tZV77rmHefPmcf755/PQQw/hcrkAyMnJ\n4YorrmD+/PlceOGFfPTRRwBcccUVFBcXM3/+fNra2o5ax+mnn87GjRtpbm723Ld69WqmTp3qud3W\n1savfvUr5s2bx+zZsz2BAmDr1q1ccsklzJ8/nwULFvDJJ58AHf9DnzZtGk8//TQXXHAB06dPZ/Xq\n1V2+z127djF+/HjP7fHjx/POO+94Attjjz3GjBkzuOiii3jyySeZPXs2AD/72c9YuXKlZ7nDbx9v\nXA888ABXX301AF988QWXXnopc+fOZfHixRQUFAAdM0v/9V//xaxZs7j66qs5ePDgcSrWtVWrVnHj\njTeybNkyfvOb37Bx40auuOIKbr75Zs8v9bfeeotFixYxf/58vve975Gfnw/AH//4R+666y4uu+wy\nnnrqqSNe9+abb+avf/2r5/bOnTuZNm0abrebP/zhD8ybN4958+bxve99j9LS0hMe94IFC2hpaWHf\nvn0APP/888yfP5/Zs2dz66230tLSAnR87g8++CAXXHABb7311hF1ONZ26Xa7+eUvf8nMmTO57LLL\nyMnJ8ax306ZNXHzxxSxYsIDzzz+ft95664THLtLrDBExRowYYZSUlHhu19TUGEuWLDFWrlxpGIZh\n/OlPfzJ++MMfGu3t7UZzc7Nx6aWXGq+++qrhcrmM888/33j99dcNwzCMr776ypg4caJRX19vfPbZ\nZ8a5557b5fpefvllY/ny5cZ///d/e5atr6835syZY7z44ovG8uXLDcMwjMcee8xYtmyZ0draajQ2\nNhoXXXSRsWbNGsMwDGPRokXGG2+8YRiGYbzyyiuedRUUFBijRo0ynnnmGcMwDGP16tXG3LlzuxzH\nTTfdZMyaNcv4+9//buzZs+eIx3Jzc40zzzzTKCsrM9rb243rr7/emDVrlmEYhrF8+XLj8ccf9zz3\n8NvdjWv06NHGqlWrPO934sSJxoYNGwzDMIzXX3/duPjiiw3DMIx//OMfxpIlS4z29najqqrKmDVr\nluczOVx3n/Ghz3nChAnG/v37Pc8fO3as8cknnxiGYRhFRUXGGWecYRw4cMAwDMP4y1/+Yixbtsww\nDMNYsWKFMW3aNKOysvKo133zzTeNJUuWeG4/+uijxv3332/s2rXLOO+884y2tjbDMAzj6aefNl55\n5ZVjju/Q5zJy5Mij7p84caKxd+9e4/PPPzcmT55sHDx40DAMw7j77ruNhx56yDCMjs/9ggsuMFpa\nWjy3H3/88W63y3Xr1hnnnXee0dDQYDQ3NxuXXXaZcfXVVxuGYRiXXHKJsXHjRsMwDGP//v3Grbfe\n2u3YRfqCZlREOi1dupT58+czZ84c5syZw6RJk/jhD38IwLp161i8eDFWq5WgoCAuuOACPv74YwoL\nC6moqGDhwoUAjB07lqSkJL7++userXPhwoW88cYbALz//vvMmjULs/nbr+XatWu56qqrCAgIwG63\nc+GFF/Luu+8C8Oqrr3L++ecDcMYZZ3hmIwCcTieXXHIJAKNHj6a4uLjL9f/2t79lyZIlvP766yxa\n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\nQmCC\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "jKR0mzr16pHy",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 677
+ },
+ "outputId": "14084931-ef23-4634-bdfb-e0f307258bc2"
+ },
+ "cell_type": "code",
+ "source": [
+ "_, adam_training_losses, adam_validation_losses = train_nn_regression_model(\n",
+ " my_optimizer=tf.train.AdamOptimizer(learning_rate=0.009),\n",
+ " steps=500,\n",
+ " batch_size=100,\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 : 208.53\n",
+ " period 01 : 121.05\n",
+ " period 02 : 113.57\n",
+ " period 03 : 106.19\n",
+ " period 04 : 96.16\n",
+ " period 05 : 82.63\n",
+ " period 06 : 73.38\n",
+ " period 07 : 70.93\n",
+ " period 08 : 70.15\n",
+ " period 09 : 69.89\n",
+ "Model training finished.\n",
+ "Final RMSE (on training data): 69.89\n",
+ "Final RMSE (on validation data): 69.36\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\n97/3++cVkb6hACMifa6xsZHi4mIALMuisLCQRYsW8fvf/5577723e7+WlhYsywK6bu9xtl27drFw\n4UIAEhISyM/Pp7KykgMHDjB16lSg68asY8aMAWDmzJk8/fTTLF++nFmzZlFUVNSnn1NE+o8CjIj0\nuVPnwPTU3NyMy+U6Z/spLpfrnG2GYZyxbts2hmFg2/YZ9/o5FYJyc3N58cUXeeedd9iwYQNPPvkk\na9euvdCPIyJRQCfxikhEJCcnk52dzRtvvAHARx99xCOPPPK5r5k8eTJbtmwBoK2tjcrKSiZOnEhu\nbi47d+4EoLq6mo8++giAF154gT179nDllVeycuVKqqurCQaDffipRKS/aARGRCJm1apV/OpXv+Kx\nxx4jGAyyfPnyz92/uLiY++67j+9///t0dHRw2223kZ2dzYIFC3jttddYsmQJ2dnZTJo0CYCxY8ey\ncuVK4uLisG2bW2+9FadTf+2JXAx0N2oRERGJOZpCEhERkZijACMiIiIxRwFGREREYo4CjIiIiMQc\nBRgRERGJOQowIiIiEnMUYERERCTmKMCIiIhIzPl/HIIv1IwQesEAAAAASUVORK5CYII=\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "FSPZIiYgyh93"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below for the solution"
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "X1QcIeiKyni4"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "First, let's try Adagrad."
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "Ntn4jJxnypGZ",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "_, adagrad_training_losses, adagrad_validation_losses = train_nn_regression_model(\n",
+ " my_optimizer=tf.train.AdagradOptimizer(learning_rate=0.5),\n",
+ " steps=500,\n",
+ " batch_size=100,\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": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "5JUsCdRRyso3"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Now let's try Adam."
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "lZB8k0upyuY8",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "_, adam_training_losses, adam_validation_losses = train_nn_regression_model(\n",
+ " my_optimizer=tf.train.AdamOptimizer(learning_rate=0.009),\n",
+ " steps=500,\n",
+ " batch_size=100,\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": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "colab_type": "text",
+ "id": "twYgC8FGyxm6"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Let's print a graph of loss metrics side by side."
+ ]
+ },
+ {
+ "metadata": {
+ "colab_type": "code",
+ "id": "8RHIUEfqyzW0",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 376
+ },
+ "outputId": "61f3cfb2-2101-4478-8d5c-d437e96b4e08"
+ },
+ "cell_type": "code",
+ "source": [
+ "plt.ylabel(\"RMSE\")\n",
+ "plt.xlabel(\"Periods\")\n",
+ "plt.title(\"Root Mean Squared Error vs. Periods\")\n",
+ "plt.plot(adagrad_training_losses, label='Adagrad training')\n",
+ "plt.plot(adagrad_validation_losses, label='Adagrad validation')\n",
+ "plt.plot(adam_training_losses, label='Adam training')\n",
+ "plt.plot(adam_validation_losses, label='Adam validation')\n",
+ "_ = plt.legend()"
+ ],
+ "execution_count": 12,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\nPyAgwDICMXr0aOLj40lOTmbfvn0MGTIEjUaDwWCodvnhj1JSUhg+fHi1/11+LT0sLIywsDDLY61W\nS8+ePQH46aefuPXWW2nevDkAEydOZM+ePVRUVABVIxRGo/GKY/bv359jx46Rk5MDwPfff8/w4cPx\n8vIiKyuLjRs3kpuby7Rp0xg3blyd8naJoiisW7eOgIAAwsLC2LZtGyNHjiQgIACAe+65x/IdAOjZ\nsyfu7u7V9lHb93Lv3r3069ePJk2aoNVqLX8rAF9fX7744gvOnDlDWFgY//nPf+oVu7h5yTVy4RQu\nXSPPysqyDAtrNFVf36ysLLy9vS3bent7k5mZSVZWFnq9HpVKZXnt0n/M/fz8rnnM3r17M3fuXHJy\ncvj666956KGHLBPPAPLz81m0aBFLly4FqobaO3ToAMDGjRt5//33KSwspLKyEuWylgYuLi6WSXpq\ntZrKysqrHt/d3Z0ZM2YwY8YM8vLy+Pbbb1m4cCGhoaHk5uZWu17v6+t7zc9Tl7g8PT0ByMvLIyEh\ngeHDh1ted3NzIysri9zcXPR6veV5Ly8vCgsLr3q8a10jv/zv9sfH2dnZ1T6jXq9HURSys7Ov+t5L\ndDodvXr1Yvv27XTt2pW8vDy6du2KSqXitdde45133mHBggV0796d+fPnX3O+gdlstuRBURRatWrF\nihUrUKvV5Ofn8/3337Nr1y7L6+Xl5TV+PqDW72Vubi7+/v7Vnr9k4cKFvPHGG/z5z39Gq9Xy6KOP\nVvv7iMZLCrlwKkajkWnTpvHSSy/xxhtvAODn52c5+wLIycnBz88PX19fcnNzURTF8h/NnJycOhc9\nV1dXBgwYwBdffMGFCxfo3LlztULu7+/Pfffdd8UZaWpqKnPnzuWTTz6hXbt2nD9/nmHDhtXrc2Zl\nZXH8+HHLGbGXlxeTJk1i586dxMXFodfryc/Pr7b9JX/8cZCbm1vvuPz9/WnRogWfffbZFa95eXnV\neGxr8vX1JTY21vI4NzcXtVqNwWC45nuHDRvG999/T3Z2NsOGDbP8/Xv06EGPHj0oKipiyZIlvPzy\ny9c8s/3jZLfL+fv7M378eJ588sl6fa6avpe15dbPz4958+Yxb948du3axd///nf69u1LkyZN6nxs\ncXOSoXXhdP785z8TGxvLr7/+ClQNpa5fvx6z2UxRURFffvkl/fr1IzQ0lMDAQMtkspiYGDIyMujQ\n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\nUcIkyIUQQogSJkEuhBBClDAJciGEEKKESZALIYQQJUyCXAghhChhEuRCCCFECZMgF0IIIUqYBLkQ\nQghRwiTIhRBCiBImQS6EEEKUMMXzTnc3VSGEEEJMdbJFLoQQQpQwCXIhhBCihEmQCyGEECVMglwI\nIYQoYRLkQgghRAmTIBdCCCFK2LQP8u985zusWbOGO++8k7fffrvYzSlb3/3ud1mzZg133HEHL7zw\nQrGbU9bS6TSrV6/m6aefLnZTytpvfvMbbr31Vm6//XZeeumlYjenLCUSCb70pS+xdu1a7rzzTjZv\n3lzsJk1JerEbUEyvv/467733Hps2beLQoUOsX7+eTZs2FbtZZWfbtm0cOHCATZs20dfXxyc+8Qlu\nvvnmYjerbD3yyCNEo9FiN6Os9fX18aMf/YinnnqKZDLJD37wA2688cZiN6vs/PrXv+aiiy5i3bp1\ndHR0cM899/D8888Xu1lTzrQO8q1bt7J69WoAFixYwMDAAPF4nHA4XOSWlZcVK1awdOlSACoqKkil\nUjiOg6ZpRW5Z+Tl06BAHDx6UUJlkW7duZeXKlYTDYcLhMN/+9reL3aSyFIvF2LdvHwCDg4PEYrEi\nt2hqmta71ru7u8d0jKqqKrq6uorYovKkaRrBYBCAJ598kg996EMS4pNkw4YN3H///cVuRtk7duwY\n6XSaL3zhC9x1111s3bq12E0qS7fccgutra3cdNNN3H333Xzta18rdpOmpGm9RX4iuVrt5HrxxRd5\n8skn+fnPf17sppSlZ555hiuvvJK5c+cWuynTQn9/Pz/84Q9pbW3lc5/7HH/6059QFKXYzSorzz77\nLLNnz+ZnP/sZe/fuZf369XLuxylM6yCvra2lu7t7ZLmzs5Oampoitqh8bd68mR//+Mf827/9G5FI\npNjNKUsvvfQS77//Pi+99BLt7e2YpkldXR3XXnttsZtWdqqrq1m2bBm6rtPQ0EAoFKK3t5fq6upi\nN62s7Ny5k1WrVgHQ1NREZ2enHJY7hWm9a/26667j97//PQDNzc3U1tbK8fFJMDQ0xHe/+11+8pOf\nUFlZWezmlK3vfe97PPXUU/zqV7/iU5/6FPfee6+E+CRZtWoV27Ztw3Vd+vr6SCaTcvx2EsybN4+3\n3noLgJaWFkKhkIT4KUzrLfKrrrqKxYsXc+edd6IoCg8++GCxm1SWfvvb39LX18dXvvKVkec2bNjA\n7Nmzi9gqIc7fzJkz+ehHP8qnP/1pAL7+9a+jqtN6u2hSrFmzhvXr13P33Xdj2zYPPfRQsZs0Jclt\nTIUQQogSJkNIIYQQooRJkAshhBAlTIJcCCGEKGES5EIIIUQJkyAXQgghSpgEuRDTwLFjx1iyZAlr\n164duZPUunXrpoxt/QAAAtlJREFUGBwcPOvvWLt2LY7jnPX7P/OZz/Daa6+dT3OFEOdAglyIaaKq\nqoqNGzeyceNGHn/8cWpra3nkkUfO+vMbN26Ui3EIMQVN6wvCCDGdrVixgk2bNrF37142bNiAbdtY\nlsUDDzzAokWLWLt2LU1NTezZs4dHH32URYsW0dzcTDab5Rvf+Abt7e3Yts1tt93GXXfdRSqV4u/+\n7u/o6+tj3rx5ZDIZADo6OvjqV78K5O6VvmbNGj75yU8W808XoqxIkAsxDTmOwx/+8Aeuvvpq7rvv\nPn70ox/R0NBw0o0pgsEgjz322JjPbty4kYqKCh5++GHS6TQf//jHuf7669myZQt+v59NmzbR2dnJ\nRz7yEQB+97vf0djYyDe/+U0ymQxPPPFEwf9eIcqZBLkQ00Rvby9r164FwHVdli9fzh133MH3v/99\n/umf/mnkffF4HNd1gdxljE/01ltvcfvttwPg9/tZsmQJzc3N7N+/n6uvvhrI3ZCosbERgOuvv55f\n/vKX3H///dxwww2sWbNmUv9OIaYbCXIhponhY+SjDQ0NYRjGSc8PMwzjpOdOvFWn53koioLneWOu\nNz48GFiwYAH/8R//wfbt23n++ed59NFHefzxxy/0zxFC5MnJbkJMY5FIhPr6el5++WUAjhw5wg9/\n+MMzfuaKK65g8+bNACSTSZqbm1m8eDELFizgjTfeAKCtrY0jR44A8Nxzz/HOO+9w7bXX8uCDD9LW\n1oZt25P4VwkxvcgWuRDT3IYNG/jnf/5nfvrTn2LbNvfff/8Z37927Vq+8Y1v8NnPfpZsNsu9995L\nfX09t912G3/84x+56667qK+v5/LLLwfg4osv5sEHH8Q0TTzP42/+5m/QdflfjxATRe5+JoQQQpQw\n2bUuhBBClDAJciGEEKKESZALIYQQJUyCXAghhChhEuRCCCFECZMgF0IIIUqYBLkQQghRwiTIhRBC\niBL2/wF41okC2C2Z4QAAAABJRU5ErkJggg==\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": "410b0f05-c726-4f81-c8f9-f407284d8606"
+ },
+ "cell_type": "code",
+ "source": [
+ "_ = normalized_training_examples.hist(bins=20, figsize=(18, 12), xlabelsize=10)"
+ ],
+ "execution_count": 13,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAABB0AAAK6CAYAAAB1zCTyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3XtclGX+//H3zMAsoUOKMm6W2Wam\nlqdcy8RDiZFIB8k84dqRbTPRskglD+mubZCKDw9Rth5Z3YpCKyoDM3HLRDabXVfbtrL9tl/PDoai\nAoE4vz/8OV+Jg8w4wz3o6/mXc81939fnuhk+c/vhuu7b5HK5XAIAAAAAAPAxs9EBAAAAAACAixNF\nBwAAAAAA4BcUHQAAAAAAgF9QdAAAAAAAAH5B0QEAAAAAAPgFRQcAAAAAAOAXFB3gV3v37tUNN9xg\nWP+LFy/WtGnTPNqnoKBA0dHRNb43bdo0LV682BehAUCdGiJ//vOf/1RCQoJf+/ClG264QXv37tXH\nH3+s5557zuhwACBg1XU9e9aOHTv073//W5K0Zs0aLViwoFq7J6Kjo1VQUOB5sLjoBRkdAAAAMEbX\nrl21fPlyo8PwWHR09HkvpgEAdVu7dq1+/etfq2PHjhozZkyN7YAvUHRAg8jKylJGRoaKi4s1adIk\nxcbGauHChcrNzZUkde/eXc8//7xCQ0MVFRWlOXPmqGfPnpLkft29e3fNnDlT27dv1+nTp9WhQwel\npqaqadOm2rhxoxYuXKiSkhK1bdtW8+bNU3h4uCSpvLxczzzzjP7xj3+oZcuWWrx4sVq1aqX9+/dr\nxowZ2rt3r4KDg/Xb3/5WcXFxVeIuKipSUlKSfvjhB1133XUKCQnRL3/5S0lnKsJ/+ctf5HK51LRp\nU6WkpKh9+/YNeFYBXAr8mT+/+uorTZ8+XR9//LEWL16soqIiHTp0SP/+97/VvHlzvfLKK7Lb7frq\nq6/09NNPS5Luvfde5ebmavr06erVq1etcS9evFiFhYU6ePCgvvrqK/Xu3VuxsbFavHixDh8+rNmz\nZ2vAgAEqLy/XnDlz9Nlnn6miokIjRozQ2LFjJUl//etf9cILLygoKEj333+/+9jr1q1Tdna2Vq1a\npcLCQk2ZMkX79u1TeXm5HnjgAT3yyCPu8f/ud79TVlaWDh48qLvvvlvJycl1nu/S0lI999xz+vrr\nr1VRUaFBgwZpypQpklTneajrewgAjFJbTnvjjTf03nvvadOmTfrxxx914sQJHTx4UJ07d66x/Y9/\n/KOkM7n97Otdu3ZpypQpOnXqlG677bYq/ZITcS6WV8DvTp8+rYqKCr3//vt67rnntGDBAn300Uf6\n9NNPtW7dOn344YcqLi7WqlWr6jzOli1btHfvXuXk5GjDhg267rrr9Pe//1179uzR5MmTlZaWpk8+\n+US9evXSrFmz3Pvl5+crKSlJmzZtUnh4uLKysiRJM2bM0C233KLc3Fy99tpreuGFF7R3794qfS5d\nulTNmzfXpk2b9Pzzz2vLli2SpBMnTmjhwoV6++23lZOTo4SEBG3evNmXpw0A/J4/fy4nJ0dTp07V\nxo0b1aJFC61du1bSmXz58MMPa8OGDWratKl++OGHesW/efNmvfjii3r//feVk5Pjjnvs2LFaunSp\npDN5dvfu3Xr//ff1wQcfKDc3V3l5eaqsrNS0adM0c+ZMffTRRzKbzaqsrKzWx6uvvqqrrrpKOTk5\nysjIUFpamg4cOOB+/4svvlBmZqbWrl2rNWvW6ODBg3XG/MYbb+jkyZPKycnRO++8o3Xr1mn79u11\nnofzfQ8BgFFqy2nx8fHq2rWrJk2a5C7USqq1vSazZs3Sgw8+qNzcXN10003u62hyIn6OogP8zuVy\nuWcQ3HDDDTp48KA2b96suLg4hYaGymKxaOjQofr888/rPE54eLi+//57ffzxxyotLdXEiRPVr18/\nffrpp7rlllt0/fXXS5JGjRqlTZs2uS9Of/3rX+vKK6+UJHXs2FGHDh1SRUWFtm7dqtGjR0uSrrzy\nSvXq1Uvbtm2r0uf27ds1ePBgSdJVV12lW265RZL0i1/8QiaTSVlZWSosLNTgwYP12GOP+eiMAcAZ\n/s6fP9ezZ09deeWVMplM6tSpkw4cOKCysjJ99dVXuvvuuyVJv/nNb+RyueoV/0033aQWLVqoefPm\nioiIUP/+/SVJ119/vQ4fPixJysvL0+jRo2W1WhUaGqohQ4Zow4YN+uGHH1ReXq6+fftKku67774a\n+5g+fbpmzJghSWrTpo0iIiKqFJDvueceWSwWtWrVSi1atKhSkKjJo48+qldeeUUmk0mXX3652rdv\nr71799Z5Hs73PQQARqktp12on376STt37lRsbKwkKSYmRpdddpkkciKqY3kF/M5isbiTkNls1unT\n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\nKDoAAAAAAAC/YHkFAAAAJLFMCADge8x0AAAAAAAAfsFMBwAAAAC1uifpPY/34aakAM5ipgMAAAAA\nAPALig4AAAAAAMAvKDoAAAAAAAC/oOgAAAAAAAD8gqIDAAAAAADwC55eAQAAAAAwzKOpmzzanqej\nNC7MdAAAAAAAAH5B0QEAAAAAAPgFyysAABc9T6dtAgAAwDcuaKbDt99+qzvuuENr1qyRJB04cEAP\nPPCARo8eraeeekrl5eWSpOzsbN1///0aPny43n77bUlSRUWFkpKSFB8frzFjxmjPnj0XOBQAQH3N\nmTNHI0eO1P33368NGzZ4lL8BAACA+vK66FBSUqLZs2erd+/e7rZFixZp9OjRev3119W2bVtlZWWp\npKRE6enpWrVqlVavXq2MjAwdPXpUH3zwgcLCwvTGG29o7NixSktL88mAAAB127Ztm7777jtlZmZq\n2bJlevHFFz3K3wAAAEB9eV10sFqtWrp0qex2u7utoKBAAwcOlCQNGDBA+fn52rFjh7p06SKbzaaQ\nkBD16NFDDodD+fn5io6OliRFRkbK4XBc4FAAAPVx8803a+HChZKksLAwlZaWepS/AQAAgPry+p4O\nQUFBCgqquntpaamsVqskqUWLFnI6nSosLFR4eLh7m/Dw8GrtZrNZJpNJ5eXl7v1/rnnzUAUFWbwN\nN6BERNiMDqEaYqq/QIyLmOonEGMygsViUWhoqCQpKytL/fv315YtW+qdv+viba7mZwNcWvidr1tB\nQYGeeuoptW/fXpJ0/fXX67e//a0mT56syspKRUREaO7cubJarcrOzlZGRobMZrNGjBih4cOHGxw9\nAFTltxtJulwun7SfVVRUcsExBQqn87jRIVQREWEjpnoKxLiIqX5qi+lSvvDduHGjsrKytGLFCt15\n553udm/ztORdrg7EzwsA//L0d/5SzNW33HKLFi1a5H793HPPafTo0Ro8eLDmz5+vrKwsxcXFKT09\nXVlZWQoODtawYcMUHR2tZs2aGRg5AFTl00dmhoaGqqysTJJ06NAh2e122e12FRYWurc5fPiwu/3s\nX8wqKirkcrlqneUAAPCtzz77TEuWLNHSpUtls9k8yt8AgIbHMjgAjZVPZzpERkYqNzdXQ4YM0YYN\nG9SvXz9169ZN06dPV3FxsSwWixwOh6ZOnaoTJ04oJydH/fr1U15ennr16uXLUAAAtTh+/LjmzJmj\n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\nI0eqqKjogjmfedndhdYvLCzUPffco4iICI0YMUKfffaZJGnfvn1KSkpSZGSk7rrrLr311lu12hcX\n2h8A0NB89dVX6tatm3Jzc/XQQw9pzpw5Fz2u/vbbb/X222/r1Vdf1VNPPaWSkpJLinXixAmlpqbq\nySefVG5ursLDw/X002EjlTgAACAASURBVE9Lkp566in99Kc/VU5Ojry9vV3r/POf/9SyZcu0evVq\n5eTkqF27dsrIyHC9n5OTo+eee07vvfeeDh06pPfee6+e9gwaIpoOMNXmzZs1atQoeXp6ysfHR0OH\nDtVHH33ken/o0KGyWq1q27atAgICtH//fn3yySfq06eP7Ha7fvKTn2jEiBF1jv/NN9+osrJS/fv3\nlyQNHz7c9d6mTZsUExOjtm3bSpLi4+O1YcOGOscCgCuppKREgYGBys3N1S233KJHH31U6enpys7O\n1vr16/Xdd99p2rRpysjI0Pvvv6/g4GDNmTNHkrR06VK1adNGmzZt0u9+9ztt2bLlrO3v2rVLr776\nqt544w1t2LBBlZWVWrNmjev9nJwczZgxQxs3blRAQIDeeOONWuV/vvVnzZqlO++8U++9954eeugh\nTZs2zTXep08f5ebmasmSJZo7d67r/jyXsi8KCwvPuz8AoKHx9fVVdHS0JGnIkCH6z3/+o9zc3Ase\nV58+Zr7xxht1ww036F//+tclxfL09NTWrVvVvXt3SVKvXr1UWFh4wXU2b96syMhIBQQESJLi4uJq\n5HLHHXeodevW8vT0VMeOHbV///5LnzwaHU+zE0DzdujQIbVq1cr1ulWrVjp48KDrdcuWLV3/tlqt\nqq6uVllZWY11TjcF6uLw4cM1Ypy53fLycr333nuug23DMFRVVVXnWABwJZ04cUJRUVGSpI4dO0qS\n/P39JUmBgYHKzs5Wnz59XO+NGTNG/fr1U3V1tbZv364HH3xQknTdddepT58+Z22/S5cu2rx5s+uX\nrR49etQ4CO3Vq5euvfZaSVLnzp1rfUB5rvV/+OEHFRQUaOHChZKkQYMGqW/fvqqqqtLWrVu1YMEC\nSdK1116r4OBgbdu2TbfffvtF90VRUZE+//zz8+4Pq9Vaq9wBwN38/PxksVhc/5akI0eOXPC4+sfv\nnT477VKsXr1ab775piorK1VZWemKfT6HDh2S3W6vke+ZudhsNte/Tx/jo+mi6QBTXX311SotLXW9\nLi0tvei1wi1btlRFRYXr9cVO2ZUkDw8PnTx50vX68OHDkk4V3CNHjrjGzzyV1m63a/jw4Zo+ffrF\nJwIADYzVapWPj4+kUzXQ19e3xnuenp7avn276/+MS6fqa2lpqQ4fPlzjgPD0Ae2Zjh07prS0NBUU\nFEg6VVcHDhzoev9yDyjPtX5paalOnjzpes9isahFixZyOp0yDOOsnE/X9Ivti+rqapWXl593f5z+\npQ4AGoozj59PH9f6+fld8Li6pKTE1cwtLS1Vq1atdOjQoRr1+VyNCIfDoaVLl2rt2rW67rrr9NFH\nH2nWrFkXzK8ux/houri8AqYaOHCgsrKyVF1drYqKCr399tu64447LrhOt27dVFBQoEOHDqmystJ1\n3e6PeXp6uq5DDgwM1H//+19Jp64HdjgckqTrr79eVqvVddC8bt06V+c2PDxcGzZscB20bty4US+/\n/PLlTxoAGgC73a6QkBDl5OS4/rdt2zYFBATIz8+vxn0cznVvg1WrVumbb77RunXrlJubq9GjR7s9\n5zZt2shisbiuQzYMQ99++61at24tDw8P14G3pFo3Cy60PwCgoTl+/Lg2btwoScrNzVWXLl0UGRl5\nwePqv/71r5JO3Q/i22+/VVBQkOx2u/73v//phx9+0LFjx855r7RDhw4pICBA7dq107Fjx/Tmm2+q\noqJChmHI09NTFRUVOnHiRI11Bg4cqPfee89Vr//85z9f9BgfTRdNB5gqMTFR11xzje68806NGDFC\nAwcOdF2fdj7dunXT8OHDNXz4cN17770KCws753KRkZF67LHHtGLFCo0aNUp79+7VkCFDlJGRocjI\nSEmSl5eXnnzySc2YMUPR0dGyWCyuX8BuvfVWTZgwQYmJiYqOjtbKlSs1aNCg+t0BAGASb29vbd++\n3XVJxL/+9S/NnTtXktS9e3fXwex3332nTz/99Kz1Dx48qBtvvFEtWrTQ3r179cEHH9Q4C81dOffr\n109vvvmmJOnDDz/Ugw8+KC8vL/Xv31+ZmZmunLdv366QkJBL3nb//v3Puz8AoKG59tpr9emnnyoy\nMlJLlizR7NmzL3pc7e/vr2HDhumee+7RzJkz1apVKwUHBysoKEiRkZH69a9/fc5j3dDQUNntdg0e\nPFjjxo3TfffdJ5vNpkceeUS33HKLWrVqpX79+tV4VH23bt304IMP6p577lFUVJTKy8v16KOPXpF9\n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\nHDnS9fpyPvcf8/T0lI+Pzznfu1LfA1wcdbr51Wmza7SZ9bm512bqcuNFrTavVjfH42mOo5tXrW5U\n93RYu3at1q5dW2Ns0qRJCg0NveRtGOd5Quj5xi8Wf8eOHZe0nY0bN2rgwIGujuwdd9yh22+/Xb17\n99Zf//pXzZ07V0uWLHFL/GnTpumXv/ylLBaLxo4dq169ep21jLvn/80332jq1KnKyMiQl5eXgoKC\n5O/vr4EDB+of//iHpk+frnfeeeeiOZzPpeRfH+vUdnsHDx7UhAkTNHv2bLVp00Y/+9nPNHHiREVH\nR6uwsFD33nuvNmzYIG9v73qP/8gjjyg0NFStWrVScnKycnNzLynn+oovSf/4xz904403uv7DUd+f\ne32o7+9Bc0edpk6fi9k12sz6TG2uPeqy+1GrzavVDbVOX0ru9bXOpW6H4+imU6sbVdMhLi6u1jeG\nsdvtKi4udr0uKipS9+7dZbfb5XQ61alTJ1VVVckwjIt+Yc8VPzU19ZK2k5eXp/j4eNfrH9+o5Jln\nnrnoXOoa/8y4t99+u3bv3n1F5//9998rOTlZ8+bNU+fOnSWdOiXnpptukiT16NFDhw4dUnV19QU7\n7Gc61+caGBh4zvcOHDggu90uLy+v865TFxfKQZKOHDmiX//615oyZYr69+8vSWrbtq1iYmIkSddf\nf72uvvpqHThwoE43XLpY/NjYWNe/BwwY4Prc62sfXMq2Nm/erL59+7peX+7nfjn5uet7gJqo09Rp\nyfwabWZ9pjZfem7UZfNQq82r1Q2lTkvm1mqOo5tXrW70l1dcTFBQkHbu3KmysjIdPXpUDodDvXr1\nUr9+/ZSTkyPpVPEKDg6u0/YvdTu7du1Sp06dXK/nzp2r7du3Szp1mszpu7DWd/yvv/5aKSkpMgxD\nJ06ckMPh0M0333xF5//b3/5Wc+bM0a233uoaW7p0qdavXy/p1J1T/f39a/UH069fP1fH8bPPPpPd\nbnd1Aa+77jodOXJEe/bs0YkTJ5SXl6d+/fpdcJ26uNj20tPTdd9992nAgAGusezsbC1btkzSqVOX\nDh486Lrbcn3GLy8vV1JSkuvUvE8++cT1udfXPriUbe3cubPG9/5yP/fauFLfA1w+6nTTq9Nm12gz\n6zO1+fyoy40btdp9tbo5Hk9zHN28arXFaOTnsG3evFnLli3T119/LX9/fwUGBmr58uV6+eWX1bt3\nb/Xo0UM5OTlatmyZ61SoX/7yl6qurtbMmTP1zTffyNvbW+np6frpT39a6/jn286Z8SWpb9++ys/P\nd633+eefa/bs2fL09JTFYtHcuXPVoUMHt8SfP3++tm3bJg8PD4WHh+uhhx66YvNv3bq1YmNja3Sh\nf/WrX+nWW2/V448/7ircdXnkzDPPPKPt27fLYrFo9uzZ+ve//y2bzaaIiAh98sknrk73kCFDlJSU\ndM51zvxDrovz5dC/f/8an78k3XXXXbrzzjs1depUlZWVqaqqShMnTnRdo1af8SMiIrRq1Sq99dZb\n+slPfqJf/OIXmjVrliwWS73ugwvFl6ShQ4dqxYoVuvrqqyWd6tJf7ud+ptOPz9q7d688PT3Vtm1b\nhYeH67rrrrui3wNcGHW6edZps2u0mfW5Oddm6nLjRa02r1Y31+NpjqObT61u9E0HAAAAAADQMDX5\nyysAAAAAAIA5aDoAAAAAAAC3oOkAAAAAAADcgqYDAAAAAABwC5oOAAAAAADALWg6AAAAAAAAt6Dp\nAAAAAAAA3IKmAwAAAAAAcAuaDgAAAAAAwC1oOgAAAAAAALeg6QAAAAAAANyCpgMAAAAAAHALmg4A\nAAAAAMAtaDoAAAAAAAC3oOkAAAAAAADcgqYDAAAAAABwC5oOAAAAAADALWg6AAAAAAAAt6DpAAAA\nAAAA3IKmAwAAAAAAcAuaDgAAAAAAwC1oOgAAAAAAALeg6QAAAAAAANyCpgMAAAAAAHALmg4AADRB\nf/nLX+plmT179ugXv/jFRZcLDw/X9u3bLym38/ntb3+rF1544bK2AQBN0ZWu6UB9oumAGvbs2aP+\n/fvrqaee0tixY1VQUKDhw4crKipKcXFx2rlzpyTp5MmTeu655xQVFaWoqCilpqaqoqJCkpSYmKiX\nX35Zo0eP1u23365XX31VL730kqKiohQTE6PCwkJJ0t/+9jfdddddio6O1tChQ1VQUHDB3AoKCjR0\n6FClp6crMjJS4eHh+uc//ylJqqys1Ny5c13jixcvdq0XHh6uF198UZGRkdq3b5/bt3++ee3bt09J\nSUmKjIzUXXfdpbfeeqvGPv/Tn/6koUOHKjQ0VO+++26tPjcAOFN1dbXmzZt32csAAMxHTUdjR9MB\nZyktLVXnzp21ZMkSTZ48WTNnzlROTo4eeOABTZ06VSdPntTf/vY3/f3vf9e6dev017/+VWVlZVq5\n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\neughn3IHAKO1dU2/8Ee1H/4YGRYWppKSkiZ/pJQar8FBQUHeeB599FGdPXtWCxcuVElJiR566CHN\nnDnT+0Mg2j9mOqBRgwYNUmlpqb744gtJ0jvvvKNLL71UV1xxhUaPHq3c3FydPn1aZ86cUU5OjkaN\nGtXsc38/DczjAAAgAElEQVT//fd67LHHVFVVJavVqqioqGYVlurqar3//vuSpPz8fA0YMEA/+tGP\nNG7cOG3dulW1tbXyeDx65ZVX9L//+78+59zS8zeWV3BwsEaMGOG9d+2f//yn9u7dq+joaJ9jBIDm\n6tGjh7fheV5DDU+3262nnnpKTz75pPLz85Wbm+vXl70LxznfZHU4HIqOjlZeXp73f3v27FFERITC\nwsLqrOPQ0Bfni+XxwwZ5RUWFrFarevTo0ey4u3btql/96ld677339PLLL2vlypX629/+5kvqAGC4\ntq7pF2rsB8emfqRsruDgYP385z/XW2+9pTfeeEO5ubnavXt3i+JFYKHpgEZ16dJFK1as0HPPPaf4\n+Hht3rxZy5cvl8ViUXx8vEaOHKn7779fd999ty699FI9/PDDzT53eHi4YmNj9cADDyghIUG/+tWv\n9Pzzz1/0uMsvv1yff/657rzzTq1Zs0bz58+XJKWkpKh379666667FB8fr++++847zcsXLT1/U3kt\nXLhQRUVFio+PV2pqqhYtWqTLLrvM5xgB4GJCQkJ09uxZVVdXN9rwPP+eqqoqnT59WqdOndKAAQMk\nSdnZ2QoJCfE+lai53nnnHZ09e1bHjx/X559/rqFDh2rEiBHau3ev98lFf/rTn7Ro0SJJ0uDBg72N\n3n/+85/6/PPPGzxvU43bmJiYOud/4403FBMTo+Dg5k/mnDZtmr799ltJ52676NatG7+wAQgYZtX0\nC40ePdo77vfff6/33ntPo0ePbvJHyuZ69tln9cknn0g6N2O4Z8+e1OAOxuLxeDxmBwE0R1FRkebN\nm6f33nuvXZ4fANrK2bNnNWXKFH3zzTdatWqV1qxZo0OHDikkJEQzZszQnXfeWec9a9as0QcffKDc\n3FxFREToySefVF5enoqLi7VmzRrde++9+uqrr5occ+zYsUpOTtb//M//6Pvvv1dSUpJSU1MlSR98\n8IFeeuklud1ude3aVRkZGRoyZIhKS0v1y1/+UocOHdI111yj8PBwXXHFFZo5c6bGjh2rJUuWaOjQ\n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\nNm3yeTx/xr/11ltbFHdLxj916pRnzJgxnhMnTnjOnj3rmTBhgufbb7/1vPnmm57MzEy/xiwqKvL8\n/Oc/93g8Hs+BAwc8EydOrLN//PjxnsOHD3tqa2s9ycnJnm+//faix7Tm+HFxcZ4jR454PB6PZ+bM\nmZ6dO3d69uzZ45k5c6bfY/oy/pgxYzxVVVU+HdOa45/ndrs9kyZN8lRVVbXo8/6hkydPeiZPnuyZ\nN29eg/+GjP784R8z63RTzK7h/sZkZF33Ny4j6n1jzL4O+BOT0dcGf2Iy+nrhb1znGXUdQePMrtVm\n12Qz669ZNdbMemp23TS7RppdC9v6O3W7v70iMjJSL7/8sux2e4P7i4uLNXDgQNntdoWGhmrIkCFy\nOp0qLCxUXFycpHNdIqfT6fPYvpxj3bp1euSRR2S1tt5fub85tEbuzTnPj3/8Y+Xm5qpbt26yWCzq\n3r27ysvL/RrrwjFvv/12SdI111yjiooKVVVVSTrXBbzkkkt02WWXyWq1atSoUSosLGzymNYcX5K2\nbdumSy+9VJIUHh6usrIyv3P1Z/zWOqal5/rDH/6gO++8U127dvVrnMbYbDatXbtWDoej3r62+Pzh\nHzPrdFPMruEtjak1jmutuIyo903FYuZ1wNeYJOOvDf7E1FrHGBWXUdcRNM7sWm12TTaz/ppVY82s\np2bXTbNrpNm1sK2/U7f7psOPf/xj77SXhpSWlio8PNz7Ojw8XC6Xq852q9Uqi8Wimpoan8Zu7jmq\nq6u1a9cujRs3zrstLy9Pjz32mJ544gkdPHjQp3F9Gb+mpkZpaWmaNGmSNmzY4FPcrTH++edEf/31\n1zp06JCioqIknZu+N3XqVD3yyCP66quvfBqzR48e3tfnP09JcrlcjX7WjR3jq4ud63y+JSUl+uST\nTzRq1ChJ56YATps2TcnJyfrkk0/8Grs540vS/PnzlZycrGXLlsnj8bRp/udt3bpVEyZM8L729/P+\noeDgYIWGhja4ry0+f/jHzDrdFLNruL8xGVnXWxJXa9f7pmIx8zrga0yS8dcGf2KSjL1etCQuybjr\nCBpndq02uyabWX/NqrFm1lOz66bZNdLsWtjW36nb1ZoOW7du1datW+tsmzlzpmJjY5t9Dk8jTwht\nbHtTYxcXFzfrHO+//75Gjx7t7caOGjVKt912m2655Ra98847WrRokdasWWPI+HPmzNE999wji8Wi\nyZMna+jQofXec7HcWzK+JP3973/X7NmzlZWVpZCQEEVFRSk8PFyjR4/WF198oblz5+qtt966aAwN\naU7srXGML+c6fvy4pk2bpvnz56tHjx666qqrNGPGDI0fP14HDx7Uww8/rB07dshms7X6+L/4xS8U\nGxurSy65RKmpqcrPz29WzK01viR98cUXuvrqq70Xi9b8vFtDa+aP+sys077G1ZY1vDVjaq263tpx\nScbW+8aYfR1o7vnb8trQnJja+nrR3LikwL+OdARm12qza7KZ9TeQa6yZ9dTsuml2jWyPtdCX/NtV\n0yEpKcnnhWEcDodKS0u9r0tKSjR48GA5HA65XC71799fbrdbHo+nyf9gGxo7PT29WecoKChQcnKy\n9/UPFylZtmzZRfPwd/wLx73tttv0zTff+Jx7S8Y/evSoUlNTtWTJEt14442Szk3HueaaayRJN998\ns77//nvV1tY22V0/r6HPMzIyssF9x44dk8PhUEhISKPH+Kqp8SWpqqpKP/vZz/TUU09pxIgRkqRe\nvXopISFBknTllVeqZ8+eOnbsmF+LLF1s/MTERO+fR44c6f282yp/Sdq5c6eGDx/ufd2Sz7slsRnx\n+ePizKzTvsbVljW8NWNqrbre2nG1dr1vjNnXAV9jkoy/NvgTk9HXC3/jksy7jnQmZtdqs2uymfU3\nkGqsmfXU7Lppdo0M5FpoxGff7m+vuJioqCjt27dPlZWVOnnypJxOp4YOHaqYmBjl5eVJOle8hg0b\n5vO5m3uO/fv3q3///t7XixYt0t69eyWdmyJzfgXW1h7/r3/9q9LS0uTxeHTmzBk5nU5dd911rZJ7\nc8aXpN/85jdasGCBbrrpJu+2tWvX6u2335Z0btXU8PDwZv9jiYmJ8XYav/zySzkcDm/374orrlBV\nVZX+9a9/6cyZMyooKFBMTEyTx/iTc1PnyszM1COPPKKRI0d6t+Xm5mrdunWSzk1XOn78uHeF5dYc\n/8SJE5o6dap3Ot5nn33m/bzbKn9J2rdvX53/3lvyefuiLT5/GMPIOt0Us2u4PzEZXdf9jUtq/Xrf\nVCxmXgd8jUky/trga0xtcb3wJ67zzLqOoGlG12qza7KZ9desGmtmPTW7bppdIwO5Fhrx2Vs87Xyu\n8c6dO7Vu3Tr99a9/VXh4uCIjI7V+/Xr913/9l2655RbdfPPNysvL07p167xToe655x7V1tZq3rx5\n+vvf/y6bzabMzExddtllPo3d2DkuHFuShg8frsLCQu9xX3/9tebPn6/g4GBZLBYtWrRIffv29Tn3\n5oy/dOlS7dmzR1arVWPHjtWTTz7ZKrk3Z/zu3bsrMTGxTgf60Ucf1U033aSnn37aW7R9fdzMsmXL\ntHfvXlksFs2fP19fffWV7Ha74uLi9Nlnn3k73HfccYemTp3a4DEX/gP2VWPjjxgxos7nLkl33323\n7rrrLs2ePVuVlZVyu92aMWOG97601hw/Li5O2dnZ2r59u370ox/pP/7jP/TMM8/IYrG0Sf7nF0D6\nyU9+og0bNqhnz56SznXmW/J5X+j847IOHTqk4OBg9erVS2PHjtUVV1zRZp8/fGdmnW6K2TXc35iM\nrOv+xmVUvW+M2dcBX2Jqq2uDLzG11fXCn7gkY68jaJzZtdrsmmxm/TWzxppZT82um2bXyM70nbrd\nNx0AAAAAAEBg6vC3VwAAAAAAAHPQdAAAAAAAAIag6QAAAAAAAAxB0wEAAAAAABiCpgMAAAAAADAE\nTQcAAAAAAGAImg4AAAAAAMAQ/x/2WYrM0ozhUQAAAABJRU5ErkJggg==\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": 677
+ },
+ "outputId": "e89b4710-be8a-486b-aef0-562d695ce1b3"
+ },
+ "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",
+ " pass\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.GradientDescentOptimizer(learning_rate=0.0007),\n",
+ " steps=5000,\n",
+ " batch_size=70,\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": 15,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "Training model...\n",
+ "RMSE (on training data):\n",
+ " period 00 : 209.00\n",
+ " period 01 : 129.63\n",
+ " period 02 : 114.60\n",
+ " period 03 : 112.91\n",
+ " period 04 : 110.93\n",
+ " period 05 : 108.50\n",
+ " period 06 : 105.22\n",
+ " period 07 : 100.94\n",
+ " period 08 : 95.97\n",
+ " period 09 : 90.72\n",
+ "Model training finished.\n",
+ "Final RMSE (on training data): 90.72\n",
+ "Final RMSE (on validation data): 91.17\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGACAYAAACz01iHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xl4U1X+BvD3ZmuaNmmTNOkC0rIo\ntIjsDovIDmVxUEFcAHEZx3FAHcVx+Q06oyiLjgsouOCCwjCiiAoKoogouCBYBkFpS9la2tItzdIk\nbdPk/v4oDS20oYWmN23fz/P4tFnuvd/kwPDOOeeeI4iiKIKIiIioFZFJXQARERFRUzHAEBERUavD\nAENEREStDgMMERERtToMMERERNTqMMAQERFRq6OQugCiUNa9e3d06tQJcrkcAOD1ejFw4EDMnz8f\nGo3mgs/7wQcfYPr06ec8v2HDBjz22GN47bXXMHLkSP/z5eXlGDJkCMaNG4fFixdf8HUbKzs7GwsX\nLsSxY8cAAOHh4Zg7dy7GjBkT9Gs3xYoVK5CdnX3Od7J7927ceeed6Nix4znHfPHFFy1V3kU5efIk\nRo8ejc6dOwMARFFETEwM/vGPfyAlJaVJ53r++eeRkJCAm2++udHHfPrpp1i/fj1Wr17dpGsRtRQG\nGKLzWL16NeLi4gAAlZWVeOCBB/D666/jgQceuKDzFRUV4c0336w3wABAfHw8PvvsszoB5ptvvoFO\np7ug612Ihx56CFOmTMFrr70GANi/fz9mz56NLVu2ID4+vsXquBjx8fGtJqw0RC6X1/kMmzdvxpw5\nc7B161aoVKpGn2fevHnBKI9IUhxCImoClUqFYcOG4dChQwCAiooKPPHEExg/fjwmTJiAxYsXw+v1\nAgDS09Nx0003ITU1FVOmTMHOnTsBADfddBPy8vKQmpqKysrKc67Rr18/7N69G2632//c5s2bMXTo\nUP/jyspKPP300xg/fjxGjRrlDxoAsG/fPlx//fVITU3FxIkT8cMPPwCo/n/0V111Fd577z1cc801\nGDZsGDZv3lzv58zMzETv3r39j3v37o2tW7f6g9wrr7yC4cOH49prr8Ubb7yBUaNGAQAeffRRrFix\nwn9c7cfnq2vhwoWYOXMmAOCXX37B1KlTMXbsWEyfPh05OTkAqnui/va3v2HkyJGYOXMmTp06dZ4W\nq9+GDRswd+5czJ49G88++yx2796Nm266Cffff7//H/stW7Zg8uTJSE1Nxa233ors7GwAwMsvv4z5\n8+dj2rRpWLVqVZ3z3n///Xj77bf9jw8dOoSrrroKPp8PL774IsaPH4/x48fj1ltvRUFBQZPrnjhx\nIsrLy3H06FEAwLp165CamopRo0bhwQcfRHl5OYDq733RokW45pprsGXLljrt0NCfS5/Ph6eeegoj\nRozAtGnTkJ6e7r/uzz//jOuuuw4TJ07EhAkTsGXLlibXTtTsRCJq0GWXXSbm5+f7H1utVnHGjBni\nihUrRFEUxddff1286667RI/HI7rdbnHq1KniJ598Inq9XnHChAnipk2bRFEUxV9//VUcOHCg6HA4\nxJ9++kkcM2ZMvdf76KOPxEceeUR86KGH/Mc6HA5x9OjR4ocffig+8sgjoiiK4iuvvCLOnj1brKio\nEJ1Op3jttdeK27dvF0VRFCdPnix+9tlnoiiK4scff+y/Vk5OjpiSkiKuXr1aFEVR3Lx5szh27Nh6\n67j33nvFkSNHiu+++66YlZVV57WMjAxxwIABYmFhoejxeMR77rlHHDlypCiKovjII4+Iy5cv97+3\n9uNAdfXs2VPcsGGD//MOHDhQ3LVrlyiKorhp0ybxuuuuE0VRFNesWSPOmDFD9Hg8osViEUeOHOn/\nTmoL9B3XfM99+vQRjx075n9/r169xB9++EEURVHMzc0V+/fvLx4/flwURVF86623xNmzZ4uiKIrL\nli0Tr7rqKrGkpOSc837++efijBkz/I+XLl0qLliwQMzMzBTHjRsnVlZWiqIoiu+995748ccfN1hf\nzfeSnJx8zvMDBw4Ujxw5Iu7Zs0ccPHiweOrUKVEURfHxxx8XFy9eLIpi9fd+zTXXiOXl5f7Hy5cv\nD/jncseOHeK4cePEsrIy0e12i9OmTRNnzpwpiqIoXn/99eLu3btFURTFY8eOiQ8++GDA2olaAntg\niM5j1qxZSE1NxejRozF69GgMGjQId911FwBgx44dmD59OhQKBdRqNa655hp8//33OHnyJIqLizFp\n0iQAQK9evZCQkIADBw406pqTJk3CZ599BgDYtm0bRo4cCZnszF/Xb775BrfccgtUKhU0Gg2mTJmC\nL7/8EgDwySefYMKECQCA/v37+3svAKCqqgrXX389AKBnz57Iy8ur9/rPPfccZsyYgU2bNmHy5MkY\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": {}
+ },
+ "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": 0,
+ "outputs": []
+ },
+ {
+ "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": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "#\n",
+ "# YOUR CODE HERE: Train the network using only latitude and longitude\n",
+ "#"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "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": {}
+ },
+ "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": 0,
+ "outputs": []
+ },
+ {
+ "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
From 8814736d02478b7f0d3da4d17b1debe24552db11 Mon Sep 17 00:00:00 2001
From: Aditya Joardar <30207466+joardar-aditya@users.noreply.github.com>
Date: Mon, 18 Feb 2019 01:21:14 +0530
Subject: [PATCH 13/13] Assignment 5 Solved! -: Final notebook MNISIT Solved!
---
...classification_of_handwritten_digits.ipynb | 2094 +++++++++++++++++
1 file changed, 2094 insertions(+)
create mode 100644 multi_class_classification_of_handwritten_digits.ipynb
diff --git a/multi_class_classification_of_handwritten_digits.ipynb b/multi_class_classification_of_handwritten_digits.ipynb
new file mode 100644
index 0000000..6a9b5fc
--- /dev/null
+++ b/multi_class_classification_of_handwritten_digits.ipynb
@@ -0,0 +1,2094 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "name": "multi-class_classification_of_handwritten_digits.ipynb",
+ "version": "0.3.2",
+ "provenance": [],
+ "collapsed_sections": [
+ "JndnmDMp66FL",
+ "266KQvZoMxMv",
+ "6sfw3LH0Oycm"
+ ],
+ "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": "mPa95uXvcpcn",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "# Classifying Handwritten Digits with Neural Networks"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "Fdpn8b90u8Tp",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ ""
+ ]
+ },
+ {
+ "metadata": {
+ "id": "c7HLCm66Cs2p",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "**Learning Objectives:**\n",
+ " * Train both a linear model and a neural network to classify handwritten digits from the classic [MNIST](http://yann.lecun.com/exdb/mnist/) data set\n",
+ " * Compare the performance of the linear and neural network classification models\n",
+ " * Visualize the weights of a neural-network hidden layer"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "HSEh-gNdu8T0",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Our goal is to map each input image to the correct numeric digit. We will create a NN with a few hidden layers and a Softmax layer at the top to select the winning class."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "2NMdE1b-7UIH",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Setup\n",
+ "\n",
+ "First, let's download the data set, import TensorFlow and other utilities, and load the data into a *pandas* `DataFrame`. Note that this data is a sample of the original MNIST training data; we've taken 20000 rows at random."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "4LJ4SD8BWHeh",
+ "colab_type": "code",
+ "cellView": "both",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 236
+ },
+ "outputId": "7959881e-725e-402c-b364-0931bc22b187"
+ },
+ "cell_type": "code",
+ "source": [
+ "from __future__ import print_function\n",
+ "\n",
+ "import glob\n",
+ "import math\n",
+ "import os\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",
+ "import seaborn as sns\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",
+ "mnist_dataframe = pd.read_csv(\n",
+ " \"https://download.mlcc.google.com/mledu-datasets/mnist_train_small.csv\",\n",
+ " sep=\",\",\n",
+ " header=None)\n",
+ "\n",
+ "# Use just the first 10,000 records for training/validation.\n",
+ "mnist_dataframe = mnist_dataframe.head(10000)\n",
+ "\n",
+ "mnist_dataframe = mnist_dataframe.reindex(np.random.permutation(mnist_dataframe.index))\n",
+ "mnist_dataframe.head()"
+ ],
+ "execution_count": 3,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " 1 \n",
+ " 2 \n",
+ " 3 \n",
+ " 4 \n",
+ " 5 \n",
+ " 6 \n",
+ " 7 \n",
+ " 8 \n",
+ " 9 \n",
+ " ... \n",
+ " 775 \n",
+ " 776 \n",
+ " 777 \n",
+ " 778 \n",
+ " 779 \n",
+ " 780 \n",
+ " 781 \n",
+ " 782 \n",
+ " 783 \n",
+ " 784 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 6849 \n",
+ " 3 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " ... \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 562 \n",
+ " 6 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " ... \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 3824 \n",
+ " 9 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " ... \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 1958 \n",
+ " 1 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " ... \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 4523 \n",
+ " 3 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " ... \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
5 rows × 785 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " 0 1 2 3 4 5 6 7 8 9 ... 775 776 777 \\\n",
+ "6849 3 0 0 0 0 0 0 0 0 0 ... 0 0 0 \n",
+ "562 6 0 0 0 0 0 0 0 0 0 ... 0 0 0 \n",
+ "3824 9 0 0 0 0 0 0 0 0 0 ... 0 0 0 \n",
+ "1958 1 0 0 0 0 0 0 0 0 0 ... 0 0 0 \n",
+ "4523 3 0 0 0 0 0 0 0 0 0 ... 0 0 0 \n",
+ "\n",
+ " 778 779 780 781 782 783 784 \n",
+ "6849 0 0 0 0 0 0 0 \n",
+ "562 0 0 0 0 0 0 0 \n",
+ "3824 0 0 0 0 0 0 0 \n",
+ "1958 0 0 0 0 0 0 0 \n",
+ "4523 0 0 0 0 0 0 0 \n",
+ "\n",
+ "[5 rows x 785 columns]"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 3
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "kg0-25p2mOi0",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Each row represents one labeled example. Column 0 represents the label that a human rater has assigned for one handwritten digit. For example, if Column 0 contains '6', then a human rater interpreted the handwritten character as the digit '6'. The ten digits 0-9 are each represented, with a unique class label for each possible digit. Thus, this is a multi-class classification problem with 10 classes."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "PQ7vuOwRCsZ1",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ ""
+ ]
+ },
+ {
+ "metadata": {
+ "id": "dghlqJPIu8UM",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Columns 1 through 784 contain the feature values, one per pixel for the 28×28=784 pixel values. The pixel values are on a gray scale in which 0 represents white, 255 represents black, and values between 0 and 255 represent shades of gray. Most of the pixel values are 0; you may want to take a minute to confirm that they aren't all 0. For example, adjust the following text block to print out the values in column 72."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "2ZkrL5MCqiJI",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 424
+ },
+ "outputId": "e2788e98-fe58-44e8-e6ed-609fb99b6014"
+ },
+ "cell_type": "code",
+ "source": [
+ "mnist_dataframe.loc[:, 72:72]"
+ ],
+ "execution_count": 4,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 72 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 6849 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 562 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 3824 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 1958 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 4523 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " ... \n",
+ " ... \n",
+ " \n",
+ " \n",
+ " 4517 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 2893 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 3727 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 1209 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 8838 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
10000 rows × 1 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " 72\n",
+ "6849 0\n",
+ "562 0\n",
+ "3824 0\n",
+ "1958 0\n",
+ "4523 0\n",
+ "... ..\n",
+ "4517 0\n",
+ "2893 0\n",
+ "3727 0\n",
+ "1209 0\n",
+ "8838 0\n",
+ "\n",
+ "[10000 rows x 1 columns]"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 4
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "vLNg2VxqhUZ",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Now, let's parse out the labels and features and look at a few examples. Note the use of `loc` which allows us to pull out columns based on original location, since we don't have a header row in this data set."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "JfFWWvMWDFrR",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def parse_labels_and_features(dataset):\n",
+ " \"\"\"Extracts labels and features.\n",
+ " \n",
+ " This is a good place to scale or transform the features if needed.\n",
+ " \n",
+ " Args:\n",
+ " dataset: A Pandas `Dataframe`, containing the label on the first column and\n",
+ " monochrome pixel values on the remaining columns, in row major order.\n",
+ " Returns:\n",
+ " A `tuple` `(labels, features)`:\n",
+ " labels: A Pandas `Series`.\n",
+ " features: A Pandas `DataFrame`.\n",
+ " \"\"\"\n",
+ " labels = dataset[0]\n",
+ "\n",
+ " # DataFrame.loc index ranges are inclusive at both ends.\n",
+ " features = dataset.loc[:,1:784]\n",
+ " # Scale the data to [0, 1] by dividing out the max value, 255.\n",
+ " features = features / 255\n",
+ "\n",
+ " return labels, features"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "mFY_-7vZu8UU",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 350
+ },
+ "outputId": "be81a869-0655-47b9-b0eb-2f58e8a1b9e4"
+ },
+ "cell_type": "code",
+ "source": [
+ "training_targets, training_examples = parse_labels_and_features(mnist_dataframe[:7500])\n",
+ "training_examples.describe()"
+ ],
+ "execution_count": 6,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " 2 \n",
+ " 3 \n",
+ " 4 \n",
+ " 5 \n",
+ " 6 \n",
+ " 7 \n",
+ " 8 \n",
+ " 9 \n",
+ " 10 \n",
+ " ... \n",
+ " 775 \n",
+ " 776 \n",
+ " 777 \n",
+ " 778 \n",
+ " 779 \n",
+ " 780 \n",
+ " 781 \n",
+ " 782 \n",
+ " 783 \n",
+ " 784 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 7500.0 \n",
+ " 7500.0 \n",
+ " 7500.0 \n",
+ " 7500.0 \n",
+ " 7500.0 \n",
+ " 7500.0 \n",
+ " 7500.0 \n",
+ " 7500.0 \n",
+ " 7500.0 \n",
+ " 7500.0 \n",
+ " ... \n",
+ " 7500.0 \n",
+ " 7500.0 \n",
+ " 7500.0 \n",
+ " 7500.0 \n",
+ " 7500.0 \n",
+ " 7500.0 \n",
+ " 7500.0 \n",
+ " 7500.0 \n",
+ " 7500.0 \n",
+ " 7500.0 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " ... \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " ... \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " ... \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " ... \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " ... \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " ... \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " ... \n",
+ " 1.0 \n",
+ " 1.0 \n",
+ " 0.3 \n",
+ " 0.2 \n",
+ " 1.0 \n",
+ " 0.2 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
8 rows × 784 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " 1 2 3 4 5 6 7 8 9 10 \\\n",
+ "count 7500.0 7500.0 7500.0 7500.0 7500.0 7500.0 7500.0 7500.0 7500.0 7500.0 \n",
+ "mean 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
+ "std 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
+ "min 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
+ "25% 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
+ "50% 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
+ "75% 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
+ "max 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
+ "\n",
+ " ... 775 776 777 778 779 780 781 782 783 \\\n",
+ "count ... 7500.0 7500.0 7500.0 7500.0 7500.0 7500.0 7500.0 7500.0 7500.0 \n",
+ "mean ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
+ "std ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
+ "min ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
+ "25% ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
+ "50% ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
+ "75% ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
+ "max ... 1.0 1.0 0.3 0.2 1.0 0.2 0.0 0.0 0.0 \n",
+ "\n",
+ " 784 \n",
+ "count 7500.0 \n",
+ "mean 0.0 \n",
+ "std 0.0 \n",
+ "min 0.0 \n",
+ "25% 0.0 \n",
+ "50% 0.0 \n",
+ "75% 0.0 \n",
+ "max 0.0 \n",
+ "\n",
+ "[8 rows x 784 columns]"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 6
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "4-Vgg-1zu8Ud",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 350
+ },
+ "outputId": "7f9c63ce-bdfc-4b0f-cf22-59ca1fb6e41a"
+ },
+ "cell_type": "code",
+ "source": [
+ "validation_targets, validation_examples = parse_labels_and_features(mnist_dataframe[7500:10000])\n",
+ "validation_examples.describe()"
+ ],
+ "execution_count": 7,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " 2 \n",
+ " 3 \n",
+ " 4 \n",
+ " 5 \n",
+ " 6 \n",
+ " 7 \n",
+ " 8 \n",
+ " 9 \n",
+ " 10 \n",
+ " ... \n",
+ " 775 \n",
+ " 776 \n",
+ " 777 \n",
+ " 778 \n",
+ " 779 \n",
+ " 780 \n",
+ " 781 \n",
+ " 782 \n",
+ " 783 \n",
+ " 784 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 2500.0 \n",
+ " 2500.0 \n",
+ " 2500.0 \n",
+ " 2500.0 \n",
+ " 2500.0 \n",
+ " 2500.0 \n",
+ " 2500.0 \n",
+ " 2500.0 \n",
+ " 2500.0 \n",
+ " 2500.0 \n",
+ " ... \n",
+ " 2500.0 \n",
+ " 2500.0 \n",
+ " 2500.0 \n",
+ " 2500.0 \n",
+ " 2500.0 \n",
+ " 2500.0 \n",
+ " 2500.0 \n",
+ " 2500.0 \n",
+ " 2500.0 \n",
+ " 2500.0 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " ... \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " ... \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " ... \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " ... \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " ... \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " ... \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " ... \n",
+ " 1.0 \n",
+ " 1.0 \n",
+ " 0.8 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
8 rows × 784 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " 1 2 3 4 5 6 7 8 9 10 \\\n",
+ "count 2500.0 2500.0 2500.0 2500.0 2500.0 2500.0 2500.0 2500.0 2500.0 2500.0 \n",
+ "mean 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
+ "std 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
+ "min 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
+ "25% 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
+ "50% 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
+ "75% 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
+ "max 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
+ "\n",
+ " ... 775 776 777 778 779 780 781 782 783 \\\n",
+ "count ... 2500.0 2500.0 2500.0 2500.0 2500.0 2500.0 2500.0 2500.0 2500.0 \n",
+ "mean ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
+ "std ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
+ "min ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
+ "25% ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
+ "50% ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
+ "75% ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
+ "max ... 1.0 1.0 0.8 0.0 0.0 0.0 0.0 0.0 0.0 \n",
+ "\n",
+ " 784 \n",
+ "count 2500.0 \n",
+ "mean 0.0 \n",
+ "std 0.0 \n",
+ "min 0.0 \n",
+ "25% 0.0 \n",
+ "50% 0.0 \n",
+ "75% 0.0 \n",
+ "max 0.0 \n",
+ "\n",
+ "[8 rows x 784 columns]"
+ ]
+ },
+ "metadata": {
+ "tags": []
+ },
+ "execution_count": 7
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "wrnAI1v6u8Uh",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Show a random example and its corresponding label."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "s-euVJVtu8Ui",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 360
+ },
+ "outputId": "18467f58-e6e1-4882-fb2a-5a451b6b8947"
+ },
+ "cell_type": "code",
+ "source": [
+ "rand_example = np.random.choice(training_examples.index)\n",
+ "_, ax = plt.subplots()\n",
+ "ax.matshow(training_examples.loc[rand_example].values.reshape(28, 28))\n",
+ "ax.set_title(\"Label: %i\" % training_targets.loc[rand_example])\n",
+ "ax.grid(False)"
+ ],
+ "execution_count": 8,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAUsAAAFXCAYAAAAro2x+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAFGRJREFUeJzt3V9Q1XX+x/HX8ZyYPImSKOzQrttW\n6FJq06YmbJqAk+EMpY47o4xSqxf2B5OUMYbSbaJZBNFNch2Qyqnoz9nFi3Vn3YXM3clxgA1m+4PV\nYO3mkCOESP6JQ4vI72Jnzi9XXN6cOHwP8Hxc6eHd93y+c+w538M5n3Ncvb29vQIA/E9jnF4AAAwH\nxBIADIglABgQSwAwIJYAYEAsAcCAWGLITJs2TS0tLQP6b1JSUlRfXz+g/yY3N1d79uzpd661tVW/\n/OUvlZKSovT0dL333nsDuh+MLsQSo1Zubq7mz5+vw4cP66mnnlJFRYXTS0IYI5ZwnN/vV3Z2thYt\nWqSUlBQVFhZe9vPa2lotWbJE99xzj37zm98Ebj906JDS09OVmpqqNWvW6MyZM1cce8eOHXrzzTev\nuP3UqVM6duyYVq1aJUmaO3eudu3aNchnhpHE4/QCgDfffFPffPON/vKXv+jcuXO69957lZqaqlmz\nZkmSjh07pv379+vrr79WWlqa0tLSdN1112nz5s166623NHXqVJWVlemZZ55RSUnJZcfetGlTn/f5\n6aef6oc//KF27Nihv/71r5o8ebLy8vJ06623hvx8MTxxZQnHrVmzRnv27JHL5dKECRMUHx+vL7/8\nMvDz9PR0ud1uRUdHa/bs2frHP/6hd999V3PmzNHUqVMlSStWrNDhw4fV09Njus9z586pqalJs2bN\nUlVVle6//35lZWXp4sWLITlHDH9cWcJxX3zxhbZt26Z//vOfGjNmjFpaWrRs2bLAzydOnBj4c2Rk\npM6dO6fe3l7V19frvvvuC/xs3Lhx+vrrr033GRkZqejoaC1cuFCS9Itf/EKFhYX64osvdMsttwzS\nmWEkIZZw3LPPPqvbbrtNv/3tb+V2u7VixYrLfn727NnL/jxhwgRFREQoKSnpiqfdVnFxcfrmm290\n6dIljRkzRi6XS2PGjNGYMTzZQt/4lwHHtbe3KyEhQW63W0ePHtWJEyfU2dkZ+Pmf/vQnXbp0Se3t\n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\nBACD/wNvgpd0JMGtvAAAAABJRU5ErkJggg==\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "ScmYX7xdZMXE",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Task 1: Build a Linear Model for MNIST\n",
+ "\n",
+ "First, let's create a baseline model to compare against. The `LinearClassifier` provides a set of *k* one-vs-all classifiers, one for each of the *k* classes.\n",
+ "\n",
+ "You'll notice that in addition to reporting accuracy, and plotting Log Loss over time, we also display a [**confusion matrix**](https://en.wikipedia.org/wiki/Confusion_matrix). The confusion matrix shows which classes were misclassified as other classes. Which digits get confused for each other?\n",
+ "\n",
+ "Also note that we track the model's error using the `log_loss` function. This should not be confused with the loss function internal to `LinearClassifier` that is used for training."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "cpoVC4TSdw5Z",
+ "colab_type": "code",
+ "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",
+ " \n",
+ " # There are 784 pixels in each image.\n",
+ " return set([tf.feature_column.numeric_column('pixels', shape=784)])"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "kMmL89yGeTfz",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Here, we'll make separate input functions for training and for prediction. We'll nest them in `create_training_input_fn()` and `create_predict_input_fn()`, respectively, so we can invoke these functions to return the corresponding `_input_fn`s to pass to our `.train()` and `.predict()` calls."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "OeS47Bmn5Ms2",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def create_training_input_fn(features, labels, batch_size, num_epochs=None, shuffle=True):\n",
+ " \"\"\"A custom input_fn for sending MNIST data to the estimator for training.\n",
+ "\n",
+ " Args:\n",
+ " features: The training features.\n",
+ " labels: The training labels.\n",
+ " batch_size: Batch size to use during training.\n",
+ "\n",
+ " Returns:\n",
+ " A function that returns batches of training features and labels during\n",
+ " training.\n",
+ " \"\"\"\n",
+ " def _input_fn(num_epochs=None, shuffle=True):\n",
+ " # Input pipelines are reset with each call to .train(). To ensure model\n",
+ " # gets a good sampling of data, even when number of steps is small, we \n",
+ " # shuffle all the data before creating the Dataset object\n",
+ " idx = np.random.permutation(features.index)\n",
+ " raw_features = {\"pixels\":features.reindex(idx)}\n",
+ " raw_targets = np.array(labels[idx])\n",
+ " \n",
+ " ds = Dataset.from_tensor_slices((raw_features,raw_targets)) # warning: 2GB limit\n",
+ " ds = ds.batch(batch_size).repeat(num_epochs)\n",
+ " \n",
+ " if shuffle:\n",
+ " ds = ds.shuffle(10000)\n",
+ " \n",
+ " # Return the next batch of data.\n",
+ " feature_batch, label_batch = ds.make_one_shot_iterator().get_next()\n",
+ " return feature_batch, label_batch\n",
+ "\n",
+ " return _input_fn"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "8zoGWAoohrwS",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def create_predict_input_fn(features, labels, batch_size):\n",
+ " \"\"\"A custom input_fn for sending mnist data to the estimator for predictions.\n",
+ "\n",
+ " Args:\n",
+ " features: The features to base predictions on.\n",
+ " labels: The labels of the prediction examples.\n",
+ "\n",
+ " Returns:\n",
+ " A function that returns features and labels for predictions.\n",
+ " \"\"\"\n",
+ " def _input_fn():\n",
+ " raw_features = {\"pixels\": features.values}\n",
+ " raw_targets = np.array(labels)\n",
+ " \n",
+ " ds = Dataset.from_tensor_slices((raw_features, raw_targets)) # warning: 2GB limit\n",
+ " ds = ds.batch(batch_size)\n",
+ " \n",
+ " \n",
+ " # Return the next batch of data.\n",
+ " feature_batch, label_batch = ds.make_one_shot_iterator().get_next()\n",
+ " return feature_batch, label_batch\n",
+ "\n",
+ " return _input_fn"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "G6DjSLZMu8Um",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def train_linear_classification_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 classification model for the MNIST digits dataset.\n",
+ " \n",
+ " In addition to training, this function also prints training progress information,\n",
+ " a plot of the training and validation loss over time, and a confusion\n",
+ " matrix.\n",
+ " \n",
+ " Args:\n",
+ " learning_rate: A `float`, the learning rate 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",
+ " training_examples: A `DataFrame` containing the training features.\n",
+ " training_targets: A `DataFrame` containing the training labels.\n",
+ " validation_examples: A `DataFrame` containing the validation features.\n",
+ " validation_targets: A `DataFrame` containing the validation labels.\n",
+ " \n",
+ " Returns:\n",
+ " The trained `LinearClassifier` object.\n",
+ " \"\"\"\n",
+ "\n",
+ " periods = 10\n",
+ "\n",
+ " steps_per_period = steps / periods \n",
+ " # Create the input functions.\n",
+ " predict_training_input_fn = create_predict_input_fn(\n",
+ " training_examples, training_targets, batch_size)\n",
+ " predict_validation_input_fn = create_predict_input_fn(\n",
+ " validation_examples, validation_targets, batch_size)\n",
+ " training_input_fn = create_training_input_fn(\n",
+ " training_examples, training_targets, batch_size)\n",
+ " \n",
+ " # Create a LinearClassifier object.\n",
+ " my_optimizer = tf.train.AdagradOptimizer(learning_rate=learning_rate)\n",
+ " my_optimizer = tf.contrib.estimator.clip_gradients_by_norm(my_optimizer, 5.0)\n",
+ " classifier = tf.estimator.LinearClassifier(\n",
+ " feature_columns=construct_feature_columns(),\n",
+ " n_classes=10,\n",
+ " optimizer=my_optimizer,\n",
+ " config=tf.estimator.RunConfig(keep_checkpoint_max=1)\n",
+ " )\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(\"LogLoss error (on validation data):\")\n",
+ " training_errors = []\n",
+ " validation_errors = []\n",
+ " for period in range (0, periods):\n",
+ " # Train the model, starting from the prior state.\n",
+ " classifier.train(\n",
+ " input_fn=training_input_fn,\n",
+ " steps=steps_per_period\n",
+ " )\n",
+ " \n",
+ " # Take a break and compute probabilities.\n",
+ " training_predictions = list(classifier.predict(input_fn=predict_training_input_fn))\n",
+ " training_probabilities = np.array([item['probabilities'] for item in training_predictions])\n",
+ " training_pred_class_id = np.array([item['class_ids'][0] for item in training_predictions])\n",
+ " training_pred_one_hot = tf.keras.utils.to_categorical(training_pred_class_id,10)\n",
+ " \n",
+ " validation_predictions = list(classifier.predict(input_fn=predict_validation_input_fn))\n",
+ " validation_probabilities = np.array([item['probabilities'] for item in validation_predictions]) \n",
+ " validation_pred_class_id = np.array([item['class_ids'][0] for item in validation_predictions])\n",
+ " validation_pred_one_hot = tf.keras.utils.to_categorical(validation_pred_class_id,10) \n",
+ " \n",
+ " # Compute training and validation errors.\n",
+ " training_log_loss = metrics.log_loss(training_targets, training_pred_one_hot)\n",
+ " validation_log_loss = metrics.log_loss(validation_targets, validation_pred_one_hot)\n",
+ " # Occasionally print the current loss.\n",
+ " print(\" period %02d : %0.2f\" % (period, validation_log_loss))\n",
+ " # Add the loss metrics from this period to our list.\n",
+ " training_errors.append(training_log_loss)\n",
+ " validation_errors.append(validation_log_loss)\n",
+ " print(\"Model training finished.\")\n",
+ " # Remove event files to save disk space.\n",
+ " _ = map(os.remove, glob.glob(os.path.join(classifier.model_dir, 'events.out.tfevents*')))\n",
+ " \n",
+ " # Calculate final predictions (not probabilities, as above).\n",
+ " final_predictions = classifier.predict(input_fn=predict_validation_input_fn)\n",
+ " final_predictions = np.array([item['class_ids'][0] for item in final_predictions])\n",
+ " \n",
+ " \n",
+ " accuracy = metrics.accuracy_score(validation_targets, final_predictions)\n",
+ " print(\"Final accuracy (on validation data): %0.2f\" % accuracy)\n",
+ "\n",
+ " # Output a graph of loss metrics over periods.\n",
+ " plt.ylabel(\"LogLoss\")\n",
+ " plt.xlabel(\"Periods\")\n",
+ " plt.title(\"LogLoss vs. Periods\")\n",
+ " plt.plot(training_errors, label=\"training\")\n",
+ " plt.plot(validation_errors, label=\"validation\")\n",
+ " plt.legend()\n",
+ " plt.show()\n",
+ " \n",
+ " # Output a plot of the confusion matrix.\n",
+ " cm = metrics.confusion_matrix(validation_targets, final_predictions)\n",
+ " # Normalize the confusion matrix by row (i.e by the number of samples\n",
+ " # in each class).\n",
+ " cm_normalized = cm.astype(\"float\") / cm.sum(axis=1)[:, np.newaxis]\n",
+ " ax = sns.heatmap(cm_normalized, cmap=\"bone_r\")\n",
+ " ax.set_aspect(1)\n",
+ " plt.title(\"Confusion matrix\")\n",
+ " plt.ylabel(\"True label\")\n",
+ " plt.xlabel(\"Predicted label\")\n",
+ " plt.show()\n",
+ "\n",
+ " return classifier"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "ItHIUyv2u8Ur",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "**Spend 5 minutes seeing how well you can do on accuracy with a linear model of this form. For this exercise, limit yourself to experimenting with the hyperparameters for batch size, learning rate and steps.**\n",
+ "\n",
+ "Stop if you get anything above about 0.9 accuracy."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "yaiIhIQqu8Uv",
+ "colab_type": "code",
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1121
+ },
+ "outputId": "f874ef65-4856-4e93-d856-aded315e671d"
+ },
+ "cell_type": "code",
+ "source": [
+ "classifier = train_linear_classification_model(\n",
+ " learning_rate=0.02,\n",
+ " steps=1000,\n",
+ " batch_size=10,\n",
+ " training_examples=training_examples,\n",
+ " training_targets=training_targets,\n",
+ " validation_examples=validation_examples,\n",
+ " validation_targets=validation_targets)"
+ ],
+ "execution_count": 13,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "WARNING: The TensorFlow contrib module will not be included in TensorFlow 2.0.\n",
+ "For more information, please see:\n",
+ " * https://github.com/tensorflow/community/blob/master/rfcs/20180907-contrib-sunset.md\n",
+ " * https://github.com/tensorflow/addons\n",
+ "If you depend on functionality not listed there, please file an issue.\n",
+ "\n",
+ "Training model...\n",
+ "LogLoss error (on validation data):\n",
+ " period 00 : 16.08\n",
+ " period 01 : 12.14\n",
+ " period 02 : 8.51\n",
+ " period 03 : 8.39\n",
+ " period 04 : 8.29\n",
+ " period 05 : 6.89\n",
+ " period 06 : 7.34\n",
+ " period 07 : 6.24\n",
+ " period 08 : 6.74\n",
+ " period 09 : 6.12\n",
+ "Model training finished.\n",
+ "Final accuracy (on validation data): 0.82\n"
+ ],
+ "name": "stdout"
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\nj7ZNZgs2p18bbUe4h2GU93Ccr72Ey3V5XRyBiIj6om6F9i9+8QskJyfj9ttvxx133IH58+fj9ttv\nx65du3D33Xfbu0bqgWmjA+DrocC+UyWoabg29/jV0fa2PI62iYj6m259Ee3OO+/EokWLkJubC7PZ\njPDwcHh6etq7NuoFiViEJXER+GRrDram5+Pe+cMAAEM9h2CIRwTOVJ5DUWMJQlyDnFwpERF1V7dG\n2mq1Gp988gn+8Y9/4L333sOXX36Jpqam6z+QnGrm2CB4u8ux52QR6tR6AM23hSVFzAXAz7aJiPqb\nboX2s88+i8bGRtxzzz1YtmwZKisr8cwzz9i7NuoliViExdMjoDeakXok39o+xmckQlyDcLz8NMo1\nnNmOiKi/6FZoV1ZW4sknn0RCQgISExPxpz/9CWVlZfaujWxg1rggeLjKsOt4ERo0bUfbFliwPW+P\nkyskIqLu6lZoa7VaaLVa6+8ajQY6na6LR1BfIZWIkTwtAjqDCdszCqztE/3Hwl/pi/TSY6hpqnVi\nhURE1F3dCu27774bycnJWLVqFVatWoUlS5Zg+fLl9q6NbGTOhGC4K6XYeawQ6qbm++pFgggLwxNh\nspiwM3+vkyskIqLu6FZo33nnnfjiiy9w66234rbbbsN///tfXLzIWbX6C7lUjKRp4dDqTNiRUWht\njw2cCC+5J/YXp6NB3+jEComIqDu6vdxTUFAQ5s+fj3nz5iEgIACnT5+2Z11kY4kTQ+DqIsX2owXQ\n6owAAIlIgvnhc2AwG7C7YL+TKyQiouvp8RqNFovluvucP38e8+fPx2effQYAKCkpQUpKCpYvX47H\nHnsMer2+p6enG6SQSbAgNgwanRFpx6+NtmcEx8JVqsKeooPQGrVdHIGIiJytx6F9vVWiNBoN1q5d\ni7i4OGvb22+/jeXLl+Pzzz9HREQENmzY0NPTUw/MmxQKpVyC1CMFaNI3j7ZlYhnmhc2G1tiEvYWH\nnFwhERF1pcvQnjNnDhISEtr9N2fOHJw8ebLLA8tkMqxbtw7+/v7WtvT0dMybNw8AkJiYiEOHGBKO\npFRIMH9KKBq1Buw+UWxtnxU6HS4SBdIK9kFv4tUPIqK+qstpTD///POeH1gigUTS9vBarRYymQwA\n4OPjg4qKrif28PJSQiIR97iGzvj5udn8mP3FvYtGYXtGIbZlFGBZ0kjIpWIAbkgenoBvs7bidP1p\n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\n6dPebpLP0nq7AWooLy+nra2NsrIympub2blzJ2VlZd5uVkA6e/YsjY2NlJWVYbVaefTRR7n//vu9\n3ayA9fLLLxMVFeXtZgQsq9XKSy+9xKFDh7DZbLz44ousX7/e280KOIcPH2bRokU888wzmEwmfvjD\nH/Lee+95u1k+6bYI7TNnzrBx40YAMjMzGRwcZGRkBJ1O5+WWBZ7i4mKWLVsGQGRkJGNjYzidToKD\ng73cssDT3NxMU1OThMgcOnPmDHfccQc6nQ6dTsfzzz/v7SYFpJiYGOrr6wEYGhoiJibGyy3yXbfF\n5fG+vr6rdoLY2Fh6e3u92KLAFRwcTHh4OAAHDx7k7rvvlsCeI7t372bHjh3ebkZA6+zsZHx8nKee\neort27dz5swZbzcpID300EN0dXVx33338cQTT/DrX//a203yWbdFT/urZObWuXf8+HEOHjzI3//+\nd283JSC99dZbrFixgpSUFG83JeANDAywZ88eurq6ePLJJzl58iQajcbbzQoob7/9NklJSbz66qvU\n1dWxc+dOeU7jOm6L0E5ISKCvr8/z32azmfj4eC+2KLCdPn2av/71r7zyyivo9XpvNycgnTp1io6O\nDk6dOkVPTw+hoaEkJiZy5513ertpAcVgMFBYWIhWqyU1NZWIiAgsFgsGg8HbTQsolZWVrF27FoCc\nnBzMZrPcVruO2+Ly+F133cX7778PQHV1NQkJCXI/e44MDw/zwgsv8Le//Y3o6GhvNydg/fnPf+bQ\noUO88cYbPP744zz99NMS2HNg7dq1nD17FpfLhdVqxWazyf3WOZCWlsb58+cBuHz5MhERERLY13Fb\n9LSLiorIz89n27ZtaDQadu3a5e0mBaxjx45htVr5+c9/7nlt9+7dJCUlebFVQtwao9HIAw88wNat\nWwH47W9/S1DQbdHXUVVJSQk7d+7kiSeewOFw8Nxzz3m7ST5LluYUQggh/IScMgohhBB+QkJbCCGE\n8BMS2kIIIYSfkNAWQggh/ISEthBCCOEnJLSFCDCdnZ0UFBRQWlrqWTXpmWeeYWho6IY/o7S0FKfT\necPbf//73+ezzz67leYKIW6ChLYQASg2NpZ9+/axb98+9u/fT0JCAi+//PIN//6+fftkcgshfNBt\nMbmKELe74uJiysrKqKurY/fu3TgcDux2O7/73e/Iy8ujtLSUnJwcamtree2118jLy6O6uprJyUme\nffZZenp6cDgcbNq0ie3btzM2NsYvfvELrFYraWlpTExMAGAymfjlL38JuNf6Likp4bHHHvPmVxci\noEhoCxHgnE4n//rXv1i5ciW/+tWveOmll0hNTf3awgzh4eH84x//uOp39+3bR2RkJH/6058YHx/n\nwQcfZN26dXz66aeEhYVRVlaG2Wxmw4YNALz77rtkZGTw+9//nomJCQ4cOKD69xUikEloCxGALBYL\npaWlALhcLlatWsWWLVv4y1/+wm9+8xvPdiMjI7hcLsA93e9XnT9/ns2bNwMQFhZGQUEB1dXVNDQ0\nsHLlSsC9IE9GRgYA69at4/XXX2fHjh3cc889lJSUzOn3FOJ2I6EtRACauqc93fDwMCEhIV97fUpI\nSMjXXvvqEpSKoqDRaFAU5ao5uKeCPzMzk3feeYeKigree+89XnvtNfbv3z/TryOEuEIeRBPiNqHX\n60lOTuajjz4CoKWlhT179nzj7yxfvpzTp08DYLPZqK6uJj8/n8zMTKqqqgDo7u6mpaUFgKNHj3Lx\n4kXuvPNOdu3aRXd3Nw6HYw6/lRC3F+lpC3Eb2b17N3/4wx/Yu3cvDoeDHTt2fOP2paWlPPvss/zg\nBz9gcnKSp59+muTkZDZt2sSJEyfYvn07ycnJLF26FIDFixeza9cuQkNDURSFH/3oR2i1cpgRYrbI\nKl9CCCGEn5DL40IIIYSfkNAWQggh/ISEthBCCOEnJLSFEEIIPyGhLYQQQvgJCW0hhBDCT0hoCyGE\nEH5CQlsIIYTwE/8HZPjHSEVHGV4AAAAASUVORK5CYII=\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "tags": []
+ }
+ }
+ ]
+ },
+ {
+ "metadata": {
+ "id": "266KQvZoMxMv",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below for one possible solution."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "lRWcn24DM3qa",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Here is a set of parameters that should attain roughly 0.9 accuracy."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "TGlBMrUoM1K_",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "_ = train_linear_classification_model(\n",
+ " learning_rate=0.03,\n",
+ " steps=1000,\n",
+ " batch_size=30,\n",
+ " training_examples=training_examples,\n",
+ " training_targets=training_targets,\n",
+ " validation_examples=validation_examples,\n",
+ " validation_targets=validation_targets)"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "mk095OfpPdOx",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Task 2: Replace the Linear Classifier with a Neural Network\n",
+ "\n",
+ "**Replace the LinearClassifier above with a [`DNNClassifier`](https://www.tensorflow.org/api_docs/python/tf/estimator/DNNClassifier) and find a parameter combination that gives 0.95 or better accuracy.**\n",
+ "\n",
+ "You may wish to experiment with additional regularization methods, such as dropout. These additional regularization methods are documented in the comments for the `DNNClassifier` class."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "rm8P_Ttwu8U4",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "#\n",
+ "# YOUR CODE HERE: Replace the linear classifier with a neural network.\n",
+ "#\n",
+ "def train_nn_classification_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 classification model for the MNIST digits dataset.\n",
+ " \n",
+ " In addition to training, this function also prints training progress information,\n",
+ " a plot of the training and validation loss over time, as well as a confusion\n",
+ " matrix.\n",
+ " \n",
+ " Args:\n",
+ " learning_rate: A `float`, the learning rate 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 the training features.\n",
+ " training_targets: A `DataFrame` containing the training labels.\n",
+ " validation_examples: A `DataFrame` containing the validation features.\n",
+ " validation_targets: A `DataFrame` containing the validation labels.\n",
+ " \n",
+ " Returns:\n",
+ " The trained `DNNClassifier` object.\n",
+ " \"\"\"\n",
+ "\n",
+ " periods = 10\n",
+ " # Caution: input pipelines are reset with each call to train. \n",
+ " # If the number of steps is small, your model may never see most of the data. \n",
+ " # So with multiple `.train` calls like this you may want to control the length \n",
+ " # of training with num_epochs passed to the input_fn. Or, you can do a really-big shuffle, \n",
+ " # or since it's in-memory data, shuffle all the data in the `input_fn`.\n",
+ " steps_per_period = steps / periods \n",
+ " # Create the input functions.\n",
+ " predict_training_input_fn = create_predict_input_fn(\n",
+ " training_examples, training_targets, batch_size)\n",
+ " predict_validation_input_fn = create_predict_input_fn(\n",
+ " validation_examples, validation_targets, batch_size)\n",
+ " training_input_fn = create_training_input_fn(\n",
+ " training_examples, training_targets, batch_size)\n",
+ " \n",
+ " # Create the input functions.\n",
+ " predict_training_input_fn = create_predict_input_fn(\n",
+ " training_examples, training_targets, batch_size)\n",
+ " predict_validation_input_fn = create_predict_input_fn(\n",
+ " validation_examples, validation_targets, batch_size)\n",
+ " training_input_fn = create_training_input_fn(\n",
+ " training_examples, training_targets, batch_size)\n",
+ " \n",
+ " # Create feature columns.\n",
+ " feature_columns = [tf.feature_column.numeric_column('pixels', shape=784)]\n",
+ "\n",
+ " # Create a DNNClassifier object.\n",
+ " my_optimizer = tf.train.AdagradOptimizer(learning_rate=learning_rate)\n",
+ " my_optimizer = tf.contrib.estimator.clip_gradients_by_norm(my_optimizer, 5.0)\n",
+ " classifier = tf.estimator.DNNClassifier(\n",
+ " feature_columns=feature_columns,\n",
+ " n_classes=10,\n",
+ " hidden_units=hidden_units,\n",
+ " optimizer=my_optimizer,\n",
+ " config=tf.contrib.learn.RunConfig(keep_checkpoint_max=1)\n",
+ " )\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(\"LogLoss error (on validation data):\")\n",
+ " training_errors = []\n",
+ " validation_errors = []\n",
+ " for period in range (0, periods):\n",
+ " # Train the model, starting from the prior state.\n",
+ " classifier.train(\n",
+ " input_fn=training_input_fn,\n",
+ " steps=steps_per_period\n",
+ " )\n",
+ " \n",
+ " # Take a break and compute probabilities.\n",
+ " training_predictions = list(classifier.predict(input_fn=predict_training_input_fn))\n",
+ " training_probabilities = np.array([item['probabilities'] for item in training_predictions])\n",
+ " training_pred_class_id = np.array([item['class_ids'][0] for item in training_predictions])\n",
+ " training_pred_one_hot = tf.keras.utils.to_categorical(training_pred_class_id,10)\n",
+ " \n",
+ " validation_predictions = list(classifier.predict(input_fn=predict_validation_input_fn))\n",
+ " validation_probabilities = np.array([item['probabilities'] for item in validation_predictions]) \n",
+ " validation_pred_class_id = np.array([item['class_ids'][0] for item in validation_predictions])\n",
+ " validation_pred_one_hot = tf.keras.utils.to_categorical(validation_pred_class_id,10) \n",
+ " \n",
+ " # Compute training and validation errors.\n",
+ " training_log_loss = metrics.log_loss(training_targets, training_pred_one_hot)\n",
+ " validation_log_loss = metrics.log_loss(validation_targets, validation_pred_one_hot)\n",
+ " # Occasionally print the current loss.\n",
+ " print(\" period %02d : %0.2f\" % (period, validation_log_loss))\n",
+ " # Add the loss metrics from this period to our list.\n",
+ " training_errors.append(training_log_loss)\n",
+ " validation_errors.append(validation_log_loss)\n",
+ " print(\"Model training finished.\")\n",
+ " # Remove event files to save disk space.\n",
+ " _ = map(os.remove, glob.glob(os.path.join(classifier.model_dir, 'events.out.tfevents*')))\n",
+ " \n",
+ " # Calculate final predictions (not probabilities, as above).\n",
+ " final_predictions = classifier.predict(input_fn=predict_validation_input_fn)\n",
+ " final_predictions = np.array([item['class_ids'][0] for item in final_predictions])\n",
+ " \n",
+ " \n",
+ " accuracy = metrics.accuracy_score(validation_targets, final_predictions)\n",
+ " print(\"Final accuracy (on validation data): %0.2f\" % accuracy)\n",
+ "\n",
+ " # Output a graph of loss metrics over periods.\n",
+ " plt.ylabel(\"LogLoss\")\n",
+ " plt.xlabel(\"Periods\")\n",
+ " plt.title(\"LogLoss vs. Periods\")\n",
+ " plt.plot(training_errors, label=\"training\")\n",
+ " plt.plot(validation_errors, label=\"validation\")\n",
+ " plt.legend()\n",
+ " plt.show()\n",
+ " \n",
+ " # Output a plot of the confusion matrix.\n",
+ " cm = metrics.confusion_matrix(validation_targets, final_predictions)\n",
+ " # Normalize the confusion matrix by row (i.e by the number of samples\n",
+ " # in each class).\n",
+ " cm_normalized = cm.astype(\"float\") / cm.sum(axis=1)[:, np.newaxis]\n",
+ " ax = sns.heatmap(cm_normalized, cmap=\"bone_r\")\n",
+ " ax.set_aspect(1)\n",
+ " plt.title(\"Confusion matrix\")\n",
+ " plt.ylabel(\"True label\")\n",
+ " plt.xlabel(\"Predicted label\")\n",
+ " plt.show()\n",
+ "\n",
+ " return classifier"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "TOfmiSvqu8U9",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Once you have a good model, double check that you didn't overfit the validation set by evaluating on the test data that we'll load below.\n"
+ ]
+ },
+ {
+ "metadata": {
+ "id": "evlB5ubzu8VJ",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "mnist_test_dataframe = pd.read_csv(\n",
+ " \"https://download.mlcc.google.com/mledu-datasets/mnist_test.csv\",\n",
+ " sep=\",\",\n",
+ " header=None)\n",
+ "\n",
+ "test_targets, test_examples = parse_labels_and_features(mnist_test_dataframe)\n",
+ "test_examples.describe()"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "PDuLd2Hcu8VL",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "#\n",
+ "# YOUR CODE HERE: Calculate accuracy on the test set.\n",
+ "#\n",
+ "classifier = train_nn_classification_model(\n",
+ " learning_rate=0.03,\n",
+ " steps=1000,\n",
+ " batch_size=50,\n",
+ " hidden_units=[100, 100],\n",
+ " training_examples=training_examples,\n",
+ " training_targets=training_targets,\n",
+ " validation_examples=validation_examples,\n",
+ " validation_targets=validation_targets)"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "6sfw3LH0Oycm",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "### Solution\n",
+ "\n",
+ "Click below for a possible solution."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "XatDGFKEO374",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "The code below is almost identical to the original `LinearClassifer` training code, with the exception of the NN-specific configuration, such as the hyperparameter for hidden units."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "kdNTx8jkPQUx",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "def train_nn_classification_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 classification model for the MNIST digits dataset.\n",
+ " \n",
+ " In addition to training, this function also prints training progress information,\n",
+ " a plot of the training and validation loss over time, as well as a confusion\n",
+ " matrix.\n",
+ " \n",
+ " Args:\n",
+ " learning_rate: A `float`, the learning rate 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 the training features.\n",
+ " training_targets: A `DataFrame` containing the training labels.\n",
+ " validation_examples: A `DataFrame` containing the validation features.\n",
+ " validation_targets: A `DataFrame` containing the validation labels.\n",
+ " \n",
+ " Returns:\n",
+ " The trained `DNNClassifier` object.\n",
+ " \"\"\"\n",
+ "\n",
+ " periods = 10\n",
+ " # Caution: input pipelines are reset with each call to train. \n",
+ " # If the number of steps is small, your model may never see most of the data. \n",
+ " # So with multiple `.train` calls like this you may want to control the length \n",
+ " # of training with num_epochs passed to the input_fn. Or, you can do a really-big shuffle, \n",
+ " # or since it's in-memory data, shuffle all the data in the `input_fn`.\n",
+ " steps_per_period = steps / periods \n",
+ " # Create the input functions.\n",
+ " predict_training_input_fn = create_predict_input_fn(\n",
+ " training_examples, training_targets, batch_size)\n",
+ " predict_validation_input_fn = create_predict_input_fn(\n",
+ " validation_examples, validation_targets, batch_size)\n",
+ " training_input_fn = create_training_input_fn(\n",
+ " training_examples, training_targets, batch_size)\n",
+ " \n",
+ " # Create the input functions.\n",
+ " predict_training_input_fn = create_predict_input_fn(\n",
+ " training_examples, training_targets, batch_size)\n",
+ " predict_validation_input_fn = create_predict_input_fn(\n",
+ " validation_examples, validation_targets, batch_size)\n",
+ " training_input_fn = create_training_input_fn(\n",
+ " training_examples, training_targets, batch_size)\n",
+ " \n",
+ " # Create feature columns.\n",
+ " feature_columns = [tf.feature_column.numeric_column('pixels', shape=784)]\n",
+ "\n",
+ " # Create a DNNClassifier object.\n",
+ " my_optimizer = tf.train.AdagradOptimizer(learning_rate=learning_rate)\n",
+ " my_optimizer = tf.contrib.estimator.clip_gradients_by_norm(my_optimizer, 5.0)\n",
+ " classifier = tf.estimator.DNNClassifier(\n",
+ " feature_columns=feature_columns,\n",
+ " n_classes=10,\n",
+ " hidden_units=hidden_units,\n",
+ " optimizer=my_optimizer,\n",
+ " config=tf.contrib.learn.RunConfig(keep_checkpoint_max=1)\n",
+ " )\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(\"LogLoss error (on validation data):\")\n",
+ " training_errors = []\n",
+ " validation_errors = []\n",
+ " for period in range (0, periods):\n",
+ " # Train the model, starting from the prior state.\n",
+ " classifier.train(\n",
+ " input_fn=training_input_fn,\n",
+ " steps=steps_per_period\n",
+ " )\n",
+ " \n",
+ " # Take a break and compute probabilities.\n",
+ " training_predictions = list(classifier.predict(input_fn=predict_training_input_fn))\n",
+ " training_probabilities = np.array([item['probabilities'] for item in training_predictions])\n",
+ " training_pred_class_id = np.array([item['class_ids'][0] for item in training_predictions])\n",
+ " training_pred_one_hot = tf.keras.utils.to_categorical(training_pred_class_id,10)\n",
+ " \n",
+ " validation_predictions = list(classifier.predict(input_fn=predict_validation_input_fn))\n",
+ " validation_probabilities = np.array([item['probabilities'] for item in validation_predictions]) \n",
+ " validation_pred_class_id = np.array([item['class_ids'][0] for item in validation_predictions])\n",
+ " validation_pred_one_hot = tf.keras.utils.to_categorical(validation_pred_class_id,10) \n",
+ " \n",
+ " # Compute training and validation errors.\n",
+ " training_log_loss = metrics.log_loss(training_targets, training_pred_one_hot)\n",
+ " validation_log_loss = metrics.log_loss(validation_targets, validation_pred_one_hot)\n",
+ " # Occasionally print the current loss.\n",
+ " print(\" period %02d : %0.2f\" % (period, validation_log_loss))\n",
+ " # Add the loss metrics from this period to our list.\n",
+ " training_errors.append(training_log_loss)\n",
+ " validation_errors.append(validation_log_loss)\n",
+ " print(\"Model training finished.\")\n",
+ " # Remove event files to save disk space.\n",
+ " _ = map(os.remove, glob.glob(os.path.join(classifier.model_dir, 'events.out.tfevents*')))\n",
+ " \n",
+ " # Calculate final predictions (not probabilities, as above).\n",
+ " final_predictions = classifier.predict(input_fn=predict_validation_input_fn)\n",
+ " final_predictions = np.array([item['class_ids'][0] for item in final_predictions])\n",
+ " \n",
+ " \n",
+ " accuracy = metrics.accuracy_score(validation_targets, final_predictions)\n",
+ " print(\"Final accuracy (on validation data): %0.2f\" % accuracy)\n",
+ "\n",
+ " # Output a graph of loss metrics over periods.\n",
+ " plt.ylabel(\"LogLoss\")\n",
+ " plt.xlabel(\"Periods\")\n",
+ " plt.title(\"LogLoss vs. Periods\")\n",
+ " plt.plot(training_errors, label=\"training\")\n",
+ " plt.plot(validation_errors, label=\"validation\")\n",
+ " plt.legend()\n",
+ " plt.show()\n",
+ " \n",
+ " # Output a plot of the confusion matrix.\n",
+ " cm = metrics.confusion_matrix(validation_targets, final_predictions)\n",
+ " # Normalize the confusion matrix by row (i.e by the number of samples\n",
+ " # in each class).\n",
+ " cm_normalized = cm.astype(\"float\") / cm.sum(axis=1)[:, np.newaxis]\n",
+ " ax = sns.heatmap(cm_normalized, cmap=\"bone_r\")\n",
+ " ax.set_aspect(1)\n",
+ " plt.title(\"Confusion matrix\")\n",
+ " plt.ylabel(\"True label\")\n",
+ " plt.xlabel(\"Predicted label\")\n",
+ " plt.show()\n",
+ "\n",
+ " return classifier"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "ZfzsTYGPPU8I",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "classifier = train_nn_classification_model(\n",
+ " learning_rate=0.05,\n",
+ " steps=1000,\n",
+ " batch_size=30,\n",
+ " hidden_units=[100, 100],\n",
+ " training_examples=training_examples,\n",
+ " training_targets=training_targets,\n",
+ " validation_examples=validation_examples,\n",
+ " validation_targets=validation_targets)"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "qXvrOgtUR-zD",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "Next, we verify the accuracy on the test set."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "scQNpDePSFjt",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "mnist_test_dataframe = pd.read_csv(\n",
+ " \"https://download.mlcc.google.com/mledu-datasets/mnist_test.csv\",\n",
+ " sep=\",\",\n",
+ " header=None)\n",
+ "\n",
+ "test_targets, test_examples = parse_labels_and_features(mnist_test_dataframe)\n",
+ "test_examples.describe()"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "EVaWpWKvSHmu",
+ "colab_type": "code",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "predict_test_input_fn = create_predict_input_fn(\n",
+ " test_examples, test_targets, batch_size=100)\n",
+ "\n",
+ "test_predictions = classifier.predict(input_fn=predict_test_input_fn)\n",
+ "test_predictions = np.array([item['class_ids'][0] for item in test_predictions])\n",
+ " \n",
+ "accuracy = metrics.accuracy_score(test_targets, test_predictions)\n",
+ "print(\"Accuracy on test data: %0.2f\" % accuracy)"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "WX2mQBAEcisO",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "## Task 3: Visualize the weights of the first hidden layer.\n",
+ "\n",
+ "Let's take a few minutes to dig into our neural network and see what it has learned by accessing the `weights_` attribute of our model.\n",
+ "\n",
+ "The input layer of our model has `784` weights corresponding to the `28×28` pixel input images. The first hidden layer will have `784×N` weights where `N` is the number of nodes in that layer. We can turn those weights back into `28×28` images by *reshaping* each of the `N` `1×784` arrays of weights into `N` arrays of size `28×28`.\n",
+ "\n",
+ "Run the following cell to plot the weights. Note that this cell requires that a `DNNClassifier` called \"classifier\" has already been trained."
+ ]
+ },
+ {
+ "metadata": {
+ "id": "eUC0Z8nbafgG",
+ "colab_type": "code",
+ "cellView": "both",
+ "colab": {}
+ },
+ "cell_type": "code",
+ "source": [
+ "print(classifier.get_variable_names())\n",
+ "\n",
+ "weights0 = classifier.get_variable_value(\"dnn/hiddenlayer_0/kernel\")\n",
+ "\n",
+ "print(\"weights0 shape:\", weights0.shape)\n",
+ "\n",
+ "num_nodes = weights0.shape[1]\n",
+ "num_rows = int(math.ceil(num_nodes / 10.0))\n",
+ "fig, axes = plt.subplots(num_rows, 10, figsize=(20, 2 * num_rows))\n",
+ "for coef, ax in zip(weights0.T, axes.ravel()):\n",
+ " # Weights in coef is reshaped from 1x784 to 28x28.\n",
+ " ax.matshow(coef.reshape(28, 28), cmap=plt.cm.pink)\n",
+ " ax.set_xticks(())\n",
+ " ax.set_yticks(())\n",
+ "\n",
+ "plt.show()"
+ ],
+ "execution_count": 0,
+ "outputs": []
+ },
+ {
+ "metadata": {
+ "id": "kL8MEhNgrx9N",
+ "colab_type": "text"
+ },
+ "cell_type": "markdown",
+ "source": [
+ "The first hidden layer of the neural network should be modeling some pretty low level features, so visualizing the weights will probably just show some fuzzy blobs or possibly a few parts of digits. You may also see some neurons that are essentially noise -- these are either unconverged or they are being ignored by higher layers.\n",
+ "\n",
+ "It can be interesting to stop training at different numbers of iterations and see the effect.\n",
+ "\n",
+ "**Train the classifier for 10, 100 and respectively 1000 steps. Then run this visualization again.**\n",
+ "\n",
+ "What differences do you see visually for the different levels of convergence?"
+ ]
+ }
+ ]
+}
\ No newline at end of file