{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "5b1c96f3-bf0f-45be-aa6f-b329cbdc212a",
   "metadata": {},
   "outputs": [],
   "source": [
    "# step 1 import libraries\n",
    "\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.linear_model import LinearRegression\n",
    "from sklearn.metrics import mean_squared_error, r2_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "1902742e-5621-49d6-b048-2af3f8b93c66",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>House Size</th>\n",
       "      <th>Bedrooms</th>\n",
       "      <th>Bathrooms</th>\n",
       "      <th>Age</th>\n",
       "      <th>Distance from City</th>\n",
       "      <th>Price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>500</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>12</td>\n",
       "      <td>25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>800</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>8</td>\n",
       "      <td>10</td>\n",
       "      <td>40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1000</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>8</td>\n",
       "      <td>50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1200</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>65</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1500</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>90</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   House Size  Bedrooms  Bathrooms  Age  Distance from City  Price\n",
       "0         500         1          1   10                  12     25\n",
       "1         800         2          1    8                  10     40\n",
       "2        1000         2          2    6                   8     50\n",
       "3        1200         3          2    4                   5     65\n",
       "4        1500         3          3    2                   3     90"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# step 2 load dataset\n",
    "\n",
    "data = pd.read_csv(\"data/house_data.csv\")\n",
    "data.columns = data.columns.str.strip()\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "a07b1afa-e8a8-4093-9c49-cac2459b5fe4",
   "metadata": {},
   "outputs": [],
   "source": [
    "# step 3 select input columns and output column\n",
    "\n",
    "X = data[['House Size', \n",
    "          'Bedrooms', \n",
    "          'Bathrooms', \n",
    "          'Age', \n",
    "          'Distance from City']]\n",
    "\n",
    "y = data['Price']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "d7b07560-21f2-43b0-a4a9-da09af906ae5",
   "metadata": {},
   "outputs": [],
   "source": [
    "# step 4 split into training and testing sets\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(\n",
    "    X, y, test_size=0.4, random_state=42\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "1dcfaf73-cf40-42c4-a103-880d600c1d87",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-1 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-1 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: start;\n",
       "  justify-content: space-between;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content {\n",
       "  display: none;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  overflow: visible;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-1 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-1 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-1 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".estimator-table summary {\n",
       "    padding: .5rem;\n",
       "    font-family: monospace;\n",
       "    cursor: pointer;\n",
       "}\n",
       "\n",
       ".estimator-table details[open] {\n",
       "    padding-left: 0.1rem;\n",
       "    padding-right: 0.1rem;\n",
       "    padding-bottom: 0.3rem;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table {\n",
       "    margin-left: auto !important;\n",
       "    margin-right: auto !important;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table tr:nth-child(odd) {\n",
       "    background-color: #fff;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table tr:nth-child(even) {\n",
       "    background-color: #f6f6f6;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table tr:hover {\n",
       "    background-color: #e0e0e0;\n",
       "}\n",
       "\n",
       ".estimator-table table td {\n",
       "    border: 1px solid rgba(106, 105, 104, 0.232);\n",
       "}\n",
       "\n",
       ".user-set td {\n",
       "    color:rgb(255, 94, 0);\n",
       "    text-align: left;\n",
       "}\n",
       "\n",
       ".user-set td.value pre {\n",
       "    color:rgb(255, 94, 0) !important;\n",
       "    background-color: transparent !important;\n",
       "}\n",
       "\n",
       ".default td {\n",
       "    color: black;\n",
       "    text-align: left;\n",
       "}\n",
       "\n",
       ".user-set td i,\n",
       ".default td i {\n",
       "    color: black;\n",
       "}\n",
       "\n",
       ".copy-paste-icon {\n",
       "    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj48IS0tIUZvbnQgQXdlc29tZSBGcmVlIDYuNy4yIGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlL2ZyZWUgQ29weXJpZ2h0IDIwMjUgRm9udGljb25zLCBJbmMuLS0+PHBhdGggZD0iTTIwOCAwTDMzMi4xIDBjMTIuNyAwIDI0LjkgNS4xIDMzLjkgMTQuMWw2Ny45IDY3LjljOSA5IDE0LjEgMjEuMiAxNC4xIDMzLjlMNDQ4IDMzNmMwIDI2LjUtMjEuNSA0OC00OCA0OGwtMTkyIDBjLTI2LjUgMC00OC0yMS41LTQ4LTQ4bDAtMjg4YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4ek00OCAxMjhsODAgMCAwIDY0LTY0IDAgMCAyNTYgMTkyIDAgMC0zMiA2NCAwIDAgNDhjMCAyNi41LTIxLjUgNDgtNDggNDhMNDggNTEyYy0yNi41IDAtNDgtMjEuNS00OC00OEwwIDE3NmMwLTI2LjUgMjEuNS00OCA0OC00OHoiLz48L3N2Zz4=);\n",
       "    background-repeat: no-repeat;\n",
       "    background-size: 14px 14px;\n",
       "    background-position: 0;\n",
       "    display: inline-block;\n",
       "    width: 14px;\n",
       "    height: 14px;\n",
       "    cursor: pointer;\n",
       "}\n",
       "</style><body><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LinearRegression()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>LinearRegression</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.linear_model.LinearRegression.html\">?<span>Documentation for LinearRegression</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"\">\n",
       "        <div class=\"estimator-table\">\n",
       "            <details>\n",
       "                <summary>Parameters</summary>\n",
       "                <table class=\"parameters-table\">\n",
       "                  <tbody>\n",
       "                    \n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('fit_intercept',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">fit_intercept&nbsp;</td>\n",
       "            <td class=\"value\">True</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('copy_X',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">copy_X&nbsp;</td>\n",
       "            <td class=\"value\">True</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('tol',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">tol&nbsp;</td>\n",
       "            <td class=\"value\">1e-06</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('n_jobs',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">n_jobs&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('positive',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">positive&nbsp;</td>\n",
       "            <td class=\"value\">False</td>\n",
       "        </tr>\n",
       "    \n",
       "                  </tbody>\n",
       "                </table>\n",
       "            </details>\n",
       "        </div>\n",
       "    </div></div></div></div></div><script>function copyToClipboard(text, element) {\n",
       "    // Get the parameter prefix from the closest toggleable content\n",
       "    const toggleableContent = element.closest('.sk-toggleable__content');\n",
       "    const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
       "    const fullParamName = paramPrefix ? `${paramPrefix}${text}` : text;\n",
       "\n",
       "    const originalStyle = element.style;\n",
       "    const computedStyle = window.getComputedStyle(element);\n",
       "    const originalWidth = computedStyle.width;\n",
       "    const originalHTML = element.innerHTML.replace('Copied!', '');\n",
       "\n",
       "    navigator.clipboard.writeText(fullParamName)\n",
       "        .then(() => {\n",
       "            element.style.width = originalWidth;\n",
       "            element.style.color = 'green';\n",
       "            element.innerHTML = \"Copied!\";\n",
       "\n",
       "            setTimeout(() => {\n",
       "                element.innerHTML = originalHTML;\n",
       "                element.style = originalStyle;\n",
       "            }, 2000);\n",
       "        })\n",
       "        .catch(err => {\n",
       "            console.error('Failed to copy:', err);\n",
       "            element.style.color = 'red';\n",
       "            element.innerHTML = \"Failed!\";\n",
       "            setTimeout(() => {\n",
       "                element.innerHTML = originalHTML;\n",
       "                element.style = originalStyle;\n",
       "            }, 2000);\n",
       "        });\n",
       "    return false;\n",
       "}\n",
       "\n",
       "document.querySelectorAll('.fa-regular.fa-copy').forEach(function(element) {\n",
       "    const toggleableContent = element.closest('.sk-toggleable__content');\n",
       "    const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
       "    const paramName = element.parentElement.nextElementSibling.textContent.trim();\n",
       "    const fullParamName = paramPrefix ? `${paramPrefix}${paramName}` : paramName;\n",
       "\n",
       "    element.setAttribute('title', fullParamName);\n",
       "});\n",
       "</script></body>"
      ],
      "text/plain": [
       "LinearRegression()"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# step 5 train linear regression model\n",
    "\n",
    "model = LinearRegression()\n",
    "model.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "e4ebf969-cbe6-459f-a44c-f276cd41b690",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(np.float64(53.03212708416973),\n",
       "               Feature  Coefficient\n",
       " 0          House Size     0.021969\n",
       " 1            Bedrooms     1.136334\n",
       " 2           Bathrooms    -0.757483\n",
       " 3                 Age    -0.757702\n",
       " 4  Distance from City    -2.651518)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# step 6 get coefficients and intercept\n",
    "\n",
    "intercept = model.intercept_\n",
    "coefficients = pd.DataFrame({\n",
    "    \"Feature\": X.columns,\n",
    "    \"Coefficient\": model.coef_\n",
    "})\n",
    "\n",
    "intercept, coefficients"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "d118693e-fe24-49f1-ae58-b99dcb20aa59",
   "metadata": {},
   "outputs": [],
   "source": [
    "# step 7 predict test results\n",
    "\n",
    "y_pred = model.predict(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "a47bb9f5-0e47-4d0b-a6f0-ca28edb082a3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Actual Price</th>\n",
       "      <th>Predicted Price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>40</td>\n",
       "      <td>39.545335</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>90</td>\n",
       "      <td>77.651518</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Actual Price  Predicted Price\n",
       "0            40        39.545335\n",
       "1            90        77.651518"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# step 8 compare actual and predicted prices\n",
    "\n",
    "results = pd.DataFrame({\n",
    "    \"Actual Price\": y_test.values,\n",
    "    \"Predicted Price\": y_pred\n",
    "})\n",
    "\n",
    "results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "4e0f3c18-ea8b-4e4f-a4af-1ea8e67f61c7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(76.34585818363335, 0.8778466269061866)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# step 9 evaluate model performance\n",
    "\n",
    "mse = mean_squared_error(y_test, y_pred)\n",
    "r2 = r2_score(y_test, y_pred)\n",
    "\n",
    "mse, r2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "e0103c55-860b-4d18-b8a5-86944fc9738e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAq8AAAIhCAYAAABg21M1AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAlC1JREFUeJzs3Xd4FOXexvF70xMIQVoKBAhI74iAgIJYKYoHFQUbcsQCguhRrEexgaCHo4i9YOEgip2a0BJSSSCNEEiBJKT3ZFM3W+b9gzcjK1lIIMk8O3N/rivXJZvN5sd+Z+KTYWZXJ0mSBCIiIiIiO+Cg9ABERERERM3FxSsRERER2Q0uXomIiIjIbnDxSkRERER2g4tXIiIiIrIbXLwSERERkd3g4pWIiIiI7AYXr0RERERkN7h4JSIiIiK7wcUrkZ3YsGEDdDodhg8ffsmPkZeXh1WrViE+Pr71BruAadOmYdq0ae3yvS6kb9++0Ol08kfHjh0xYcIEfPfdd+3y/b/55hvodDpkZmbKt13qc7N69Wr8/vvvrTZbo8zMTOh0OnzzzTcXvF9wcDB0Oh1+/vnnJj//5JNPQqfTtfp87e1yt5nmPp9E1HJcvBLZia+//hoAcPz4cRw+fPiSHiMvLw+vv/56uy1eRTJ58mRERkYiMjJSXkw+9NBD+OSTTxSZ5+OPP8bHH3/c4q9rq8Urne9ythlfX19ERkZi1qxZ7TApkbZw8UpkB44cOYKEhAT5f4RfffWVwhPZn86dO2PixImYOHEi7rrrLuzZswedOnXC+vXrbX6N2WyGwWBok3mGDh2KoUOHtsljU+u4nG3G1dUVEydORPfu3dtxYiJt4OKVyA40LlbfeecdTJo0CVu3bkVtbe1598vNzcWjjz4Kf39/uLi4wM/PD3fddRcKCwsRHByMq6++GgDw8MMPy/8cumrVKgC2/xl74cKF6Nu3r9Vtr7/+OiZMmIAuXbqgU6dOGDt2LL766itIktTiv9sdd9yBPn36wGKxnPe5CRMmYOzYsfKft23bhgkTJsDLywseHh7o168fFi1a1OLvCZxdmAwaNAhZWVkA/vpn3nXr1uGtt95CQEAAXF1dcfDgQQBnf4G4/fbb0aVLF7i5uWHMmDH46aefznvcqKgoTJ48GW5ubvDz88OLL74Io9F43v2aer4NBgPeeOMNDBkyBG5ubujatSuuv/56REREAAB0Oh1qamrw7bffyv3OfYyCggI89thj6NWrF1xcXBAQEIDXX38dJpPJ6vvk5eVh3rx58PT0hJeXF+655x4UFBRc0vPYHBaLBevWrcPgwYPh6uqKHj164MEHH0ROTo7V/fr27YuFCxee9/V/f64sFgveeustDBo0CO7u7ujcuTNGjhyJDz74wOrr0tLSsGDBAvTo0QOurq4YMmQIPvroo0v+e7Rkm7F12sDJkycxf/58eHt7w9XVFb1798aDDz5o9UtSczt+8sknGDVqFDp27AhPT08MHjwYL7300iX//YjshZPSAxDRhdXV1eGHH37A1VdfjeHDh2PRokV45JFHsG3bNjz00EPy/XJzc3H11VfDaDTipZdewsiRI1FaWorAwECUl5dj7Nix2LRpEx5++GG88sor8lHcXr16tXimzMxMPPbYY+jduzeAswu2ZcuWITc3F6+++mqLHmvRokWYM2cODhw4gBtvvFG+/eTJk4iOjsaGDRsAAJGRkbjnnntwzz33YNWqVXBzc0NWVhYOHDjQ4vkBwGg0Iisr67wjYxs2bMDAgQPx3nvvoVOnThgwYAAOHjyIW2+9FRMmTMCnn34KLy8vbN26Fffccw9qa2vlBVdycjJuuOEG9O3bF9988w08PDzw8ccfY8uWLRedx2QyYcaMGQgNDcWKFSswffp0mEwmREVF4cyZM5g0aRIiIyMxffp0XH/99fj3v/8NAOjUqROAswue8ePHw8HBAa+++ir69++PyMhIvPXWW8jMzMSmTZsAnN2ebrzxRuTl5WHNmjUYOHAgdu7ciXvuuadFz5/FYjlvMQWgyV9gnnjiCXz++ed48sknMXv2bGRmZuLf//43goODERsbi27durXoe69btw6rVq3CK6+8guuuuw5GoxEnT55ERUWFfJ/k5GRMmjQJvXv3xn/+8x/4+PggMDAQy5cvR0lJCV577bUWfU+gZdtMUxISEjBlyhR069YNb7zxBgYMGID8/Hz8+eefaGhogKura7M7bt26FUuWLMGyZcvw3nvvwcHBAenp6UhOTm7x34vI7khEJLTvvvtOAiB9+umnkiRJUlVVldSxY0fp2muvtbrfokWLJGdnZyk5OdnmY8XExEgApE2bNp33ualTp0pTp0497/aHHnpI6tOnj83HNJvNktFolN544w2pa9euksViuehjnstoNEre3t7SggULrG5fuXKl5OLiIpWUlEiSJEnvvfeeBECqqKi44OM1pU+fPtLMmTMlo9EoGY1GKSMjQ3rooYckANJzzz0nSZIkZWRkSACk/v37Sw0NDVZfP3jwYGnMmDGS0Wi0un327NmSr6+vZDabJUmSpHvuuUdyd3eXCgoK5PuYTCZp8ODBEgApIyNDvv3vz01j5y+++OKCf5cOHTpIDz300Hm3P/bYY1LHjh2lrKwsq9sbn7fjx49LkiRJn3zyiQRA+uOPP6zut3jxYpvbxrkOHjwoAbjoR6MTJ05IAKQlS5ZYPc7hw4clANJLL70k39anT58m/25/f65mz54tjR49+oJz3nLLLVKvXr2kyspKq9uffPJJyc3NTSorK7vg11/uNtP4uXOfz+nTp0udO3eWioqKbH7f5nZ88sknpc6dO1/w70CkVjxtgEhwX331Fdzd3XHvvfcCADp27Ii7774boaGhSEtLk++3e/duXH/99RgyZEibz9R4lNTLywuOjo5wdnbGq6++itLSUhQVFbXosZycnHD//ffj119/RWVlJYCz5w1+//33mDNnDrp27QoA8ikP8+bNw08//YTc3NwWfZ9du3bB2dkZzs7OCAgIwE8//YRly5bhrbfesrrf7bffDmdnZ/nP6enpOHnyJO677z4AZ4+QNn7MnDkT+fn5SElJAQAcPHgQN9xwA7y9veWvd3R0bNZRzd27d8PNze2ST4PYsWMHrr/+evj5+VnNOGPGDABASEiIPKOnpyduv/12q69fsGBBi77f2rVrERMTc97HvHnzrO7XeNrF308HGD9+PIYMGYL9+/e36Ps2fm1CQgKWLFmCwMBA6PV6q8/X19dj//79+Mc//gEPD4/zmtXX1yMqKuqi3+dSt5mm1NbWIiQkBPPmzbvgebDN7Th+/HhUVFRg/vz5+OOPP1BSUnLRvw+RWnDxSiSw9PR0HDp0CLNmzYIkSaioqEBFRQXuuusuAH+9AgEAFBcXX9IpAC0VHR2Nm2++GQDwxRdfIDw8HDExMXj55ZcBnP1n6ZZatGgR6uvrsXXrVgBAYGAg8vPz8fDDD8v3ue666/D777/DZDLhwQcfRK9evTB8+HD88MMPzfoeU6ZMQUxMDI4cOYLk5GRUVFRgw4YNcHFxsbqfr6+v1Z8LCwsBAM8++6y8kGn8WLJkCQDIC4fS0lL4+Pic972buu3viouL4efnBweHS/uxXFhYiO3bt58347Bhw86b8dzFdUtmPFe/fv0wbty48z7+vjArLS0FcP7zCgB+fn7y51vixRdfxHvvvYeoqCjMmDEDXbt2xQ033IAjR47I39NkMuHDDz887/mYOXMmADRrsXep20xTysvLYTabL7qPNrfjAw88gK+//hpZWVm488470aNHD0yYMAF79+696CxE9o7nvBIJ7Ouvv4YkSfj555+bfF3Nb7/9Fm+99RYcHR3RvXv38y6AaQk3Nzf5yOe5/v4/+a1bt8LZ2Rk7duyAm5ubfPvlvHzT0KFDMX78eGzatAmPPfYYNm3aBD8/P3mR3GjOnDmYM2cODAYDoqKisGbNGixYsAB9+/bFNddcc8Hv4eXlhXHjxl10lr+/Rmnj+Zgvvvgi5s6d2+TXDBo0CADQtWvXJi98as7FUN27d0dYWBgsFsslLWC7deuGkSNH4u23327y835+fvKM0dHRlzTjpWg8cp6fn3/ewi0vL8/qfFc3N7cmX92hpKTE6n5OTk545pln8Mwzz6CiogL79u3DSy+9hFtuuQXZ2dm44oor4OjoiAceeABLly5tcq6AgICLzn6p20xTunTpAkdHx4vuo83tCJy98PLhhx9GTU0NDh06hNdeew2zZ89Gamoq+vTpc9GZiOwVF69EgjKbzfj222/Rv39/fPnll+d9fseOHfjPf/6D3bt3Y/bs2ZgxYwa+//57pKSkyIupv3N1dQXQ9NHRvn37Ytu2bfLL/ABnj2BFRETIFwUBZ/9H7eTkBEdHR/m2uro6fP/995f193344YfxxBNPICwsDNu3b8czzzxj9T3+/veYOnUqOnfujMDAQMTFxV108XqpBg0ahAEDBiAhIQGrV6++4H2vv/56/PnnnygsLJSPbprNZvz4448X/T4zZszADz/8gG+++eaCpw64uro22W/27NnYtWsX+vfvjyuuuOKCM/7000/4888/rU4daM5FZZdi+vTpAIDNmzfLp34AQExMDE6cOCEfsQfOboOJiYlWX5+amoqUlBSbF3V17twZd911F3Jzc7FixQpkZmZi6NChuP766xEXF4eRI0eed6RUCe7u7pg6dSq2bduGt99+2+bfp7kdz9WhQwfMmDEDDQ0NuOOOO3D8+HEuXknVuHglEtTu3buRl5eHtWvXNvkSVsOHD8fG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",
      "text/plain": [
       "<Figure size 800x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# step 10 visualize improved actual vs predicted\n",
    "\n",
    "plt.figure(figsize=(8,6))\n",
    "\n",
    "plt.scatter(y_test, y_pred)\n",
    "\n",
    "min_val = min(min(y_test), min(y_pred))\n",
    "max_val = max(max(y_test), max(y_pred))\n",
    "\n",
    "plt.plot([min_val, max_val], \n",
    "         [min_val, max_val], \n",
    "         linestyle='--')\n",
    "\n",
    "plt.xlabel(\"Actual Price\")\n",
    "plt.ylabel(\"Predicted Price\")\n",
    "plt.title(\"Actual vs Predicted House Prices\")\n",
    "\n",
    "plt.grid(True, linestyle=':', linewidth=0.7)\n",
    "\n",
    "plt.xlim(min_val - 5, max_val + 5)\n",
    "plt.ylim(min_val - 5, max_val + 5)\n",
    "\n",
    "plt.savefig(\"linear_regression_results.png\", dpi=300, bbox_inches=\"tight\")\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
