{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "FhGuhbZ6M5tl" }, "source": [ "##### Copyright 2018 The TensorFlow Authors.\n", "https://www.tensorflow.org/tutorials/keras/regression" ] }, { "cell_type": "markdown", "metadata": { "id": "EIdT9iu_Z4Rb" }, "source": [ "# Basic regression: Predict fuel efficiency" ] }, { "cell_type": "markdown", "metadata": { "id": "AHp3M9ZmrIxj" }, "source": [ "In a *regression* problem, the aim is to predict the output of a continuous value, like a price or a probability. Contrast this with a *classification* problem, where the aim is to select a class from a list of classes (for example, where a picture contains an apple or an orange, recognizing which fruit is in the picture).\n", "\n", "This tutorial uses the classic [Auto MPG](https://archive.ics.uci.edu/ml/datasets/auto+mpg) dataset and demonstrates how to build models to predict the fuel efficiency of the late-1970s and early 1980s automobiles. To do this, you will provide the models with a description of many automobiles from that time period. This description includes attributes like cylinders, displacement, horsepower, and weight.\n", "\n", "This example uses the Keras API. (Visit the Keras [tutorials](https://www.tensorflow.org/tutorials/keras) and [guides](https://www.tensorflow.org/guide/keras) to learn more.)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "id": "9xQKvCJ85kCQ", "outputId": "cb07b90d-55c7-4323-df7f-dd18c901d6d2", "colab": { "base_uri": "https://localhost:8080/" } }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "2.12.0\n" ] } ], "source": [ "import tensorflow as tf\n", "from tensorflow import keras\n", "from tensorflow.keras import layers\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "\n", "print(tf.__version__)" ] }, { "cell_type": "markdown", "metadata": { "id": "F_72b0LCNbjx" }, "source": [ "## The Auto MPG dataset\n", "\n", "The dataset is available from the [UCI Machine Learning Repository](https://archive.ics.uci.edu/ml/).\n" ] }, { "cell_type": "markdown", "metadata": { "id": "gFh9ne3FZ-On" }, "source": [ "### Get the data\n", "First download and import the dataset using pandas:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "id": "CiX2FI4gZtTt" }, "outputs": [], "source": [ "url = 'http://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data'\n", "column_names = ['MPG', 'Cylinders', 'Displacement', 'Horsepower', 'Weight',\n", " 'Acceleration', 'Model Year', 'Origin']\n", "\n", "raw_dataset = pd.read_csv(url, names=column_names,\n", " na_values='?', comment='\\t',\n", " sep=' ', skipinitialspace=True)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "id": "2oY3pMPagJrO", "outputId": "cecfb141-1c3b-4d57-9c27-783df427e52f", "colab": { "base_uri": "https://localhost:8080/", "height": 206 } }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " MPG Cylinders Displacement Horsepower Weight Acceleration \\\n", "393 27.0 4 140.0 86.0 2790.0 15.6 \n", "394 44.0 4 97.0 52.0 2130.0 24.6 \n", "395 32.0 4 135.0 84.0 2295.0 11.6 \n", "396 28.0 4 120.0 79.0 2625.0 18.6 \n", "397 31.0 4 119.0 82.0 2720.0 19.4 \n", "\n", " Model Year Origin \n", "393 82 1 \n", "394 82 2 \n", "395 82 1 \n", "396 82 1 \n", "397 82 1 " ], "text/html": [ "\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MPGCylindersDisplacementHorsepowerWeightAccelerationModel YearOrigin
39327.04140.086.02790.015.6821
39444.0497.052.02130.024.6822
39532.04135.084.02295.011.6821
39628.04120.079.02625.018.6821
39731.04119.082.02720.019.4821
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 3 } ], "source": [ "dataset = raw_dataset.copy()\n", "dataset.tail()" ] }, { "cell_type": "markdown", "metadata": { "id": "3MWuJTKEDM-f" }, "source": [ "### Clean the data\n", "\n", "The dataset contains a few unknown values:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "id": "JEJHhN65a2VV", "outputId": "c33b1219-36f5-4357-c2a3-fc52b3b5ee3a", "colab": { "base_uri": "https://localhost:8080/" } }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "MPG 0\n", "Cylinders 0\n", "Displacement 0\n", "Horsepower 6\n", "Weight 0\n", "Acceleration 0\n", "Model Year 0\n", "Origin 0\n", "dtype: int64" ] }, "metadata": {}, "execution_count": 4 } ], "source": [ "dataset.isna().sum()" ] }, { "cell_type": "markdown", "metadata": { "id": "9UPN0KBHa_WI" }, "source": [ "Drop those rows to keep this initial tutorial simple:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "id": "4ZUDosChC1UN" }, "outputs": [], "source": [ "dataset = dataset.dropna()" ] }, { "cell_type": "markdown", "metadata": { "id": "8XKitwaH4v8h" }, "source": [ "The `\"Origin\"` column is categorical, not numeric. So the next step is to one-hot encode the values in the column with [pd.get_dummies](https://pandas.pydata.org/docs/reference/api/pandas.get_dummies.html).\n", "\n", "Note: You can set up the `tf.keras.Model` to do this kind of transformation for you but that's beyond the scope of this tutorial. Check out the [Classify structured data using Keras preprocessing layers](../structured_data/preprocessing_layers.ipynb) or [Load CSV data](../load_data/csv.ipynb) tutorials for examples." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "id": "gWNTD2QjBWFJ" }, "outputs": [], "source": [ "dataset['Origin'] = dataset['Origin'].map({1: 'USA', 2: 'Europe', 3: 'Japan'})" ] }, { "cell_type": "code", "source": [ "dataset.tail()" ], "metadata": { "id": "k1dNncezB9Zl", "outputId": "58d5e9b8-756b-4832-d576-f16a66ec3abd", "colab": { "base_uri": "https://localhost:8080/", "height": 206 } }, "execution_count": 7, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " MPG Cylinders Displacement Horsepower Weight Acceleration \\\n", "393 27.0 4 140.0 86.0 2790.0 15.6 \n", "394 44.0 4 97.0 52.0 2130.0 24.6 \n", "395 32.0 4 135.0 84.0 2295.0 11.6 \n", "396 28.0 4 120.0 79.0 2625.0 18.6 \n", "397 31.0 4 119.0 82.0 2720.0 19.4 \n", "\n", " Model Year Origin \n", "393 82 USA \n", "394 82 Europe \n", "395 82 USA \n", "396 82 USA \n", "397 82 USA " ], "text/html": [ "\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MPGCylindersDisplacementHorsepowerWeightAccelerationModel YearOrigin
39327.04140.086.02790.015.682USA
39444.0497.052.02130.024.682Europe
39532.04135.084.02295.011.682USA
39628.04120.079.02625.018.682USA
39731.04119.082.02720.019.482USA
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 7 } ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "id": "ulXz4J7PAUzk", "outputId": "6c9cd8c4-c2ed-4116-d192-17a879653b81", "colab": { "base_uri": "https://localhost:8080/", "height": 206 } }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " MPG Cylinders Displacement Horsepower Weight Acceleration \\\n", "393 27.0 4 140.0 86.0 2790.0 15.6 \n", "394 44.0 4 97.0 52.0 2130.0 24.6 \n", "395 32.0 4 135.0 84.0 2295.0 11.6 \n", "396 28.0 4 120.0 79.0 2625.0 18.6 \n", "397 31.0 4 119.0 82.0 2720.0 19.4 \n", "\n", " Model Year Europe Japan USA \n", "393 82 0 0 1 \n", "394 82 1 0 0 \n", "395 82 0 0 1 \n", "396 82 0 0 1 \n", "397 82 0 0 1 " ], "text/html": [ "\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MPGCylindersDisplacementHorsepowerWeightAccelerationModel YearEuropeJapanUSA
39327.04140.086.02790.015.682001
39444.0497.052.02130.024.682100
39532.04135.084.02295.011.682001
39628.04120.079.02625.018.682001
39731.04119.082.02720.019.482001
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 8 } ], "source": [ "dataset = pd.get_dummies(dataset, columns=['Origin'], prefix='', prefix_sep='')\n", "dataset.tail()" ] }, { "cell_type": "markdown", "metadata": { "id": "Cuym4yvk76vU" }, "source": [ "### Split the data into training and test sets\n", "\n", "Now, split the dataset into a training set and a test set. You will use the test set in the final evaluation of your models." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "id": "qn-IGhUE7_1H" }, "outputs": [], "source": [ "train_dataset = dataset.sample(frac=0.8, random_state=0)\n", "test_dataset = dataset.drop(train_dataset.index)" ] }, { "cell_type": "markdown", "source": [ "## Split features from labels\n", "\n", "Separate the target value—the \"label\"—from the features. This label is the value that you will train the model to predict." ], "metadata": { "id": "ULlGz3eVDUl4" } }, { "cell_type": "code", "source": [ "train_features = train_dataset.copy()\n", "test_features = test_dataset.copy()\n", "\n", "train_labels = train_features.pop('MPG')\n", "test_labels = test_features.pop('MPG')\n" ], "metadata": { "id": "JLFE3wcdDUFe" }, "execution_count": 10, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "mRklxK5s388r" }, "source": [ "## Normalization\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "id": "-ywmerQ6dSox" }, "source": [ "It is good practice to normalize features that use different scales and ranges.\n", "\n", "One reason this is important is because the features are multiplied by the model weights. So, the scale of the outputs and the scale of the gradients are affected by the scale of the inputs.\n", "\n", "Although a model *might* converge without feature normalization, normalization makes training much more stable.\n", "\n", "Note: There is no advantage to normalizing the one-hot features—it is done here for simplicity. For more details on how to use the preprocessing layers, refer to the [Working with preprocessing layers](https://www.tensorflow.org/guide/keras/preprocessing_layers) guide and the [Classify structured data using Keras preprocessing layers](../structured_data/preprocessing_layers.ipynb) tutorial." ] }, { "cell_type": "markdown", "metadata": { "id": "aFJ6ISropeoo" }, "source": [ "### The Normalization layer\n", "\n", "The `tf.keras.layers.Normalization` is a clean and simple way to add feature normalization into your model.\n", "\n", "The first step is to create the layer:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "id": "JlC5ooJrgjQF" }, "outputs": [], "source": [ "normalizer = tf.keras.layers.Normalization(axis=-1)" ] }, { "cell_type": "markdown", "metadata": { "id": "XYA2Ap6nVOha" }, "source": [ "Then, fit the state of the preprocessing layer to the data by calling `Normalization.adapt`:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "id": "CrBbbjbwV91f" }, "outputs": [], "source": [ "normalizer.adapt(np.array(train_features))" ] }, { "cell_type": "markdown", "metadata": { "id": "oZccMR5yV9YV" }, "source": [ "Calculate the mean and variance, and store them in the layer:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "id": "GGn-ukwxSPtx", "outputId": "20eb5419-bdeb-4d9a-d22f-e85015fc7067", "colab": { "base_uri": "https://localhost:8080/" } }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "[[5.47770691e+00 1.95318497e+02 1.04869446e+02 2.99025171e+03\n", " 1.55592356e+01 7.58980942e+01 1.78343967e-01 1.97452217e-01\n", " 6.24203861e-01]]\n", "[[2.8800766e+00 1.0850413e+04 1.4466993e+03 7.0989688e+05 7.7550268e+00\n", " 1.3467321e+01 1.4653738e-01 1.5846483e-01 2.3457341e-01]]\n" ] } ], "source": [ "print(normalizer.mean.numpy())\n", "print(normalizer.variance.numpy())" ] }, { "cell_type": "markdown", "metadata": { "id": "SmjdzxKzEu1-" }, "source": [ "## Regression with a deep neural network (DNN)" ] }, { "cell_type": "markdown", "metadata": { "id": "DT_aHPsrzO1t" }, "source": [] }, { "cell_type": "markdown", "metadata": { "id": "6SWtkIjhrZwa" }, "source": [ "These models will contain a few more layers than the linear model:\n", "\n", "* The normalization layer, as before (with `horsepower_normalizer` for a single-input model and `normalizer` for a multiple-input model).\n", "* Two hidden, non-linear, `Dense` layers with the ReLU (`relu`) activation function nonlinearity.\n", "* A linear `Dense` single-output layer.\n", "\n", "Both models will use the same training procedure, so the `compile` method is included in the `build_and_compile_model` function below." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "id": "c26juK7ZG8j-" }, "outputs": [], "source": [ "model = keras.Sequential([\n", " normalizer,\n", " layers.Dense(64, activation='relu'),\n", " layers.Dense(64, activation='relu'),\n", " layers.Dense(1)\n", "])\n", "\n", "model.compile(loss='mean_absolute_error',\n", " optimizer=tf.keras.optimizers.Adam(0.001))\n" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "id": "c0mhscXh2k36", "outputId": "6297cfd0-562d-485e-db44-22a4e5e3dab2", "colab": { "base_uri": "https://localhost:8080/" } }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Model: \"sequential\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " normalization (Normalizatio (None, 9) 19 \n", " n) \n", " \n", " dense (Dense) (None, 64) 640 \n", " \n", " dense_1 (Dense) (None, 64) 4160 \n", " \n", " dense_2 (Dense) (None, 1) 65 \n", " \n", "=================================================================\n", "Total params: 4,884\n", "Trainable params: 4,865\n", "Non-trainable params: 19\n", "_________________________________________________________________\n" ] } ], "source": [ "model.summary()" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "id": "CXDENACl2tuW", "outputId": "1ddafc66-230c-4ebb-c1a9-a4b7bbb8c651", "colab": { "base_uri": "https://localhost:8080/" } }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "CPU times: user 8.13 s, sys: 241 ms, total: 8.37 s\n", "Wall time: 17.3 s\n" ] } ], "source": [ "%%time\n", "history = model.fit(\n", " train_features,\n", " train_labels,\n", " validation_split=0.2,\n", " verbose=0, epochs=100)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "id": "-9Dbj0fX23RQ", "outputId": "240d8b1e-58f6-4b83-d8e5-cface25d5b32", "colab": { "base_uri": "https://localhost:8080/", "height": 455 } }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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QsxQr01rMU2Tslo/m4or+fCTLxg2YgRBbPgDJt6GADU+64O/xttAtbeB1AQnhZ1T6J+XSvdMD3abER423Lyvhk17ayip8VEXCnC1/gD1PitcuRzWtgJuh40qbwNbQvcvqqwPh5i+OckM657B0O7pdM/yUFRRz/bSutAwWS3FVdbqwFqf1ftR3YxesMOp8weAg0+JciwMw5pb5msIsruint0V9QBMHnzwCXbbi4KMiIhEjdYerjAMg8wkFyld09iZbnJav04t3jbfMAyyQnNvRvQ8uBfru9R4G6y5NmkJpCU277WrvQ0UV9ZTVuvHbjNwhIbjHDaDgGmGe6caVwUmuuwkh3pgGocXaw7ooWkMajXeBmpCIamyzk9pTWg+Uo2P8lof2clueuckhzbpTKJbpoe0RCcpbgfJCQ4SnXbq/VbvV0m19bh91d6japfWoiAjIiLShpLcDvrnpbToMcluB8mdDt7uIBokuux0dXnomtH2E++b4/C7PImIiIhEOQUZERERiVkKMiIiIhKzFGREREQkZinIiIiISMxSkBEREZGYpSAjIiIiMUtBRkRERGKWgoyIiIjELAUZERERiVkKMiIiIhKzFGREREQkZinIiIiISMxSkBEREZGYpSAjIiIiMUtBRkRERGKWgoyIiIjELAUZERERiVkKMiIiIhKzFGREREQkZinIiIiISMxSkBEREZGYpSAjIiIiMUtBRkRERGKWgoyIiIjELAUZERERiVkKMiIiIhKzFGREREQkZinIiIiISMxSkBEREZGYpSAjIiIiMUtBRkRERGKWgoyIiIjELAUZERERiVkKMiIiIhKzFGREREQkZinIiIiISMxSkBEREZGYpSAjIiIiMUtBRkRERGKWgoyIiIjELAUZERERiVkKMiIiIhKzFGREREQkZinIiIiISMxSkBEREZGYpSAjIiIiMUtBRkRERGKWgoyIiIjELAUZERERiVkKMiIiIhKzFGREREQkZinIiIiISMxSkBEREZGYpSAjIiIiMSsmgsxTTz1Fz549SUhIYNSoUXz99deRLklERESiQNQHmZdffpnp06dzzz33sHjxYo4//ngmTZpEcXFxpEsTERGRCIv6IPPYY4/x05/+lKuuuoqBAwfyzDPP4PF4eO655yJdmoiIiESYI9IFHInP52PRokXMmDEjfMxmszFhwgTmz59/yMd4vV68Xm/4ekVFBQClpaX4/f5Wq83v91NbW0tJSQlOp7PVnlcOTe3dftTW7Udt3X7U1u2ntdq6qqoKANM0j3i/qA4y+/btIxAIkJub2+R4bm4ua9asOeRjHn74Ye67776DjhcUFLRJjSIiItJ2qqqqSEtLO+ztUR1kjsaMGTOYPn16+HowGKS0tJSsrCwMw2i116msrKRbt25s376d1NTUVnteOTS1d/tRW7cftXX7UVu3n9Zqa9M0qaqqIj8//4j3i+ogk52djd1uZ8+ePU2O79mzh7y8vEM+xu1243a7mxxLT09vqxJJTU3Vf4p2pPZuP2rr9qO2bj9q6/bTGm19pJ6YRlE92dflcjF8+HDmzp0bPhYMBpk7dy6jR4+OYGUiIiISDaK6RwZg+vTpTJ06lREjRnDiiSfy+OOPU1NTw1VXXRXp0kRERCTCoj7I/PCHP2Tv3r3cfffdFBUVccIJJ/Duu+8eNAG4vbndbu65556DhrGkbai924/auv2orduP2rr9tHdbG+Z3rWsSERERiVJRPUdGRERE5EgUZERERCRmKciIiIhIzFKQERERkZilIHOUnnrqKXr27ElCQgKjRo3i66+/jnRJMe/hhx9m5MiRpKSkkJOTw4UXXsjatWub3Ke+vp5p06aRlZVFcnIyF1988UEbJkrLPfLIIxiGwc033xw+prZuPTt37uSKK64gKyuLxMREBg8ezMKFC8O3m6bJ3XffTefOnUlMTGTChAmsX78+ghXHpkAgwF133UVBQQGJiYn07t2bBx54oMm5etTWR+eTTz7hvPPOIz8/H8MweP3115vc3px2LS0tZcqUKaSmppKens7//M//UF1dfezFmdJis2fPNl0ul/ncc8+Z33zzjfnTn/7UTE9PN/fs2RPp0mLapEmTzJkzZ5orV640ly5dak6ePNns3r27WV1dHb7Ptddea3br1s2cO3euuXDhQvOkk04yx4wZE8GqY9/XX39t9uzZ0xwyZIh50003hY+rrVtHaWmp2aNHD/PKK680v/rqK3PTpk3me++9Z27YsCF8n0ceecRMS0szX3/9dXPZsmXm+eefbxYUFJh1dXURrDz2PPTQQ2ZWVpb55ptvmps3bzZfeeUVMzk52fzTn/4Uvo/a+ui8/fbb5h133GG++uqrJmC+9tprTW5vTrueddZZ5vHHH29++eWX5qeffmr26dPHvOyyy465NgWZo3DiiSea06ZNC18PBAJmfn6++fDDD0ewqvhTXFxsAubHH39smqZplpeXm06n03zllVfC91m9erUJmPPnz49UmTGtqqrK7Nu3rzlnzhzztNNOCwcZtXXrufXWW82TTz75sLcHg0EzLy/P/N3vfhc+Vl5ebrrdbvOll15qjxLjxjnnnGNeffXVTY5ddNFF5pQpU0zTVFu3lm8Hmea066pVq0zAXLBgQfg+77zzjmkYhrlz585jqkdDSy3k8/lYtGgREyZMCB+z2WxMmDCB+fPnR7Cy+FNRUQFAZmYmAIsWLcLv9zdp+wEDBtC9e3e1/VGaNm0a55xzTpM2BbV1a3rjjTcYMWIEl1xyCTk5OQwdOpS//e1v4ds3b95MUVFRk7ZOS0tj1KhRausWGjNmDHPnzmXdunUALFu2jM8++4yzzz4bUFu3lea06/z580lPT2fEiBHh+0yYMAGbzcZXX311TK8f9Tv7Rpt9+/YRCAQO2lk4NzeXNWvWRKiq+BMMBrn55psZO3Ysxx13HABFRUW4XK6DTgKam5tLUVFRBKqMbbNnz2bx4sUsWLDgoNvU1q1n06ZNPP3000yfPp3bb7+dBQsWcOONN+JyuZg6dWq4PQ/1O0Vt3TK33XYblZWVDBgwALvdTiAQ4KGHHmLKlCkAaus20px2LSoqIicnp8ntDoeDzMzMY257BRmJStOmTWPlypV89tlnkS4lLm3fvp2bbrqJOXPmkJCQEOly4lowGGTEiBH85je/AWDo0KGsXLmSZ555hqlTp0a4uvjyz3/+kxdffJFZs2YxaNAgli5dys0330x+fr7aOo5paKmFsrOzsdvtB63e2LNnD3l5eRGqKr5cf/31vPnmm3z00Ud07do1fDwvLw+fz0d5eXmT+6vtW27RokUUFxczbNgwHA4HDoeDjz/+mD//+c84HA5yc3PV1q2kc+fODBw4sMmxwsJCtm3bBhBuT/1OOXa/+tWvuO2227j00ksZPHgwP/rRj7jlllt4+OGHAbV1W2lOu+bl5VFcXNzk9oaGBkpLS4+57RVkWsjlcjF8+HDmzp0bPhYMBpk7dy6jR4+OYGWxzzRNrr/+el577TU+/PBDCgoKmtw+fPhwnE5nk7Zfu3Yt27ZtU9u30Pjx41mxYgVLly4NX0aMGMGUKVPC/1Zbt46xY8cetI3AunXr6NGjBwAFBQXk5eU1aevKykq++uortXUL1dbWYrM1/Viz2+0Eg0FAbd1WmtOuo0ePpry8nEWLFoXv8+GHHxIMBhk1atSxFXBMU4U7qNmzZ5tut9t8/vnnzVWrVpnXXHONmZ6ebhYVFUW6tJj285//3ExLSzPnzZtn7t69O3ypra0N3+faa681u3fvbn744YfmwoULzdGjR5ujR4+OYNXx48BVS6aptm4tX3/9telwOMyHHnrIXL9+vfniiy+aHo/H/Mc//hG+zyOPPGKmp6eb//nPf8zly5ebF1xwgZYEH4WpU6eaXbp0CS+/fvXVV83s7Gzz17/+dfg+auujU1VVZS5ZssRcsmSJCZiPPfaYuWTJEnPr1q2maTavXc866yxz6NCh5ldffWV+9tlnZt++fbX8OpKeeOIJs3v37qbL5TJPPPFE88svv4x0STEPOORl5syZ4fvU1dWZ1113nZmRkWF6PB7ze9/7nrl79+7IFR1Hvh1k1Nat57///a953HHHmW632xwwYID57LPPNrk9GAyad911l5mbm2u63W5z/Pjx5tq1ayNUbeyqrKw0b7rpJrN79+5mQkKC2atXL/OOO+4wvV5v+D5q66Pz0UcfHfL389SpU03TbF67lpSUmJdddpmZnJxspqammldddZVZVVV1zLUZpnnAlociIiIiMURzZERERCRmKciIiIhIzFKQERERkZilICMiIiIxS0FGREREYpaCjIiIiMQsBRkRERGJWQoyItLhGIbB66+/HukyRKQVKMiISLu68sorMQzjoMtZZ50V6dJEJAY5Il2AiHQ8Z511FjNnzmxyzO12R6gaEYll6pERkXbndrvJy8trcsnIyACsYZ+nn36as88+m8TERHr16sW//vWvJo9fsWIFZ5xxBomJiWRlZXHNNddQXV3d5D7PPfccgwYNwu1207lzZ66//vomt+/bt4/vfe97eDwe+vbtyxtvvNG2b1pE2oSCjIhEnbvuuouLL76YZcuWMWXKFC699FJWr14NQE1NDZMmTSIjI4MFCxbwyiuv8MEHHzQJKk8//TTTpk3jmmuuYcWKFbzxxhv06dOnyWvcd999/OAHP2D58uVMnjyZKVOmUFpa2q7vU0RawTGfdlJEpAWmTp1q2u12MykpqcnloYceMk3TOgv6tdde2+Qxo0aNMn/+85+bpmmazz77rJmRkWFWV1eHb3/rrbdMm81mFhUVmaZpmvn5+eYdd9xx2BoA88477wxfr66uNgHznXfeabX3KSLtQ3NkRKTdjRs3jqeffrrJsczMzPC/R48e3eS20aNHs3TpUgBWr17N8ccfT1JSUvj2sWPHEgwGWbt2LYZhsGvXLsaPH3/EGoYMGRL+d1JSEqmpqRQXFx/tWxKRCFGQEZF2l5SUdNBQT2tJTExs1v2cTmeT64ZhEAwG26IkEWlDmiMjIlHnyy+/POh6YWEhAIWFhSxbtoyamprw7Z9//jk2m43+/fuTkpJCz549mTt3brvWLCKRoR4ZEWl3Xq+XoqKiJsccDgfZ2dkAvPLKK4wYMYKTTz6ZF198ka+//pr//d//BWDKlCncc889TJ06lXvvvZe9e/dyww038KMf/Yjc3FwA7r33Xq699lpycnI4++yzqaqq4vPPP+eGG25o3zcqIm1OQUZE2t27775L586dmxzr378/a9asAawVRbNnz+a6666jc+fOvPTSSwwcOBAAj8fDe++9x0033cTIkSPxeDxcfPHFPPbYY+Hnmjp1KvX19fzxj3/kl7/8JdnZ2Xz/+99vvzcoIu3GME3TjHQRIiKNDMPgtdde48ILL4x0KSISAzRHRkRERGKWgoyIiIjELM2REZGootFuEWkJ9ciIiIhIzFKQERERkZilICMiIiIxS0FGREREYpaCjIiIiMQsBRkRERGJWQoyIiIiErMUZERERCRmKciIiIhIzPr/cu6SB9SPGmQAAAAASUVORK5CYII=\n" }, "metadata": {} } ], "source": [ "def plot_loss(history):\n", " plt.plot(history.history['loss'], label='loss')\n", " plt.plot(history.history['val_loss'], label='val_loss')\n", " plt.ylim([0, 10])\n", " plt.xlabel('Epoch')\n", " plt.ylabel('Error [MPG]')\n", " plt.legend()\n", " plt.grid(True)\n", "\n", "plot_loss(history)" ] }, { "cell_type": "markdown", "metadata": { "id": "hWoVYS34fJPZ" }, "source": [ "Collect the results on the test set:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "id": "-bZIa96W3c7K", "outputId": "2e62134d-0d31-4dc3-a789-bffd5d3e816f", "colab": { "base_uri": "https://localhost:8080/" } }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "1.6882120370864868" ] }, "metadata": {}, "execution_count": 18 } ], "source": [ "model.evaluate(test_features, test_labels, verbose=0)" ] }, { "cell_type": "markdown", "metadata": { "id": "ft603OzXuEZC" }, "source": [ "### Make predictions\n" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "id": "Xe7RXH3N3CWU", "outputId": "dd48050b-579e-4724-fc55-54f1f4be1183", "colab": { "base_uri": "https://localhost:8080/", "height": 473 } }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "3/3 [==============================] - 1s 11ms/step\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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VFSESZMmITQ0FIGBgbj77rvx7bffGr3m+fPnIZPJcOLECd2xyspKyGQy7N+/X3esoKAA48aNQ2BgIEJDQ/GnP/1Jr1f52WefYcCAAfD390eXLl2QlJSEmpoa0zfWgMGDByMiIgI7duzQHduxYwciIyNx5513tjlfLpdDpVIhKioK8+fPR1JSEr788ksAwLZt27B161Zs27YNy5cvx/DhwxEZGYnhw4djzZo1yMzMtLh9RMYw9MijPPvss1i9ejVOnz6NgQMHivpMRkYGPvjgA2zYsAE///wzlixZghkzZhjdIbxr166YNGkSNm3apHd88+bNCA8Px5gxY1BdXY3x48cjOzsb+fn5SE5ORkpKCkpKSqz+u1VWViIhIQF33nknjh49it27d6OiogKPPPIIgOae8NSpUzFnzhycPn0a+/fvx+TJk2HtmvNz5szRC6RNmzZh9uzZoj7r7++PhoYGAMAnn3yCvn37YuLEiQbPlclkVrWPyJAOjm4AUXt68cUXMXr0aNHn19fX4+WXX8a3336r26zy9ttvx4EDB/DOO+/gvvvuM/i5uXPnYty4cSguLkZ0dDQEQcD777+PmTNnwsvLC4MGDcKgQYN0569atQpZWVn48ssvsWDBAqv+bv/4xz9w55134uWXX9Yd27RpEyIiIvDLL7+guroaN2/exOTJkxEVFQWg+fmjtWbMmIFly5bhwoULAICDBw9i69atej3P1gRBQHZ2Nr7++mssXLgQAPDLL7+gb9++euctXrwY7733HoDmHbQvXbpkdTuJWmLokUe56667LDr/3LlzuHHjRpugbGhoMDiMpzV69GiEh4cjMzMTL774IrKzs1FSUqLrCVVXV2PlypXYtWsXysrKcPPmTdTW1trU0zt58iT27duHwMDANu8VFRVhzJgxSExMxIABAzB27FiMGTMGDz30EDp37mzV7+vWrRsmTJiAzZs3QxAETJgwweizyq+++gqBgYFobGyERqPBtGnTTE4s+stf/oIFCxZgx44deiFOZCuGHnmUjh076r328vJqM7zX2Nio+3N1dTUAYNeuXbjtttv0zpPL5UZ/j5eXF2bNmoX3338fK1euRGZmJkaNGoXbb78dQPMsxD179uDVV19Fr1694O/vj4ceekg35GfoegD02tqyndq2pqSkYM2aNW0+HxYWBm9vb+zZswc//PADvvnmG7z11lv4y1/+gkOHDiE6Otro38WUOXPm6Hqm69atM3reqFGjsH79evj6+qJ79+7o0OHWV0/v3r1RWFiod363bt3QrVs3hISEWNUuImP4TI88Wrdu3VBWVqZ3rOVkkdjYWMjlcpSUlKBXr156PxERESavPXv2bFy8eBE7duxAVlYW5s6dq3vv4MGDmDVrFh588EEMGDAAKpUK58+fN9lOAHptbdlOoHlyyc8//4wePXq0aas27GUyGUaMGIH09HTk5+fD19cXWVlZJv8epiQnJ6OhoQGNjY0YO3as0fM6duyIXr16ITIyUi/wAGDq1KkoLCzEF198YXU7iMRiT488WkJCAl555RV88MEHiI+Px0cffYSCggLd0GWnTp2wdOlSLFmyBBqNBiNHjoRarcbBgwehUCgwc+ZMo9eOjo5GQkIC5s2bB7lcjsmTJ+ve6927N3bs2IGUlBTIZDIsX74cGo3G6LX8/f0xfPhwrF69GtHR0bhy5Qqef/55vXNSU1Px7rvvYurUqXj66acRHByMc+fOYevWrXjvvfdw9OhRZGdnY8yYMQgJCcGhQ4fw3//+F/369bP6/nl7e+P06dO6P1vjsccew44dO/DYY49h2bJlGDt2LEJDQ3HhwgVs27aN5QkkKfb0yKONHTsWy5cvx9NPP427774b169fx+OPP653zqpVq7B8+XJkZGSgX79+SE5Oxq5du0QNCc6dOxe//fYbpk2bBj8/P93x1157DZ07d8Y999yDlJQUjB07FoMHDzZ5rU2bNuHmzZsYMmQIFi9erFe/BgDdu3fHwYMH0dTUhDFjxmDAgAFYvHgxgoKC4OXlBYVCge+++w7jx49Hnz598Pzzz+Pvf/87xo0bZ8Eda0uhUEChUFj9eZlMhm3btmHt2rX417/+hcTERPTt2xdz5sxBREQEDhw4YFP7iFqSCdbOVyYit7Z//36MGjUKv/32W5vidEfr0aMHFi9ejMWLFzu6KeRi2NMjIpPCw8MxdepURzcDAPDyyy8jMDDQplmu5NnY0yMig2pra3H58mUAt5b/crRr167h2rVrAJon9yiVSge3iFwNQ4+IiDwGhzeJiMhjMPSIiMhjMPSIiMhjMPSIiMhjMPSIiMhjMPSIiMhjMPSIiMhjMPSIiMhj/H+7y5WIokqsYwAAAABJRU5ErkJggg==\n" }, "metadata": {} } ], "source": [ "test_predictions = model.predict(test_features).flatten()\n", "\n", "a = plt.axes(aspect='equal')\n", "plt.scatter(test_labels, test_predictions)\n", "plt.xlabel('True Values [MPG]')\n", "plt.ylabel('Predictions [MPG]')\n", "lims = [0, 50]\n", "plt.xlim(lims)\n", "plt.ylim(lims)\n", "_ = plt.plot(lims, lims)\n" ] }, { "cell_type": "markdown", "metadata": { "id": "19wyogbOSU5t" }, "source": [ "It appears that the model predicts reasonably well.\n", "\n", "Now, check the error distribution:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "id": "f-OHX4DiXd8x", "outputId": "eed773fe-d181-455e-ba47-84f84455c37c", "colab": { "base_uri": "https://localhost:8080/", "height": 449 } }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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dPjw4SLXply+fFn/8z//o7y8POXk5KhXr17edXXq1FF8fHyRl5eu27t3r2rXrq277767wsexf/9+1alTx+fnNmnSRO3bt9f+/fu9y+rXr682bdp470dERCg3N/em+1+5cqXi4uJKXB8dHa1mzZoVWR4fH19kzscee8xnWZ8+fYqcZbpxu4oYPXq0xo8frxEjRmj79u169913tXXr1mIf27JlS1mWpZ9++km33367Vq1a5fPv/ku33Xab96xTu3btquTicMAJCBnAgRISEpSRkaGAgABFRkaqTh3f/6k2aNDA5/7FixfVo0cPLVu2rMi+ivtDXhbXX8qoCteva7nO5XKVGFi/FBUVpbZt25a4/sbn6WbLb6ai2/3SgAED9Nhjj+nRRx/V4MGD1aRJkxIfu3XrVgUHByssLMwnUtu1ayfp55f1fvWrX0mS9xomoKbhGhnAgRo0aKC2bduqVatWRSKmON27d9ehQ4cUFhamtm3b+txCQkIUEhKiiIgIffnll95trl27pt27d5e4zy5duqiwsFCffvppseuvnxm4/i6a4sTFxenatWs+P/eHH35Qdna2OnbseNPjqipxcXH67LPPfJZ99tlnlTJjnTp19Mgjj2jz5s03vc4mNjZWbdq0KXKmrV+/fmrcuLFeeuklv88HmIaQAaqB4cOHq2nTphoyZIi2bt2qo0ePavPmzRo3bpz+93//V5I0fvx4zZo1S2vWrNGBAwf05JNPlvqBbTExMUpKStLo0aO1Zs0a7z7feecdST+/bONyubRu3TqdPXtWFy9eLLKPdu3aaciQIUpOTta2bdu0b98+jRgxQi1atNCQIUNu+bh/+OEHnT592ud24+e0lMXTTz+tJUuWKCMjQ4cOHdKcOXP03nvv+eWC4+LMmDFDZ8+eVf/+/Su0fcOGDfXGG29o/fr1GjhwoDZu3KgjR47o66+/1ssvvyzp57ddAzUBIQNUA/Xr19eWLVvUqlUrPfjgg9634V6+fFnBwcGSpAkTJujhhx9WUlKS7rzzTgUFBemBBx4odb8ZGRn693//dz355JPq0KGDkpOTdenSJUlSixYtNG3aNE2cOFHh4eEaM2ZMsftYvHixevTooUGDBunOO++UZVn68MMPi7ycVBGJiYmKiIjwua1Zs6bc+xk6dKheeeUVzZ49W506ddLChQu1ePFi9e3b95ZnLE5AQICaNm16S+8seuCBB/T555+rfv36euSRR9S+fXvdc889+vjjj7VixQoNGjTIjxMDzuWyyvJCNACgTGJiYpSamuq4r2mYOnWq1qxZ4/M2dKA6IGQAwI9iYmKUk5OjunXr6uTJk7Z/MN3x48fVsWNHXblyRR07diRkUO0QMgDgR9999533w/5at26tWrXsfQX/2rVr3k94drvdioqKsnUewN8IGQAAYCwu9gUAAMYiZAAAgLEIGQAAYCxCBgAAGIuQAQAAxiJkAACAsQgZAABgLEIGAAAY6/8AiuiL/fsfLpYAAAAASUVORK5CYII=\n" }, "metadata": {} } ], "source": [ "error = test_predictions - test_labels\n", "plt.hist(error, bins=25)\n", "plt.xlabel('Prediction Error [MPG]')\n", "_ = plt.ylabel('Count')" ] } ], "metadata": { "colab": { "name": "regression.ipynb", "provenance": [] }, "kernelspec": { "display_name": "Python 3", "name": "python3" } }, "nbformat": 4, "nbformat_minor": 0 }