Skip to content

Instantly share code, notes, and snippets.

@jamm1985
Last active March 23, 2022 11:48
Show Gist options
  • Save jamm1985/14e722192382a2919119d4cdb61e4aed to your computer and use it in GitHub Desktop.
Save jamm1985/14e722192382a2919119d4cdb61e4aed to your computer and use it in GitHub Desktop.
Lab_12_intro_to_ML_regression_part_I
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "Lab_12_intro_to_machine_learning",
"provenance": [],
"authorship_tag": "ABX9TyNRcdxwAzXP9o7UZX2LavzS",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
},
"accelerator": "GPU"
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/jamm1985/14e722192382a2919119d4cdb61e4aed/lab_12_intro_to_machine_learning.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"source": [
"Видео лабораторной: https://youtu.be/r-z1cjvpwBE\n",
"\n",
"TG: https://t.me/data_science_news\n",
"\n",
"\n",
"\n",
"---"
],
"metadata": {
"id": "-xv-tPMotFuR"
}
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"id": "Z5BcJ-9oZr5D",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "47a371c5-6905-4fb1-fef8-89024915e987"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"2.8.0\n"
]
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pylab as plt\n",
"\n",
"from sklearn.linear_model import LinearRegression\n",
"from sklearn.linear_model import Ridge\n",
"from sklearn.linear_model import Lasso\n",
"from sklearn.model_selection import cross_val_score\n",
"from sklearn.preprocessing import MaxAbsScaler\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.metrics import mean_squared_error\n",
"\n",
"import tensorflow as tf\n",
"from tensorflow import keras\n",
"from tensorflow.keras import layers\n",
"\n",
"print(tf.__version__)"
]
},
{
"cell_type": "markdown",
"source": [
"# Разведочный анализ данных\n",
"\n",
"[Набор данных Copyright 2020 Google LLC](https://colab.research.google.com/github/google/eng-edu/blob/main/ml/cc/exercises/linear_regression_with_a_real_dataset.ipynb)\n",
"\n",
"[Документация по набору данных](https://developers.google.com/machine-learning/crash-course/california-housing-data-description)"
],
"metadata": {
"id": "fHFFL3xCe7k1"
}
},
{
"cell_type": "code",
"source": [
"!wget https://download.mlcc.google.com/mledu-datasets/california_housing_train.csv\n",
"!head california_housing_train.csv"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "T5vVWNXre1QT",
"outputId": "a6700678-2ddd-42e2-c997-08b0d46b60cd"
},
"execution_count": 2,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"--2022-03-16 05:30:23-- https://download.mlcc.google.com/mledu-datasets/california_housing_train.csv\n",
"Resolving download.mlcc.google.com (download.mlcc.google.com)... 74.125.133.94, 2a00:1450:400c:c07::5e\n",
"Connecting to download.mlcc.google.com (download.mlcc.google.com)|74.125.133.94|:443... connected.\n",
"HTTP request sent, awaiting response... 302 Found\n",
"Location: https://dl.google.com/mlcc/mledu-datasets/california_housing_train.csv [following]\n",
"--2022-03-16 05:30:23-- https://dl.google.com/mlcc/mledu-datasets/california_housing_train.csv\n",
"Resolving dl.google.com (dl.google.com)... 64.233.167.91, 64.233.167.136, 64.233.167.93, ...\n",
"Connecting to dl.google.com (dl.google.com)|64.233.167.91|:443... connected.\n",
"HTTP request sent, awaiting response... 200 OK\n",
"Length: 1706430 (1.6M) [text/csv]\n",
"Saving to: ‘california_housing_train.csv’\n",
"\n",
"\r californi 0%[ ] 0 --.-KB/s \rcalifornia_housing_ 100%[===================>] 1.63M --.-KB/s in 0.01s \n",
"\n",
"2022-03-16 05:30:23 (128 MB/s) - ‘california_housing_train.csv’ saved [1706430/1706430]\n",
"\n",
"\"longitude\",\"latitude\",\"housing_median_age\",\"total_rooms\",\"total_bedrooms\",\"population\",\"households\",\"median_income\",\"median_house_value\"\n",
"-114.310000,34.190000,15.000000,5612.000000,1283.000000,1015.000000,472.000000,1.493600,66900.000000\n",
"-114.470000,34.400000,19.000000,7650.000000,1901.000000,1129.000000,463.000000,1.820000,80100.000000\n",
"-114.560000,33.690000,17.000000,720.000000,174.000000,333.000000,117.000000,1.650900,85700.000000\n",
"-114.570000,33.640000,14.000000,1501.000000,337.000000,515.000000,226.000000,3.191700,73400.000000\n",
"-114.570000,33.570000,20.000000,1454.000000,326.000000,624.000000,262.000000,1.925000,65500.000000\n",
"-114.580000,33.630000,29.000000,1387.000000,236.000000,671.000000,239.000000,3.343800,74000.000000\n",
"-114.580000,33.610000,25.000000,2907.000000,680.000000,1841.000000,633.000000,2.676800,82400.000000\n",
"-114.590000,34.830000,41.000000,812.000000,168.000000,375.000000,158.000000,1.708300,48500.000000\n",
"-114.590000,33.610000,34.000000,4789.000000,1175.000000,3134.000000,1056.000000,2.178200,58400.000000\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"dataset_1 = pd.read_csv(\"california_housing_train.csv\")\n",
"dataset_1.describe()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 300
},
"id": "YAmQv4zxfhnL",
"outputId": "8f8a8611-37fb-4839-ad10-e9d8c7862416"
},
"execution_count": 3,
"outputs": [
{
"output_type": "execute_result",
"data": {
"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 "
],
"text/html": [
"\n",
" <div id=\"df-726fb9fb-e88d-4f15-bb58-35e88103ed20\">\n",
" <div class=\"colab-df-container\">\n",
" <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>longitude</th>\n",
" <th>latitude</th>\n",
" <th>housing_median_age</th>\n",
" <th>total_rooms</th>\n",
" <th>total_bedrooms</th>\n",
" <th>population</th>\n",
" <th>households</th>\n",
" <th>median_income</th>\n",
" <th>median_house_value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>-119.562108</td>\n",
" <td>35.625225</td>\n",
" <td>28.589353</td>\n",
" <td>2643.664412</td>\n",
" <td>539.410824</td>\n",
" <td>1429.573941</td>\n",
" <td>501.221941</td>\n",
" <td>3.883578</td>\n",
" <td>207300.912353</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>2.005166</td>\n",
" <td>2.137340</td>\n",
" <td>12.586937</td>\n",
" <td>2179.947071</td>\n",
" <td>421.499452</td>\n",
" <td>1147.852959</td>\n",
" <td>384.520841</td>\n",
" <td>1.908157</td>\n",
" <td>115983.764387</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-124.350000</td>\n",
" <td>32.540000</td>\n",
" <td>1.000000</td>\n",
" <td>2.000000</td>\n",
" <td>1.000000</td>\n",
" <td>3.000000</td>\n",
" <td>1.000000</td>\n",
" <td>0.499900</td>\n",
" <td>14999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>-121.790000</td>\n",
" <td>33.930000</td>\n",
" <td>18.000000</td>\n",
" <td>1462.000000</td>\n",
" <td>297.000000</td>\n",
" <td>790.000000</td>\n",
" <td>282.000000</td>\n",
" <td>2.566375</td>\n",
" <td>119400.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>-118.490000</td>\n",
" <td>34.250000</td>\n",
" <td>29.000000</td>\n",
" <td>2127.000000</td>\n",
" <td>434.000000</td>\n",
" <td>1167.000000</td>\n",
" <td>409.000000</td>\n",
" <td>3.544600</td>\n",
" <td>180400.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>-118.000000</td>\n",
" <td>37.720000</td>\n",
" <td>37.000000</td>\n",
" <td>3151.250000</td>\n",
" <td>648.250000</td>\n",
" <td>1721.000000</td>\n",
" <td>605.250000</td>\n",
" <td>4.767000</td>\n",
" <td>265000.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>-114.310000</td>\n",
" <td>41.950000</td>\n",
" <td>52.000000</td>\n",
" <td>37937.000000</td>\n",
" <td>6445.000000</td>\n",
" <td>35682.000000</td>\n",
" <td>6082.000000</td>\n",
" <td>15.000100</td>\n",
" <td>500001.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-726fb9fb-e88d-4f15-bb58-35e88103ed20')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-726fb9fb-e88d-4f15-bb58-35e88103ed20 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-726fb9fb-e88d-4f15-bb58-35e88103ed20');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 3
}
]
},
{
"cell_type": "code",
"source": [
"dataset_1['median_house_value'] = dataset_1['median_house_value']/1000\n",
"dataset_1.describe()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 300
},
"id": "mLYfDfOkjKcn",
"outputId": "c732e083-877c-4788-f041-d6842aae6f69"
},
"execution_count": 4,
"outputs": [
{
"output_type": "execute_result",
"data": {
"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 207.300912 \n",
"std 115.983764 \n",
"min 14.999000 \n",
"25% 119.400000 \n",
"50% 180.400000 \n",
"75% 265.000000 \n",
"max 500.001000 "
],
"text/html": [
"\n",
" <div id=\"df-46692847-1b09-4381-8b12-8c1f463665fb\">\n",
" <div class=\"colab-df-container\">\n",
" <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>longitude</th>\n",
" <th>latitude</th>\n",
" <th>housing_median_age</th>\n",
" <th>total_rooms</th>\n",
" <th>total_bedrooms</th>\n",
" <th>population</th>\n",
" <th>households</th>\n",
" <th>median_income</th>\n",
" <th>median_house_value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>-119.562108</td>\n",
" <td>35.625225</td>\n",
" <td>28.589353</td>\n",
" <td>2643.664412</td>\n",
" <td>539.410824</td>\n",
" <td>1429.573941</td>\n",
" <td>501.221941</td>\n",
" <td>3.883578</td>\n",
" <td>207.300912</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>2.005166</td>\n",
" <td>2.137340</td>\n",
" <td>12.586937</td>\n",
" <td>2179.947071</td>\n",
" <td>421.499452</td>\n",
" <td>1147.852959</td>\n",
" <td>384.520841</td>\n",
" <td>1.908157</td>\n",
" <td>115.983764</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-124.350000</td>\n",
" <td>32.540000</td>\n",
" <td>1.000000</td>\n",
" <td>2.000000</td>\n",
" <td>1.000000</td>\n",
" <td>3.000000</td>\n",
" <td>1.000000</td>\n",
" <td>0.499900</td>\n",
" <td>14.999000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>-121.790000</td>\n",
" <td>33.930000</td>\n",
" <td>18.000000</td>\n",
" <td>1462.000000</td>\n",
" <td>297.000000</td>\n",
" <td>790.000000</td>\n",
" <td>282.000000</td>\n",
" <td>2.566375</td>\n",
" <td>119.400000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>-118.490000</td>\n",
" <td>34.250000</td>\n",
" <td>29.000000</td>\n",
" <td>2127.000000</td>\n",
" <td>434.000000</td>\n",
" <td>1167.000000</td>\n",
" <td>409.000000</td>\n",
" <td>3.544600</td>\n",
" <td>180.400000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>-118.000000</td>\n",
" <td>37.720000</td>\n",
" <td>37.000000</td>\n",
" <td>3151.250000</td>\n",
" <td>648.250000</td>\n",
" <td>1721.000000</td>\n",
" <td>605.250000</td>\n",
" <td>4.767000</td>\n",
" <td>265.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>-114.310000</td>\n",
" <td>41.950000</td>\n",
" <td>52.000000</td>\n",
" <td>37937.000000</td>\n",
" <td>6445.000000</td>\n",
" <td>35682.000000</td>\n",
" <td>6082.000000</td>\n",
" <td>15.000100</td>\n",
" <td>500.001000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-46692847-1b09-4381-8b12-8c1f463665fb')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-46692847-1b09-4381-8b12-8c1f463665fb button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-46692847-1b09-4381-8b12-8c1f463665fb');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 4
}
]
},
{
"cell_type": "code",
"source": [
"dataset_1.corr()['median_house_value']"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "WRci842_fzQy",
"outputId": "39ce79cc-6b47-46f6-897f-3786df05a3cd"
},
"execution_count": 5,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"longitude -0.044982\n",
"latitude -0.144917\n",
"housing_median_age 0.106758\n",
"total_rooms 0.130991\n",
"total_bedrooms 0.045783\n",
"population -0.027850\n",
"households 0.061031\n",
"median_income 0.691871\n",
"median_house_value 1.000000\n",
"Name: median_house_value, dtype: float64"
]
},
"metadata": {},
"execution_count": 5
}
]
},
{
"cell_type": "markdown",
"source": [
"# Задача регрессии (линейная модель)\n",
"\n",
"[Лабораторная №7 - линейная регрессия](https://www.youtube.com/watch?v=txDLkiesqpY)\n"
],
"metadata": {
"id": "fG3lpBVZe3jm"
}
},
{
"cell_type": "markdown",
"source": [
"## Подготовка данных"
],
"metadata": {
"id": "72ujRJiXL5Le"
}
},
{
"cell_type": "code",
"source": [
"X = dataset_1.loc[:, dataset_1.columns != 'median_house_value'].to_numpy()\n",
"y = dataset_1['median_house_value'].to_numpy()"
],
"metadata": {
"id": "AGwVELBnoPbC"
},
"execution_count": 6,
"outputs": []
},
{
"cell_type": "code",
"source": [
"X"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "F3NsKaY3on3Y",
"outputId": "7d74e34d-a2b7-4f34-9c91-d148eea39f73"
},
"execution_count": 7,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([[-114.31 , 34.19 , 15. , ..., 1015. , 472. ,\n",
" 1.4936],\n",
" [-114.47 , 34.4 , 19. , ..., 1129. , 463. ,\n",
" 1.82 ],\n",
" [-114.56 , 33.69 , 17. , ..., 333. , 117. ,\n",
" 1.6509],\n",
" ...,\n",
" [-124.3 , 41.84 , 17. , ..., 1244. , 456. ,\n",
" 3.0313],\n",
" [-124.3 , 41.8 , 19. , ..., 1298. , 478. ,\n",
" 1.9797],\n",
" [-124.35 , 40.54 , 52. , ..., 806. , 270. ,\n",
" 3.0147]])"
]
},
"metadata": {},
"execution_count": 7
}
]
},
{
"cell_type": "code",
"source": [
"y"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "EbchplGSprI9",
"outputId": "b75e5034-8143-4ba4-e884-a5cd017680fc"
},
"execution_count": 8,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([ 66.9, 80.1, 85.7, ..., 103.6, 85.8, 94.6])"
]
},
"metadata": {},
"execution_count": 8
}
]
},
{
"cell_type": "markdown",
"source": [
"## resampling (cross validation)\n",
"\n",
"![image.png](data:image/png;base64,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IIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCQTQFHNvdjNzcC1Z74OE++hOKRbjax6iIIFMgbHvPzBx3PZHboWh0mR4SUiM+fWTm2546At/1Wr+eI8LjQAgVyp1UcJTOBiMTTsb+O7BWdWbkbBi4JO/LfvoKZlWN77gg4TifGbfyya1RmR+vQYXLolhLxhTIrx/bcEUhyhMf/+WnH07lzNI6CAAL+IBDmD430lzaWSS65NjE5+fLQEEeSv7Q5UNuZLOJIikk8ac6vVGbnWLxM0pL4hJD6oQ6h3zLDyoXtcdHx2g+ZBtmReQrNjIhPahkaEpKYC83iEJkIxEqBkCZPTy6S2RcpiYcPTCggjvahDgf9lolpbmyOi5Swej2/KvvryPsPezre/pIJw/InObqHhdBvnpxya1tcQnx440e/rvbL8E67c+uYHAcBBOwtQFDnw/4JdYQUGdq3SUTFUlw88CFrtqqKikmQjoMWeHU1ICwkpNgbvepH1KhYJFvHYiffCSSbaLx1v9nm38xTRGhosZe71Auvd1mJ8MxLUyKnBdr+b25cUkKc9oXHq+N5wsOKPtuhVniz2mXot5zuFC/qv/vVBVHRUfF5MysaHhZatM9tNcJb169Av2WGlQvbO7+++OTRUzGMDMoFaw6BgL8IhPhLQ2knAggggAACCCCAAAIIIIBAegGCuvQmrEEAAQQQQAABBBBAAAEE/EaAoM5vuoqGIoAAAggggAACCCCAAALpBQjq0puwBgEEEEAAAQQQQAABBBDwGwGCOr/pKhqKAAIIIIAAAgh4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)\n",
"\n",
"https://scikit-learn.org/stable/modules/cross_validation.html"
],
"metadata": {
"id": "q1ojgDeYvFoU"
}
},
{
"cell_type": "code",
"source": [
"# https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html\n",
"\n"
],
"metadata": {
"id": "H0BUsnbypsUs"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"$\\mathrm{MSE}=\\frac{1}{N}\\sum_{i=1}^n(y_i-\\hat{y}_i)^2$"
],
"metadata": {
"id": "_DKeB_iO80ts"
}
},
{
"cell_type": "code",
"source": [
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=2)\n",
"print(\"Dims of train \", X_train.shape, y_train.shape)\n",
"print(\"Dims of test \", X_test.shape, y_test.shape)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "EqbEwqE6qYtO",
"outputId": "c0bca208-5fb7-4056-a3ff-a28c5144ed38"
},
"execution_count": 9,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Dims of train (11900, 8) (11900,)\n",
"Dims of test (5100, 8) (5100,)\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"# https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html\n",
"# fit model step 1\n",
"\n",
"lin_reg = LinearRegression().fit(X_train, y_train)\n",
"\n",
"print(\"R^2 on train set {}\".format(lin_reg.score(X_train, y_train)))\n",
"print(\"R^2 on test set {}\".format(lin_reg.score(X_test, y_test)))\n",
"\n",
"print(\"MSE on train set {}\".format(\n",
" mean_squared_error(y_train, lin_reg.predict(X_train))\n",
" )\n",
")\n",
"print(\"MSE on test set {}\".format(\n",
" mean_squared_error(y_test, lin_reg.predict(X_test))\n",
" )\n",
")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "bJX_Yqvjqtg3",
"outputId": "95a1e961-e6ab-4922-bd32-1e78a3d5d891"
},
"execution_count": 10,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"R^2 on train set 0.6375851309751237\n",
"R^2 on test set 0.6492538345819212\n",
"MSE on train set 4803.095967423598\n",
"MSE on test set 4880.3979596385025\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"lin_reg.coef_, lin_reg.intercept_"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "D5gbhax50OQS",
"outputId": "e3253da9-6531-40ff-c30f-69748eed9e13"
},
"execution_count": 11,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(array([-4.29214290e+01, -4.24176134e+01, 1.16110862e+00, -8.98362849e-03,\n",
" 1.15185032e-01, -3.66694219e-02, 4.69730379e-02, 4.03237644e+01]),\n",
" -3612.7404586294624)"
]
},
"metadata": {},
"execution_count": 11
}
]
},
{
"cell_type": "code",
"source": [
"# resampling k-fold cross validation\n",
"# https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.cross_val_score.html#sklearn.model_selection.cross_val_score\n",
"\n",
"\n",
"# fit model step 2\n",
"\n",
"lin_reg_2 = LinearRegression()\n",
"\n",
"scores = cross_val_score(lin_reg_2, X, y, cv=5)\n",
"scores"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "mfIRTg8ysVGY",
"outputId": "45aa6ffb-dae2-4e0e-cbc1-328ddb73aee6"
},
"execution_count": 12,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([0.52201778, 0.56428342, 0.60260364, 0.39679821, 0.65576199])"
]
},
"metadata": {},
"execution_count": 12
}
]
},
{
"cell_type": "code",
"source": [
"print(\"%0.2f R^2 with a standard deviation of %0.2f\" % (scores.mean(), scores.std()))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "_fwlqMYtui16",
"outputId": "11895a96-3cec-44dd-8dbe-a93d525f956c"
},
"execution_count": 13,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"0.55 R^2 with a standard deviation of 0.09\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"lin_reg_2 = LinearRegression()\n",
"scores = cross_val_score(lin_reg_2, X, y, cv=5, scoring='neg_mean_squared_error')\n",
"print(\"%0.2f MSE with a standard deviation of %0.2f\" % (scores.mean(), scores.std()))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "s_5kGTf2-KY5",
"outputId": "a4aa2692-5bbb-490a-e198-471b2aab5351"
},
"execution_count": 14,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"-5352.33 MSE with a standard deviation of 1329.57\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"###Регуляризация в задаче линейной регрессии\n",
"\n",
"Пусть $X$ данные в матричной форме:\n",
"\n",
"$$\\bf{X}=\\left[ \\begin{matrix} 1 & X_{11} & X_{12} & ... & X_{1k}\\\\ 1& X_{21} & X_{22} & ... & X_{2k} \\\\ ... & ... & ... & ... & ... \\\\ 1 & X_{n1} & X_{n2} & ... & X_{nk} \\end{matrix} \\right]$$\n",
"\n",
"$Y$, $\\beta$, $\\epsilon$ зависимая переменная, коэффициенты модели и вектор ошибок соответсвенно: \n",
"\n",
"$$\\bf{Y}=\\left[ \\begin{matrix} y_1 \\\\ y_2 \\\\ ... \\\\ y_n \\end{matrix} \\right], \\bf{\\beta}=\\left[ \\begin{matrix} \\beta_0 \\\\ \\beta_1 \\\\ ... \\\\ \\beta_k \\end{matrix} \\right], \\bf{\\epsilon}=\\left[ \\begin{matrix} \\epsilon_1 \\\\ \\epsilon_2 \\\\ ... \\\\ \\epsilon_n \\end{matrix} \\right]$$\n",
"\n",
"Тогда модель линейной регрессии в общем виде: \n",
"\n",
"$$Y = \\bf{X \\beta + \\epsilon}$$\n",
"\n",
"Пусть $\\hat{y}=f(X)=X\\hat{\\beta}$ - оценка параметров $\\beta$ для линейной модели.\n",
"\n",
"Зафиксируем целевую функцию (objective function): \n",
"\n",
"$$\\mathrm{RSS}(\\beta)=\\sum_{i=1}^n(y_i - f(X_i))^2=(y-X\\beta)^T(y-X\\beta)$$\n",
"\n",
"Тогда $\\hat{\\beta}^{\\mathrm{OLS}}=\\mathrm{argmin}_\\beta\\{\\sum_{i=1}^n(y_i - f(X_i))^2\\}$ оценка параметров линейной модели методом наименьших квадратов.\n",
"\n",
"$$\\hat{\\beta}^{\\mathrm{OLS}}=(X^TX)^{-1}X^Ty$$ - решение в общем виде для оценки методом наименьших кварратов.\n",
"\n",
"### Ridge регуляризация\n",
"\n",
"Пусть $\\mathrm{RSS}(\\beta)=\\sum_{i=1}^n(y_i - f(X_i))^2+\\lambda\\sum_{i=1}^k\\beta_j^2=(y-X\\beta)^T(y-X\\beta)+\\lambda\\beta^T\\beta$ - целевая функция с параметром регуляризации $\\lambda\\beta^T\\beta$, тогда\n",
"\n",
"$\\hat{\\beta}^{\\mathrm{ridge}}=\\mathrm{argmin}_\\beta\\{\\sum_{i=1}^n(y_i - f(X_i))^2+\\lambda\\sum_{i=1}^k\\beta_j^2\\}$ оценка параметров линейной модели c $L_2$ регуляризацией.\n",
"\n",
"$$\\hat{\\beta}^{\\mathrm{ridge}}=(X^TX+\\lambda I)^{-1}X^Ty$$ - решение в общем виде для оценки c $L_2$ регуляризацией.\n",
"\n",
"### LASSO регуляризация\n",
"\n",
"Пусть $\\mathrm{RSS}(\\beta)=\\sum_{i=1}^n(y_i - f(X_i))^2+\\lambda\\sum_{i=1}^k|\\beta_j|=(y-X\\beta)^T(y-X\\beta)+\\lambda||\\beta||_1$ - целевая функция с парамтером регуляризации $\\lambda||\\beta||_1$, тогда\n",
"\n",
"$\\hat{\\beta}^{\\mathrm{lasso}}=\\mathrm{argmin}_\\beta\\{\\frac{1}{2}\\sum_{i=1}^n(y_i - f(X_i))^2+\\lambda\\sum_{i=1}^k|\\beta_j|\\}$ оценка параметров линейной модели c $L_1$ регуляризацией.\n",
"\n",
"Ддя $\\hat{\\beta}^{\\mathrm{lasso}}$ не существут решения в общем виде, однако, оптимальная оценка может быть найдена методами оптимизации квадратичных функций."
],
"metadata": {
"id": "mjdeEgVEgj9X"
}
},
{
"cell_type": "code",
"source": [
"#https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Ridge.html\n",
"\n",
"# fit model Ridge\n",
"\n",
"ridge_reg_1 = Ridge(alpha=1.0, solver='cholesky')\n",
"scores = cross_val_score(ridge_reg_1, X, y, cv=5, scoring='r2')\n",
"print(\"%0.2f R^2 with a standard deviation of %0.2f\" % (scores.mean(), scores.std()))\n",
"\n",
"ridge_reg_2 = Ridge(alpha=1.0, solver='cholesky')\n",
"scores = cross_val_score(ridge_reg_2, X, y, cv=5, scoring='neg_mean_squared_error')\n",
"print(\"%0.2f MSE with a standard deviation of %0.2f\" % (scores.mean(), scores.std()))\n",
"print(\"\\n\")\n",
"\n",
"print(\"--------------- RIDGE coeffs alpha=1.0\")\n",
"ridge_reg_3 = Ridge(alpha=1.0, solver='cholesky').fit(X_train,y_train)\n",
"print(ridge_reg_3.coef_, ridge_reg_3.intercept_, \"\\n\")\n",
"\n",
"\n",
"print(\"--------------- RIDGE coeffs alpha=10.0\")\n",
"ridge_reg_4 = Ridge(alpha=10.0, solver='cholesky').fit(X_train,y_train)\n",
"print(ridge_reg_4.coef_, ridge_reg_4.intercept_, \"\\n\")\n",
"\n",
"print(\"--------------- RIDGE coeffs alpha=100.0\")\n",
"ridge_reg_5 = Ridge(alpha=100.0, solver='cholesky').fit(X_train,y_train)\n",
"print(ridge_reg_5.coef_, ridge_reg_5.intercept_, \"\\n\")\n",
"\n",
"print(\"--------------- OLS coeffs\")\n",
"print(lin_reg.coef_, lin_reg.intercept_)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "fNwBKze-7lqL",
"outputId": "65c5efa7-1e14-4a99-8c89-76c51d386563"
},
"execution_count": 15,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"0.55 R^2 with a standard deviation of 0.09\n",
"-5352.03 MSE with a standard deviation of 1329.88\n",
"\n",
"\n",
"--------------- RIDGE coeffs alpha=1.0\n",
"[-4.29074407e+01 -4.24045336e+01 1.16133727e+00 -8.98484030e-03\n",
" 1.15166492e-01 -3.66696731e-02 4.70033197e-02 4.03245856e+01] -3611.5452675178294 \n",
"\n",
"--------------- RIDGE coeffs alpha=10.0\n",
"[-4.27819790e+01 -4.22872240e+01 1.16338783e+00 -8.99564254e-03\n",
" 1.14999813e-01 -3.66719551e-02 4.72750721e-02 4.03319039e+01] -3600.825268345685 \n",
"\n",
"--------------- RIDGE coeffs alpha=100.0\n",
"[-4.15688113e+01 -4.11531876e+01 1.18319623e+00 -9.09373770e-03\n",
" 1.13350796e-01 -3.66968047e-02 4.99175259e-02 4.03981251e+01] -3497.137932761225 \n",
"\n",
"--------------- OLS coeffs\n",
"[-4.29214290e+01 -4.24176134e+01 1.16110862e+00 -8.98362849e-03\n",
" 1.15185032e-01 -3.66694219e-02 4.69730379e-02 4.03237644e+01] -3612.7404586294624\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"#https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Lasso.html\n",
"\n",
"# fit model Lasso\n",
"\n",
"lasso_reg_1 = Lasso(alpha=1.0)\n",
"scores = cross_val_score(lasso_reg_1, X, y, cv=5, scoring='r2')\n",
"print(\"%0.2f R^2 with a standard deviation of %0.2f\" % (scores.mean(), scores.std()))\n",
"\n",
"lasso_reg_2 = Lasso(alpha=1.0)\n",
"scores = cross_val_score(lasso_reg_2, X, y, cv=5, scoring='neg_mean_squared_error')\n",
"print(\"%0.2f MSE with a standard deviation of %0.2f\" % (scores.mean(), scores.std()))\n",
"print(\"\\n\")\n",
"\n",
"print(\"--------------- LASSO coeffs alpha=1.0\")\n",
"lasso_reg_3 = Lasso(alpha=1.0).fit(X_train,y_train)\n",
"print(lasso_reg_3.coef_, lasso_reg_3.intercept_, \"\\n\")\n",
"\n",
"print(\"--------------- LASSO coeffs alpha=10.0\")\n",
"lasso_reg_4 = Lasso(alpha=10.0).fit(X_train,y_train)\n",
"print(lasso_reg_4.coef_, lasso_reg_4.intercept_, \"\\n\")\n",
"\n",
"print(\"--------------- LASSO coeffs alpha=100.0\")\n",
"lasso_reg_5 = Lasso(alpha=100.0).fit(X_train,y_train)\n",
"print(lasso_reg_5.coef_, lasso_reg_5.intercept_, \"\\n\")\n",
"\n",
"print(\"--------------- OLS coeffs\")\n",
"print(lin_reg.coef_, lin_reg.intercept_)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Rn6JohJ7GqM9",
"outputId": "f4c099b8-819b-4c42-8931-bc6c33ba81af"
},
"execution_count": 16,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"0.56 R^2 with a standard deviation of 0.07\n",
"-5318.24 MSE with a standard deviation of 1427.98\n",
"\n",
"\n",
"--------------- LASSO coeffs alpha=1.0\n",
"[-3.90786668e+01 -3.88232746e+01 1.21680467e+00 -9.28340186e-03\n",
" 1.09766158e-01 -3.67483260e-02 5.54222354e-02 4.05165803e+01] -3284.0806183661234 \n",
"\n",
"--------------- LASSO coeffs alpha=10.0\n",
"[-4.49374412e+00 -6.47412275e+00 1.71806994e+00 -1.19820710e-02\n",
" 6.10033331e-02 -3.74577344e-02 1.31459141e-01 4.22521234e+01] -326.13902350915623 \n",
"\n",
"--------------- LASSO coeffs alpha=100.0\n",
"[-0. -0. 1.00948049 0.03475236 -0.21063508 -0.05565397\n",
" 0.22692586 6.0528728 ] 142.71153243167387 \n",
"\n",
"--------------- OLS coeffs\n",
"[-4.29214290e+01 -4.24176134e+01 1.16110862e+00 -8.98362849e-03\n",
" 1.15185032e-01 -3.66694219e-02 4.69730379e-02 4.03237644e+01] -3612.7404586294624\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"## Конструирование признаков (Feature engineering)"
],
"metadata": {
"id": "EqxNm2YENBIB"
}
},
{
"cell_type": "markdown",
"source": [
"### Rescale"
],
"metadata": {
"id": "Vt4pawzSPYIF"
}
},
{
"cell_type": "code",
"source": [
"#https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MaxAbsScaler.html\n",
"abs_norm = MaxAbsScaler().fit(X)\n",
"X_normalized = abs_norm.transform(X)\n",
"X_normalized"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "JQRsDv-NJIRs",
"outputId": "70645f80-bca8-48ee-dcdd-40fe1aab19b6"
},
"execution_count": 17,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([[-0.91926015, 0.81501788, 0.28846154, ..., 0.02844571,\n",
" 0.07760605, 0.09957267],\n",
" [-0.92054684, 0.82002384, 0.36538462, ..., 0.0316406 ,\n",
" 0.07612627, 0.12133252],\n",
" [-0.92127061, 0.80309893, 0.32692308, ..., 0.00933244,\n",
" 0.01923709, 0.11005927],\n",
" ...,\n",
" [-0.99959791, 0.99737783, 0.32692308, ..., 0.03486352,\n",
" 0.07497534, 0.20208532],\n",
" [-0.99959791, 0.99642431, 0.36538462, ..., 0.03637688,\n",
" 0.07859257, 0.13197912],\n",
" [-1. , 0.96638856, 1. , ..., 0.02258842,\n",
" 0.04439329, 0.20097866]])"
]
},
"metadata": {},
"execution_count": 17
}
]
},
{
"cell_type": "code",
"source": [
"lin_reg_3 = LinearRegression()\n",
"\n",
"scores = cross_val_score(lin_reg_3, X_normalized, y, cv=5, scoring='r2')\n",
"print(\"%0.2f R^2 with a standard deviation of %0.2f\" % (scores.mean(), scores.std()))\n",
"\n",
"scores = cross_val_score(lin_reg_3, X_normalized, y, cv=5, scoring='neg_mean_squared_error')\n",
"print(\"%0.2f MSE with a standard deviation of %0.2f\" % (scores.mean(), scores.std()))\n",
"\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "LEXldutWNYit",
"outputId": "a10a0bf3-4004-44ca-8949-a6dbd02fcdf9"
},
"execution_count": 18,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"0.55 R^2 with a standard deviation of 0.09\n",
"-5352.33 MSE with a standard deviation of 1329.57\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"### Nonlinearity"
],
"metadata": {
"id": "BgbHHmq_Pd84"
}
},
{
"cell_type": "code",
"source": [
"dataset_1.describe()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 300
},
"id": "Gw3ZfTppPUER",
"outputId": "f89e7245-916e-48b8-9a45-e850ba016d8c"
},
"execution_count": 19,
"outputs": [
{
"output_type": "execute_result",
"data": {
"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 207.300912 \n",
"std 115.983764 \n",
"min 14.999000 \n",
"25% 119.400000 \n",
"50% 180.400000 \n",
"75% 265.000000 \n",
"max 500.001000 "
],
"text/html": [
"\n",
" <div id=\"df-f8bc8975-24c0-4138-91f5-42f08bbd54cb\">\n",
" <div class=\"colab-df-container\">\n",
" <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>longitude</th>\n",
" <th>latitude</th>\n",
" <th>housing_median_age</th>\n",
" <th>total_rooms</th>\n",
" <th>total_bedrooms</th>\n",
" <th>population</th>\n",
" <th>households</th>\n",
" <th>median_income</th>\n",
" <th>median_house_value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>-119.562108</td>\n",
" <td>35.625225</td>\n",
" <td>28.589353</td>\n",
" <td>2643.664412</td>\n",
" <td>539.410824</td>\n",
" <td>1429.573941</td>\n",
" <td>501.221941</td>\n",
" <td>3.883578</td>\n",
" <td>207.300912</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>2.005166</td>\n",
" <td>2.137340</td>\n",
" <td>12.586937</td>\n",
" <td>2179.947071</td>\n",
" <td>421.499452</td>\n",
" <td>1147.852959</td>\n",
" <td>384.520841</td>\n",
" <td>1.908157</td>\n",
" <td>115.983764</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-124.350000</td>\n",
" <td>32.540000</td>\n",
" <td>1.000000</td>\n",
" <td>2.000000</td>\n",
" <td>1.000000</td>\n",
" <td>3.000000</td>\n",
" <td>1.000000</td>\n",
" <td>0.499900</td>\n",
" <td>14.999000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>-121.790000</td>\n",
" <td>33.930000</td>\n",
" <td>18.000000</td>\n",
" <td>1462.000000</td>\n",
" <td>297.000000</td>\n",
" <td>790.000000</td>\n",
" <td>282.000000</td>\n",
" <td>2.566375</td>\n",
" <td>119.400000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>-118.490000</td>\n",
" <td>34.250000</td>\n",
" <td>29.000000</td>\n",
" <td>2127.000000</td>\n",
" <td>434.000000</td>\n",
" <td>1167.000000</td>\n",
" <td>409.000000</td>\n",
" <td>3.544600</td>\n",
" <td>180.400000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>-118.000000</td>\n",
" <td>37.720000</td>\n",
" <td>37.000000</td>\n",
" <td>3151.250000</td>\n",
" <td>648.250000</td>\n",
" <td>1721.000000</td>\n",
" <td>605.250000</td>\n",
" <td>4.767000</td>\n",
" <td>265.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>-114.310000</td>\n",
" <td>41.950000</td>\n",
" <td>52.000000</td>\n",
" <td>37937.000000</td>\n",
" <td>6445.000000</td>\n",
" <td>35682.000000</td>\n",
" <td>6082.000000</td>\n",
" <td>15.000100</td>\n",
" <td>500.001000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-f8bc8975-24c0-4138-91f5-42f08bbd54cb')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-f8bc8975-24c0-4138-91f5-42f08bbd54cb button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-f8bc8975-24c0-4138-91f5-42f08bbd54cb');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 19
}
]
},
{
"cell_type": "code",
"source": [
"dataset_1['total_rooms'] = np.log(dataset_1['total_rooms'])\n",
"dataset_1['total_bedrooms'] = np.log(dataset_1['total_bedrooms'])\n",
"dataset_1['population'] = np.log(dataset_1['population'])\n",
"dataset_1['households'] = np.log(dataset_1['households'])\n",
"dataset_1.describe()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 300
},
"id": "iEVcRnCAPrSB",
"outputId": "24ac541a-ab30-47b4-c5d6-5851764d8187"
},
"execution_count": 20,
"outputs": [
{
"output_type": "execute_result",
"data": {
"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 7.634250 \n",
"std 2.005166 2.137340 12.586937 0.742704 \n",
"min -124.350000 32.540000 1.000000 0.693147 \n",
"25% -121.790000 33.930000 18.000000 7.287561 \n",
"50% -118.490000 34.250000 29.000000 7.662468 \n",
"75% -118.000000 37.720000 37.000000 8.055554 \n",
"max -114.310000 41.950000 52.000000 10.543682 \n",
"\n",
" total_bedrooms population households median_income \\\n",
"count 17000.000000 17000.000000 17000.000000 17000.000000 \n",
"mean 6.055277 7.027439 5.984960 3.883578 \n",
"std 0.726624 0.732922 0.727605 1.908157 \n",
"min 0.000000 1.098612 0.000000 0.499900 \n",
"25% 5.693732 6.672033 5.641907 2.566375 \n",
"50% 6.073045 7.062192 6.013715 3.544600 \n",
"75% 6.474276 7.450661 6.405641 4.767000 \n",
"max 8.771060 10.482402 8.713089 15.000100 \n",
"\n",
" median_house_value \n",
"count 17000.000000 \n",
"mean 207.300912 \n",
"std 115.983764 \n",
"min 14.999000 \n",
"25% 119.400000 \n",
"50% 180.400000 \n",
"75% 265.000000 \n",
"max 500.001000 "
],
"text/html": [
"\n",
" <div id=\"df-203b3666-8591-4c23-baab-3556e84920aa\">\n",
" <div class=\"colab-df-container\">\n",
" <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>longitude</th>\n",
" <th>latitude</th>\n",
" <th>housing_median_age</th>\n",
" <th>total_rooms</th>\n",
" <th>total_bedrooms</th>\n",
" <th>population</th>\n",
" <th>households</th>\n",
" <th>median_income</th>\n",
" <th>median_house_value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>-119.562108</td>\n",
" <td>35.625225</td>\n",
" <td>28.589353</td>\n",
" <td>7.634250</td>\n",
" <td>6.055277</td>\n",
" <td>7.027439</td>\n",
" <td>5.984960</td>\n",
" <td>3.883578</td>\n",
" <td>207.300912</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>2.005166</td>\n",
" <td>2.137340</td>\n",
" <td>12.586937</td>\n",
" <td>0.742704</td>\n",
" <td>0.726624</td>\n",
" <td>0.732922</td>\n",
" <td>0.727605</td>\n",
" <td>1.908157</td>\n",
" <td>115.983764</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-124.350000</td>\n",
" <td>32.540000</td>\n",
" <td>1.000000</td>\n",
" <td>0.693147</td>\n",
" <td>0.000000</td>\n",
" <td>1.098612</td>\n",
" <td>0.000000</td>\n",
" <td>0.499900</td>\n",
" <td>14.999000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>-121.790000</td>\n",
" <td>33.930000</td>\n",
" <td>18.000000</td>\n",
" <td>7.287561</td>\n",
" <td>5.693732</td>\n",
" <td>6.672033</td>\n",
" <td>5.641907</td>\n",
" <td>2.566375</td>\n",
" <td>119.400000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>-118.490000</td>\n",
" <td>34.250000</td>\n",
" <td>29.000000</td>\n",
" <td>7.662468</td>\n",
" <td>6.073045</td>\n",
" <td>7.062192</td>\n",
" <td>6.013715</td>\n",
" <td>3.544600</td>\n",
" <td>180.400000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>-118.000000</td>\n",
" <td>37.720000</td>\n",
" <td>37.000000</td>\n",
" <td>8.055554</td>\n",
" <td>6.474276</td>\n",
" <td>7.450661</td>\n",
" <td>6.405641</td>\n",
" <td>4.767000</td>\n",
" <td>265.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>-114.310000</td>\n",
" <td>41.950000</td>\n",
" <td>52.000000</td>\n",
" <td>10.543682</td>\n",
" <td>8.771060</td>\n",
" <td>10.482402</td>\n",
" <td>8.713089</td>\n",
" <td>15.000100</td>\n",
" <td>500.001000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-203b3666-8591-4c23-baab-3556e84920aa')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-203b3666-8591-4c23-baab-3556e84920aa button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-203b3666-8591-4c23-baab-3556e84920aa');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 20
}
]
},
{
"cell_type": "code",
"source": [
"X_log = dataset_1.loc[:, dataset_1.columns != 'median_house_value'].to_numpy()\n",
"X_log"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "w_oNZW7yOegy",
"outputId": "58f52926-788e-4fc6-b2d5-d592ff65f380"
},
"execution_count": 21,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([[-114.31 , 34.19 , 15. , ..., 6.92264389,\n",
" 6.15697899, 1.4936 ],\n",
" [-114.47 , 34.4 , 19. , ..., 7.02908756,\n",
" 6.13772705, 1.82 ],\n",
" [-114.56 , 33.69 , 17. , ..., 5.80814249,\n",
" 4.76217393, 1.6509 ],\n",
" ...,\n",
" [-124.3 , 41.84 , 17. , ..., 7.12608727,\n",
" 6.12249281, 3.0313 ],\n",
" [-124.3 , 41.8 , 19. , ..., 7.1685799 ,\n",
" 6.16961073, 1.9797 ],\n",
" [-124.35 , 40.54 , 52. , ..., 6.69208374,\n",
" 5.59842196, 3.0147 ]])"
]
},
"metadata": {},
"execution_count": 21
}
]
},
{
"cell_type": "code",
"source": [
"lin_reg_3 = LinearRegression()\n",
"\n",
"scores = cross_val_score(lin_reg_3, X_log, y, cv=5, scoring='r2')\n",
"print(\"%0.2f R^2 with a standard deviation of %0.2f\" % (scores.mean(), scores.std()))\n",
"\n",
"scores = cross_val_score(lin_reg_3, X_log, y, cv=5, scoring='neg_mean_squared_error')\n",
"print(\"%0.2f MSE with a standard deviation of %0.2f\" % (scores.mean(), scores.std()))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "GcjUzXfFO0K2",
"outputId": "ebe9df39-e4f2-4c3e-c610-d49036b2f3a9"
},
"execution_count": 22,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"0.59 R^2 with a standard deviation of 0.08\n",
"-4880.92 MSE with a standard deviation of 1192.24\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"# Задача регрессии (простая нейронная сеть)"
],
"metadata": {
"id": "kkG2-rbFQmuq"
}
},
{
"cell_type": "code",
"source": [
"dataset_1 = pd.read_csv(\"california_housing_train.csv\")\n",
"X = dataset_1.loc[:, dataset_1.columns != 'median_house_value'].to_numpy()\n",
"y = dataset_1['median_house_value'].to_numpy()\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=2)\n",
"print(\"Dims of train \", X_train.shape, y_train.shape)\n",
"print(\"Dims of test \", X_test.shape, y_test.shape)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "5qavR5MfXsy1",
"outputId": "aa3f86e0-c715-4acb-eb57-b605af844440"
},
"execution_count": 23,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Dims of train (11900, 8) (11900,)\n",
"Dims of test (5100, 8) (5100,)\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"# https://www.tensorflow.org/api_docs/python/tf/keras/layers/Dense\n",
"# https://keras.io/guides/functional_api/\n",
"\n",
"\n",
"input = keras.Input(shape=(8,))\n",
"x = layers.Dense(64, activation='relu')(input)\n",
"x = layers.Dense(64, activation='relu')(x)\n",
"output = layers.Dense(1)(x)\n",
"\n",
"nn_1 = keras.Model(input, output)\n",
"nn_1.summary()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "8VnC8Z7iPGFj",
"outputId": "3787a96e-9fa6-4506-df4a-c6d9c934f340"
},
"execution_count": 24,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Model: \"model\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" input_1 (InputLayer) [(None, 8)] 0 \n",
" \n",
" dense (Dense) (None, 64) 576 \n",
" \n",
" dense_1 (Dense) (None, 64) 4160 \n",
" \n",
" dense_2 (Dense) (None, 1) 65 \n",
" \n",
"=================================================================\n",
"Total params: 4,801\n",
"Trainable params: 4,801\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"LR = 0.001\n",
"nn_1.compile(\n",
" optimizer=keras.optimizers.Adam(learning_rate=LR),\n",
" loss=[tf.keras.losses.MeanAbsoluteError()],\n",
" metrics=[tf.keras.metrics.MeanSquaredError()]\n",
")\n",
"\n",
"print(\"Fit model on training data\")\n",
"history = nn_1.fit(\n",
" X_train,\n",
" y_train,\n",
" epochs=30,\n",
" validation_data=(X_test, y_test))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "YcDZg6DFXvZw",
"outputId": "f2975ecd-6b18-45c2-e4be-bab6d993dd0e"
},
"execution_count": 25,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Fit model on training data\n",
"Epoch 1/30\n",
"372/372 [==============================] - 5s 5ms/step - loss: 139482.4844 - mean_squared_error: 33668884480.0000 - val_loss: 116905.9531 - val_mean_squared_error: 27397017600.0000\n",
"Epoch 2/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 111370.8438 - mean_squared_error: 24605741056.0000 - val_loss: 108485.2969 - val_mean_squared_error: 24429299712.0000\n",
"Epoch 3/30\n",
"372/372 [==============================] - 3s 7ms/step - loss: 99567.7891 - mean_squared_error: 19507484672.0000 - val_loss: 94041.8203 - val_mean_squared_error: 17196939264.0000\n",
"Epoch 4/30\n",
"372/372 [==============================] - 3s 8ms/step - loss: 86368.7422 - mean_squared_error: 13820747776.0000 - val_loss: 84807.7422 - val_mean_squared_error: 12693773312.0000\n",
"Epoch 5/30\n",
"372/372 [==============================] - 3s 8ms/step - loss: 81420.1562 - mean_squared_error: 11497886720.0000 - val_loss: 82982.4219 - val_mean_squared_error: 11738802176.0000\n",
"Epoch 6/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 80465.3203 - mean_squared_error: 11095239680.0000 - val_loss: 82303.9922 - val_mean_squared_error: 11350008832.0000\n",
"Epoch 7/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 79616.7266 - mean_squared_error: 10756466688.0000 - val_loss: 81435.4219 - val_mean_squared_error: 11249816576.0000\n",
"Epoch 8/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 79001.1172 - mean_squared_error: 10591767552.0000 - val_loss: 80723.8125 - val_mean_squared_error: 11035149312.0000\n",
"Epoch 9/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 78283.8750 - mean_squared_error: 10401550336.0000 - val_loss: 80951.7109 - val_mean_squared_error: 10745340928.0000\n",
"Epoch 10/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 77595.8047 - mean_squared_error: 10213095424.0000 - val_loss: 79334.5234 - val_mean_squared_error: 10440878080.0000\n",
"Epoch 11/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 76887.1719 - mean_squared_error: 9992031232.0000 - val_loss: 78739.1875 - val_mean_squared_error: 10250883072.0000\n",
"Epoch 12/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 76198.5625 - mean_squared_error: 9840065536.0000 - val_loss: 77644.0000 - val_mean_squared_error: 10119945216.0000\n",
"Epoch 13/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 75468.0938 - mean_squared_error: 9653007360.0000 - val_loss: 77002.9844 - val_mean_squared_error: 9891603456.0000\n",
"Epoch 14/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 74665.4922 - mean_squared_error: 9469588480.0000 - val_loss: 76956.6953 - val_mean_squared_error: 9763158016.0000\n",
"Epoch 15/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 73971.3203 - mean_squared_error: 9307841536.0000 - val_loss: 75374.4844 - val_mean_squared_error: 9504031744.0000\n",
"Epoch 16/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 73166.8906 - mean_squared_error: 9104160768.0000 - val_loss: 75193.6016 - val_mean_squared_error: 9687987200.0000\n",
"Epoch 17/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 72396.7656 - mean_squared_error: 8948977664.0000 - val_loss: 73819.3516 - val_mean_squared_error: 9310675968.0000\n",
"Epoch 18/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 71540.7031 - mean_squared_error: 8752439296.0000 - val_loss: 73288.3984 - val_mean_squared_error: 8950458368.0000\n",
"Epoch 19/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 70802.9062 - mean_squared_error: 8597010432.0000 - val_loss: 72580.0391 - val_mean_squared_error: 8838232064.0000\n",
"Epoch 20/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 69980.5547 - mean_squared_error: 8406166528.0000 - val_loss: 71637.8906 - val_mean_squared_error: 8852182016.0000\n",
"Epoch 21/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 69242.8984 - mean_squared_error: 8236980736.0000 - val_loss: 70392.6641 - val_mean_squared_error: 8521859584.0000\n",
"Epoch 22/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 68497.3047 - mean_squared_error: 8084510208.0000 - val_loss: 71137.5312 - val_mean_squared_error: 8470008832.0000\n",
"Epoch 23/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 67920.0859 - mean_squared_error: 7970188288.0000 - val_loss: 68958.7109 - val_mean_squared_error: 8200147456.0000\n",
"Epoch 24/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 67173.3984 - mean_squared_error: 7818501120.0000 - val_loss: 68429.4219 - val_mean_squared_error: 8104857600.0000\n",
"Epoch 25/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 66582.7344 - mean_squared_error: 7707080192.0000 - val_loss: 67965.9844 - val_mean_squared_error: 7992566272.0000\n",
"Epoch 26/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 66125.7734 - mean_squared_error: 7616282112.0000 - val_loss: 67667.4922 - val_mean_squared_error: 7905951232.0000\n",
"Epoch 27/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 65612.4609 - mean_squared_error: 7541339648.0000 - val_loss: 66948.7656 - val_mean_squared_error: 7765702656.0000\n",
"Epoch 28/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 65159.6484 - mean_squared_error: 7475697664.0000 - val_loss: 66089.9922 - val_mean_squared_error: 7663987712.0000\n",
"Epoch 29/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 64645.4375 - mean_squared_error: 7347859968.0000 - val_loss: 66723.0781 - val_mean_squared_error: 7919130624.0000\n",
"Epoch 30/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 64289.3945 - mean_squared_error: 7301460480.0000 - val_loss: 65446.8633 - val_mean_squared_error: 7637944320.0000\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"# list all data in history\n",
"print(history.history.keys())\n",
"# summarize history for accuracy\n",
"plt.plot(history.history['mean_squared_error'])\n",
"plt.plot(history.history['val_mean_squared_error'])\n",
"plt.title('model accuracy')\n",
"plt.ylabel('accuracy')\n",
"plt.xlabel('epoch')\n",
"plt.legend(['train', 'test'], loc='upper left')\n",
"plt.show()\n",
"# summarize history for loss\n",
"plt.plot(history.history['loss'])\n",
"plt.plot(history.history['val_loss'])\n",
"plt.title('model loss')\n",
"plt.ylabel('loss')\n",
"plt.xlabel('epoch')\n",
"plt.legend(['train', 'test'], loc='upper left')\n",
"plt.show()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 591
},
"id": "IoIffhtsc9o1",
"outputId": "b4e7fb25-91ed-4bd8-f791-dd6e61e56981"
},
"execution_count": 26,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"dict_keys(['loss', 'mean_squared_error', 'val_loss', 'val_mean_squared_error'])\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "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N1NXV0dtbW28wxGRJJIU1US9vb2UlpYmdSIAMDNKS0tTogQkItMrKZIBkPSJYESqXKeITK+kSQYn0jswRH1bD0PDk73drIhI6kiZZNA/OExjRx99A1OfDFpbW/n2t090L51jXXPNNbS2tk55PCIiJytlkkFmenCpfYPTlwwGBweP+7wHHniAoqKiKY9HRORkJUVvosmIpkcwjL7BoSl/7c997nNs376dFStWEI1GycrKori4mC1btvDqq6/ytre9jb1799Lb28uNN97IDTfcAByZWqOzs5Orr76aiy++mCeeeIKqqip+85vfkJ2dPeWxioiMJ+mSwVf/z0u8vL993GM9/UNEIpCZnnZSr3lmZQFfefNZEx7/+te/zqZNm9i4cSOPPPII1157LZs2bTrc/fP222+npKSEnp4ezj//fN7xjndQWlp61Gts3bqVO++8k+9973tcd9113H333Vx//fUnFaeIyKlKumRwPGYwHe3Hq1atOmocwDe/+U3uueceAPbu3cvWrVuPSQa1tbWsWLECgPPOO49du3bFPlARkVDSJYPj/YKvb+uhqbOfsysLYtpFMzc39/D2I488wsMPP8yTTz5JTk4Ol1122bjjBDIzMw9vp6Wl0dPTE7P4RETGSpkGZAiqh9yd/iluRM7Pz6ejY/y7B7a1tVFcXExOTg5btmzhqaeemtL3FhGZCklXMjie0T2KMqMn125wPKWlpVx00UWcffbZZGdnM3v27MPHrrrqKr7zne9wxhlncPrpp3PBBRdM2fuKiEyVhLsH8sqVK33szW02b97MGWecccLnDg4N83J9OxWF2ZTnZ57w/JlqstcrIjLCzJ5195UTHU+paqL0tAjpkUhMupeKiCSylEoGEFQVxWIUsohIIku9ZBCNxGQUsohIIku9ZJCexuDwMINDSggiIiNSMBnEbo4iEZFEpWQgIiKplwwy0iOYTe2Edac6hTXAN77xDbq7u6csFhGRU5FyycDMyEyb2h5FSgYikuhSagTyiMxohN4pTAajp7B+wxvewKxZs/jFL35BX18fb3/72/nqV79KV1cX1113HXV1dQwNDfGlL32JgwcPsn//fi6//HLKyspYs2bNlMUkInIyki8Z/PZzcODF455SMTRE/6DjmWkYk5iwbs5SuPrrEx4ePYX1gw8+yF133cXTTz+Nu/OWt7yFtWvX0tjY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\n"
},
"metadata": {
"needs_background": "light"
}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"source": [
"X_train_norm, X_test_norm, y_train_norm, y_test_norm = train_test_split(X_normalized, y, test_size=0.3, random_state=2)\n",
"\n",
"input = keras.Input(shape=(8,))\n",
"x = layers.Dense(64, activation='relu')(input)\n",
"x = layers.Dense(64, activation='relu')(x)\n",
"output = layers.Dense(1)(x)\n",
"\n",
"nn_1 = keras.Model(input, output)\n",
"#nn_1.summary()\n",
"\n",
"LR = 0.001\n",
"nn_1.compile(\n",
" optimizer=keras.optimizers.Adam(learning_rate=LR),\n",
" loss=[tf.keras.losses.MeanAbsoluteError()],\n",
" metrics=[tf.keras.metrics.MeanSquaredError()]\n",
"\n",
")\n",
"\n",
"print(\"Fit model on training data\")\n",
"history = nn_1.fit(\n",
" X_train_norm,\n",
" y_train_norm,\n",
" epochs=30,\n",
" validation_data=(X_test_norm, y_test_norm))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Xgrc_ugHZlJq",
"outputId": "971dc864-4300-4a2d-db70-c676a6bdfb23"
},
"execution_count": 27,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Fit model on training data\n",
"Epoch 1/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 206795.4688 - mean_squared_error: 56014397440.0000 - val_loss: 205778.3906 - val_mean_squared_error: 56247169024.0000\n",
"Epoch 2/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 200349.9219 - mean_squared_error: 53364846592.0000 - val_loss: 192691.4375 - val_mean_squared_error: 50942058496.0000\n",
"Epoch 3/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 177556.3281 - mean_squared_error: 44675104768.0000 - val_loss: 159030.9219 - val_mean_squared_error: 38844985344.0000\n",
"Epoch 4/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 135406.7656 - mean_squared_error: 30624692224.0000 - val_loss: 114283.0156 - val_mean_squared_error: 24465571840.0000\n",
"Epoch 5/30\n",
"372/372 [==============================] - 2s 7ms/step - loss: 99154.9609 - mean_squared_error: 18977902592.0000 - val_loss: 91153.8203 - val_mean_squared_error: 16145519616.0000\n",
"Epoch 6/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 85705.9609 - mean_squared_error: 13909401600.0000 - val_loss: 86766.2344 - val_mean_squared_error: 13758028800.0000\n",
"Epoch 7/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 83946.8828 - mean_squared_error: 12788144128.0000 - val_loss: 86312.3516 - val_mean_squared_error: 13260951552.0000\n",
"Epoch 8/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 83658.9844 - mean_squared_error: 12504192000.0000 - val_loss: 86073.3828 - val_mean_squared_error: 13159665664.0000\n",
"Epoch 9/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 83417.0938 - mean_squared_error: 12436531200.0000 - val_loss: 85819.3906 - val_mean_squared_error: 13067907072.0000\n",
"Epoch 10/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 83161.7734 - mean_squared_error: 12325829632.0000 - val_loss: 85551.3047 - val_mean_squared_error: 12969872384.0000\n",
"Epoch 11/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 82888.3438 - mean_squared_error: 12262994944.0000 - val_loss: 85267.9609 - val_mean_squared_error: 12870999040.0000\n",
"Epoch 12/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 82610.1328 - mean_squared_error: 12163811328.0000 - val_loss: 84970.5938 - val_mean_squared_error: 12798576640.0000\n",
"Epoch 13/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 82309.5859 - mean_squared_error: 12090469376.0000 - val_loss: 84662.9531 - val_mean_squared_error: 12719804416.0000\n",
"Epoch 14/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 82001.8516 - mean_squared_error: 11967596544.0000 - val_loss: 84345.6406 - val_mean_squared_error: 12668781568.0000\n",
"Epoch 15/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 81691.1875 - mean_squared_error: 11925498880.0000 - val_loss: 84017.8125 - val_mean_squared_error: 12454376448.0000\n",
"Epoch 16/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 81364.3203 - mean_squared_error: 11785666560.0000 - val_loss: 83680.6406 - val_mean_squared_error: 12476708864.0000\n",
"Epoch 17/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 81035.7109 - mean_squared_error: 11714954240.0000 - val_loss: 83329.4141 - val_mean_squared_error: 12273813504.0000\n",
"Epoch 18/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 80690.4766 - mean_squared_error: 11618946048.0000 - val_loss: 82975.2422 - val_mean_squared_error: 12153061376.0000\n",
"Epoch 19/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 80342.5625 - mean_squared_error: 11458452480.0000 - val_loss: 82605.3125 - val_mean_squared_error: 12068451328.0000\n",
"Epoch 20/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 79982.4844 - mean_squared_error: 11394854912.0000 - val_loss: 82227.0781 - val_mean_squared_error: 11984166912.0000\n",
"Epoch 21/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 79606.8125 - mean_squared_error: 11279780864.0000 - val_loss: 81832.9531 - val_mean_squared_error: 11838595072.0000\n",
"Epoch 22/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 79217.4922 - mean_squared_error: 11152124928.0000 - val_loss: 81424.6328 - val_mean_squared_error: 11750178816.0000\n",
"Epoch 23/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 78818.5156 - mean_squared_error: 11080593408.0000 - val_loss: 81001.7969 - val_mean_squared_error: 11587097600.0000\n",
"Epoch 24/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 78403.0312 - mean_squared_error: 10902419456.0000 - val_loss: 80566.4219 - val_mean_squared_error: 11503527936.0000\n",
"Epoch 25/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 77971.4219 - mean_squared_error: 10838893568.0000 - val_loss: 80113.0391 - val_mean_squared_error: 11304907776.0000\n",
"Epoch 26/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 77523.2891 - mean_squared_error: 10658941952.0000 - val_loss: 79633.1875 - val_mean_squared_error: 11194773504.0000\n",
"Epoch 27/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 77053.9062 - mean_squared_error: 10558457856.0000 - val_loss: 79135.6172 - val_mean_squared_error: 11027051520.0000\n",
"Epoch 28/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 76557.9375 - mean_squared_error: 10388887552.0000 - val_loss: 78609.7656 - val_mean_squared_error: 10929961984.0000\n",
"Epoch 29/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 76051.3672 - mean_squared_error: 10264171520.0000 - val_loss: 78064.2422 - val_mean_squared_error: 10782563328.0000\n",
"Epoch 30/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 75515.6250 - mean_squared_error: 10129316864.0000 - val_loss: 77490.2656 - val_mean_squared_error: 10604675072.0000\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"# list all data in history\n",
"print(history.history.keys())\n",
"# summarize history for accuracy\n",
"plt.plot(history.history['mean_squared_error'])\n",
"plt.plot(history.history['val_mean_squared_error'])\n",
"plt.title('model accuracy')\n",
"plt.ylabel('accuracy')\n",
"plt.xlabel('epoch')\n",
"plt.legend(['train', 'test'], loc='upper left')\n",
"plt.show()\n",
"# summarize history for loss\n",
"plt.plot(history.history['loss'])\n",
"plt.plot(history.history['val_loss'])\n",
"plt.title('model loss')\n",
"plt.ylabel('loss')\n",
"plt.xlabel('epoch')\n",
"plt.legend(['train', 'test'], loc='upper left')\n",
"plt.show()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 591
},
"id": "3YrJ2xZgeiUe",
"outputId": "0e003de6-f261-47db-c89a-3cc9ae564119"
},
"execution_count": 28,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"dict_keys(['loss', 'mean_squared_error', 'val_loss', 'val_mean_squared_error'])\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZkAAAEWCAYAAAC0Q+rDAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3de3xdZZ3v8c9vX3K/NmlLkwItkCIUFUpFGHVUrgVnBEcHwUGqh2OdEY86OhxhRsfRGc9hRo86zCiK0pcwoyCCDpwRBwqi6JECpaJAuTTcbHpv2qS5Jzv5nT/Wk52dNEnTNDt77/T7fr32a6/9W2vt/ayk5Mtaz7Oebe6OiIhINsRy3QAREZm7FDIiIpI1ChkREckahYyIiGSNQkZERLJGISMiIlmjkBHJMTP7rpn9wxS3fcXMzj3c9xGZLQoZERHJGoWMiIhkjUJGZArCZaprzOx3ZtZlZjeb2UIz+6mZdZjZA2ZWm7H9O83sGTNrM7Ofm9lJGetOM7ONYb8fACVjPuuPzOzJsO+vzex102zzh8ys2cz2mtk9ZtYQ6mZmXzWzXWa238yeMrNTwrqLzGxTaNtWM/uraf3ARAKFjMjUvRs4D1gG/DHwU+CvgflE/y19DMDMlgG3AZ8I6+4F/q+ZFZlZEfAfwL8B84Afhvcl7HsasBb4MFAHfAu4x8yKD6WhZnY28L+BS4FFwKvA7WH1+cAfhuOoDtu0hnU3Ax9290rgFOBnh/K5ImMpZESm7l/cfae7bwV+CTzq7r9x917gx8BpYbv3Aj9x93XuPgB8GSgF/gA4E0gCX3P3AXe/E3g84zPWAN9y90fdfdDdbwH6wn6H4s+Ate6+0d37gOuAs8xsCTAAVAKvAczdn3X37WG/AeBkM6ty933uvvEQP1dkFIWMyNTtzFjuGed1RVhuIDpzAMDdh4AtQGNYt9VHz0z7asbyscCnwqWyNjNrA44O+x2KsW3oJDpbaXT3nwH/Cnwd2GVmN5lZVdj03cBFwKtm9gszO+sQP1dkFIWMyMzbRhQWQNQHQhQUW4HtQGOoDTsmY3kL8EV3r8l4lLn7bYfZhnKiy29bAdz9Bnc/HTiZ6LLZNaH+uLtfDCwguqx3xyF+rsgoChmRmXcH8A4zO8fMksCniC55/Rp4BEgBHzOzpJn9CXBGxr7fBv7czN4YOujLzewdZlZ5iG24DfigmZ0a+nP+F9HlvVfM7A3h/ZNAF9ALDIU+oz8zs+pwmW8/MHQYPwcRhYzITHP354ErgH8B9hANEvhjd+93937gT4APAHuJ+m9+lLHvBuBDRJez9gHNYdtDbcMDwGeBu4jOno4HLgurq4jCbB/RJbVW4Eth3fuBV8xsP/DnRH07ItNm+tIyERHJFp3JiIhI1ihkREQkaxQyIiKSNQoZERHJmkSuG5Av6uvrfcmSJbluhohIQXniiSf2uPv8idYrZIIlS5awYcOGXDdDRKSgmNmrk63X5TIREckahYyIiGSNQkZERLJGfTKTGBgYoKWlhd7e3lw3JatKSkpYvHgxyWQy100RkTlGITOJlpYWKisrWbJkCaMnzZ073J3W1lZaWlpYunRprpsjInOMLpdNore3l7q6ujkbMABmRl1d3Zw/WxOR3FDIHMRcDphhR8IxikhuKGQOU1dfit0dvWg2axGRAylkDlNb9wC72rvZ0T7zQdPW1sY3vvGNQ97voosuoq2tbUbbIiIyHQqZw9Rge1gW386ezj5a9vXMaNBMFDKpVGrS/e69915qampmrB0iItOl0WWHyUqqSHbv4djSHl7phsEh55h5ZcRih9/Pce211/Liiy9y6qmnkkwmKSkpoba2lueee44XXniBSy65hC1bttDb28vHP/5x1qxZA4xMkdPZ2cmFF17Im9/8Zn7961/T2NjI3XffTWlp6WG3TURkKhQyU/T5//sMm7btH3/lQA94K6l4KX2pIeIxoyQZP+h7ntxQxef+ePmE66+//nqefvppnnzySX7+85/zjne8g6effjo91Hjt2rXMmzePnp4e3vCGN/Dud7+burq6Ue+xefNmbrvtNr797W9z6aWXctddd3HFFVdM/cBFRA6DLpfNhEQR4CRIUZyMMzjk9AwMMtNDAc4444xR97LccMMNvP71r+fMM89ky5YtbN68+YB9li5dyqmnngrA6aefziuvvDLDrRIRmZjOZKZosjMOAFpfhP4uWHgy+/uc3+/tJhmPsbS+nKLEzGR5eXl5evnnP/85DzzwAI888ghlZWW87W1vG/del+Li4vRyPB6np6dnRtoiIjIVOpOZKVUN4IPQuZOq0iRL68tJDQ7x4u5OegcGp/WWlZWVdHR0jLuuvb2d2tpaysrKeO6551i/fv3htF5EJCuy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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"source": [
"# https://www.tensorflow.org/api_docs/python/tf/keras/layers/Normalization\n",
"\n",
"input = keras.Input(shape=(8,))\n",
"x = layers.Normalization()(input)\n",
"x = layers.Dense(64, activation='relu')(x)\n",
"x = layers.Dense(64, activation='relu')(x)\n",
"output = layers.Dense(1)(x)\n",
"\n",
"nn_2 = keras.Model(input, output)\n",
"nn_2.summary()\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "sIxJUcbsZLxQ",
"outputId": "28ccc6cf-67a5-4d47-a295-816ab9fffaff"
},
"execution_count": 29,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Model: \"model_2\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" input_3 (InputLayer) [(None, 8)] 0 \n",
" \n",
" normalization (Normalizatio (None, 8) 17 \n",
" n) \n",
" \n",
" dense_6 (Dense) (None, 64) 576 \n",
" \n",
" dense_7 (Dense) (None, 64) 4160 \n",
" \n",
" dense_8 (Dense) (None, 1) 65 \n",
" \n",
"=================================================================\n",
"Total params: 4,818\n",
"Trainable params: 4,801\n",
"Non-trainable params: 17\n",
"_________________________________________________________________\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"\n",
"LR = 0.001\n",
"nn_2.compile(\n",
" optimizer=keras.optimizers.Adam(learning_rate=LR),\n",
" loss=[tf.keras.losses.MeanAbsoluteError()],\n",
" metrics=[tf.keras.metrics.MeanSquaredError()]\n",
"\n",
")\n",
"\n",
"print(\"Fit model on training data\")\n",
"history = nn_2.fit(\n",
" X_train,\n",
" y_train,\n",
" epochs=30,\n",
" validation_data=(X_test, y_test))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "0THrBDVnf6T3",
"outputId": "ddd4df87-28c1-4f1b-aefd-e89a123c277f"
},
"execution_count": 30,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Fit model on training data\n",
"Epoch 1/30\n",
"372/372 [==============================] - 3s 5ms/step - loss: 144987.7812 - mean_squared_error: 35822739456.0000 - val_loss: 116765.2109 - val_mean_squared_error: 27681896448.0000\n",
"Epoch 2/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 112227.6172 - mean_squared_error: 24842373120.0000 - val_loss: 110188.4219 - val_mean_squared_error: 24272132096.0000\n",
"Epoch 3/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 102708.3047 - mean_squared_error: 20724606976.0000 - val_loss: 97876.5781 - val_mean_squared_error: 19019096064.0000\n",
"Epoch 4/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 88996.7344 - mean_squared_error: 14882031616.0000 - val_loss: 86128.2422 - val_mean_squared_error: 13466316800.0000\n",
"Epoch 5/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 81907.7969 - mean_squared_error: 11681053696.0000 - val_loss: 83248.2266 - val_mean_squared_error: 11745435648.0000\n",
"Epoch 6/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 80561.3438 - mean_squared_error: 11091396608.0000 - val_loss: 82357.6172 - val_mean_squared_error: 11481886720.0000\n",
"Epoch 7/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 79836.7969 - mean_squared_error: 10822083584.0000 - val_loss: 81863.3359 - val_mean_squared_error: 11213162496.0000\n",
"Epoch 8/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 79075.3516 - mean_squared_error: 10595145728.0000 - val_loss: 80830.5781 - val_mean_squared_error: 10984462336.0000\n",
"Epoch 9/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 78431.5938 - mean_squared_error: 10399730688.0000 - val_loss: 80304.7188 - val_mean_squared_error: 10730515456.0000\n",
"Epoch 10/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 77628.9766 - mean_squared_error: 10205846528.0000 - val_loss: 79689.5312 - val_mean_squared_error: 10670451712.0000\n",
"Epoch 11/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 76945.5391 - mean_squared_error: 10016186368.0000 - val_loss: 78680.8672 - val_mean_squared_error: 10284953600.0000\n",
"Epoch 12/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 76145.0469 - mean_squared_error: 9805711360.0000 - val_loss: 77772.7109 - val_mean_squared_error: 10197805056.0000\n",
"Epoch 13/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 75720.4062 - mean_squared_error: 9702811648.0000 - val_loss: 77072.8438 - val_mean_squared_error: 10036048896.0000\n",
"Epoch 14/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 74835.0000 - mean_squared_error: 9465024512.0000 - val_loss: 76226.7344 - val_mean_squared_error: 9817841664.0000\n",
"Epoch 15/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 74007.2266 - mean_squared_error: 9262068736.0000 - val_loss: 75532.3984 - val_mean_squared_error: 9636645888.0000\n",
"Epoch 16/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 73280.5625 - mean_squared_error: 9077710848.0000 - val_loss: 75950.6094 - val_mean_squared_error: 9874145280.0000\n",
"Epoch 17/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 72531.5156 - mean_squared_error: 8928563200.0000 - val_loss: 74895.6172 - val_mean_squared_error: 9232152576.0000\n",
"Epoch 18/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 71859.8203 - mean_squared_error: 8754529280.0000 - val_loss: 73252.5703 - val_mean_squared_error: 9070807040.0000\n",
"Epoch 19/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 71020.6172 - mean_squared_error: 8572276736.0000 - val_loss: 73646.8516 - val_mean_squared_error: 8964041728.0000\n",
"Epoch 20/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 70221.9531 - mean_squared_error: 8412365312.0000 - val_loss: 71759.7578 - val_mean_squared_error: 8829378560.0000\n",
"Epoch 21/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 69619.6797 - mean_squared_error: 8267113984.0000 - val_loss: 71125.3750 - val_mean_squared_error: 8510948352.0000\n",
"Epoch 22/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 68809.0703 - mean_squared_error: 8099959296.0000 - val_loss: 70721.3750 - val_mean_squared_error: 8593863680.0000\n",
"Epoch 23/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 68094.2812 - mean_squared_error: 7958014976.0000 - val_loss: 70390.0703 - val_mean_squared_error: 8355642368.0000\n",
"Epoch 24/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 67535.4062 - mean_squared_error: 7867279872.0000 - val_loss: 68796.2031 - val_mean_squared_error: 8227276288.0000\n",
"Epoch 25/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 66880.1406 - mean_squared_error: 7741731328.0000 - val_loss: 68784.9375 - val_mean_squared_error: 8112913920.0000\n",
"Epoch 26/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 66363.6172 - mean_squared_error: 7637346816.0000 - val_loss: 67678.5938 - val_mean_squared_error: 7986403840.0000\n",
"Epoch 27/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 65961.8672 - mean_squared_error: 7552273408.0000 - val_loss: 67385.1562 - val_mean_squared_error: 7926674432.0000\n",
"Epoch 28/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 65690.1406 - mean_squared_error: 7523852288.0000 - val_loss: 68142.6797 - val_mean_squared_error: 8206020096.0000\n",
"Epoch 29/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 65099.7734 - mean_squared_error: 7418447872.0000 - val_loss: 66803.6172 - val_mean_squared_error: 7650893824.0000\n",
"Epoch 30/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 64623.6250 - mean_squared_error: 7302447616.0000 - val_loss: 66301.5781 - val_mean_squared_error: 7767943168.0000\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"# list all data in history\n",
"print(history.history.keys())\n",
"# summarize history for accuracy\n",
"plt.plot(history.history['mean_squared_error'])\n",
"plt.plot(history.history['val_mean_squared_error'])\n",
"plt.title('model accuracy')\n",
"plt.ylabel('accuracy')\n",
"plt.xlabel('epoch')\n",
"plt.legend(['train', 'test'], loc='upper left')\n",
"plt.show()\n",
"# summarize history for loss\n",
"plt.plot(history.history['loss'])\n",
"plt.plot(history.history['val_loss'])\n",
"plt.title('model loss')\n",
"plt.ylabel('loss')\n",
"plt.xlabel('epoch')\n",
"plt.legend(['train', 'test'], loc='upper left')\n",
"plt.show()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 591
},
"id": "IAnqOOy8gDw_",
"outputId": "d0ee1725-ad19-423e-c126-c5c581b6ccef"
},
"execution_count": 31,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"dict_keys(['loss', 'mean_squared_error', 'val_loss', 'val_mean_squared_error'])\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAEWCAYAAACEz/viAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3deXhc1Zng/+9bi1Qq7SrJiyxbtuWFxQFvGAwkMfuWEAg0gTR0SHfj0CTdZCbNhPQkkGR+Pb/0TDeTJunQwECHNIQlZgkhpNsGzBbAYGxjbGOw5U3yon2XSlJJ7/xxr+SyLFllo1Kpqt7P89ynbt1769Z7VXa9dc655xxRVYwxxqQ3T6IDMMYYk3iWDIwxxlgyMMYYY8nAGGMMlgyMMcZgycAYYwyWDEyaEZFfisj/F+Oxe0TkwnjHZMxEYMnAGGOMJQNjkpGI+BIdg0ktlgzMhONWz9whIptFpENEHhKRySLyBxFpE5GXRKQw6vgrRWSriDSLyKsicnLUvkUissF93ZNAYMh7fUFENrmvfUtETosxxitEZKOItIpIlYj8cMj+c93zNbv7b3a3Z4nIP4nIXhFpEZE33W0rRKR6mL/Dhe76D0VklYg8KiKtwM0iskxE3nbf46CI/FxEMqJef6qIrBGRRhGpEZG/E5EpItIpIqGo4xaLSJ2I+GO5dpOaLBmYieoa4CJgHvBF4A/A3wElOP9u/wZAROYBjwPfdve9CPxORDLcL8bngH8HioDfuOfFfe0i4GHgG0AIuB94XkQyY4ivA/gzoAC4AvgrEbnKPW+5G+/P3JgWApvc1/0jsAQ4243pvwH9Mf5NvgSsct/zMaAP+C9AMbAcuAC4zY0hF3gJ+A+gFJgDvKyqh4BXgeuiznsT8ISq9sYYh0lBSZkMRORhEakVkS0xHPs595dhRESuHbLvayKyw12+Fr+IzQn4marWqOp+4A1gnapuVNUw8CywyD3uK8DvVXWN+2X2j0AWzpftWYAf+Kmq9qrqKuC9qPdYCdyvqutUtU9VHwG63dcdk6q+qqofqmq/qm7GSUifd3d/FXhJVR9337dBVTeJiAf4c+B2Vd3vvudbqtod49/kbVV9zn3PLlV9X1XfUdWIqu7BSWYDMXwBOKSq/6SqYVVtU9V17r5HgBsBRMQL3ICTME0aS8pkAPwSuDTGY/cBNwO/jt4oIkXA3cCZwDLg7uiqB5NwNVHrXcM8z3HXS4G9AztUtR+oAqa5+/brkaMx7o1aLwe+41azNItIMzDdfd0xiciZIrLWrV5pAW7F+YWOe47KYV5WjFNNNdy+WFQNiWGeiLwgIofcqqP/GUMMAL8FThGRWTilrxZVffcEYzIpIimTgaq+DjRGbxORChH5DxF5X0TeEJGT3GP3uL/chhbFLwHWqGqjqjYBa4g9wZiJ4wDOlzoAIiI4X4T7gYPANHfbgBlR61XA36tqQdQSVNXHY3jfXwPPA9NVNR/4V2DgfaqAimFeUw+ER9jXAQSjrsOLU8UUbegQw/cB24G5qpqHU40WHcPs4QJ3S1dP4ZQObsJKBYYkTQYjeAD4a1VdAvwt8ItRjp/Gkb+0qt1tJrk8BVwhIhe4DaDfwanqeQt4G4gAfyMifhH5Mk4pcMCDwK3ur3wRkWy3YTg3hvfNBRpVNSwiy3CqhgY8BlwoIteJiE9EQiKy0C21PAzcIyKlIuIVkeVuG8UnQMB9fz/wfWC0totcoBVod3/8/FXUvheAqSLybRHJFJFcETkzav+vcErMV2LJwJAiyUBEcnDqiH8jIptw6k6nJjYqMx5U9WOcX7g/w/nl/UXgi6rao6o9wJdxvvQacdoXnol67XrgFuDnQBOw0z02FrcBPxaRNuAunKQ0cN59wOU4iakRp/H4dHf33wIf4rRdNAL/AHhUtcU95//FKdV04PxAOZa/xUlCbTiJ7cmoGNpwqoC+CBwCdgDnRe3/I05peYOqRledmTQlyTq5jYjMBF5Q1QUikgd8rKojJgAR+aV7/Cr3+Q3AClX9hvv8fuDVGKsIjEl6IvIK8GtV/b+JjsUkXkqUDFS1FdgtIn8CTr2xiJw+ysv+E7hYRArdhuOL3W3GpDwROQNYTFRpwqS3pEwGIvI4Tn3wfBGpFpG/AP4U+AsR+QDYinNPNiJyhtuZ50+A+0VkK4CqNgL/A6e4/h7wY3ebMSlNRB7B6YPwbbc6yZjkrSYyxhgzdpKyZGCMMWZsJd1gV8XFxTpz5sxEh2GMMUnl/fffr1fVoX1XBiVdMpg5cybr169PdBjGGJNUROSYtxBbNZExxhhLBsYYYywZGGOMIQnbDIbT29tLdXU14XA40aHEXSAQoKysDL/f5iExxoydlEgG1dXV5ObmMnPmTI4coDK1qCoNDQ1UV1cza9asRIdjjEkhKVFNFA6HCYVCKZ0IAESEUCiUFiUgY8z4SolkAKR8IhiQLtdpjBlfKZMMRhPu7eNgSxeR/linmzXGmPSRNsmgJ9JPXVs3PZGxTwbNzc384hejzaVztMsvv5zm5uYxj8cYY45X2iSDDJ9zqeOZDCKRyDFf9+KLL1JQUDDm8RhjzPFKibuJYpHhdZJBdxySwZ133kllZSULFy7E7/cTCAQoLCxk+/btfPLJJ1x11VVUVVURDoe5/fbbWblyJXB4aI329nYuu+wyzj33XN566y2mTZvGb3/7W7KyssY8VmOMGU7ckoGIBIDXceZx9QGrVPXuIcfcDPxvnGn+AH7+aWdd+tHvtrLtQOuw+zp7+vB6hEzf8RWITinN4+4vnjri/p/85Cds2bKFTZs28eqrr3LFFVewZcuWwds/H374YYqKiujq6uKMM87gmmuuIRQKHXGOHTt28Pjjj/Pggw9y3XXX8fTTT3PjjTceV5zGGHOi4lky6AbOV9V2d4LvN0XkD6r6zpDjnlTVb8UxjkEece7Vj7dly5Yd0Q/g3nvv5dlnnwWgqqqKHTt2HJUMZs2axcKFCwFYsmQJe/bsiXucxhgzIG7JQJ1v3Xb3qd9d4v5NfKxf8FWNnbR3Rzh5al5cY8jOzh5cf/XVV3nppZd4++23CQaDrFixYth+ApmZmYPrXq+Xrq6uuMZojDHR4tqALCJeEdkE1AJrVHXdMIddIyKbRWSViEwf4TwrRWS9iKyvq6s74XgyfR56+/rp6x/bnJSbm0tb2/CzB7a0tFBYWEgwGGT79u28887QgpExxiReXJOBqvap6kKgDFgmIguGHPI7YKaqngasAR4Z4TwPqOpSVV1aUjLi3AyjGryjqG9sG5FDoRDnnHMOCxYs4I477jhi36WXXkokEuHkk0/mzjvv5KyzzhrT9zbGmLEwbnMgi8hdQKeq/uMI+71Ao6rmH+s8S5cu1aGT23z00UecfPLJo8bQ2RNhZ2075aFs8rOSd6C3WK/XGGMGiMj7qrp0pP1xKxmISImIFLjrWcBFwPYhx0yNenol8FG84oHDt5fGo6+BMcYks3jeTTQVeMT9xe8BnlLVF0Tkx8B6VX0e+BsRuRKIAI3AzXGMB5/Xg9cj9ET64vk2xhiTdOJ5N9FmYNEw2++KWv8e8L14xTCcTJ8nLh3PjDEmmaXNcBQDMrzeMW9ANsaYZJd+ycDnoTei9I9Tw7kxxiSDtEwGitJrVUXGGDMo7ZJBZhz6GpzoENYAP/3pT+ns7ByzWIwx5kSkXTIY6Hg2lo3IlgyMMckubYawHuDzCB6RMe1rED2E9UUXXcSkSZN46qmn6O7u5uqrr+ZHP/oRHR0dXHfddVRXV9PX18cPfvADampqOHDgAOeddx7FxcWsXbt2zGIyxpjjkXrJ4A93wqEPR9wtwOzeCB4E/N7YzjnlM3DZT0bcHT2E9erVq1m1ahXvvvsuqsqVV17J66+/Tl1dHaWlpfz+978HnDGL8vPzueeee1i7di3FxcXHc5XGGDOm0q6aCMCD0B+nAVRXr17N6tWrWbRoEYsXL2b79u3s2LGDz3zmM6xZs4bvfve7vPHGG+TnH3PUDWOMGVepVzI4xi/4AU3NXTR09HBqaR4iMqZvr6p873vf4xvf+MZR+zZs2MCLL77I97//fS644ALuuuuuYc5gjDHjLy1LBhk+D/2qRPrGpnQQPYT1JZdcwsMPP0x7uzOVw/79+6mtreXAgQMEg0FuvPFG7rjjDjZs2HDUa40xJlFSr2QQg8E7ivr68R/nFJjDiR7C+rLLLuOrX/0qy5cvByAnJ4dHH32UnTt3cscdd+DxePD7/dx3330ArFy5kksvvZTS0lJrQDbGJMy4DWE9Vj7NENYDuiN9fHyojbLCIEXZGWMdYtzZENbGmOOVsCGsJ7IMrwfBRi81xpgBaZkMRAS/b2z7GhhjTDJLmWRwvNVdmT5vUg5lnWzVesaY5JASySAQCNDQ0HBcX5QZXk/SDWWtqjQ0NBAIBBIdijEmxaTE3URlZWVUV1dTV1cX82vawhFaunqhKYDHM7Z9DeIpEAhQVlaW6DCMMSkmJZKB3+9n1qxZx/WaNdtquOXJ9Tz3zXNYOL0gTpEZY0xySIlqohNRHgoCsLehI8GRGGNM4qVtMphR5CSDfQ02fLQxxqRtMgj4vUzJC7C30ZKBMcakbTIAmBEKWjWRMcaQ5smgvCjIXqsmMsaYNE8GoSC1bd109kQSHYoxxiRUmieDbAD2WbuBMSbNxS0ZiEhARN4VkQ9EZKuI/GiYYzJF5EkR2Ski60RkZrziGc7h20stGRhj0ls8SwbdwPmqejqwELhURM4acsxfAE2qOgf4P8A/xDGeo5QXuSUDSwbGmDQXt2Sgjnb3qd9dhg4e9CXgEXd9FXCBjPU8lMeQH/RTEPSzx+4oMsakubi2GYiIV0Q2AbXAGlVdN+SQaUAVgKpGgBYgFM+YhiovClqbgTEm7cU1Gahqn6ouBMqAZSKy4ETOIyIrRWS9iKw/nsHoYjEjlG1tBsaYtDcudxOpajOwFrh0yK79wHQAEfEB+UDDMK9/QFWXqurSkpKSMY1tZijI/uYuepNsOGtjjBlL8bybqERECtz1LOAiYPuQw54HvuauXwu8ouM8e8uMoiB9/cr+pq7xfFtjjJlQ4lkymAqsFZHNwHs4bQYviMiPReRK95iHgJCI7AT+K3BnHOMZ1kBfAxujyBiTzuI2n4GqbgYWDbP9rqj1MPAn8YohFjNDA6OXdgBjWwVljDHJIq17IAOU5GaS5feyxxqRjTFpLO2TgYgwwwasM8akubRPBuAMZb2v0TqeGWPSlyUDnHaDvQ2d9PeP641MxhgzYVgywOl41h3pp7atO9GhGGNMQlgywBmSArBZz4wxacuSATDT+hoYY9KcJQOgtCCAzyNWMjDGpC1LBoDP62FaYZbdXmqMSVvplQwaKkfcVR7KtqGsjTFpK32SwabH4WeLoWbbsLvLi4LsqbdqImNMekqfZDDvEvBlwTu/GHZ3eShIazhCc2fPOAdmjDGJlz7JIFgEC2+AzU9B+9ET5MwYvL3UqoqMMeknfZIBwFm3QV83rH/oqF0zi53bS20+ZGNMOkqvZFA8F+ZeAu8+CL3hI3YNlAz2WcnAGJOG0isZACz/JnTWw4dPHbE54PcyOS/TOp4ZY9JS+iWDWZ+DyZ+Bt38BQ2bYLA9lW8nAGJOW0i8ZiMDy26DuI6h85Yhd5UVBazMwxqSl9EsGAAuugZzJ8Pa/HLG5PBSktq2brp6+BAVmjDGJkZ7JwJcJy26Bypeh9qPBzeXugHXWE9kYk27SMxkALPlz8AWO6IRWHnLuKLKqImNMuknfZJAdgtNvgA+ehI56AMqL3JKBNSIbY9JM+iYDONwJ7T2nE1p+0E9B0M9emw/ZGJNm0jsZlMyDuRfDe4c7oZUXBW1ICmNM2knvZABOJ7SOOtiyCnDmQ7ZkYIxJN5YMZn0eJi9wbjNVpbwoyP7mLnr7+hMdmTHGjJu4JQMRmS4ia0Vkm4hsFZHbhzlmhYi0iMgmd7krXvEcI1Cn7aB2G+xaS3koSF+/cqC5a9xDMcaYRIlnySACfEdVTwHOAr4pIqcMc9wbqrrQXX4cx3hG9plrIXsSvP2Lwb4Ge6yqyBiTRuKWDFT1oKpucNfbgI+AafF6v0/FlwnLVsLONcymCoB91tfAGJNGxqXNQERmAouAdcPsXi4iH4jIH0Tk1BFev1JE1ovI+rq6oyemGRNLnU5ooQ8fIuD3WCOyMSatxD0ZiEgO8DTwbVVtHbJ7A1CuqqcDPwOeG+4cqvqAqi5V1aUlJSXxCTQ7BKdfj2x+kiXF/WzY1xSf9zHGmAkorslARPw4ieAxVX1m6H5VbVXVdnf9RcAvIsXxjOmYzroNImFuL3iDDfua2WtVRcaYNBHPu4kEeAj4SFXvGeGYKe5xiMgyN56GeMU0qpL5MOciltSsIlN6eXrD/oSFYowx4ymmZCAiz4jIFSJyPMnjHOAm4PyoW0cvF5FbReRW95hrgS0i8gFwL3C96pAZZ8bb8m/i7azjO1M288yGavr7ExuOMcaMB1+Mx/0C+Dpwr4j8Bvg3Vf34WC9Q1TcBGeWYnwM/jzGG8TF7BRTP52p9nf/ZtIT1e5tYNqso0VEZY0xcxfRLX1VfUtU/BRYDe4CXROQtEfm62y6QOkTgpCsobtrIpIxuntlQneiIjDEm7mKu9hGREHAz8JfARuCfcZLDmrhElkhzL0b6I9w2o4rfbz5IuNdmPjPGpLZY2wyeBd4AgsAXVfVKVX1SVf8ayIlngAlRdgYE8rks80PauiOs2VaT6IiMMSauYi0Z3Kuqp6jq/6+qB6N3qOrSOMSVWF4fVJzPpJrXKc3LtKoiY0zKizUZnCIiBQNPRKRQRG6LU0wTw9yLkfYavnFSB6/vqKe2LZzoiIwxJm5iTQa3qGrzwBNVbQJuiU9IE8ScCwH4QtZW+vqV5zcdSHBAxhgTP7EmA+9A5zAAEfECGfEJaYLImQSliwgdeI3TpxdYBzRjTEqLNRn8B/CkiFwgIhcAj7vbUtvci6H6XW5YkMNHB1vZdmDo0ErGGJMaYk0G3wXWAn/lLi8D/y1eQU0Ycy4C7ecL2dvxe4VnN1pDsjEmNcXa6axfVe9T1Wvd5X5VTf2b76cthqwicva9wnnzJ/HcpgNEbDpMY0wKirWfwVwRWeVOYblrYIl3cAnn8ToNyTtf4suLSqlr6+bNnfWJjsoYY8ZcrNVE/wbchzOV5XnAr4BH4xXUhDL3Yuis5/z8/RQE/daQbIxJSbEmgyxVfRkQVd2rqj8ErohfWBPInAsAIWPXy3zxtFJWbz1Ea7g30VEZY8yYijUZdLvDV+8QkW+JyNWk4jAUwwkWQdlS2LGaa5aU0R3p5w8fHhz9dcYYk0RiTQa344xL9DfAEuBG4GvxCmrCmXsx7N/A6YU9zC7JtqoiY0zKGTUZuB3MvqKq7aparapfV9VrVPWdcYhvYph7EaBI5Stcs7iMd3c3UtXYmeiojDFmzIyaDNxbSM8dh1gmrimnQ/Yk2LGGqxZNA+DZjVY6MMakjliriTaKyPMicpOIfHlgiWtkE4nH45QOdr7EtLwMls8O8cyGahI9Q6cxxoyVWJNBAGei+vOBL7rLF+IV1IQ050IIN0P1er68eBp7GjrZsK8p0VEZY8yYiGkOZFX9erwDmfAqzgPxwo7VXHbu9/jBb7fw9Ib9LCm3+ZGNMckv1h7I/yYiDw9d4h3chJJVCNPPhB2rycn0cempU3jhgwM2JaYxJiXEWk30AvB7d3kZyAPa4xXUhDX3Iji0GdoO8eXFZbSGI7yyvTbRURljzKcW60B1T0ctjwHXAak33eVo5l7sPO58iXPmFDPZpsQ0xqSIWEsGQ80FJo1lIElh8qmQWwo7VuP1CFctmsarH9fR0N6d6MiMMeZTibXNoE1EWgcW4Hc4cxykFxGYeyFUroW+Xi5bMJVIv/LHyoZER2aMMZ9KrNVEuaqaF7XMU9Wn4x3chDT3Yuhuhap1LCjNIzfTx9uVNqy1MSa5xVoyuFpE8qOeF4jIVaO8ZrqIrHXnQNgqIrcPc4yIyL0islNENovI4uO/hHE26/Pg8cOO1fi8Hs6cHeItKxkYY5JcrG0Gd6tqy8ATVW0G7h7lNRHgO6p6CnAW8E0ROWXIMZfhtD/MBVbizJkwsQXyoHw57HgJgLMrQuxt6KS6ycYqMsYkr1iTwXDHHbPDmqoeVNUN7nob8BEwbchhXwJ+pY53gAIRmRpjTIkz5yKo3Qot1Zw9JwRgpQNjTFKLNRmsF5F7RKTCXe4B3o/1TURkJrAIWDdk1zSgKup5NUcnDERkpYisF5H1dXV1sb5t/AzcYrpjDfMn5xLKzuAtmw7TGJPEYk0Gfw30AE8CTwBh4JuxvFBEcoCngW+rauuJBKmqD6jqUlVdWlJSciKnGFsl8yF/BuxYg4iwvMJpN7CB64wxySrWsYk6gDuP9+Qi4sdJBI+p6jPDHLIfmB71vMzdNrGJOL2RP3gCIt2cM6eYFzYfpLKugzmT0mMCOGNMaon1bqI1IlIQ9bxQRP5zlNcI8BDwkareM8JhzwN/5t5VdBbQoqrJMafk3IuhtwP2vsXZFQPtBlZVZIxJTrFWExW7dxABoKpNjN4D+RzgJuB8EdnkLpeLyK0icqt7zIvALmAn8CBw2/GFn0CzPgveTNj5EjOKgkwryOKtndaIbIxJTjFVEwH9IjJDVffBYIPwMSvIVfVNQEY5Romx7WHCyciGmefAjtXIJX/P2RUhVm+rob9f8XiOednGGDPhxFoy+O/AmyLy7yLyKPAa8L34hZUk5l4M9Z9A0x7OnhOipauXbQdPqI3cGGMSKtbhKP4DZ5TSj4HHge8AXXGMKznMudB5rHyFsyuKAWs3MMYkp1gbkP8SZx6D7wB/C/w78MP4hZUkQnMgrwwqX2FyXoCKkmzrfGaMSUqxVhPdDpwB7FXV83A6kDUf+yVpQMSZDnP369AX4eyKYt7d3UhPpD/RkRljzHGJNRmEVTUMICKZqrodmB+/sJJIxfkQboEDGzm7IkRnTx+bqy1PGmOSS6zJoNrtZ/AcsEZEfgvsjV9YSWT2CkCg8hXOmh1CxMYpMsYkn1gbkK9W1WZV/SHwA5zOZMccwjptBIugdBFUvkJhdganTM3jjzZOkTEmyRz3tJeq+pqqPq+qPfEIKClVnAfV70G4hXPmFLNxXzNdPX2JjsoYY2J2onMgm2gV54P2we43WF4Roqevn/f3NiU6KmOMiZklg7FQtgz82bBrLctmFuHzCH+0/gbGmCRiyWAs+DKcsYoqXyE708fC6QXWiGyMSSqWDMZKxfnQuAsad3N2RYgPq5tpDfcmOipjjImJJYOxMvs853HXWpZXFNOvsG5XY2JjMsaYGFkyGCvFcweHplhcXkCmz2PjFBljkoYlg7ESNTRFpihnzCzibWs3MMYkCUsGYyl6aIo5IbYfaqO+vTvRURljzKgsGYyl2SsYGJpiYEhrKx0YY5KBJYOxFCyC0oVQ+QoLSvPIzfTZLabGmKRgyWCsVZwP1e/h623jzNkha0Q2xiQFSwZjbWBoij1vcnZFiL0NnVQ3dSY6KmOMOSZLBmNtYGiKylc4e04IsHYDY8zEZ8lgrEUNTTF/ci6h7AxrNzDGTHiWDOJh9nnQuAtp2sPyCqfdQFUTHZUxxozIkkE8VJzvPO5ay9kVxdS0drOrviOxMRljzDFYMoiHwaEp1nKO227wls1+ZoyZwOKWDETkYRGpFZEtI+xfISItIrLJXe6KVyzjbnBoiteYUZDBtIIsazcwxkxo8SwZ/BK4dJRj3lDVhe7y4zjGMv7coSnkwCbOrgjx9q4G+vut3cAYMzHFLRmo6utA+o7hPHsFg0NTzAnR3NnLtoOtCQ7KGGOGl+g2g+Ui8oGI/EFETk1wLGMramgKG6fIGDPRJTIZbADKVfV04GfAcyMdKCIrRWS9iKyvq6sbtwA/NXdoiskZPcybnMPvNh+wW0yNMRNSwpKBqraqaru7/iLgF5HiEY59QFWXqurSkpKScY3zUxkcmuINbj57FpurW6wh2RgzISUsGYjIFBERd32ZG0tqfVNGDU1xzZJpTMrN5F/W7kx0VMYYc5R43lr6OPA2MF9EqkXkL0TkVhG51T3kWmCLiHwA3Atcr6lWh+LLgJnnQuUrZPq8/OVnZ/FWZQObqpoTHZkxxhzBF68Tq+oNo+z/OfDzeL3/hFFxPuz4T2jaw1fPLOdf1lbyi7U7eeDPliY6MmOMGZTou4lS38DQFJVrycn08bXl5azeVsOOmrbExmWMMVEsGcTb4NAUrwBw8zmzyPJ7ue+1ygQHZowxh1kyiLeooSnoi1CUncH1y6bz/KYDNumNMWbCsGQwHirOg3ALHNgIwC2fnY0IPPj6rgQHZowxDksG42HWCkBg5xoASguyuGrhNJ54r4r69u6EhmaMMWDJYHxkh2D25+GP90L1egBuXVFBT18///bH3QkOzhhjLBmMny8/CDmT4NdfgYZKKkpyuGzBFH719l7awr2Jjs4Yk+YsGYyXnElw4zOg/fDYtdBRz20r5tAWjvDoO/sSHZ0xJs1ZMhhPxXPghieg9QA8fj0LSvx8dm4xD725i3BvX6KjM8akMUsG423GmU6VUfV6eOYWbvvcLOrbe/jN+qpER2aMSWOWDBLhlCvh0p/A9hc465P/xaLp+dz/+i4iff2JjswYk6YsGSTKWbfC8m8h7z3IP0x9neqmLn63+UCiozLGpClLBol00f+AU65i3uZ/4JbCjdz3aqXNk2yMSQhLBonk8cDV98OM5dzZ/VMKat/j5e21iY7KGJOGLBkkmj8A1/8aT+EsHsq8h+dfesWmxjTGjDtLBhNBsAi5cRW+jADfbfg+72/ZnuiIjDFpxpLBRFFYjufG31Ak7Uz57VfQP94LO1+G1oNgJQVjTJzFbaYzc/wyZyzh96f9bxZ9cDey5geHd2QVwqRT3OVkmHyq8xjIT1ywxpiUYslggrn0qpt4vPTzvLhuK32HtnGqr4oLMxtY0Lmf3M1PIt2thw/OK4PJbpKYvMBZD8115l42xpjjIMnWWLl06VJdv359osMYF1v2t/DU+iqe3biftnCE8qIs/vwzfq6c2kxh+06o2Qa126DuY+h3B7vz+L2XCnYAABLZSURBVKF4npMYJp8Kk0511vOmORPtGGPSkoi8r6ojTr5uySAJhHv7+MOWgzzxbhXrdjfi9QjnzS/hK2fM4PPzSsggAg07oWYr1G51kkTNVmitPnySzHxnbKTQ3MOPoTkQqgB/VuIuzhgzLiwZpJjd9R08tb6KVe9XU9fWjc8jVJTkcNLUXOZPyeXkKXnMn5LL1PwAEm6B2o+gZovz2LDTWVr3R51RIH+6kxSK57rJYq7TJpEz2UoTxqQISwYpqrevn9c+rmPDvia2H2rj40Nt7G/uGtyfF/Bx0pS8wSRx0pRcZhfnUJidAT0dhxND/U5o2HF4vaft8JsECpykUHLSkY/ZJZYkjEkylgzSSEtXL5/UtLH9YCvbD7UNJon27sjgMYVBP7OKs5lVnMPskmxmF2czuySH8lCQgM8D7TVOG0Tddqc0MfAYbj78RllFTlIIVUBmnlPN5M8CfzBqid6WBUWz7O4nYxLIkkGaU1Wqm7r4pKaN3fUd7KrvYFddO7vrO6hpPTz/sgiU5mcxuySb8lCQ6YVBphe5j4UB8vsakbrtUUniY2jcBb2dTkmDUf4diQemLoRZn4WZn4MZZ0FmTnwv3hgzyJKBGVF7d4Q9boLYXdfBrvp2dtV1sK+xk5auI6fizM30OcmhKOtwonDXywqyyPJEnMTQ2+UunYeXng44uBn2vOHM49DfCx4flC6GWZ9zEsT0M60h25g4SlgyEJGHgS8Ataq6YJj9AvwzcDnQCdysqhtGO68lg/HRGu6lqrGTqsYuqps6nfWmLvexk3DvkXMvFOdkUDZYmshy151kUVqQRYbP7eze0wFV62D367D7DTiwEbQPvBlQdoaTFIIhCOQ5VVCZuU71Umaeuy3XqXqyNgtjjksik8HngHbgVyMkg8uBv8ZJBmcC/6yqZ452XksGiaeq1Lf3UOUmieqmgYTRRVVTJ/ubuohEDcXtEZiSF6CsMEhZYZa7OOvTs/uY0rIR/743neRwaLMzT/SxeHxOUsgugdypTh+KvKlD1kud/R4bccUYGD0ZxK0Hsqq+LiIzj3HIl3AShQLviEiBiExV1YPxismMDRGhJDeTktxMFs8oPGp/X79S0xo+ojQxkDDW7W7kuU1dRE/b4CSL8ygrvILp8zOpKICK3D6mZ0coy+olV7qQ7jYIt0B3K4Rbncf2Wmg7CLtfg7ZDTgkjmsd3OEEUzXaW0GwoqnAbv3Pj/JcyJnkkcjiKaUD0xL/V7rajkoGIrARWAsyYMWNcgjMnzusRSguyKC3IYriiXm9fP4dawoMJorrJKVFUN3Xx9u4mnmkNHzE2X26mj/LiyZSHZlNeFGRmKJsZoSCT8wLkZ/nJC/jwiUJHndOHovWgkyQG1luqYder8MGvjwwke5KTFIoqnLudQhVQONPpdxEMnVhVVF8EmvdC/SfO0rATiufDoj91xpgyZoJKirGJVPUB4AFwqokSHI75lPxej9sAHQRCR+0P9/ZR3dTJnvpO9jZ2srehg70NnWzd38J/bjl0RBXUgNxMH/lBP/lZfvKziikITiU/60zyszIIFWcw68xs5hR6KNOD+Jp3Q0MlNFZCwy7Yuca5pfaIIIOQX+Yu06FguvOYP93ZFsh37qaq3+F+8X/srDdUHh4aBJwE0PUrWPv3cNp1sGylM0yIMRNMIpPBfmB61PMyd5tJcwG/lzmTcpkz6ehqnEhfPweaw+xt7KC+vZvmzl5aunpp7uyltctd7+rlk5r2wW09fYfbIPxeYWaogIqSz1Mx6XIqFuYwZ1IOs/OUnI590LzPKUk0V0GLu35wM3TWjxyweJ2SRfE8mHep81g8zxn2I6vQef17D8IHT8L7v4Tyc2HZLXDSF8CbFL/HTBqI662lbpvBCyM0IF8BfIvDDcj3quqy0c5pDcjmeKgqrV0RKuvbqaxtp7Kug8q6dirr2tnb0ElfVCljSl6AmcVBZhS5Syh7cL3Q34u0HjicLMLNThtE8TwonBXbSLGdjbDxUScxNO9z2jKWfh0W3ww5JfH7IxhDYu8mehxYARQDNcDdgB9AVf/VvbX058ClOLeWfl1VR/2Wt2RgxkpPpJ99jZ2DyWFnbTv7Gpyqqbq27iOOHehnMaMo6HTKKwoyrTCLsoIsphVmEcw4jl/4/X2wYzWsux92rXVuq11wDSy6yRkXKlhsd0GZMWedzow5AZ09Eaoau9jX2OksDR2D61VNXfREjrz9tSg7g2kFWc5S6DyWFTrrU/OzKAz6keEapOs+cUoKm34NPe3ONo8fcqe4d0KVOsvQ9ewSyMi2/hYmZpYMjBlj/f1KTVuY/U1d7G/uojr6samT/c1dR3XK83uFkpxMSvICTMrNdJcAk/MymZSXyZTMXkqb3yOvuxZP+0H3jqgDzmPrAejtODoQj99pkxhxKYBgkZM4sidBziRn8EErdaSlhPUzMCZVeTzC1HznF/9w/7NUlcaOnsEEUdMapqa1m9q2MHVt3exr6GT9nkaaOnuHvDIDv3c6U/LnUprv3JpbOiXA1LwA07MjTPc1M5kmgt01SGcDdDUdubRWO8OVdzUdLmUcFbzPqYbKiUoQ2cXOevE8mLbE2i/SlCUDY8aYiBDKySSUk8lpZQUjHtcd6aO+vYea1jC1brI40BzmQHMXB1u6eHd3I4daw0c0cgPkZJZQWjB9sEqqdFJUtVRBkEm5mXj6e52k0Nng9L8YWNproaMW2uucx/pPnG19UW0k+TNg2mInMUxbAlNPt0EF04AlA2MSJNPnHWxnGElfvx6VJA40h9nf3MX+pi42VjXTPKSE4fc6JZdpbse/KfmTmZJXzuS8AFPKAkzJCxDKycTrcdsbVJ3e3TVb4cAG2P++s2x7ztkvHmcui4EEUTwfIl3Q3TbMMtBDvM0pnQSLnUbx4nlQMt+ZXS9r5ARpEsfaDIxJcu3dEQ64yaG6uWtwfb+7XtvWfVTpwusRJuVmOgkiL8CU/ACT8jIpyclk0kC7hqeVwqYteA5uPJwguhpHDiQjxxniY2DJyHZKHUM74uVMjuqLMc+dYa/CqarKCMbpr2SsAdmYNNfXrzS0d3OoNcyhljA1rWF3vXtwvaYlTFvUJEgDvB6hOCeDSbkBSnIyOCnQSIW3hty8QgoKiygqClESKiEvvwAZqQPdwBAddR+7vbV3OD226z6B7pYjj/VnQ3bIbfQucdozgsVRz0POUCHBkDPJ0kS9o6qnA3xZE6qx3pKBMSYmnT0R6tq6qWvrpratm9rWMHXt3dS2dh/xWN/ezdCvjWCGlyn5AabmB9zGdae0MTk3MDioYXFO5uGhzMGpnuqocxJE4y7oqHeXOqfHd0fd4W39QxvbXd6Mw4kh6C6D6yE3kQwsJc7zWDoIxqq/H5r3wKEtTuP9oS1w6EOn93peGZz+FTjteiiZN3bveYIsGRhjxlRvXz91bd0cbAlzsKWLQy3hwfWDLYdLH8MMIUVB0O/cYusmiIH1UE4meQEfuQE/uQEf+VnOY06mD59HnDaNgUTR1eg0jHc2Rq03DdnedPQotgMy86JKHO5y1PStWU4pZei2vh6nbaXG/dKv2Xr4zi3xOG0ikxc4bSzV70Hly86Q7KWL4fQbnM6F2UePxzUeLBkYY8ZdpK//cGmizSlRDJQ6Bp7Xu/u7ekf40nZlZ3gHk0Relp/CoJ+i7AyKsjMJZWcQysmgKDuDUHYmRTkZhLIzCHjFGTKks8FJIoMljYYhJY8GZ7273ZmVb7TpWwdk5MKUBc4X/5QFMOUzUHLy0W0ebYfgw1XwwRNQ86Fza+/cS+D062HeJeDLjO39VJ34tP+Eh163ZGCMmdA6uiPUt3fTFo7QGu6ltStCW7h38Hlb2Hne2uU8b+rspbGjm8aOHnr7hv/+ys7wUpSTQX6Wn4KsjMERbQuy/BQMjm6bMbiel+UnJ8NLjq8Pb6QravrWjqhpXLsAgcmnQEH58bdVHPrQSQof/sYZJTdQ4JQU5lzonL9zoGQTvbjbuhohEobPfgcuuOuE/s6WDIwxKUlVaeuO0NDeQ2NHt/vYQ0NHz+C2lqiRbFvcEW6HGwI9WnaGlxy3imqgROKs+whm+PB7BZ/Xg88j+DwefF5xtnk8R+zLcYdVL3CTTkHQT5bfi/T3we5XncTw0QvObbrRsgqPbCQPhg63gcw4y1lOgPVANsakJBEhL+AnL+BnVnF2TK9RVTp6+txhz3to6XQSRbtbCmnvjtAejtAWjtDefXjboZYwbeEIHT0RIn1KpL9/xFLJsfi9MlgiKcj6cyaX3sh8TzX+7CIy8koI5oUozM2iMJhBYXYGhUHnWL83/nclWTIwxqQNEecXe06m75id/WKhqvT1K5GBpc9JEJH+fiJ9Sls4QnNXD63ufBvN7qNTWumhubOX3W1eNnZOpamzl67eWqB22PfKDfgoys7gprPK+cvPzv5UcY/EkoExxpwAEcHnFXzesTlfuLePpk6nqqu5s5fGjh6aOnto6ugd3F6cE2OD8wmwZGCMMRNAwO8dHAAxESZO9zhjjDEJY8nAGGOMJQNjjDGWDIwxxmDJwBhjDJYMjDHGYMnAGGMMlgyMMcaQhAPViUgdsPcEX14M1I9hOBNBql1Tql0PpN41pdr1QOpd03DXU66qJSO9IOmSwachIuuPNWpfMkq1a0q164HUu6ZUux5IvWs6keuxaiJjjDGWDIwxxqRfMngg0QHEQapdU6pdD6TeNaXa9UDqXdNxX09atRkYY4wZXrqVDIwxxgzDkoExxpj0SQYicqmIfCwiO0XkzkTHMxZEZI+IfCgim0RkfaLjOV4i8rCI1IrIlqhtRSKyRkR2uI+FiYzxeI1wTT8Ukf3u57RJRC5PZIzHQ0Smi8haEdkmIltF5HZ3e1J+Tse4nmT+jAIi8q6IfOBe04/c7bNEZJ37nfekiGQc8zzp0GYgIl7gE+AioBp4D7hBVbclNLBPSUT2AEtVNSk7y4jI54B24FequsDd9r+ARlX9iZu0C1X1u4mM83iMcE0/BNpV9R8TGduJEJGpwFRV3SAiucD7wFXAzSTh53SM67mO5P2MBMhW1XYR8QNvArcD/xV4RlWfEJF/BT5Q1ftGOk+6lAyWATtVdZeq9gBPAF9KcExpT1VfBxqHbP4S8Ii7/gjOf9SkMcI1JS1VPaiqG9z1NuAjYBpJ+jkd43qSljra3ad+d1HgfGCVu33UzyhdksE0oCrqeTVJ/g/ApcBqEXlfRFYmOpgxMllVD7rrh4DJiQxmDH1LRDa71UhJUaUylIjMBBYB60iBz2nI9UASf0Yi4hWRTUAtsAaoBJpVNeIeMup3Xrokg1R1rqouBi4DvulWUaQMdeowU6Ee8z6gAlgIHAT+KbHhHD8RyQGeBr6tqq3R+5LxcxrmepL6M1LVPlVdCJTh1IScdLznSJdksB+YHvW8zN2W1FR1v/tYCzyL848g2dW49boD9bu1CY7nU1PVGvc/az/wIEn2Obn10E8Dj6nqM+7mpP2chrueZP+MBqhqM7AWWA4UiIjP3TXqd166JIP3gLlu63oGcD3wfIJj+lREJNttAENEsoGLgS3HflVSeB74mrv+NeC3CYxlTAx8abquJok+J7dx8iHgI1W9J2pXUn5OI11Pkn9GJSJS4K5n4dwo8xFOUrjWPWzUzygt7iYCcG8V+yngBR5W1b9PcEifiojMxikNAPiAXyfbNYnI48AKnOF2a4C7geeAp4AZOEOVX6eqSdMgO8I1rcCpflBgD/CNqPr2CU1EzgXeAD4E+t3Nf4dTz550n9MxrucGkvczOg2ngdiL8wP/KVX9sfsd8QRQBGwEblTV7hHPky7JwBhjzMjSpZrIGGPMMVgyMMYYY8nAGGOMJQNjjDFYMjDGGIMlA2PGlYisEJEXEh2HMUNZMjDGGGPJwJjhiMiN7hjxm0TkfncgsHYR+T/umPEvi0iJe+xCEXnHHeTs2YFBzkRkjoi85I4zv0FEKtzT54jIKhHZLiKPub1ijUkoSwbGDCEiJwNfAc5xB//qA/4UyAbWq+qpwGs4vYsBfgV8V1VPw+nZOrD9MeBfVPV04GycAdDAGSnz28ApwGzgnLhflDGj8I1+iDFp5wJgCfCe+6M9C2cgtn7gSfeYR4FnRCQfKFDV19ztjwC/cceNmqaqzwKoahjAPd+7qlrtPt8EzMSZkMSYhLFkYMzRBHhEVb93xEaRHww57kTHcokeH6YP+39oJgCrJjLmaC8D14rIJBic77cc5//LwCiQXwXeVNUWoElEPutuvwl4zZ1Fq1pErnLPkSkiwXG9CmOOg/0iMWYIVd0mIt/HmUXOA/QC3wQ6gGXuvlqcdgVwhgf+V/fLfhfwdXf7TcD9IvJj9xx/Mo6XYcxxsVFLjYmRiLSrak6i4zAmHqyayBhjjJUMjDHGWMnAGGMMlgyMMcZgycAYYwyWDIwxxmDJwBhjDPD/AAo620LfzhNyAAAAAElFTkSuQmCC\n"
},
"metadata": {
"needs_background": "light"
}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"source": [
"dataset_1 = pd.read_csv(\"california_housing_train.csv\")\n",
"dataset_1['median_house_value'] = dataset_1['median_house_value']/1000\n",
"dataset_1.describe()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 300
},
"id": "wQCaX_4KidvU",
"outputId": "06769e3f-66e7-4b2f-9038-357f59abd0a5"
},
"execution_count": 32,
"outputs": [
{
"output_type": "execute_result",
"data": {
"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 207.300912 \n",
"std 115.983764 \n",
"min 14.999000 \n",
"25% 119.400000 \n",
"50% 180.400000 \n",
"75% 265.000000 \n",
"max 500.001000 "
],
"text/html": [
"\n",
" <div id=\"df-f5087c31-e76f-4ab9-ad0a-713d66fe9688\">\n",
" <div class=\"colab-df-container\">\n",
" <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>longitude</th>\n",
" <th>latitude</th>\n",
" <th>housing_median_age</th>\n",
" <th>total_rooms</th>\n",
" <th>total_bedrooms</th>\n",
" <th>population</th>\n",
" <th>households</th>\n",
" <th>median_income</th>\n",
" <th>median_house_value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>-119.562108</td>\n",
" <td>35.625225</td>\n",
" <td>28.589353</td>\n",
" <td>2643.664412</td>\n",
" <td>539.410824</td>\n",
" <td>1429.573941</td>\n",
" <td>501.221941</td>\n",
" <td>3.883578</td>\n",
" <td>207.300912</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>2.005166</td>\n",
" <td>2.137340</td>\n",
" <td>12.586937</td>\n",
" <td>2179.947071</td>\n",
" <td>421.499452</td>\n",
" <td>1147.852959</td>\n",
" <td>384.520841</td>\n",
" <td>1.908157</td>\n",
" <td>115.983764</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-124.350000</td>\n",
" <td>32.540000</td>\n",
" <td>1.000000</td>\n",
" <td>2.000000</td>\n",
" <td>1.000000</td>\n",
" <td>3.000000</td>\n",
" <td>1.000000</td>\n",
" <td>0.499900</td>\n",
" <td>14.999000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>-121.790000</td>\n",
" <td>33.930000</td>\n",
" <td>18.000000</td>\n",
" <td>1462.000000</td>\n",
" <td>297.000000</td>\n",
" <td>790.000000</td>\n",
" <td>282.000000</td>\n",
" <td>2.566375</td>\n",
" <td>119.400000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>-118.490000</td>\n",
" <td>34.250000</td>\n",
" <td>29.000000</td>\n",
" <td>2127.000000</td>\n",
" <td>434.000000</td>\n",
" <td>1167.000000</td>\n",
" <td>409.000000</td>\n",
" <td>3.544600</td>\n",
" <td>180.400000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>-118.000000</td>\n",
" <td>37.720000</td>\n",
" <td>37.000000</td>\n",
" <td>3151.250000</td>\n",
" <td>648.250000</td>\n",
" <td>1721.000000</td>\n",
" <td>605.250000</td>\n",
" <td>4.767000</td>\n",
" <td>265.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>-114.310000</td>\n",
" <td>41.950000</td>\n",
" <td>52.000000</td>\n",
" <td>37937.000000</td>\n",
" <td>6445.000000</td>\n",
" <td>35682.000000</td>\n",
" <td>6082.000000</td>\n",
" <td>15.000100</td>\n",
" <td>500.001000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-f5087c31-e76f-4ab9-ad0a-713d66fe9688')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
" \n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-f5087c31-e76f-4ab9-ad0a-713d66fe9688 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-f5087c31-e76f-4ab9-ad0a-713d66fe9688');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n",
" "
]
},
"metadata": {},
"execution_count": 32
}
]
},
{
"cell_type": "code",
"source": [
"dataset_1[\"rooms_per_person\"] = dataset_1[\"total_rooms\"] / dataset_1[\"population\"]\n",
"dataset_1[\"rooms_on_income\"] = dataset_1[\"median_income\"]*dataset_1[\"total_rooms\"]\n",
"dataset_1.corr()['median_house_value']"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "UsNhFAwajhZ7",
"outputId": "eb015fd8-d237-4861-b313-287272a30879"
},
"execution_count": 33,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"longitude -0.044982\n",
"latitude -0.144917\n",
"housing_median_age 0.106758\n",
"total_rooms 0.130991\n",
"total_bedrooms 0.045783\n",
"population -0.027850\n",
"households 0.061031\n",
"median_income 0.691871\n",
"median_house_value 1.000000\n",
"rooms_per_person 0.206969\n",
"rooms_on_income 0.375019\n",
"Name: median_house_value, dtype: float64"
]
},
"metadata": {},
"execution_count": 33
}
]
},
{
"cell_type": "code",
"source": [
"#dataset_2 = dataset_1.drop(columns=[\"longitude\", \"total_bedrooms\", \"population\", \"households\"])\n",
"X = dataset_1.loc[:, dataset_1.columns != 'median_house_value'].to_numpy()\n",
"y = dataset_1['median_house_value'].to_numpy()\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=2)\n",
"print(\"Dims of train \", X_train.shape, y_train.shape)\n",
"print(\"Dims of test \", X_test.shape, y_test.shape)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "EHl0evTDktL7",
"outputId": "445bccf0-f26a-4f98-f1f4-f85a6f0b092a"
},
"execution_count": 34,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Dims of train (11900, 10) (11900,)\n",
"Dims of test (5100, 10) (5100,)\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"input = keras.Input(shape=(10,))\n",
"x = layers.Normalization()(input)\n",
"x = layers.Dense(64, activation='relu')(x)\n",
"x = layers.Dense(64, activation='relu')(x)\n",
"output = layers.Dense(1)(x)\n",
"\n",
"nn_2 = keras.Model(input, output)\n",
"\n",
"LR = 0.001\n",
"nn_2.compile(\n",
" optimizer=keras.optimizers.Adam(learning_rate=LR),\n",
" loss=[tf.keras.losses.MeanAbsoluteError()],\n",
" metrics=[tf.keras.metrics.MeanSquaredError()]\n",
"\n",
")\n",
"\n",
"print(\"Fit model on training data\")\n",
"history = nn_2.fit(\n",
" X_train,\n",
" y_train,\n",
" epochs=30,\n",
" validation_data=(X_test, y_test))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "wpsxHYMWlUmM",
"outputId": "2502eb9a-5b9c-48cd-cbc3-ddb268b4eee3"
},
"execution_count": 35,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Fit model on training data\n",
"Epoch 1/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 123.5778 - mean_squared_error: 84509.2656 - val_loss: 94.7028 - val_mean_squared_error: 28951.8555\n",
"Epoch 2/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 74.1135 - mean_squared_error: 13103.9932 - val_loss: 84.0273 - val_mean_squared_error: 13924.6475\n",
"Epoch 3/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 69.8124 - mean_squared_error: 11254.4961 - val_loss: 62.4042 - val_mean_squared_error: 8254.2021\n",
"Epoch 4/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 63.7925 - mean_squared_error: 8883.7812 - val_loss: 65.3682 - val_mean_squared_error: 11510.4131\n",
"Epoch 5/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 64.2597 - mean_squared_error: 9500.2275 - val_loss: 57.6894 - val_mean_squared_error: 7735.1694\n",
"Epoch 6/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 60.9381 - mean_squared_error: 7677.7090 - val_loss: 58.1475 - val_mean_squared_error: 6879.2720\n",
"Epoch 7/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 62.2062 - mean_squared_error: 8341.0576 - val_loss: 60.1291 - val_mean_squared_error: 7726.6885\n",
"Epoch 8/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 60.3868 - mean_squared_error: 7539.1187 - val_loss: 63.7201 - val_mean_squared_error: 10191.7227\n",
"Epoch 9/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 60.5445 - mean_squared_error: 7589.5142 - val_loss: 62.1348 - val_mean_squared_error: 8403.5000\n",
"Epoch 10/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 59.5142 - mean_squared_error: 7382.1558 - val_loss: 57.4914 - val_mean_squared_error: 7134.7656\n",
"Epoch 11/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 59.4686 - mean_squared_error: 7449.5151 - val_loss: 52.8626 - val_mean_squared_error: 5637.7847\n",
"Epoch 12/30\n",
"372/372 [==============================] - 1s 4ms/step - loss: 55.0070 - mean_squared_error: 6172.5854 - val_loss: 65.5911 - val_mean_squared_error: 8472.5693\n",
"Epoch 13/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 58.2922 - mean_squared_error: 7076.7959 - val_loss: 63.0623 - val_mean_squared_error: 7742.8179\n",
"Epoch 14/30\n",
"372/372 [==============================] - 1s 4ms/step - loss: 56.5393 - mean_squared_error: 6516.9219 - val_loss: 58.3570 - val_mean_squared_error: 7519.5229\n",
"Epoch 15/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 54.7303 - mean_squared_error: 6120.8174 - val_loss: 57.7792 - val_mean_squared_error: 6764.9136\n",
"Epoch 16/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 55.3258 - mean_squared_error: 6324.9487 - val_loss: 52.5866 - val_mean_squared_error: 5486.2563\n",
"Epoch 17/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 56.8465 - mean_squared_error: 6713.0439 - val_loss: 52.5608 - val_mean_squared_error: 5543.4482\n",
"Epoch 18/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 55.0057 - mean_squared_error: 6202.8843 - val_loss: 63.2907 - val_mean_squared_error: 9807.6797\n",
"Epoch 19/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 54.4341 - mean_squared_error: 6005.2930 - val_loss: 52.2481 - val_mean_squared_error: 5230.1445\n",
"Epoch 20/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 52.3851 - mean_squared_error: 5476.8960 - val_loss: 50.6791 - val_mean_squared_error: 5269.7285\n",
"Epoch 21/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 54.1140 - mean_squared_error: 6032.5000 - val_loss: 52.0576 - val_mean_squared_error: 5089.3145\n",
"Epoch 22/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 51.5882 - mean_squared_error: 5353.1353 - val_loss: 54.0523 - val_mean_squared_error: 5410.7358\n",
"Epoch 23/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 54.3766 - mean_squared_error: 6009.6519 - val_loss: 51.8409 - val_mean_squared_error: 5514.4302\n",
"Epoch 24/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 51.8519 - mean_squared_error: 5430.7134 - val_loss: 50.4292 - val_mean_squared_error: 5203.2998\n",
"Epoch 25/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 51.6805 - mean_squared_error: 5387.0952 - val_loss: 54.4006 - val_mean_squared_error: 5912.8208\n",
"Epoch 26/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 50.6099 - mean_squared_error: 5249.1851 - val_loss: 52.4657 - val_mean_squared_error: 5114.3223\n",
"Epoch 27/30\n",
"372/372 [==============================] - 2s 4ms/step - loss: 51.1354 - mean_squared_error: 5322.7368 - val_loss: 50.4774 - val_mean_squared_error: 4757.1084\n",
"Epoch 28/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 50.6150 - mean_squared_error: 5105.1929 - val_loss: 55.7018 - val_mean_squared_error: 6655.2378\n",
"Epoch 29/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 50.2288 - mean_squared_error: 5055.5469 - val_loss: 49.8351 - val_mean_squared_error: 4791.1860\n",
"Epoch 30/30\n",
"372/372 [==============================] - 2s 5ms/step - loss: 50.5648 - mean_squared_error: 5132.6577 - val_loss: 49.7307 - val_mean_squared_error: 5083.0269\n"
]
}
]
},
{
"cell_type": "code",
"source": [
""
],
"metadata": {
"id": "AcvusFN2lyP0"
},
"execution_count": null,
"outputs": []
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment