{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "**Chapter 1 – The Machine Learning landscape**\n", "\n", "_This is the code used to generate some of the figures in chapter 1._" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Setup" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, let's make sure this notebook works well in both python 2 and 3, import a few common modules, ensure MatplotLib plots figures inline and prepare a function to save the figures:" ] }, { "cell_type": "code", "execution_count": 98, "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [], "source": [ "# To support both python 2 and python 3\n", "from __future__ import division, print_function, unicode_literals\n", "\n", "# Common imports\n", "import numpy as np\n", "import os\n", "\n", "# to make this notebook's output stable across runs\n", "np.random.seed(42)\n", "\n", "# To plot pretty figures\n", "%matplotlib inline\n", "import matplotlib as mpl\n", "import matplotlib.pyplot as plt\n", "mpl.rc('axes', labelsize=14)\n", "mpl.rc('xtick', labelsize=12)\n", "mpl.rc('ytick', labelsize=12)\n", "\n", "# Where to save the figures\n", "PROJECT_ROOT_DIR = \".\"\n", "CHAPTER_ID = \"fundamentals\"\n", "IMAGES_PATH = os.path.join(PROJECT_ROOT_DIR, \"images\", CHAPTER_ID) #GN: set folder's name\n", "if not os.path.isdir(IMAGES_PATH): #GN: check folders are there\n", " os.makedirs(IMAGES_PATH)\n", "\n", "\n", "def save_fig(fig_id, tight_layout=True):\n", " path = os.path.join(PROJECT_ROOT_DIR, \"images\", CHAPTER_ID, fig_id + \".png\")\n", " print(\"Saving figure\", fig_id)\n", " if tight_layout:\n", " plt.tight_layout()\n", " plt.savefig(path, format='png', dpi=300)\n", "\n", "# Ignore useless warnings (see SciPy issue #5998)\n", "import warnings\n", "warnings.filterwarnings(action=\"ignore\", message=\"^internal gelsd\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Code example 1-1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This function just merges the OECD's life satisfaction data and the IMF's GDP per capita data. It's a bit too long and boring and it's not specific to Machine Learning, which is why I left it out of the book." ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [], "source": [ "def prepare_country_stats(oecd_bli, gdp_per_capita):\n", " oecd_bli = oecd_bli[oecd_bli[\"INEQUALITY\"]==\"TOT\"]\n", " oecd_bli = oecd_bli.pivot(index=\"Country\", columns=\"Indicator\", values=\"Value\")\n", " gdp_per_capita.rename(columns={\"2015\": \"GDP per capita\"}, inplace=True)\n", " gdp_per_capita.set_index(\"Country\", inplace=True)\n", " full_country_stats = pd.merge(left=oecd_bli, right=gdp_per_capita,\n", " left_index=True, right_index=True)\n", " full_country_stats.sort_values(by=\"GDP per capita\", inplace=True)\n", " remove_indices = [0, 1, 6, 8, 33, 34, 35]\n", " keep_indices = list(set(range(36)) - set(remove_indices))\n", " return full_country_stats[[\"GDP per capita\", 'Life satisfaction']].iloc[keep_indices]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The code in the book expects the data files to be located in the current directory. I just tweaked it here to fetch the files in datasets/lifesat." ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [], "source": [ "import os\n", "datapath = os.path.join(\"datasets\", \"lifesat\", \"\")" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[[5.96242338]]\n" ] } ], "source": [ "# Code example\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "import sklearn.linear_model\n", "\n", "# Load the data\n", "oecd_bli = pd.read_csv(datapath + \"oecd_bli_2015.csv\", thousands=',')\n", "gdp_per_capita = pd.read_csv(datapath + \"gdp_per_capita.csv\",thousands=',',delimiter='\\t',\n", " encoding='latin1', na_values=\"n/a\")\n", "\n", "# Prepare the data\n", "country_stats = prepare_country_stats(oecd_bli, gdp_per_capita)\n", "X = np.c_[country_stats[\"GDP per capita\"]]\n", "y = np.c_[country_stats[\"Life satisfaction\"]]\n", "\n", "# Visualize the data\n", "country_stats.plot(kind='scatter', x=\"GDP per capita\", y='Life satisfaction')\n", "plt.show()\n", "\n", "# Select a linear model\n", "model = sklearn.linear_model.LinearRegression()\n", "\n", "# Train the model\n", "model.fit(X, y)\n", "\n", "# Make a prediction for Cyprus\n", "X_new = [[22587]] # Cyprus' GDP per capita\n", "print(model.predict(X_new)) # outputs [[ 5.96242338]]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Note: you can ignore the rest of this notebook, it just generates many of the figures in chapter 1." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Load and prepare Life satisfaction data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you want, you can get fresh data from the OECD's website.\n", "Download the CSV from http://stats.oecd.org/index.aspx?DataSetCode=BLI\n", "and save it to `datasets/lifesat/`." ] }, { "cell_type": "code", "execution_count": 123, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
LOCATIONCountryINDICATORIndicatorMEASUREMeasureINEQUALITYInequalityUnit CodeUnitPowerCode CodePowerCodeReference Period CodeReference PeriodValueFlag CodesFlags
0AUSAustraliaHO_BASEDwellings without basic facilitiesLValueTOTTotalPCPercentage0unitsNaNNaN1.1EEstimated value
1AUTAustriaHO_BASEDwellings without basic facilitiesLValueTOTTotalPCPercentage0unitsNaNNaN1.0NaNNaN
\n", "
" ], "text/plain": [ " LOCATION Country INDICATOR Indicator MEASURE \\\n", "0 AUS Australia HO_BASE Dwellings without basic facilities L \n", "1 AUT Austria HO_BASE Dwellings without basic facilities L \n", "\n", " Measure INEQUALITY Inequality Unit Code Unit PowerCode Code \\\n", "0 Value TOT Total PC Percentage 0 \n", "1 Value TOT Total PC Percentage 0 \n", "\n", " PowerCode Reference Period Code Reference Period Value Flag Codes \\\n", "0 units NaN NaN 1.1 E \n", "1 units NaN NaN 1.0 NaN \n", "\n", " Flags \n", "0 Estimated value \n", "1 NaN " ] }, "execution_count": 123, "metadata": {}, "output_type": "execute_result" } ], "source": [ "oecd_bli = pd.read_csv(datapath + \"oecd_bli_2015.csv\", thousands=',')\n", "oecd_bli.head(2)" ] }, { "cell_type": "code", "execution_count": 124, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IndicatorAir pollutionAssault rateConsultation on rule-makingDwellings without basic facilitiesEducational attainmentEmployees working very long hoursEmployment rateHomicide rateHousehold net adjusted disposable incomeHousehold net financial wealth...Long-term unemployment ratePersonal earningsQuality of support networkRooms per personSelf-reported healthStudent skillsTime devoted to leisure and personal careVoter turnoutWater qualityYears in education
Country
Australia13.02.110.51.176.014.0272.00.831588.047657.0...1.0850449.092.02.385.0512.014.4193.091.019.4
Austria27.03.47.11.083.07.6172.00.431173.049887.0...1.1945199.089.01.669.0500.014.4675.094.017.0
\n", "

2 rows × 24 columns

\n", "
" ], "text/plain": [ "Indicator Air pollution Assault rate Consultation on rule-making \\\n", "Country \n", "Australia 13.0 2.1 10.5 \n", "Austria 27.0 3.4 7.1 \n", "\n", "Indicator Dwellings without basic facilities Educational attainment \\\n", "Country \n", "Australia 1.1 76.0 \n", "Austria 1.0 83.0 \n", "\n", "Indicator Employees working very long hours Employment rate Homicide rate \\\n", "Country \n", "Australia 14.02 72.0 0.8 \n", "Austria 7.61 72.0 0.4 \n", "\n", "Indicator Household net adjusted disposable income \\\n", "Country \n", "Australia 31588.0 \n", "Austria 31173.0 \n", "\n", "Indicator Household net financial wealth ... \\\n", "Country ... \n", "Australia 47657.0 ... \n", "Austria 49887.0 ... \n", "\n", "Indicator Long-term unemployment rate Personal earnings \\\n", "Country \n", "Australia 1.08 50449.0 \n", "Austria 1.19 45199.0 \n", "\n", "Indicator Quality of support network Rooms per person Self-reported health \\\n", "Country \n", "Australia 92.0 2.3 85.0 \n", "Austria 89.0 1.6 69.0 \n", "\n", "Indicator Student skills Time devoted to leisure and personal care \\\n", "Country \n", "Australia 512.0 14.41 \n", "Austria 500.0 14.46 \n", "\n", "Indicator Voter turnout Water quality Years in education \n", "Country \n", "Australia 93.0 91.0 19.4 \n", "Austria 75.0 94.0 17.0 \n", "\n", "[2 rows x 24 columns]" ] }, "execution_count": 124, "metadata": {}, "output_type": "execute_result" } ], "source": [ "oecd_bli = oecd_bli[oecd_bli[\"INEQUALITY\"]==\"TOT\"]\n", "oecd_bli = oecd_bli.pivot(index=\"Country\", columns=\"Indicator\", values=\"Value\")\n", "oecd_bli.head(2)" ] }, { "cell_type": "code", "execution_count": 125, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Country\n", "Australia 7.3\n", "Austria 6.9\n", "Belgium 6.9\n", "Brazil 7.0\n", "Canada 7.3\n", "Name: Life satisfaction, dtype: float64" ] }, "execution_count": 125, "metadata": {}, "output_type": "execute_result" } ], "source": [ "oecd_bli[\"Life satisfaction\"].head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Load and prepare GDP per capita data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Just like above, you can update the GDP per capita data if you want. Just download data from http://goo.gl/j1MSKe (=> imf.org) and save it to `datasets/lifesat/`." ] }, { "cell_type": "code", "execution_count": 101, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Subject DescriptorUnitsScaleCountry/Series-specific NotesGDP per capitaEstimates Start After
Country
AfghanistanGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...599.9942013.0
AlbaniaGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...3995.3832010.0
\n", "
" ], "text/plain": [ " Subject Descriptor Units \\\n", "Country \n", "Afghanistan Gross domestic product per capita, current prices U.S. dollars \n", "Albania Gross domestic product per capita, current prices U.S. dollars \n", "\n", " Scale Country/Series-specific Notes \\\n", "Country \n", "Afghanistan Units See notes for: Gross domestic product, curren... \n", "Albania Units See notes for: Gross domestic product, curren... \n", "\n", " GDP per capita Estimates Start After \n", "Country \n", "Afghanistan 599.994 2013.0 \n", "Albania 3995.383 2010.0 " ] }, "execution_count": 101, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gdp_per_capita = pd.read_csv(datapath+\"gdp_per_capita.csv\", thousands=',', delimiter='\\t',\n", " encoding='latin1', na_values=\"n/a\")\n", "gdp_per_capita.rename(columns={\"2015\": \"GDP per capita\"}, inplace=True)\n", "gdp_per_capita.set_index(\"Country\", inplace=True)\n", "gdp_per_capita.head(2)" ] }, { "cell_type": "code", "execution_count": 102, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Air pollutionAssault rateConsultation on rule-makingDwellings without basic facilitiesEducational attainmentEmployees working very long hoursEmployment rateHomicide rateHousehold net adjusted disposable incomeHousehold net financial wealth...Time devoted to leisure and personal careVoter turnoutWater qualityYears in educationSubject DescriptorUnitsScaleCountry/Series-specific NotesGDP per capitaEstimates Start After
Country
Brazil18.07.94.06.745.010.4167.025.511664.06844.0...14.9779.072.016.3Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...8669.9982014.0
Mexico30.012.89.04.237.028.8361.023.413085.09056.0...13.8963.067.014.4Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...9009.2802015.0
Russia15.03.82.515.194.00.1669.012.819292.03412.0...14.9765.056.016.0Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...9054.9142015.0
Turkey35.05.05.512.734.040.8650.01.214095.03251.0...13.4288.062.016.4Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...9437.3722013.0
Hungary15.03.67.94.882.03.1958.01.315442.013277.0...15.0462.077.017.6Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...12239.8942015.0
Poland33.01.410.83.290.07.4160.00.917852.010919.0...14.2055.079.018.4Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...12495.3342014.0
Chile46.06.92.09.457.015.4262.04.414533.017733.0...14.4149.073.016.5Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...13340.9052014.0
Slovak Republic13.03.06.60.692.07.0260.01.217503.08663.0...14.9959.081.016.3Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...15991.7362015.0
Czech Republic16.02.86.80.992.06.9868.00.818404.017299.0...14.9859.085.018.1Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...17256.9182015.0
Estonia9.05.53.38.190.03.3068.04.815167.07680.0...14.9064.079.017.5Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...17288.0832014.0
Greece27.03.76.50.768.06.1649.01.618575.014579.0...14.9164.069.018.6Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...18064.2882014.0
Portugal18.05.76.50.938.09.6261.01.120086.031245.0...14.9558.086.017.6Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...19121.5922014.0
Slovenia26.03.910.30.585.05.6363.00.419326.018465.0...14.6252.088.018.4Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...20732.4822015.0
Spain24.04.27.30.155.05.8956.00.622477.024774.0...16.0669.071.017.6Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...25864.7212014.0
Korea30.02.110.44.282.018.7264.01.119510.029091.0...14.6376.078.017.5Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...27195.1972014.0
Italy21.04.75.01.157.03.6656.00.725166.054987.0...14.9875.071.016.8Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...29866.5812015.0
Japan24.01.47.36.494.022.2672.00.326111.086764.0...14.9353.085.016.3Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...32485.5452015.0
Israel21.06.42.53.785.016.0367.02.322104.052933.0...14.4868.068.015.8Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...35343.3362015.0
New Zealand11.02.210.30.274.013.8773.01.223815.028290.0...14.8777.089.018.1Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...37044.8912015.0
France12.05.03.50.573.08.1564.00.628799.048741.0...15.3380.082.016.4Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...37675.0062015.0
Belgium21.06.64.52.072.04.5762.01.128307.083876.0...15.7189.087.018.9Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...40106.6322014.0
Germany16.03.64.50.186.05.2573.00.531252.050394.0...15.3172.095.018.2Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...40996.5112014.0
Finland15.02.49.00.685.03.5869.01.427927.018761.0...14.8969.094.019.7Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...41973.9882014.0
Canada15.01.310.50.289.03.9472.01.529365.067913.0...14.2561.091.017.2Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...43331.9612015.0
Netherlands30.04.96.10.073.00.4574.00.927888.077961.0...15.4475.092.018.7Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...43603.1152014.0
Austria27.03.47.11.083.07.6172.00.431173.049887.0...14.4675.094.017.0Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...43724.0312015.0
United Kingdom13.01.911.50.278.012.7071.00.327029.060778.0...14.8366.088.016.4Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...43770.6882015.0
Sweden10.05.110.90.088.01.1374.00.729185.060328.0...15.1186.095.019.3Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...49866.2662014.0
Iceland18.02.75.10.471.012.2582.00.323965.043045.0...14.6181.097.019.8Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...50854.5832014.0
Australia13.02.110.51.176.014.0272.00.831588.047657.0...14.4193.091.019.4Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...50961.8652014.0
Ireland13.02.69.00.275.04.2060.00.823917.031580.0...15.1970.080.017.6Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...51350.7442014.0
Denmark15.03.97.00.978.02.0373.00.326491.044488.0...16.0688.094.019.4Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...52114.1652015.0
United States18.01.58.30.189.011.3067.05.241355.0145769.0...14.2768.085.017.2Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...55805.2042015.0
Norway16.03.38.10.382.02.8275.00.633492.08797.0...15.5678.094.017.9Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...74822.1062015.0
Switzerland20.04.28.40.086.06.7280.00.533491.0108823.0...14.9849.096.017.3Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...80675.3082015.0
Luxembourg12.04.36.00.178.03.4766.00.438951.061765.0...15.1291.086.015.1Gross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...101994.0932014.0
\n", "

36 rows × 30 columns

\n", "
" ], "text/plain": [ " Air pollution Assault rate Consultation on rule-making \\\n", "Country \n", "Brazil 18.0 7.9 4.0 \n", "Mexico 30.0 12.8 9.0 \n", "Russia 15.0 3.8 2.5 \n", "Turkey 35.0 5.0 5.5 \n", "Hungary 15.0 3.6 7.9 \n", "Poland 33.0 1.4 10.8 \n", "Chile 46.0 6.9 2.0 \n", "Slovak Republic 13.0 3.0 6.6 \n", "Czech Republic 16.0 2.8 6.8 \n", "Estonia 9.0 5.5 3.3 \n", "Greece 27.0 3.7 6.5 \n", "Portugal 18.0 5.7 6.5 \n", "Slovenia 26.0 3.9 10.3 \n", "Spain 24.0 4.2 7.3 \n", "Korea 30.0 2.1 10.4 \n", "Italy 21.0 4.7 5.0 \n", "Japan 24.0 1.4 7.3 \n", "Israel 21.0 6.4 2.5 \n", "New Zealand 11.0 2.2 10.3 \n", "France 12.0 5.0 3.5 \n", "Belgium 21.0 6.6 4.5 \n", "Germany 16.0 3.6 4.5 \n", "Finland 15.0 2.4 9.0 \n", "Canada 15.0 1.3 10.5 \n", "Netherlands 30.0 4.9 6.1 \n", "Austria 27.0 3.4 7.1 \n", "United Kingdom 13.0 1.9 11.5 \n", "Sweden 10.0 5.1 10.9 \n", "Iceland 18.0 2.7 5.1 \n", "Australia 13.0 2.1 10.5 \n", "Ireland 13.0 2.6 9.0 \n", "Denmark 15.0 3.9 7.0 \n", "United States 18.0 1.5 8.3 \n", "Norway 16.0 3.3 8.1 \n", "Switzerland 20.0 4.2 8.4 \n", "Luxembourg 12.0 4.3 6.0 \n", "\n", " Dwellings without basic facilities Educational attainment \\\n", "Country \n", "Brazil 6.7 45.0 \n", "Mexico 4.2 37.0 \n", "Russia 15.1 94.0 \n", "Turkey 12.7 34.0 \n", "Hungary 4.8 82.0 \n", "Poland 3.2 90.0 \n", "Chile 9.4 57.0 \n", "Slovak Republic 0.6 92.0 \n", "Czech Republic 0.9 92.0 \n", "Estonia 8.1 90.0 \n", "Greece 0.7 68.0 \n", "Portugal 0.9 38.0 \n", "Slovenia 0.5 85.0 \n", "Spain 0.1 55.0 \n", "Korea 4.2 82.0 \n", "Italy 1.1 57.0 \n", "Japan 6.4 94.0 \n", "Israel 3.7 85.0 \n", "New Zealand 0.2 74.0 \n", "France 0.5 73.0 \n", "Belgium 2.0 72.0 \n", "Germany 0.1 86.0 \n", "Finland 0.6 85.0 \n", "Canada 0.2 89.0 \n", "Netherlands 0.0 73.0 \n", "Austria 1.0 83.0 \n", "United Kingdom 0.2 78.0 \n", "Sweden 0.0 88.0 \n", "Iceland 0.4 71.0 \n", "Australia 1.1 76.0 \n", "Ireland 0.2 75.0 \n", "Denmark 0.9 78.0 \n", "United States 0.1 89.0 \n", "Norway 0.3 82.0 \n", "Switzerland 0.0 86.0 \n", "Luxembourg 0.1 78.0 \n", "\n", " Employees working very long hours Employment rate \\\n", "Country \n", "Brazil 10.41 67.0 \n", "Mexico 28.83 61.0 \n", "Russia 0.16 69.0 \n", "Turkey 40.86 50.0 \n", "Hungary 3.19 58.0 \n", "Poland 7.41 60.0 \n", "Chile 15.42 62.0 \n", "Slovak Republic 7.02 60.0 \n", "Czech Republic 6.98 68.0 \n", "Estonia 3.30 68.0 \n", "Greece 6.16 49.0 \n", "Portugal 9.62 61.0 \n", "Slovenia 5.63 63.0 \n", "Spain 5.89 56.0 \n", "Korea 18.72 64.0 \n", "Italy 3.66 56.0 \n", "Japan 22.26 72.0 \n", "Israel 16.03 67.0 \n", "New Zealand 13.87 73.0 \n", "France 8.15 64.0 \n", "Belgium 4.57 62.0 \n", "Germany 5.25 73.0 \n", "Finland 3.58 69.0 \n", "Canada 3.94 72.0 \n", "Netherlands 0.45 74.0 \n", "Austria 7.61 72.0 \n", "United Kingdom 12.70 71.0 \n", "Sweden 1.13 74.0 \n", "Iceland 12.25 82.0 \n", "Australia 14.02 72.0 \n", "Ireland 4.20 60.0 \n", "Denmark 2.03 73.0 \n", "United States 11.30 67.0 \n", "Norway 2.82 75.0 \n", "Switzerland 6.72 80.0 \n", "Luxembourg 3.47 66.0 \n", "\n", " Homicide rate Household net adjusted disposable income \\\n", "Country \n", "Brazil 25.5 11664.0 \n", "Mexico 23.4 13085.0 \n", "Russia 12.8 19292.0 \n", "Turkey 1.2 14095.0 \n", "Hungary 1.3 15442.0 \n", "Poland 0.9 17852.0 \n", "Chile 4.4 14533.0 \n", "Slovak Republic 1.2 17503.0 \n", "Czech Republic 0.8 18404.0 \n", "Estonia 4.8 15167.0 \n", "Greece 1.6 18575.0 \n", "Portugal 1.1 20086.0 \n", "Slovenia 0.4 19326.0 \n", "Spain 0.6 22477.0 \n", "Korea 1.1 19510.0 \n", "Italy 0.7 25166.0 \n", "Japan 0.3 26111.0 \n", "Israel 2.3 22104.0 \n", "New Zealand 1.2 23815.0 \n", "France 0.6 28799.0 \n", "Belgium 1.1 28307.0 \n", "Germany 0.5 31252.0 \n", "Finland 1.4 27927.0 \n", "Canada 1.5 29365.0 \n", "Netherlands 0.9 27888.0 \n", "Austria 0.4 31173.0 \n", "United Kingdom 0.3 27029.0 \n", "Sweden 0.7 29185.0 \n", "Iceland 0.3 23965.0 \n", "Australia 0.8 31588.0 \n", "Ireland 0.8 23917.0 \n", "Denmark 0.3 26491.0 \n", "United States 5.2 41355.0 \n", "Norway 0.6 33492.0 \n", "Switzerland 0.5 33491.0 \n", "Luxembourg 0.4 38951.0 \n", "\n", " Household net financial wealth ... \\\n", "Country ... \n", "Brazil 6844.0 ... \n", "Mexico 9056.0 ... \n", "Russia 3412.0 ... \n", "Turkey 3251.0 ... \n", "Hungary 13277.0 ... \n", "Poland 10919.0 ... \n", "Chile 17733.0 ... \n", "Slovak Republic 8663.0 ... \n", "Czech Republic 17299.0 ... \n", "Estonia 7680.0 ... \n", "Greece 14579.0 ... \n", "Portugal 31245.0 ... \n", "Slovenia 18465.0 ... \n", "Spain 24774.0 ... \n", "Korea 29091.0 ... \n", "Italy 54987.0 ... \n", "Japan 86764.0 ... \n", "Israel 52933.0 ... \n", "New Zealand 28290.0 ... \n", "France 48741.0 ... \n", "Belgium 83876.0 ... \n", "Germany 50394.0 ... \n", "Finland 18761.0 ... \n", "Canada 67913.0 ... \n", "Netherlands 77961.0 ... \n", "Austria 49887.0 ... \n", "United Kingdom 60778.0 ... \n", "Sweden 60328.0 ... \n", "Iceland 43045.0 ... \n", "Australia 47657.0 ... \n", "Ireland 31580.0 ... \n", "Denmark 44488.0 ... \n", "United States 145769.0 ... \n", "Norway 8797.0 ... \n", "Switzerland 108823.0 ... \n", "Luxembourg 61765.0 ... \n", "\n", " Time devoted to leisure and personal care Voter turnout \\\n", "Country \n", "Brazil 14.97 79.0 \n", "Mexico 13.89 63.0 \n", "Russia 14.97 65.0 \n", "Turkey 13.42 88.0 \n", "Hungary 15.04 62.0 \n", "Poland 14.20 55.0 \n", "Chile 14.41 49.0 \n", "Slovak Republic 14.99 59.0 \n", "Czech Republic 14.98 59.0 \n", "Estonia 14.90 64.0 \n", "Greece 14.91 64.0 \n", "Portugal 14.95 58.0 \n", "Slovenia 14.62 52.0 \n", "Spain 16.06 69.0 \n", "Korea 14.63 76.0 \n", "Italy 14.98 75.0 \n", "Japan 14.93 53.0 \n", "Israel 14.48 68.0 \n", "New Zealand 14.87 77.0 \n", "France 15.33 80.0 \n", "Belgium 15.71 89.0 \n", "Germany 15.31 72.0 \n", "Finland 14.89 69.0 \n", "Canada 14.25 61.0 \n", "Netherlands 15.44 75.0 \n", "Austria 14.46 75.0 \n", "United Kingdom 14.83 66.0 \n", "Sweden 15.11 86.0 \n", "Iceland 14.61 81.0 \n", "Australia 14.41 93.0 \n", "Ireland 15.19 70.0 \n", "Denmark 16.06 88.0 \n", "United States 14.27 68.0 \n", "Norway 15.56 78.0 \n", "Switzerland 14.98 49.0 \n", "Luxembourg 15.12 91.0 \n", "\n", " Water quality Years in education \\\n", "Country \n", "Brazil 72.0 16.3 \n", "Mexico 67.0 14.4 \n", "Russia 56.0 16.0 \n", "Turkey 62.0 16.4 \n", "Hungary 77.0 17.6 \n", "Poland 79.0 18.4 \n", "Chile 73.0 16.5 \n", "Slovak Republic 81.0 16.3 \n", "Czech Republic 85.0 18.1 \n", "Estonia 79.0 17.5 \n", "Greece 69.0 18.6 \n", "Portugal 86.0 17.6 \n", "Slovenia 88.0 18.4 \n", "Spain 71.0 17.6 \n", "Korea 78.0 17.5 \n", "Italy 71.0 16.8 \n", "Japan 85.0 16.3 \n", "Israel 68.0 15.8 \n", "New Zealand 89.0 18.1 \n", "France 82.0 16.4 \n", "Belgium 87.0 18.9 \n", "Germany 95.0 18.2 \n", "Finland 94.0 19.7 \n", "Canada 91.0 17.2 \n", "Netherlands 92.0 18.7 \n", "Austria 94.0 17.0 \n", "United Kingdom 88.0 16.4 \n", "Sweden 95.0 19.3 \n", "Iceland 97.0 19.8 \n", "Australia 91.0 19.4 \n", "Ireland 80.0 17.6 \n", "Denmark 94.0 19.4 \n", "United States 85.0 17.2 \n", "Norway 94.0 17.9 \n", "Switzerland 96.0 17.3 \n", "Luxembourg 86.0 15.1 \n", "\n", " Subject Descriptor \\\n", "Country \n", "Brazil Gross domestic product per capita, current prices \n", "Mexico Gross domestic product per capita, current prices \n", "Russia Gross domestic product per capita, current prices \n", "Turkey Gross domestic product per capita, current prices \n", "Hungary Gross domestic product per capita, current prices \n", "Poland Gross domestic product per capita, current prices \n", "Chile Gross domestic product per capita, current prices \n", "Slovak Republic Gross domestic product per capita, current prices \n", "Czech Republic Gross domestic product per capita, current prices \n", "Estonia Gross domestic product per capita, current prices \n", "Greece Gross domestic product per capita, current prices \n", "Portugal Gross domestic product per capita, current prices \n", "Slovenia Gross domestic product per capita, current prices \n", "Spain Gross domestic product per capita, current prices \n", "Korea Gross domestic product per capita, current prices \n", "Italy Gross domestic product per capita, current prices \n", "Japan Gross domestic product per capita, current prices \n", "Israel Gross domestic product per capita, current prices \n", "New Zealand Gross domestic product per capita, current prices \n", "France Gross domestic product per capita, current prices \n", "Belgium Gross domestic product per capita, current prices \n", "Germany Gross domestic product per capita, current prices \n", "Finland Gross domestic product per capita, current prices \n", "Canada Gross domestic product per capita, current prices \n", "Netherlands Gross domestic product per capita, current prices \n", "Austria Gross domestic product per capita, current prices \n", "United Kingdom Gross domestic product per capita, current prices \n", "Sweden Gross domestic product per capita, current prices \n", "Iceland Gross domestic product per capita, current prices \n", "Australia Gross domestic product per capita, current prices \n", "Ireland Gross domestic product per capita, current prices \n", "Denmark Gross domestic product per capita, current prices \n", "United States Gross domestic product per capita, current prices \n", "Norway Gross domestic product per capita, current prices \n", "Switzerland Gross domestic product per capita, current prices \n", "Luxembourg Gross domestic product per capita, current prices \n", "\n", " Units Scale \\\n", "Country \n", "Brazil U.S. dollars Units \n", "Mexico U.S. dollars Units \n", "Russia U.S. dollars Units \n", "Turkey U.S. dollars Units \n", "Hungary U.S. dollars Units \n", "Poland U.S. dollars Units \n", "Chile U.S. dollars Units \n", "Slovak Republic U.S. dollars Units \n", "Czech Republic U.S. dollars Units \n", "Estonia U.S. dollars Units \n", "Greece U.S. dollars Units \n", "Portugal U.S. dollars Units \n", "Slovenia U.S. dollars Units \n", "Spain U.S. dollars Units \n", "Korea U.S. dollars Units \n", "Italy U.S. dollars Units \n", "Japan U.S. dollars Units \n", "Israel U.S. dollars Units \n", "New Zealand U.S. dollars Units \n", "France U.S. dollars Units \n", "Belgium U.S. dollars Units \n", "Germany U.S. dollars Units \n", "Finland U.S. dollars Units \n", "Canada U.S. dollars Units \n", "Netherlands U.S. dollars Units \n", "Austria U.S. dollars Units \n", "United Kingdom U.S. dollars Units \n", "Sweden U.S. dollars Units \n", "Iceland U.S. dollars Units \n", "Australia U.S. dollars Units \n", "Ireland U.S. dollars Units \n", "Denmark U.S. dollars Units \n", "United States U.S. dollars Units \n", "Norway U.S. dollars Units \n", "Switzerland U.S. dollars Units \n", "Luxembourg U.S. dollars Units \n", "\n", " Country/Series-specific Notes \\\n", "Country \n", "Brazil See notes for: Gross domestic product, curren... \n", "Mexico See notes for: Gross domestic product, curren... \n", "Russia See notes for: Gross domestic product, curren... \n", "Turkey See notes for: Gross domestic product, curren... \n", "Hungary See notes for: Gross domestic product, curren... \n", "Poland See notes for: Gross domestic product, curren... \n", "Chile See notes for: Gross domestic product, curren... \n", "Slovak Republic See notes for: Gross domestic product, curren... \n", "Czech Republic See notes for: Gross domestic product, curren... \n", "Estonia See notes for: Gross domestic product, curren... \n", "Greece See notes for: Gross domestic product, curren... \n", "Portugal See notes for: Gross domestic product, curren... \n", "Slovenia See notes for: Gross domestic product, curren... \n", "Spain See notes for: Gross domestic product, curren... \n", "Korea See notes for: Gross domestic product, curren... \n", "Italy See notes for: Gross domestic product, curren... \n", "Japan See notes for: Gross domestic product, curren... \n", "Israel See notes for: Gross domestic product, curren... \n", "New Zealand See notes for: Gross domestic product, curren... \n", "France See notes for: Gross domestic product, curren... \n", "Belgium See notes for: Gross domestic product, curren... \n", "Germany See notes for: Gross domestic product, curren... \n", "Finland See notes for: Gross domestic product, curren... \n", "Canada See notes for: Gross domestic product, curren... \n", "Netherlands See notes for: Gross domestic product, curren... \n", "Austria See notes for: Gross domestic product, curren... \n", "United Kingdom See notes for: Gross domestic product, curren... \n", "Sweden See notes for: Gross domestic product, curren... \n", "Iceland See notes for: Gross domestic product, curren... \n", "Australia See notes for: Gross domestic product, curren... \n", "Ireland See notes for: Gross domestic product, curren... \n", "Denmark See notes for: Gross domestic product, curren... \n", "United States See notes for: Gross domestic product, curren... \n", "Norway See notes for: Gross domestic product, curren... \n", "Switzerland See notes for: Gross domestic product, curren... \n", "Luxembourg See notes for: Gross domestic product, curren... \n", "\n", " GDP per capita Estimates Start After \n", "Country \n", "Brazil 8669.998 2014.0 \n", "Mexico 9009.280 2015.0 \n", "Russia 9054.914 2015.0 \n", "Turkey 9437.372 2013.0 \n", "Hungary 12239.894 2015.0 \n", "Poland 12495.334 2014.0 \n", "Chile 13340.905 2014.0 \n", "Slovak Republic 15991.736 2015.0 \n", "Czech Republic 17256.918 2015.0 \n", "Estonia 17288.083 2014.0 \n", "Greece 18064.288 2014.0 \n", "Portugal 19121.592 2014.0 \n", "Slovenia 20732.482 2015.0 \n", "Spain 25864.721 2014.0 \n", "Korea 27195.197 2014.0 \n", "Italy 29866.581 2015.0 \n", "Japan 32485.545 2015.0 \n", "Israel 35343.336 2015.0 \n", "New Zealand 37044.891 2015.0 \n", "France 37675.006 2015.0 \n", "Belgium 40106.632 2014.0 \n", "Germany 40996.511 2014.0 \n", "Finland 41973.988 2014.0 \n", "Canada 43331.961 2015.0 \n", "Netherlands 43603.115 2014.0 \n", "Austria 43724.031 2015.0 \n", "United Kingdom 43770.688 2015.0 \n", "Sweden 49866.266 2014.0 \n", "Iceland 50854.583 2014.0 \n", "Australia 50961.865 2014.0 \n", "Ireland 51350.744 2014.0 \n", "Denmark 52114.165 2015.0 \n", "United States 55805.204 2015.0 \n", "Norway 74822.106 2015.0 \n", "Switzerland 80675.308 2015.0 \n", "Luxembourg 101994.093 2014.0 \n", "\n", "[36 rows x 30 columns]" ] }, "execution_count": 102, "metadata": {}, "output_type": "execute_result" } ], "source": [ "full_country_stats = pd.merge(left=oecd_bli, right=gdp_per_capita, left_index=True, right_index=True)\n", "full_country_stats.sort_values(by=\"GDP per capita\", inplace=True)\n", "full_country_stats" ] }, { "cell_type": "code", "execution_count": 103, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "GDP per capita 55805.204\n", "Life satisfaction 7.200\n", "Name: United States, dtype: float64" ] }, "execution_count": 103, "metadata": {}, "output_type": "execute_result" } ], "source": [ "full_country_stats[[\"GDP per capita\", 'Life satisfaction']].loc[\"United States\"]" ] }, { "cell_type": "code", "execution_count": 104, "metadata": {}, "outputs": [], "source": [ "remove_indices = [0, 1, 6, 8, 33, 34, 35]\n", "keep_indices = list(set(range(36)) - set(remove_indices))\n", "\n", "sample_data = full_country_stats[[\"GDP per capita\", 'Life satisfaction']].iloc[keep_indices]\n", "missing_data = full_country_stats[[\"GDP per capita\", 'Life satisfaction']].iloc[remove_indices]" ] }, { "cell_type": "code", "execution_count": 105, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Saving figure money_happy_scatterplot\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sample_data.plot(kind='scatter', x=\"GDP per capita\", y='Life satisfaction', figsize=(5,3))\n", "plt.axis([0, 60000, 0, 10])\n", "position_text = {\n", " \"Hungary\": (5000, 1),\n", " \"Korea\": (18000, 1.7),\n", " \"France\": (29000, 2.4),\n", " \"Australia\": (40000, 3.0),\n", " \"United States\": (52000, 3.8),\n", "}\n", "for country, pos_text in position_text.items():\n", " pos_data_x, pos_data_y = sample_data.loc[country]\n", " country = \"U.S.\" if country == \"United States\" else country\n", " plt.annotate(country, xy=(pos_data_x, pos_data_y), xytext=pos_text,\n", " arrowprops=dict(facecolor='black', width=0.5, shrink=0.1, headwidth=5))\n", " plt.plot(pos_data_x, pos_data_y, \"ro\")\n", "save_fig('money_happy_scatterplot')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 106, "metadata": {}, "outputs": [], "source": [ "sample_data.to_csv(os.path.join(\"datasets\", \"lifesat\", \"lifesat.csv\"))" ] }, { "cell_type": "code", "execution_count": 107, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
GDP per capitaLife satisfaction
Country
Hungary12239.8944.9
Korea27195.1975.8
France37675.0066.5
Australia50961.8657.3
United States55805.2047.2
\n", "
" ], "text/plain": [ " GDP per capita Life satisfaction\n", "Country \n", "Hungary 12239.894 4.9\n", "Korea 27195.197 5.8\n", "France 37675.006 6.5\n", "Australia 50961.865 7.3\n", "United States 55805.204 7.2" ] }, "execution_count": 107, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_data.loc[list(position_text.keys())]" ] }, { "cell_type": "code", "execution_count": 108, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Saving figure tweaking_model_params_plot\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "\n", "sample_data.plot(kind='scatter', x=\"GDP per capita\", y='Life satisfaction', figsize=(5,3))\n", "plt.axis([0, 60000, 0, 10])\n", "X=np.linspace(0, 60000, 1000)\n", "plt.plot(X, 2*X/100000, \"r\")\n", "plt.text(40000, 2.7, r\"$\\theta_0 = 0$\", fontsize=14, color=\"r\")\n", "plt.text(40000, 1.8, r\"$\\theta_1 = 2 \\times 10^{-5}$\", fontsize=14, color=\"r\")\n", "plt.plot(X, 8 - 5*X/100000, \"g\")\n", "plt.text(5000, 9.1, r\"$\\theta_0 = 8$\", fontsize=14, color=\"g\")\n", "plt.text(5000, 8.2, r\"$\\theta_1 = -5 \\times 10^{-5}$\", fontsize=14, color=\"g\")\n", "plt.plot(X, 4 + 5*X/100000, \"b\")\n", "plt.text(5000, 3.5, r\"$\\theta_0 = 4$\", fontsize=14, color=\"b\")\n", "plt.text(5000, 2.6, r\"$\\theta_1 = 5 \\times 10^{-5}$\", fontsize=14, color=\"b\")\n", "save_fig('tweaking_model_params_plot')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 109, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(4.853052800266436, 4.911544589158483e-05)" ] }, "execution_count": 109, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn import linear_model\n", "lin1 = linear_model.LinearRegression()\n", "Xsample = np.c_[sample_data[\"GDP per capita\"]]\n", "ysample = np.c_[sample_data[\"Life satisfaction\"]]\n", "lin1.fit(Xsample, ysample)\n", "t0, t1 = lin1.intercept_[0], lin1.coef_[0][0]\n", "t0, t1" ] }, { "cell_type": "code", "execution_count": 110, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Saving figure best_fit_model_plot\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sample_data.plot(kind='scatter', x=\"GDP per capita\", y='Life satisfaction', figsize=(5,3))\n", "plt.axis([0, 60000, 0, 10])\n", "X=np.linspace(0, 60000, 1000)\n", "plt.plot(X, t0 + t1*X, \"b\")\n", "plt.text(5000, 3.1, r\"$\\theta_0 = 4.85$\", fontsize=14, color=\"b\")\n", "plt.text(5000, 2.2, r\"$\\theta_1 = 4.91 \\times 10^{-5}$\", fontsize=14, color=\"b\")\n", "save_fig('best_fit_model_plot')\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 111, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "22587.49\n" ] }, { "data": { "text/plain": [ "5.96244744318815" ] }, "execution_count": 111, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cyprus_gdp_per_capita = gdp_per_capita.loc[\"Cyprus\"][\"GDP per capita\"]\n", "print(cyprus_gdp_per_capita)\n", "cyprus_predicted_life_satisfaction = lin1.predict([[cyprus_gdp_per_capita]])[0][0]\n", "cyprus_predicted_life_satisfaction" ] }, { "cell_type": "code", "execution_count": 112, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Saving figure cyprus_prediction_plot\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sample_data.plot(kind='scatter', x=\"GDP per capita\", y='Life satisfaction', figsize=(5,3), s=1)\n", "X=np.linspace(0, 60000, 1000)\n", "plt.plot(X, t0 + t1*X, \"b\")\n", "plt.axis([0, 60000, 0, 10])\n", "plt.text(5000, 7.5, r\"$\\theta_0 = 4.85$\", fontsize=14, color=\"b\")\n", "plt.text(5000, 6.6, r\"$\\theta_1 = 4.91 \\times 10^{-5}$\", fontsize=14, color=\"b\")\n", "plt.plot([cyprus_gdp_per_capita, cyprus_gdp_per_capita], [0, cyprus_predicted_life_satisfaction], \"r--\")\n", "plt.text(25000, 5.0, r\"Prediction = 5.96\", fontsize=14, color=\"b\")\n", "plt.plot(cyprus_gdp_per_capita, cyprus_predicted_life_satisfaction, \"ro\")\n", "save_fig('cyprus_prediction_plot')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 113, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
GDP per capitaLife satisfaction
Country
Portugal19121.5925.1
Slovenia20732.4825.7
Spain25864.7216.5
\n", "
" ], "text/plain": [ " GDP per capita Life satisfaction\n", "Country \n", "Portugal 19121.592 5.1\n", "Slovenia 20732.482 5.7\n", "Spain 25864.721 6.5" ] }, "execution_count": 113, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_data[7:10] #GN: 3 closest countries per GDP" ] }, { "cell_type": "code", "execution_count": 115, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5.766666666666667" ] }, "execution_count": 115, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(5.1+5.7+6.5)/3 #GN: what K-NN with K=3 would have done, K-NN is an " ] }, { "cell_type": "code", "execution_count": 116, "metadata": {}, "outputs": [], "source": [ "backup = oecd_bli, gdp_per_capita\n", "\n", "def prepare_country_stats(oecd_bli, gdp_per_capita):\n", " oecd_bli = oecd_bli[oecd_bli[\"INEQUALITY\"]==\"TOT\"]\n", " oecd_bli = oecd_bli.pivot(index=\"Country\", columns=\"Indicator\", values=\"Value\")\n", " gdp_per_capita.rename(columns={\"2015\": \"GDP per capita\"}, inplace=True)\n", " gdp_per_capita.set_index(\"Country\", inplace=True)\n", " full_country_stats = pd.merge(left=oecd_bli, right=gdp_per_capita,\n", " left_index=True, right_index=True)\n", " full_country_stats.sort_values(by=\"GDP per capita\", inplace=True)\n", " remove_indices = [0, 1, 6, 8, 33, 34, 35]\n", " keep_indices = list(set(range(36)) - set(remove_indices))\n", " return full_country_stats[[\"GDP per capita\", 'Life satisfaction']].iloc[keep_indices]" ] }, { "cell_type": "code", "execution_count": 85, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[[5.96242338]]\n" ] } ], "source": [ "# Code example\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "import sklearn\n", "\n", "# Load the data\n", "oecd_bli = pd.read_csv(datapath + \"oecd_bli_2015.csv\", thousands=',')\n", "gdp_per_capita = pd.read_csv(datapath + \"gdp_per_capita.csv\",thousands=',',delimiter='\\t',\n", " encoding='latin1', na_values=\"n/a\")\n", "\n", "# Prepare the data\n", "country_stats = prepare_country_stats(oecd_bli, gdp_per_capita)\n", "X = np.c_[country_stats[\"GDP per capita\"]]\n", "y = np.c_[country_stats[\"Life satisfaction\"]]\n", "\n", "# Visualize the data\n", "country_stats.plot(kind='scatter', x=\"GDP per capita\", y='Life satisfaction')\n", "plt.show()\n", "\n", "# Select a linear model\n", "model = sklearn.linear_model.LinearRegression()\n", "\n", "# Train the model\n", "model.fit(X, y)\n", "\n", "# Make a prediction for Cyprus\n", "X_new = [[22587]] # Cyprus' GDP per capita\n", "print(model.predict(X_new)) # outputs [[ 5.96242338]]" ] }, { "cell_type": "code", "execution_count": 117, "metadata": {}, "outputs": [], "source": [ "oecd_bli, gdp_per_capita = backup" ] }, { "cell_type": "code", "execution_count": 118, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
GDP per capitaLife satisfaction
Country
Brazil8669.9987.0
Mexico9009.2806.7
Chile13340.9056.7
Czech Republic17256.9186.5
Norway74822.1067.4
Switzerland80675.3087.5
Luxembourg101994.0936.9
\n", "
" ], "text/plain": [ " GDP per capita Life satisfaction\n", "Country \n", "Brazil 8669.998 7.0\n", "Mexico 9009.280 6.7\n", "Chile 13340.905 6.7\n", "Czech Republic 17256.918 6.5\n", "Norway 74822.106 7.4\n", "Switzerland 80675.308 7.5\n", "Luxembourg 101994.093 6.9" ] }, "execution_count": 118, "metadata": {}, "output_type": "execute_result" } ], "source": [ "missing_data" ] }, { "cell_type": "code", "execution_count": 119, "metadata": {}, "outputs": [], "source": [ "position_text2 = {\n", " \"Brazil\": (1000, 9.0),\n", " \"Mexico\": (11000, 9.0),\n", " \"Chile\": (25000, 9.0),\n", " \"Czech Republic\": (35000, 9.0),\n", " \"Norway\": (60000, 3),\n", " \"Switzerland\": (72000, 3.0),\n", " \"Luxembourg\": (90000, 3.0),\n", "}" ] }, { "cell_type": "code", "execution_count": 120, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Saving figure representative_training_data_scatterplot\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sample_data.plot(kind='scatter', x=\"GDP per capita\", y='Life satisfaction', figsize=(8,3))\n", "plt.axis([0, 110000, 0, 10])\n", "\n", "for country, pos_text in position_text2.items():\n", " pos_data_x, pos_data_y = missing_data.loc[country]\n", " plt.annotate(country, xy=(pos_data_x, pos_data_y), xytext=pos_text,\n", " arrowprops=dict(facecolor='black', width=0.5, shrink=0.1, headwidth=5))\n", " plt.plot(pos_data_x, pos_data_y, \"rs\")\n", "\n", "X=np.linspace(0, 110000, 1000)\n", "plt.plot(X, t0 + t1*X, \"b:\")\n", "\n", "lin_reg_full = linear_model.LinearRegression()\n", "Xfull = np.c_[full_country_stats[\"GDP per capita\"]]\n", "yfull = np.c_[full_country_stats[\"Life satisfaction\"]]\n", "lin_reg_full.fit(Xfull, yfull)\n", "\n", "t0full, t1full = lin_reg_full.intercept_[0], lin_reg_full.coef_[0][0]\n", "X = np.linspace(0, 110000, 1000)\n", "plt.plot(X, t0full + t1full * X, \"k\")\n", "\n", "save_fig('representative_training_data_scatterplot')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/gneglia/miniconda3/envs/homl/lib/python3.7/site-packages/numpy/lib/nanfunctions.py:1431: RuntimeWarning: overflow encountered in multiply\n", " sqr = np.multiply(arr, arr, out=arr)\n", "/Users/gneglia/miniconda3/envs/homl/lib/python3.7/site-packages/numpy/core/fromnumeric.py:83: RuntimeWarning: overflow encountered in reduce\n", " return ufunc.reduce(obj, axis, dtype, out, **passkwargs)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Saving figure overfitting_model_plot\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "full_country_stats.plot(kind='scatter', x=\"GDP per capita\", y='Life satisfaction', figsize=(8,3))\n", "plt.axis([0, 110000, 0, 10])\n", "\n", "from sklearn import preprocessing\n", "from sklearn import pipeline\n", "\n", "poly = preprocessing.PolynomialFeatures(degree=60, include_bias=False)\n", "scaler = preprocessing.StandardScaler()\n", "lin_reg2 = linear_model.LinearRegression()\n", "\n", "pipeline_reg = pipeline.Pipeline([('poly', poly), ('scal', scaler), ('lin', lin_reg2)])\n", "pipeline_reg.fit(Xfull, yfull)\n", "curve = pipeline_reg.predict(X[:, np.newaxis])\n", "plt.plot(X, curve)\n", "save_fig('overfitting_model_plot')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 121, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Country\n", "New Zealand 7.3\n", "Sweden 7.2\n", "Norway 7.4\n", "Switzerland 7.5\n", "Name: Life satisfaction, dtype: float64" ] }, "execution_count": 121, "metadata": {}, "output_type": "execute_result" } ], "source": [ "full_country_stats.loc[[c for c in full_country_stats.index if \"W\" in c.upper()]][\"Life satisfaction\"]" ] }, { "cell_type": "code", "execution_count": 92, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Subject DescriptorUnitsScaleCountry/Series-specific NotesGDP per capitaEstimates Start After
Country
BotswanaGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...6040.9572008.0
KuwaitGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...29363.0272014.0
MalawiGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...354.2752011.0
New ZealandGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...37044.8912015.0
NorwayGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...74822.1062015.0
\n", "
" ], "text/plain": [ " Subject Descriptor Units \\\n", "Country \n", "Botswana Gross domestic product per capita, current prices U.S. dollars \n", "Kuwait Gross domestic product per capita, current prices U.S. dollars \n", "Malawi Gross domestic product per capita, current prices U.S. dollars \n", "New Zealand Gross domestic product per capita, current prices U.S. dollars \n", "Norway Gross domestic product per capita, current prices U.S. dollars \n", "\n", " Scale Country/Series-specific Notes \\\n", "Country \n", "Botswana Units See notes for: Gross domestic product, curren... \n", "Kuwait Units See notes for: Gross domestic product, curren... \n", "Malawi Units See notes for: Gross domestic product, curren... \n", "New Zealand Units See notes for: Gross domestic product, curren... \n", "Norway Units See notes for: Gross domestic product, curren... \n", "\n", " GDP per capita Estimates Start After \n", "Country \n", "Botswana 6040.957 2008.0 \n", "Kuwait 29363.027 2014.0 \n", "Malawi 354.275 2011.0 \n", "New Zealand 37044.891 2015.0 \n", "Norway 74822.106 2015.0 " ] }, "execution_count": 92, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gdp_per_capita.loc[[c for c in gdp_per_capita.index if \"W\" in c.upper()]].head()" ] }, { "cell_type": "code", "execution_count": 93, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Saving figure ridge_model_plot\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjgAAADQCAYAAAAK/RswAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzsnXl4lOXVh+8nIRDCEiCsCUIARbaEEMIqsgmiUrCgfIgbaBWRIrVU6wriQluRWqtVFBWiFgVlcW/rBkUqyKJsooBKWBKEECAkJCHb8/1xZjKTZCaZJJMNzn1dc2Wedz3vOwPvb845zznGWouiKIqiKMq5REB1G6AoiqIoiuJvVOAoiqIoinLOoQJHURRFUZRzDhU4iqIoiqKcc6jAURRFURTlnEMFjqIoiqIo5xwqcBRFURRFOeeoUoFjjJlhjNlijDlrjIkvsu4yY8wPxpgMY8waY0z7qrRNURRFUZRzh6r24CQBTwCL3RcaY5oDq4DZQDNgC7C8im1TFEVRFOUcoU5VnsxauwrAGBMHtHVbNR74zlr7jmP9XOC4MaaLtfaHqrRRURRFUZTaT5UKnBLoDmx3Dqy1Z4wxPzmWFxI4xpipwFSABg0a9O7SpUtV2qkoiqIo5zWZmfK3fn35+/33EBoK4eEy/vZbaNkSIiJknJwMjRpBcLB/zr9169bj1toWpW1XUwROQyC5yLJUoFHRDa21i4BFAHFxcXbLli2Vb52iKIqinEdkZ0PduvL+qacgMBBmzZJx587Qsye8846Mp0+HPn3glltknJYmgqayMMYc8GW7miJw0oHGRZY1BtKqwRZFURRFOW/45hs4cADGjZPxhAlw+DBs2CDj9euhXj3X9q+8Ai3c/CcvvFD4eJUpbspCTRE43wGTnQNjTAOgk2O5oiiKoijlJD9fBEu7djJ+9VX44AN4910Zv/ACvP++S+CMHQunTrn2f/ddMMY1Hjy4auyuKFU9TbyOMSYYCAQCjTHBxpg6wGqghzHmGsf6OcAOTTBWFEVRlLKxcyc89hjk5Mj4iScgMtKVO5OVJQLGuX7OHPHiOLnpJrjrLtfYXdzUJqp6mvjDQCZwP3Cj4/3D1tpk4BpgHnAS6AdcV8W2KYqiKEqNJzMTNm2SXBeATz+VvJj9+2X87bcwd66EnUA8MosWgbUy/u1vYe1aCAqScbt20NZ9XvM5QpUKHGvtXGutKfKa61j3mbW2i7W2vrV2qLU2oSptUxRFUZSagrWQlyfvDx2CmTNhxw4Zb9gA/frB11/LuHlziI6G3FwZX3stpKfDhRfKOCYGbrsNQkKq9hqqG23VoCiKoijVSHY2fPwx/OBIyjh0CMLC4I03ZJyfD0uWwL59Mu7dG1avhl69ZNyrF6xYARddJOOQkPNPzHhCBY6iKIqiVDLZ2XDypLzPz4cbb4TFjpr+1sKYMfDmmzJu0wYmTnR5YNq1g9On4ZprZBwaCr/+tYggxTs1ZRaVoiiKopwzrFgBdeqIEAHo1AlGjhRRExAACQlw/Lisq1cPNm50CZo6dWDhQtexamuSb3WjAkdRFEVRysjx4/DLL9Cjh4xnzpSZSa+/LuO//U0K5TkFzty5cMEFrv3Xry98vD59Kt3k8w4VOIqiKIriAWtd3pMPPpCZS48/LuPp02Vq9Y8/yrhZM/G8OFm1SpY5+c1vqsZmxYXm4CiKoijnPYmJIkqcU6n/+lfpp+ScyfTVVxJeys+X8axZhcNIc+fC00+7xq1auaZhK9WDChxFURTlvCA93VXc7n//k8q9KSkyfvddSeJNSpJx9+6SCJyVJePHHxcRFOB4avbvLzk1Ss1FBY6iKIpyzpGcDC+9JFOuAf79b+mR5KzYm5Eh07KPHZPxNdfAli2uHktXXCF5NA0ayLiOJnTUOvQjUxRFUWod+fkiXkJCRJQcOgTXXw8PPABXXQVHj8K0afDWW3DddRAVJS0LWreW/UeOhO+/dx2vdWvXOqVmkJsrn2Niouvl9LD5ggocRVEUpcaTkwPz50NcHIwaBamp0l9p/ny4915o2lS2c+bQXHyxTMV2zlyKiICHHqoOy5WiWCttJtyFS1ERk5gos9ScOU9OyuJJU4GjKIqi1Ai2bZOHn7NCb9++0rl6wQJ5sD39NNx+uwicpk2lum///rJtw4bw5ZeuYwUFQfv2VX8N5zs5OSJM3IWKp9eZM8X3bdpUhGhEhHjcwsNdY+erRQsIDPTNFhU4iqIoSpWRkeFqIzB/vlT4ffhhGd98s4iSDz6Q8eDBrjozxsiDMTjYdawpU6rM7PMea8Vr5s3b4nwdPeryojkJCnKJlZ49JYQYEVFYwISH+7+9hAocRVEUpVLYvFnqxEyaJOOJE2HvXul2DbB9uwgcJy+/XLj9wIIFhY/nLm4U/5Gd7fK6lBQyysgovm9YmEuoxMQU97iEh0sz0IBqmNKkAkdRFEUpFzk5kufibPK4eLH0U/rsMxm/9po0jLzuOvHAXHutzG5ysnRp4eP161clZp83WCv9r7x5W5yv5OTiXpe6dV0iJTYWfvUrz+KlJotOFTiKoiiKT+zYAW+/Lcm69etLMbwHHpDQRePGsk1AgNSOCQ6W7R55xFUNeMKE6rP9XCM7u7hg8TTOzCy+b/PmLpESF1dYsDjfh4XV/h5YKnAURVEUQBI/v/1W8l6aNIEvvoBbb5UaMl26SN2Yv/xFpmN36yYdsMPDXUmft94qLydt2lTPddRmrIUTJ0oPF7l7wpzUq+cSKH36FPe4RETIZ1KvXtVfV3Xgs8AxxkwELgNaUqRAoLV2rJ/tUhRFUSoBa6W+SFCQPCgffxxuu01+yW/fDpdeCh9+CKNHS12YgQNd+159teRh1K0r4+7d5aX4RlaWS6B4CxclJcHZs8X3bdlSBErbtjK7zJN4adq09ntd/IlPAscY8xRwN7AGSAJsyXsoiqIo1U1ODnz0EXToILNXjh6FCy+U5N077hDPy9tvw/DhInB69oSPP3blwnTrJjk1Ts6XX/5lxVrpLl7aDCNnWwh36td3CZQBAzyHi9q0cYlKxXd89eDcDEyy1q6oTGMURVGUspGRIT2WWraUB+2kSeKF+e1v5df8ddfBzJkiXlq2lDoyzqnXrVrJQ9f5q79BA7jyyuq7lppIZmbJ3hbnX/fZYCD3tFUrESrt24snzFOSbpMm6nUBpKvpiRPyhUxJEcU4YIB8abdskc6mznU+4qvACQC2lctoRVEUxW8sXy5C5rrrZNyjhxS7e/NNeVCmporgASmOt3mzVPwFWe/e8fp8frDm50seS2kF6U6eLL5vgwYukTJokOeCdK1bn8fdxLOzRYiEhEBoqNzoVatcwsUpVO65B4YOlWSvESOKT+VyxkqPHZNEsLCwwnUESsFXgbMIuBGY6/ORy4gxJhJ4ARgAnAVWAHdba3Mr65yKoig1DWc9kt69ZTxzJhw+LM8HkAaSubkugfPEE+IpcPKvfxU+XlRU5dtc08jIKDlUlJgIR464Oos7CQiQexkRAZ06SaHBouGiiAiZMXZeicPcXNi5s7A4OX5cXIXDh8sNHjvWtS4tTfZ79lm46y5XYzAQdegUKs7COhdeCHPmuJY3by5/O3eW9VddJR+aEx9vvq8CpwlwvTFmJLADKPS1sNbO9PE4JfECcAxo4zjfp8B04Fk/HFtRFKXGkJfnmnn0/vvw3//KlGuA++6Dzz8XUQOSVOruCVi5Un4UO7n++qqxuSaQny8/5ksKFyUmwqlTxfdt2NAlUIYM8Rwuat36HO4abi2cPl1YoDRvLtOtrJWYplPAOP/edBP8+c+S9RwbW/yYjzwiAqdBA1GG3boVFiiXXirbXXyxfKHDwjwXzmnXDubO9fslG1vUJeRpI2PWlLDaWmuHV9gQY74H/mCt/dgxfgpobK29w9s+cXFxdsuWLRU9taIoSqVx6BCsXw//938iav72N5g9W0IfQUHw2GNSwffnn2X8zTfyHBo6tLotr1rS00sPF/3yizgT3AkIkCRcT54W91ejRtVzXZVCXp58gc6elYsDWLFCqi66e1m6dRMXH4hSdveCgJSWXrZM3nfqJF9ApzgJC5OmXxMnigB67z3X8rAwaNas2mJwxpit1tq4UrfzReBUBcaYacBAYBrQFPgPMNtau9rbPipwFEWpCZw4IT9i69WDr76CefNEtISHwyuvSGLvTz9Bx46wdq2EkR5+WB66+fnVU8a+qsjLkwhFaSGj06eL79u4sWdPi/u4VSvfmy/WaPbvh4MHC3tY6taFP/xB1t9+u7j6UlJE3Fgr3pdNm2R9r17SrTQoyCVChg+XMBGIss7PL+xhadvW1W69FuGrwCmTM84YEwxciEwT/8lam1VO+zzxX+B24DQQCLwGvOvBhqnAVIB27dr58fSKoiilk5wMb70luY+dOkk4acQIefYMHiwPdOeU4PBwqR3Tr5/rOTJ0aGHvTG0WN2lppRek++UXuSfuBAa6vC5du8r98yRiGjasnusqNxkZhQXKqVPSnwLg9dfhk08Kh4CMEeULImRWF/k9f+GFLoHTqpWEidwFijN7HEQ1h4SIavaUo/L73/v9cms6voaogoA/ATOAuoBBEoGfAx6y1uaUsLsvxw8AEoCXgAVAQ2AxsMda+0dv+6kHR1EUf5OfL8+cBg3kQZuUBL/+Ndx/P4wfD/v2Se5jfDxMniyC57XXpA1B+/bVbb1/yM0VYVJSuCgx0TVby50mTbx7W5yvFi1quNfFWlFvKSmuJKht22DduuKJtu+9J1+W+++HJ58sfqyzZ8UTc9998M47hUNALVu6prVt3ixuLPcwkL/ba58j+NuD8yQwCQkfrXcsuxT4MzKF/J7yGOlGM+AC4B/W2rPAWWPMEuAJwKvAURRFKS/Wyg/d/Hx49FGZtTR2rNQ96dxZKvw+/LA8Z0JDXYXWOnaUGTjOmUstWshs19qAM8+0tHDR0aNyX9ypU8clWKKi4IoriouY8HB51tdITp2C778vLE5SUmD6dBExq1dLcpRzvXOK1Q8/SJLsF1+IN8UYKRns9KRkZMhFX365qDt3D0tYmCtr+cknPQsgJ336VP49OM/wVeBcD9zqTAB28JMxJhl4hQoKHGvtcWPMfuBOY4zTgzMZ2F6R4yqKooDUCcvNlXoxIKXu4+LghRckRPTqqyJsxo6VZ9WyZa5JI/Xqwaefuo4VGCizbWoaOTmuKeYlzTA6c6b4vk2bukRKdLTncFGLFjUgnJaT4yoG5xQosbHiOvvhB5g/v3itlaVLRXysWSMuOHfq1JEpyG3biort3Lm4QGnRQra97TZx2TVp4tn9NHy4vJQag68CJxT4ycPyn5Ap3f5gPPAMcB+Qh7SFOP+ChopyjrF0qXSVPnhQZoPOmwc33OB9eXmwVgrcNXH8b/SXv0iEYd48Gd95p6xzCpUrrxRPjJOEhMLTgydOLJ8dlYG14nwobYbRsWPF66TVresSKD17yrPcU9Ju/frVcGFZWSJA6tUTQdGypecOkqGhcgN27hT1VZRXX5UOn2fOSI6LU5xER8t7p6tt4EDJU3GvteKer1KaQHG2S1dqDb7m4GwEtlprf1tk+UIgxlo7oJLsKxHNwVGUms3SpTB1qqueF0haweTJkrdSdPmiRb6JnK+/hu++c3WunjRJUiS+/17Gt98uz8R33pHxtm0icNxzMmsC2dkS7iotZJSZWXzfsLDSZxg1b17FBem2bi2eo9KrlyQxZWbCJZe4ljs//IcekqnMJRlqrcwceu654sXgOnYsXBhIOefx6zRxY8xg4GOk0eYGZBbVACAcuNJau76E3SsNFThKTcCfnojadG5fiIyEAweKLw8MLD6zBiTSkJAgP+737XNV4V28WMTPhg3yHLznHnj+eUlyDQyUYnlHjkgDyZqA83lcWrjo2LHi+9arV3I9l/BweXmql1Zh8vPFFeYUIVde6blqXlAQdOki240aJR8QyLSnojGw6dPlw7JWhE6TJoVDQH36SJipNIGjKA78XgfHGBMO/Bbogsyi2g28YK1NqoihFUEFjlLdePNQuHsiKkuElHbupUvhd79z9aYLC4O//71qBVBAQNmfTdZKyY5Zs0QAtGgh07LffFNejRpJJCMoyBWSqkrOnhWRUlK4KClJRFpRWrQovSBds2Z+8rrk5orKSk+XduIgSrBoom2bNvDii7I+Jga2+5j6ePXVIlQGDnS50j75xFWKv3lzSe7xdbqUChzFR2pdob/yoAJHqW68eSicnghfBFBlnHvePLjlluK9durWlR/bVSVyvNnojTZtRBzs2ycVfUePrrpaKNbKM7+kUFFiomiCogQHlx4uatNGvDMV4sABKXnsLlDOnpVyyAB//KPMBnLWYAHXlxFk6tN//iOGOEVITIzEC0GqEqaluTwso0eXfMP8iQocxUcqLHCMMbHANmttvuO9V6y135TPzIqhAkepbrx5KJzTj0sTQJV17nbtvAsLf5zbE3l5IqhWrpSSH4mJkpfpqUKtJ+rXl+q/ZRFfvnrHsrI8Cxb3ZUlJohWK0rJlyeGiiAhxVPjkdbHWVQzOPVdl/HhRn6tWyQ10X+ecNVSnjmRLO70tTpo2dRWNe/ppqafiHgJq08ZVbC4lRdRYSIhvBlel6FCBo/iIPwROPtDaWnvM8d4ioamiWGtttZRsUoGjVDelCZjSBFBlnfvgQe/PBH+cOzdXnsUdO8p06xMn5GE/YYIsd/dYlYTT1vKE7pYulWRi9wTcunXF6dCsWWHh4gzTuRMSUnq4qHVrV/2bYjiLyhw/7pqK9MMPMlOnaK2V+Hi5yAUL4N57ix/r0CGZqvz007BwYfFE2nnz5PjffSdxO/d1FXYLlUBVio7WraUAT1FatZL574riwB8Cpz1w0FprHe+9Yq0tgxPaf6jAUaqb0kJQlenBKencDz1UcQ9Oaqqkbzh7+f3f/0k+6L33yrOtcWNJvfj732X88MMyY9fTM6o8dmRmljy76OuvPScqgzwrSwoXRUTIxJtiz++0NNixo7hAuflmaVy4dq10XXaud3Z+XLdOOicvXQo33ijKtlkzlwhZvFhqrGzeLAXjitZaueiiamtcWCLqVVFqIBWuZFxEtFjgkPWghowx2hCqKPpL5LzB6XHwFiaZN8+zCHHWZykrRUMykyfDxx97Pre3HBxv537zTZm2PGWKjPv1k2f6qlUyzs93eX6MkRnBzv5Kxshx//xn36/l1CkpDHvRRZ4FzMmTxfdp0MAlULyJmyCyOfLticJhnq5d5ZWYKDew6FTmv/8dbrpJaq0MGlTkgEGum9GkicwechcnzZvLRQCMGyfurNBQz1Xx+vSpXRVrW7Xy/n+ZotRwfJ0mnge0sdYeK7I8DDimIaoi6K8exY2KzKJy37dZM3EwZGe71peUsLx0qUybds7aNUZm6ToFy8yZsGeP5JyCFIE7dUq6YYOkgjRrBsOG+X6t7dpJtKUodeuKOHI6PIoSECC/C4p5WpqfJaLhKSLaBhAR04JG9XMxi16ClBSWLEihbtpxwkhhJdfwCrfTil/4hTbFT/CnP8EDD4hxgwYVDwFdf73MBkpNhY0bC69r2LCKi8koSjVTw3+k+7sOTj7QylqbXGR5e2C3tbZauo+owFHOZTyFoDzhHurJznbljMyaJXXRioqKf/5TBNE//iHCaf58WZ6eLh4ST1/fvDxJ/ShthlFqqmcbw8PFsZGVBS05SjNSaEEybThCt0aHeOjvralzy02y8YABcPiweFacc61vv12UXH6+eFTy88mu35jDWc05bsOIZwoLmU5o/Wz+e9WT9BxeJATUvr0k4yqKUjo1/BnmF4FjjHnW8fa3wBLA/b/aQKAvkG2tvaQCtpYbFTjKuUxZplhbC88+KyGf1FTx7DRt6rlGW7NmhZNu09NLL0h35EjxkFBgoKV1s2wimmaIpyW2tYSOVq4mYMc2IrJ/pnudPXRrcJD6A2MJ+PfHWAs/0olO/FxwnHwMAf83AZYvlwW33CL/hty9LFFREiYCUVpNm0JQUI0vdKgotZIa/gzzl8BZ43g7BKlg7OYcJxtIABZYa/eV39TyUysFTnldfDXcZaj4H1+jIs7aMRs2yASeWbMkVaSk/bt3F8GSlGQ5fbr4hqHBWUQ0OEV43RQiAn8homEqEXeNl7DRn35LxKZVtOQYgTiScrp2hd275f348bB3b+EwT3Q0kQtmcOAADOJL8gjkOM1JIYzQdk34+UC1RLkVRfHEOSJwSmy2aa0d5jjYEuB31lofK1ooXvF1iomv+5X3eEqN4/hxqbc2erTksXrL73QnKAjGjJHkXqe35fKh2SQethjqYj1UdmhMKnW/+4mOdQ5xeW4C4SQREXSMiH8vJqKtIXzuVBq+9TIQDPUdAiUyEqY7OjGfHQJHOhcOAbVs6TqBM8mnCPOaSshtfcalBctCQuDZP5XxRimKoviArzk4bYBAa+3hIsvbAjnW2mp5ytZYD443b4uT8ijgGq6oldLJzxcnR+PGEk5JTobLL5e+SjfcIPmv7drBU/Mtl/bO4M1XzvDPZXUIsenUIZdDtCOPOtQhl1wPv02ahOZLMm7Wj0T8tI4IEokgkXCSCOUUY/iANEKZTDwj+IwbZxZJtJ0wQbJ9U1NFOYWE+P0eaEhJUWoBNfx54+8k40+Bt621LxdZ/htgorX28nJbWgFqrMAB/39B/HW8WhDqqu0Pwbw8ab9jLTz0oCXmojNMGHSE5MBWtL6oMWHB6fTOXE+duoF8a3rRNuQEeTmWpOCOHD0RVKwIXxDZhJNEalBzOvdqyICm3xOx9X0imjhyX9rkE942gJA594hY+eknUUvNm9N9cBg/nmxGNoWLwVVWNWNFUc4Bavhzwt8C5xTQz1q7p8jyzsBGa22zcltaAVTglON4NVyZV2bvJr+RmQlbtkBKChu+DiDj+BkuCtxPYuwYbpofRVj9MwxNeovEM6GsOjuaYLI4Sz0yKD7ZsCknaFMnmXaNThJxaUfCe7aUnJeE/xHRvg4RHevRvEMjAlo2lzBRGavW1or7qSiKUgb8LXDSgYHW2h1FlkcDG3SauAdU4JSLyqz8W4isLFehN2ext44doXdvKb8/Ywb2eAonjuaw60gzsk7nkHjV7bx18gqOHjpL5J7/kEgEO4kihyCKdjGpG5BDeINUIkLPiJelVS6rNrTmwOlm1CGbYLJIpyEQUOnelNruEVMURXHH3wLnc2CvtfbOIstfAi621g4tr6EVoUYLHH+7+Px1vBoucMrcu8nZvPD4cVeXSYCXXpL74l5uf9gwuP9+yMsju04IR2jtyFJxvGLHsj1sOPt/yoeDB0jMa0OmDS52yrp1LV3aphPRJp8GjetwQae6dI2qQ0RbU1CgLiys+K2uzL5UiqIo5wt+mUXlxkPAF8aYnsDnjmXDgV7AiPKZeI7j7zhlDYh7VjrW0q6d4cABiGIHbTlMc6RSbcdGKfBsSym/C1J2d/t2ES7OFtBjx2LffY8TJyDxoeUkpdQlMaQzicH9SKzTjsQDURx6Cw4dCuQkxdtG1/vOUr8+pKYGMGFCB8a2lRoxIFX8nT2N6tUzQKMyX563Dt/ttNmJoiiK3/FJ4FhrNxpjBgD3AuMRf/w3wHRr7fZKtE+preTlSela9xBQTg5ce62s/+tfYf36wh6WiAjmzfuGqVNhYcadXMJXBYfLTwvg7LuXkzRmpkyHDphEYtvJJIW3JjGnJYkZTUncEkpSiLP47ReyY4a8mjeHtvUhP1d6HP3hD1K6JSFB6scsWgQdOpiCCUQNKiHo6u++VIqiKIp3fPXg4BAyN1aiLUolUDT/4vvQVtRPLWPzvOxsl1Dp3l1iKv/9L/zvf4UFypkzsMZRG3LyZDm5O82auQTO3r3w448QFobt2o2Uhu1IbNKDpk1h0iS4Zdk7nDpTh9x6DWjcoh5nsgI5vsZAR+fBpKx/cLAUtW3fHvrFSQjo/ffhwQclIrVvH0yfLgXw4uJE0Hz7LYwcKS2GitKkSVnubtkorTGnoiiK4j98ysEptIMxrYG67sustQf9aZSv1OgcnBpA8Rk0lpD6sOhlww3Dj8B33xXvqvzYY/KUX7hQmhSlpEiHRyenTkmn5D/+EZ56Slwd7iX1//UvmSP9r3/Bjz+S1agFiTacxNxWJGU1IzG7hceWAO4NJEE0VMuWEhZq00b0V2QkNGoE770nouCaa2T/qChXf6VDh+CJJySS5azWa4znxs6KoihK7cPfScahwLPA/1FE3AD4s5u4MeY64BGgHfALMMVa+6WnbWu6wKnU2SvWymwfd3GSkgKXXSaK4Kuv+HDkM9TPSCnIYwkjhQFs4FT7GBLufxHuvLPwMUNDZfrzhReKilixonAhuLAwGDsWgoPJTzvD8ZOBJKYEe+1flJgoUaqihIQU6Rgd4cpvadMGNm2C2FgYMkRyYJo2FdFy330i1rp1c93LnBxp/tyzpxTQq9LPQFEURaly/J1kvADoCfwaWAXcCkQAvwP+UF4ji2KMGQk8CUwENgFt/HXsqqao9+TAARmDhwdsfr4khqSkuITEL7+IW8JdvKSkwJw5ImI++QSuuKL4iT/6SFRCWhoXZuwghTASiGQrvUkhjJM05dBBpL5/t24u8dKsmSSfIGVeErtfTWKTq11iZY/j7zMiYpKSGpCTU/jUxshkr/Bw6NABBg3yLGKysyWa1aGD7DdhgogeZ/7w1VeLd2bIEAkjPfooXOqo7h8SUnhKdVCQa12FPgO3fVQQKYqi1H589eAcBiZZa780xpwGYq21PxpjJgG3WmtH+sUYY74CXrXWvurL9jXSg2MtGMOF7XMIP7ihkPekOcfZ0XIkrx8dJbGUESNEtJw86Zon/NxzMGMG7NolsZegoMIhoIcflv0OH5buy2FFyu1fcAHUrw94rynTurUk1XrqIJ2Y6LkDdcOGhUWKJw9M69ZQx4NkfuMNiXJNny7jnj2hbVvRYgBTpkjvpfvvl/GBA3IOh94qN2WtqaNF8RRFUWo+lVHor5u19qAx5hBwrbX2a2NMJPCdPwr9GWMCgUxgDnAbEAy8C9xrrc10224qMBWgXbt2vQ94eoL5i8zM4iGgNm3EZWAt3HyzLHf3sNx+OyxYQENVB1qPAAAgAElEQVRzxlHIzUUG9XmcOfzZ3i/9fu64o3gIqF8/CRHl5rJ8SQb3PdGIg4dMqd6EM2eKC5UvvoDPP5c8FG8EBIgw8eRpcR97Cv84SUiAn3+G4cNl/LvfwebN8JVjEtT48XDkiMxWAvj4YxFMgwf79jG4UxYPS1nrzlRZkUFFURSl3Phb4GxHuomvNcZ8AnwHzAJ+D/zeWnuBHwwOBxKBrcAYIAd4D1hrrX3I0z4+e3CsFRdCSgrk5sJFF8ny+HjYv7+wQOnZExYskPUtW0pHRHcmToRly+R9dLSUzncXKMOHw9VXE9necuHBzzlOc4f/JoxMQnx+WHryJtStKzOMIiKK57ykphY/RuPGIiROnJCp040bw7hx8Otfu0RMq1aevS5Fychw9V50pue8/rqIhZkzYckSSQkyBl55RSZI/eUvsn1Wlsx2qihl9bCUVbBoIT5FUZSaj79zcOKBaGAt8BfgQ2AGEIDk4fgDp5fmOWvtEQBjzNPAw0ihQQ97ZMKHHxb2soSESBgH4PrrZdpySgoFCSN9+8LXX8v7Z56BHTski9XpSXGPizz+uDzd3L0srVu71u8o1LmiEPP+ZJg6dUSJNU/S0rwn5370UfGZRdnZ8NprMkmpTRsRKV26iKby5IFpVPZadICIgv/8B268UWx+/nmJmjknUB0+LJ6h9u3lfZs2MqnKEZ3jttsKH88f4gbEc+N+P0HGDz3kWeCUte6MFuJTFEU5d/C10N/f3N5/YYzpAsQB+6y1O/1hiLX2pCPXx/d560lJkizrJDBQvCpOgdOtm0xjdvewtG/v2n7dOlkf6GUS2B13lP1CECfR0KEy6+cf/xAnkDHyoL3tNhEDaWmFZ187CQ0VgVJU3Lhz9qx3k30hP19Sff76VxEorVrJed97Dy6+WMJLd9whdWNiY6F/f9F6Ti9GkybiMXIKh6Qk8dZ07Fi5uSoHvRQj8La8rHVntBCfoijKuYPXEJUxJg9oY609ZoxZjISoPDyS/WiMMY8BVwKjkRDV+0iIaran7eO6d7dblixxeVgaNy6515IfOH3ae3Ku0wvzyy8lhzQCA2Ui1GWXFc95cVbQ9Wc+SEqKtGb61a9E/z36KMydW3ibgABZ/vDDrmheu3ae68dUV65KVZxXZ1EpiqLUbCqcg+NILI621v7sEDutrbXJHjf2E8aYIODvwPVAFvA28EdrbZan7f05iyo3VxJhi4aKigoYZ28id5o29Z6cO3Wq5zZSpT2Uy5Jvkp8P27aJF6ZTJ5mUdckl8PvfS85zcrKkE734onhm2rWTSVxltclJdeWq6CwnRVEUxR85OF8B7xpjtiK9p541xmR62tBae2v5zCx2nBxguuPlF6yVcEpJxegSE6VRd9GHdlCQS7D07Cn9HYuKmPBwV/KtJzw1AAfvYRUnnsIrjz7qWn7//RKBu/lmsXvgQMmTWbBAQkhRUa50oRYtxPPkzMk5fLh8NjmprlwVbXWgKIqi+EpJAucm4B7gQiQvJgw8tGCuRqyVB11J4aLExOKJqSB17ZwiJSbG8xTp5s0rXuK/vGLgyy9FmDg9Kn37SveDyZNl/OmnrrzpwEDpv9S5s4yNkRI57rgnHFdUoFRnrsoNN6igURRFUUrH12ni+4E4a21K5ZvkO8bEWSgcoqpbt/SCdOHh/pvZUxrewioLF8rsp7ZtZdmf/ywz1hctkvHIkeJ52rRJxs8+K6LsRke7U+eMJX/aVJZQj+aqKIqiKNWBX+vgeDlBkCOkVG2Eh8fZRx/dUki8hIVVep5xmVm6FP7wBwlXtW8vYuDzz+Hf/xZPE4hY+PFHl+flxx8lZ7ply8qzSQWKoiiKUtvwd6G/mUCitXalY/wqMBn4CRhrrd1TQXvLRU1q1XD6NOzcKVOqAwOlXs3jj8Pu3eJVevxxadSdlibeo//+V8JEN91U8wSZoiiKotRUfBU4vmaYzASSHQcejHQVvx7YBvy1vEbWNqx1zRLauVOacR85IuOVK6W55P79Mm7VCvr0cdW6uftumYHlDI0NGSIJwjVV3CxdKtOyAwLk79Kl1W2RoiiKoviOrwInAkhwvB8DvGOtfRuYC/T3v1nVT1qaFL5zTqfeuFFCRuvWyfjECenY4EzWvfxyKarsnLl0xRXw1lsSMgNJ8q1Xr2qvobw4c3QOHBBR5+zCrSJHURRFqS34KnBOAy0c70cCnzve5yBNMWslGRmuHk4pKTBhgqvD9bFj0rPpk09kHBkJt9wiM6tAGkWeOCEhKZD8n9GjpfdTbaeklgiKoiiKUhvwVeB8ArzsyL25EPiXY3l3YH9lGOZvrIVXX5UO2+BqPvn3v8u4cWP47jsRLSCC5uuvpbcmiGfm2WehRw8ZG1O54aXqDBGVtSWCoiiKotQ0fBU4vwX+BzQHrrXWOmQAscBblWFYeUhKgj1u6c7XXiv9oEDEyJw58M9/yjg4WIriXX65jIOCJCH4pptkHBgotWeqwyNT1SGiomKqWTPP22nTSUVRFKW2UO5p4jWBDh3i7F13bWHWLBn36yeC5HNHAG36dJmW7RQ5v/wixfMq0qiyKqjKXk+eauIEBYkgdG/4qS0RFEVRlJqAP3pRNXN6aowxXn7TC24enSolLCzOXnTRFjZulPHnn0P9+tK2oDZTlb2evImpsDARi1onR1EURalJ+KMXVbIxpo219hhwHGnXUOw8juXV4hOJjKRA3IB05z4XqMpeT97yak6cgOPH/X8+RVEURakKShI4w4ETbu9rXCyrptaQqShV2eupuhpnKoqiKEpl4lXgWGv/6/Z+bZVYowBV2zW7OhtnKoqiKEplUZIHpwBjTB7gDFe5Lw8Djllra3jabu2jqrpmV6WYUhRFUZSqwieBg+TaeKIekO1lnVJLqCoxpSiKoihVRYkCxxjjmICNBaYZY9LdVgcClwI/VJJtiqIoiqIo5aI0D85djr8GuA3Ic1uXjfSnmuZ/sxRFURRFUcpPiQLHWtsBwBizBhhvrT1ZJVYpiqIoiqJUAJ9ycKy1wyrbEEVRFEVRFH/ha5IxxpjOwLVAO6Cu+zpr7a3+MsgYcxGwE1hhrb3RX8dVFEVRFOX8wddp4qOBlcC3QG9gM9AJmUX1pZ9tet5xfEVRFEVRlHLhazfxx4BHrbUDgLPATUAk8Bmw1l/GGGOuA04Bn/vrmIqiKIqinH/4KnAuBpY73ucAIdbaLET43O0PQ4wxjR3H+0Mp2001xmwxxmxJTk72x6kVRVEURTnH8FXgpAHBjvdHgAsd7+sATf1ky+PAq9baQyVtZK1dZK2Ns9bGtWjRwk+nVhRFURTlXMLXJOOvgUHAbuAj4K/GmJ7AOGBDRY0wxsQAI4BeFT2WoiiKoiiKrwJnFtDQ8X4u0Ai4BtjrWFdRhiI5PQeNtAhvCAQaY7pZa2P9cHxFURRFUc4jfK2D87Pb+wzgTj/bsQhY5ja+BxE8/j6PoiiKoijnAb5OE28BYK1NdoyjgInAd9batypqhEM0ZbidLx3Icp5PURRFURSlLPgaonobeANYbIxpDqwDkoC7jDHh1tq/+tMoa+1cfx5PURRFUZTzC19nUUUDGx3vrwV+tNZ2B24G7qgMwxRFURRFUcqLrx6c+kC64/0I4H3H+2+AC/xtlKIoir/Jycnh8OHDZGVlVbcpiqL4QHBwMG3btiUoKKhc+/sqcPYB440xK4HLgaccy1shlYcVRVFqNIcPH6ZRo0ZERkbimK2pKEoNxVpLSkoKhw8fpkOHDuU6hq8hqkeBJ4EEYKO19mvH8lFIfypFUZQaTVZWFmFhYSpuFKUWYIwhLCysQh5XX6eJrzLGtAPCge1uqz5DmnAqiqLUeFTcKErtoaL/Xn0NUWGtPQocLbLsay+bK4qiKIqiVBu+hqgURVGUCtKwYcNiy1588UVef/31arDGP0yZMoUVK1ZUeBt/4rzPCQkJ9OjRo9TtfbEvPj6epKQkv9inVA0+e3AURVEU/zNt2rRKPb61FmstAQH6e7YixMfH06NHD8LDw6vbFMVH9BuvKMr5ydChxV8vvCDrMjI8r4+Pl/XHjxdfV07mzp3LggULHCYN5b777qNv37507tyZL7/8EoC8vDzuvfde+vTpQ3R0NC+99BIA6enpXHbZZcTGxhIVFcV7770HiOeia9euTJ8+ndjYWA4dOlTonJGRkTz44IMMGDCAuLg4vvnmG0aNGkWnTp148cUXARFG9957Lz169CAqKorly5cXLJ8xYwbdunVj9OjRHDt2rOC4W7duZciQIfTu3ZtRo0Zx5MiREq9927Zt9O/fn+joaMaNG8fJkydLvA/ueLt2XyjpGh577DH69OlDjx49mDp1KtZaVqxYwZYtW7jhhhuIiYkhMzPT43ZKzUIFjqIoSg0iNzeXTZs28cwzz/Doo48C8OqrrxIaGsrmzZvZvHkzL7/8Mvv37yc4OJjVq1fzzTffsGbNGv7whz8UPGj37NnDzTffzLfffkv79u2LneeCCy5gw4YNXHrppQUhmo0bNzJnzhwAVq1axbZt29i+fTufffYZ9957L0eOHGH16tXs2bOHnTt38vLLL/PVV18BUmforrvuYsWKFWzdupVbb72Vhx56qMRrvfnmm3nyySfZsWMHUVFRBdfr7T64U9K1l4a3awCYMWMGmzdvZteuXWRmZvLhhx9y7bXXEhcXx9KlS9m2bRv169f3uJ1Ss/A5RGWMaQXcBHQCZltrjxtjLgGSrLX7K8tARVGUSmHtWu/rQkJKXt+8ecnrK8D48eMB6N27NwkJCQB88skn7NixoyBPJDU1lX379tG2bVsefPBB1q1bR0BAAImJiRw9KnNB2rdvT//+/b2eZ+zYsQBERUWRnp5Oo0aNaNSoEcHBwZw6dYr169czadIkAgMDadWqFUOGDGHz5s2sW7euYHl4eDjDhw8HRFDt2rWLkSNHAuJ1atOmjdfzp6amcurUKYYMGQLA5MmTmTBhQon3wR1rrcdrb926dan32Ns1AKxZs4b58+eTkZHBiRMn6N69O2PGjCl2DF+3U6oPX5tt9gY+B/YD3ZFCf8eBkUBn4PrKMlBRFOV8ol69egAEBgaSm5sLyMP8ueeeY9SoUYW2jY+PJzk5ma1btxIUFERkZGRB3ZAGDRr4dJ6AgICC985xbm5uid4QT9N3rbV0796dDRs2+HCVpePpPrizdOlSr9fuC56uISsri+nTp7NlyxYuuOAC5s6d6/GYvm6nVC++hqgWAH+31vYCzrot/w9wid+tUhRFUQoYNWoUCxcuJCcnB4C9e/dy5swZUlNTadmyJUFBQaxZs4YDBw747ZyDBw9m+fLl5OXlkZyczLp16+jbty+DBw9m2bJl5OXlceTIEdasWQPAxRdfTHJycoHAycnJ4bvvvvN6/NDQUJo2bVqQX/PGG28UeHN8oSLX7u0anCKlefPmpKenF5pZ1ahRI9LS0krdTqk5+Bqi6g38xsPyI0i7BkVRFKUUMjIyaNu2bcF41qxZPu132223kZCQQGxsLNZaWrRowbvvvssNN9zAmDFjiIuLIyYmhi5duvjN1nHjxrFhwwZ69uyJMYb58+fTunVrxo0bxxdffEFUVBSdO3cuECV169ZlxYoVzJw5k9TUVHJzc7n77rvp3r2713O89tprTJs2jYyMDDp27MiSJUt8tq8i1+7tGpo0acLtt99OVFQUkZGR9OnTp2CfKVOmMG3aNOrXr8+GDRu8bqfUHIwvSVnGmKPAVdbarcaYNKCntfZnY8wVwCJrbbvKNtQTcXFxdsuWLdVxakVRahnff/89Xbt2rW4zFEUpA57+3Rpjtlpr40rb19cQ1XvAI8YYZ6DWGmMikf5U2qpBURRFUZQaha8C5x6gGZAMhADrgR+RTuIPV45piqIoiqIo5cPXZpungUHGmOFALCKMvrHWflaZximKoiiKopQHrwLHGJMHtLHWHjPGLAZ+Z639AviiyqxTFEVRFEUpByWFqDIBZ2e4yUBw5ZujKIqiKIpScUoKUX0FvGuM2QoY4FljTKanDa21t1bUEEcC8wvACCTf50fgQWvtvyp6bEVRFEVRzi9K8uDchBTyawJYIAxo4eXlD+oAh4AhQCgwG3jbMVtLURSl1tOwYcNiy1588UVef/31arDGPzj7WFV0m+ogPj6epKSkgvFtt93G7t27S9xn6NChlFaeZO3atfzqV78qcZtt27bx8ccf+26sUma8enCstUeBewGMMfuBSdbalMoyxFp7BpjrtuhDx3l7AwmVdV5FUZTqZNq0aZV6fGst1loCArS3sjt5eXnEx8fTo0cPwsPDAXjllVeq7Pzbtm1jy5YtXHXVVVV2zvMNn77x1toOlSluPOFo7tkZ8F7rW1EUpZwMHQrx8fI+J0fG//ynjDMyZLx8uYxTU2W8apWMjx+X8QcfyPiXX8pvx9y5c1mwYIHDpqHcd9999O3bl86dOxe0McjLy+Pee++lT58+REdH89JLLwGQnp7OZZddRmxsLFFRUbz33nsAJCQk0LVrV6ZPn05sbCyHDh0qdM7IyEgefPBBBgwYQFxcHN988w2jRo2iU6dOvPjii4AIo3vvvZcePXoQFRXFcsfNsNYyY8YMunXrxujRozl27FjBcbdu3cqQIUPo3bs3o0aN4siRIyVe+7Zt2+jfvz/R0dGMGzeOkydPlngf3Fm7di2DBw9m3LhxdOvWjWnTppGfnw/AnXfeSVxcHN27d+eRRx4pdN2PPfYYgwYN4q233mLLli3ccMMNxMTEkJmZWcg74+0Y3vj3v/9Nly5dGDRoEKucXxRg06ZNDBw4kF69ejFw4ED27NlDdnY2c+bMYfny5cTExLB8+XKP2ykVxKnui76AWUCw23uvL2/HKO8LCAI+A17ysG4qsAXY0q5dO6soiuILu3fvLjQeMsTaJUvkfXa2jN94Q8Znzsh42TIZnzol45UrZZycLOP335fxkSO+2dCgQYNiyx555BH71FNPOWwaYmfNmmWttfajjz6yl112mbXW2pdeesk+/vjj1lprs7KybO/eve3PP/9sc3JybGpqqsOmZNupUyebn59v9+/fb40xdsOGDR7taN++vX3hhRestdbefffdNioqyp4+fdoeO3bMtmjRwlpr7YoVK+yIESNsbm6u/eWXX+wFF1xgk5KS7MqVKwuWJyYm2tDQUPvOO+/Y7OxsO2DAAHvs2DFrrbXLli2zt9xyi7XW2smTJ9t33nmnmB1RUVF27dq11lprZ8+ebX/3u9+VeB/cWbNmja1Xr5796aefbG5urh0xYkTBOVJSUqy11ubm5tohQ4bY7du3F1z3k08+WXCMIUOG2M2bN3sceztG0X2stTYzM9O2bdvW7t271+bn59sJEybY0aNHW2utTU1NtTk5OdZaaz/99FM7fvx4a621S5Yssb/97W8LjuFtu/Odov9urbUW2GJ90BIlJRnfBbwGZDnee9VIwNPl1FfFMMYEAG8A2cCMYiezdhGwCKRVg7/OqyjK+cXata73QUGFxyEhhcehoYXHzZsXHrdu7T+7xo8fD0Dv3r1JSEgA4JNPPmHHjh0FeSypqans27ePtm3b8uCDD7Ju3ToCAgJITEzk6NGjALRv357+/ft7Pc/YsWMBiIqKIj09nUaNGtGoUSOCg4M5deoU69evZ9KkSQQGBtKqVSuGDBnC5s2bWbduXcHy8PBwhg8fDsCePXvYtWsXI0eOBMTr1KZNG6/nT01N5dSpUwV9oCZPnsyECRNKvA9F6du3Lx07dgRg0qRJrF+/nmuvvZa3336bRYsWkZuby5EjR9i9ezfR0dEATJw40atN7pR0jKL88MMPdOjQgYsuugiAG2+8kUWLFhVc5+TJk9m3bx/GmIKGqZ7uhy/bKb5TUg5OB0/vKxMj/etfRRp4XmWt1U9YUZTzinr1pCNOYGAgubm5gHjan3vuOUaNGlVo2/j4eJKTk9m6dStBQUFERkYWdLpu0KCBT+cJCAgoeO8c5+bmOj3mHpH/qgtjraV79+4F3cQriqf7UJodxhj279/PggUL2Lx5M02bNmXKlCkF9wRKvy9AqcfwxRYns2fPZtiwYaxevZqEhASGDh1aoe0U36lQ1pkxpr0x5m1/GQMsBLoCY6y1HqekK4qinG+MGjWKhQsXFvyq37t3L2fOnCE1NZWWLVsSFBTEmjVrOHDggN/OOXjwYJYvX05eXh7JycmsW7eOvn37MnjwYJYtW0ZeXh5HjhxhzZo1AFx88cUkJycXCJycnBy++857CmVoaChNmzYtyK954403Crw5vrJp0yb2799Pfn4+y5cvZ9CgQZw+fZoGDRoQGhrK0aNH+de/vFcaadSoEWlpacWWl+UYAF26dGH//v389NNPALz11lsF61JTU4mIiABEkHo7t7ftlPLjU6uGEmgCXOMPQ4wx7YE7gLPAL25q+A5r7VJ/nENRFKU6ycjIoG3btgXjWbNm+bTfbbfdRkJCArGxsVhradGiBe+++y433HADY8aMIS4ujpiYGLp06eI3W8eNG8eGDRvo2bMnxhjmz59P69atGTduHF988QVRUVF07ty5QJTUrVuXFStWMHPmTFJTU8nNzeXuu++me/fuXs/x2muvMW3aNDIyMujYsSNLliwpk40DBgzg/vvvZ+fOnQUJxwEBAfTq1Yvu3bvTsWNHLrnkEq/7T5kyhWnTplG/fv1CnqeePXv6fAyA4OBgFi1axOjRo2nevDmDBg1i165dAPzxj39k8uTJPP300wXhPIBhw4bxl7/8hZiYGB544AGv2ynlx5Tkhix1Z2N6Ij2pAv1nku/ExcXZ0uoRKIqiAHz//fd07dq1us1Q/MTatWtZsGABH374YXWbolQinv7dGmO2WmvjSttXCyMoiqIoinLOUdEQlaIoiqJUOUOHDtVEXKVEShQ4xpj3S9m/sR9tURRFURRF8QuleXBKq16cAuz3ky2KoiiKoih+oUSBY629paoMURRFURRF8ReaZKwoiqIoyjmHChxFUZQqIjAwkJiYGHr06MGYMWM4deqU38+xdu1afvWrX5Vpn6SkJK699toKn9u9cai35XPmzOGzzz6r8LmqC/eGnBXZpjp45plnyMjIKBhfddVVpX4HIyMjOX78eInbxMfHM2NGsc5KhVi7di1fffWV78b6ARU4iqIoVUT9+vXZtm0bu3btolmzZjz//PPVbRK5ubmEh4cX9LmqbB577DFGjBhRacfPy8urtGPXZvLy8ooJnI8//pgmTZpUyflV4CiKolQBd98NQ4f693X33WWzYcCAASQmJhaMn3rqKfr06UN0dDSPPPJIwfLHH3+cLl26MHLkSCZNmlTgCXH3Ehw/fpzIyMhi59i0aRMDBw6kV69eDBw4kD179gDyi3vChAmMGTOGyy+/nISEBHr06AFI1eSYmBhiYmJo0aIFjz76aIn2zZs3j4svvpgRI0YUHL8kpkyZUiCmIiMjeeSRR4iNjSUqKooffvgBgDNnznDrrbfSp08fevXqxXvvvQdAQkICl156KbGxscTGxhY8MNeuXcuwYcO4/vrriYqKKnbOhg0bct9999G7d29GjBjBpk2bGDp0KB07duT992WycFZWFrfccgtRUVH06tWroAVFZmYm1113HdHR0UycOJHMTFcXoU8++YQBAwYQGxvLhAkTSE9PL/HaP//8c3r16kVUVBS33norZ8+eLfE+uBMfH8/VV1/NFVdcwcUXX1zwuQD8+te/pnfv3nTv3r2gyafzuufMmUO/fv2YN28eSUlJDBs2jGHDhhWc1+md8XYMbyxZsqSgkvX//ve/guUffPAB/fr1o1evXowYMYKjR4+SkJDAiy++yN/+9jdiYmL48ssvPW7nb7QOjqIoShWTl5fH559/zm9+8xtAHpT79u1j06ZNWGsZO3Ys69atIyQkhJUrV/Ltt9+Sm5tLbGwsvXv39vk8Xbp0Yd26ddSpU4fPPvuMBx98kJUrVwKwYcMGduzYQbNmzQp1637llVcAOHDgAKNGjWLKlCle7WvQoAHLli0rt30AzZs355tvvuGFF15gwYIFvPLKK8ybN4/hw4ezePFiTp06Rd++fRkxYgQtW7bk008/JTg4mH379jFp0qQCkbdp0yZ27dpFhw7Fe0OfOXOGoUOH8uSTTzJu3DgefvhhPv30U3bv3s3kyZMZO3ZsgTdt586d/PDDD1x++eXs3buXhQsXEhISwo4dO9ixYwexsbGAiMonnniCzz77jAYNGvDkk0/y9NNPM2fOHI/XmZWVxZQpU/j888/p3LkzN998MwsXLuRuhzL2dB+K4rzGkJAQ+vTpw+jRo4mLi2Px4sU0a9aMzMxM+vTpwzXXXENYWBhnzpyhR48ePPbYYwAsXryYNWvW0Lx582LH9nYMTxw5coRHHnmErVu3EhoayrBhw+jVqxcAgwYNYuPGjRhjeOWVV5g/fz5//etfmTZtGg0bNuSee+4B4OTJkx638ycqcBRFOe945pnqOW9mZiYxMTEkJCTQu3dvRo4cCYjA+eSTTwoeEunp6ezbt4+0tDSuvvpq6tevD8CYMWPKdL7U1FQmT57Mvn37MMYUNOsEGDlyJM2aNfO4X1ZWFhMmTOAf//gH7du357nnnvNq37hx4wgJCQFg7NixZbshwPjx4wHo3bs3q1atAuR+vP/++wXeqqysLA4ePEh4eDgzZsxg27ZtBAYGsnfv3oLj9O3b16O4AemTdcUVVwAQFRVFvXr1CAoKIioqqkDcrV+/nrvuugsQYdi+fXv27t3LunXrmDlzJgDR0dFER0cDsHHjRnbv3l3Qpyo7O5sBAwZ4vc49e/bQoUMHOnfuDMDkyZN5/vnnCwSOp/tQlJEjRxaIjvHjx7N+/Xri4uJ49tlnWb16NQCHDh1i3759hIWFERgYyDXX+NYu0tsxPPH1118zdOhQWrRoAcDEiRMLPovDhw8zceJEjiP8x4MAAA/eSURBVBw5QnZ2ttfPxNftKoKGqBRFUaoIZw7OgQMHyM7OLvAaWGt54IEH2LZtG9u2bePHH3/kN7/5DSX1CqxTpw75+fmACABPzJ49m2HDhrFr1y4++OCDQts1aNDA67GnTZvG+PHjC3JlvNkH4NYYuVzUq1cPkATs3NzcgvOtXLmy4HwHDx6ka9eu/O1vf6NVq1Zs376dLVu2kJ2d7dP1BAUFFdgZEBBQcM6AgIBC5/SGp2u01jJy5MgCG3fv3s2rr77q9Ril9X30dB9Ks8MYw9q1a/nss8/YsGED27dvp1evXgWfc3BwMIGBpbeKLOkY3vD2ud91113MmDGDnTt38tJLL3k9jq/bVQQVOIqiKFVMaGgozz77LAsWLCAnJ4dRo0axePHighyOxMREjh07xqBBgwqESXp6Oh999FHBMSIjI9m6dSuA1wTh1NRUIiIiAMnh8IXnn3+etLQ07r///oJl3uwbPHgwq1evJjMzk7S0ND744IMy3wtPjBo1iueee65AFHz77bcF19OmTRsCAgJ44403/JpQPHjwYJYuXQrA3r17OXjwIBdffHGh5bt27WLHjh0A9O/fn//973/8+OOPgHSKd/coFaVLly4kJCQUbP/GG28UdGL3lU8//ZQTJ06QmZnJu+++yyWXXEJqaipNmzYlJCSEH374gY0bN3rdv1GjRqSlpRVbXpZjAPTr14+1a9eSkpJCTk4O77zzTqFjOb9zr732mtdze9vOn6jAURRFqQZ69epFz549WbZsGZdffjnXX389AwYMICoqimuvvZa0tDT69OnD2LFj6dmzJ+PHjycuLo7Q0FAA7rnnHhYuXMjAgQO9TuP94x//yAMPPMAll1zisxhYsGABO3fuLEg0fvHFF73aFxsby8SJE4mJieGaa67h0ksv9cu9mT17Njk5OURHR9OjRw9mz54NwPTp03nttdfo378/e/fuLdFrU1amT59OXl4eUVFRTJw4kfj4eOrVq8edd95Jeno60dHRzJ8/n759+wLQokUL4uPjmTRpEtHR0fTv399jcrCT4OBglixZwoQJE4iKiiIgIIBp06aVycZBgwZx0003FdzvuLg4rrjiCnJzc4mOjmb27Nn079/f6/5Tp07lyiuvLEgydlKWYwC0adOGuXPnMmDAAEaMGFGQlwRSEmDChAlceumlhXJ9xowZw+rVqwuSjL1t509MaW6zmkxcXJytibUGFEWpeXz//fd07dq1us0oM+np6TRs2JCMjAwGDx7MokWLCj1QlPOD+Ph4tmzZwj/+8Y/qNqVK8fTv1hiz1VobV9q+mmSsKIpSg5k6dSq7d+8mKyuLyZMnq7hRFB9RgaMoilKDefPNN6vbBKUGMGXKFKZMmVLdZtQqNAdHUZTzhtockleU842K/ntVgaMoynlBcHAwKSkpKnIUpRZgrSUlJYXg4OByH0NDVIqinBe0bduWw4cPk5ycXN2mKIriA8HBwbRt27bc+6vAURTlvCAoKKhSqqUqilIzqVEhKmNMM2PMamPMGWPMAWPM9dVtk6IoiqIotY+a5sF5HsgGWgExwEfGmO3W2u+q1yxFURRFUWoTNcaDY4xpAFwDzLbWpltr1wPvAzdVr2WKoiiKotQ2apIHpzOQZ611b+axHSjUrMMYMxWY6hieNcbsqiL7FKE54LkuvFJZ6D2vevSeVz16z6ue2nrP2/uyUU0SOA2B1CLLUoFG7gustYuARQDGmC2+lGtW/Ife86pH73nVo/e86tF7XvWc6/e8xoSogHSgcZFljYHirU8VRVEURVFKoCYJnL1AHWPMRW7LegKaYKwoiqIoSpmoMQLHWnsGWAU8ZoxpYIy5BLgaeKOE3RZViXGKO3rPqx6951WP3vOqR+951XNO33NTk8qWG2OaAYuBkUAKcL+1VjvNKYqiKIpSJmqUwFEURVEURfEHNSZEpSiKoiiK4i9U4CiKoiiKcs5RKwWO9qwqO8aYesaYVx33K80Y860x5kq39ZcZY34wxmQYY9YYY9oX2XexMea0MeYXY8ysIscu977nC8aYi4wxWcaYf7otu97xeZwxxrzryEFzrivxO16Rfc8HjDHXGWO+d9yDn4wxlzqW6/e8EjDGRBpjPjbGnHRc/z+MMXUc62KMMVsd922rMSbGbT9jjHnSGJPieM03xhi39eXe91zCGDPDGLPFGHPWGBNfZF21fKdL2rfGYK2tdS/gLWA5UhxwEFIQsHt121WTX0ADYC4QiQjbXyE1hiKRapapwAQgGHgK2Oi275+BL4GmQFfgF+AKx7py73s+vYBPHPfhn45xd8f9H+z4Hr8JLHPb3ut3vCL7ng8vZJLCAaC/47se4Xjp97zy7vnHQLzj3rQGdgIzgbqOz+L3QD3HsgNAXcd+dwB7gLaOz2g3MM2xrtz7nmsvYDzwa2AhEO+2vFq+06XtW1Ne1W5AOT7oBkhDzs5uy94A/lLdttW2F7AD6f81FfiqyD3OBLo4xonA5W7rH8fxQK3IvufLC7gOeBsRmE6B8yfgTbdtOjm+141K+45XZN/z4QV8xf+3d//BVhZ1HMffH8Ek+ZFSiMqohKUoMwKFRjUkJWNkU1PiTEgzzZQ/UgeHIkz/0Gq0mtQmKvFHzTDZaGVqkZkTVlammRGSOCBk4A/AUEJRAUMFv/2xe+u55557zj333MvhPufzmtm55zz77LN7luU8e/fZvQtnVTnudt5/db4GOK3w/mrge8CpuW5UiNtQuFE+AJxbiDur40bZTNqyBuCrdO7gtKRN10u7r4SB+Iiquz2rJrSoPAOSpNGkulxNqruVHXGR/ibRemCCpIOBw4vxdK7vZtKWnqQRwOXAFyqiKuttPbljQv023kzaUpM0CJgCjJK0TtKm/Ljkjbid96fvALMlHShpDPAhYCmpDh6JfBfMHqGbeqVrnfc2bbtoVZvuNm2ffKo+MhA7OD3as8q6J2l/4EfADyNiLbXrdFjhfWUcTaZtB1cAiyNiY8XxevVWq403k7bsRgP7A2cA04BJwGTgUtzO+9O9pJvbS8AmYDnwCxpvyy8Cw/JcmmbStotWtekB8T0zEDs43rOqCZL2Iz2yeBWYmw/XqtMdhfeVcc2mLbU8IXIGsLBKdL16q9XGm0lbdv/JP6+JiM0RsRX4FnAabuf9In+n3E36S/RDSfMzDgaupPG2PALYkUdtmknbLlrVpgfE98xA7OB4z6peyr/ZLCb9ljsrIl7LUatJddhx3lDSvI7VEbEN2FyMp3N9N5O27KaTJnFvkPQMsACYJWkFXettHGki5WPUb+PNpC213OY2AdVucm7n/WMkcASwKCJeiYjngB+QOpWrgRMqRlVOoJt6pWud9zZtu2hVm+42bZ98qr7S6klAvQnALaSVIkOB99Jmq0SaqLcbgAeBYRXHR+U6nEWaEX8lnWfTf4M0BH0wMJ7U8Gc2m7bsATiQtKKkI3wTuD3XWcdw/rTcjm+m80qobtt4M2nbIZDmPP0NOCS3u/tIjwrdzvuvzh8HLgEGAwcBS0iPwTtWQs0jdcLn0nkl1HmkCcpjSHM+VtN1FVXDacsWcr0OIa1suim/HtyqNl0v7b4SWl6AXv5jjyQ9391JmlU/p9Vl2tcDcBTpt9pdpOHFjvDJHD8DWEsa4v8jMLaQ9gDSHmEvAc8C8yuu3eu07RQorKLK7+fk9rsTuAMYWYir2cabSVv2QJqDcx3wAmlp63eBITnO7bx/6nxSrpNtwFbgNuCQHDcZeCjX2wpgciGdgKuA53O4is6rpnqdtkwhf3dERfhKK9t0rbT7SvBeVGZmZlY6A3EOjpmZmVlN7uCYmZlZ6biDY2ZmZqXjDo6ZmZmVjjs4ZmZmVjru4JiZmVnpuINjZtYkSWMlhaQprS6LmSXu4Ji1EUmjJS2U9E9JuyRtkfSApAslDSuc92S+YUc+b6OkJZI+UuWaUQjbJS2XdPre/WQttxE4DHgYQNL0XB9vaW2xzNqXOzhmbULSWNJfg50JXAa8A/gAaQuJU4CPViS5nHTTPgaYDTwJLJF0TZXLn5PPPRFYCdwm6d19/RlqkfSGvZlfUUTsiYhnImJ3q8pgZp25g2PWPq4HXgemRMQtEfFoRKyKiJ9HxMdI+1cVbc837Q0R8eeI+DxwATBX0vsrzn0hn7uWtEfQLrp2mIBOj3PmSLo/jxCtlXRqxXnHS7orjwptkfQTSYcW4m+U9CtJF0vaRNpksypJUyX9XtJOSS9KukfS4TlupqT7JG2T9LykuyUd10h5i4+ockfyDznq3/n4jT3Jy8z6jjs4Zm1A0kjgg8C1EbGz2jnRs31bFpP2G5rV3QmRdqnfTdoTqparSPtETQJ+C9whaUwu72HAn4BVwEmkfW+GAb+UVPzeOpm0w/RM0ihUF5Imkjoc60ibj04FbiVtVghpU9Jv53ymkzYRvLPKiFC35a2wkf/XzwTSyNa8BvMysyYNrn+KmZXA20mbE/6jeDCPfByU394cEefVukhE7JH0GDCuWrykA4CLgBHAPXXKdH1E3JrTzSN1wM4HLs0/V0bExYVrf4q0qeIUYFk+vAv4TES8UiOfL+ZrnVs4tqbwmX5W8Rk+Tdpg8CTg/h6W939yHT2f326JiK29yMvMmuQRHLP2No00IrEMGNLDNCLtZlx0k6QdwMvAfGBBRPy6znX+0vEiIl4H/gocnw+9E3ifpB0dgTQyAnB04Rqr6nRuIO1I3W1nS9LRkn4sab2kjp2T9wOObKC8PdJAXmbWJI/gmLWHdaROyfjiwYh4AkDSyz25iKRBpEnHyyqiLgKWAi9FxJamS5tu+ncBC6rEPVt4XfVxWwXVib8TeBr4bP65G3gU6I/HRnszL7O25hEcszYQEc8BvyFNEB5W7/waziY90rq94vgzEbGuwc7N1I4XkkR6TNPx6GgFaf7KU/m6xbC9wTKvIK0W60LSm4HjgK9HxO8iYg0wnOq//NUqb6VX889BvczLzJrkDo5Z+7iA9H/+IUln5lVKx0g6E5gI7Kk4f7ikQyUdIek9khYC1wKLIuLePijP+ZLOkHQsaeLtUaSVXuR83gT8VNK7JI2TNEPS9yUNbzCfq4HJOe1EScdKOlvSkaQJ01uBcyS9TdLJwA2kkZVGylvpKdKI2YcljcqdykbyMrMmuYNj1iYi4nHSfJSlwBXA30mjG/OB64DPVST5ErCZ9HjrVuCtwOkRcWEfFemSnPdK0iqoj0fEplzWf5FWPL2ey7ua1Ol5JYcei4iHSauwxgMPkubOzAZey3NpPkFaibUq53FZN3l0W94qeT4NfBn4GumR2qIG8zKzJqlnK0PNzPpG/jsxTwAnRsTy1pamvoFWXjNLPIJjZmZmpeMOjpmZmZWOH1GZmZlZ6XgEx8zMzErHHRwzMzMrHXdwzMzMrHTcwTEzM7PScQfHzMzMSue/XUMcSSdNRIUAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(8,3))\n", "\n", "plt.xlabel(\"GDP per capita\")\n", "plt.ylabel('Life satisfaction')\n", "\n", "plt.plot(list(sample_data[\"GDP per capita\"]), list(sample_data[\"Life satisfaction\"]), \"bo\")\n", "plt.plot(list(missing_data[\"GDP per capita\"]), list(missing_data[\"Life satisfaction\"]), \"rs\")\n", "\n", "X = np.linspace(0, 110000, 1000)\n", "plt.plot(X, t0full + t1full * X, \"r--\", label=\"Linear model on all data\")\n", "plt.plot(X, t0 + t1*X, \"b:\", label=\"Linear model on partial data\")\n", "\n", "ridge = linear_model.Ridge(alpha=10**9.5)\n", "Xsample = np.c_[sample_data[\"GDP per capita\"]]\n", "ysample = np.c_[sample_data[\"Life satisfaction\"]]\n", "ridge.fit(Xsample, ysample)\n", "t0ridge, t1ridge = ridge.intercept_[0], ridge.coef_[0][0]\n", "plt.plot(X, t0ridge + t1ridge * X, \"b\", label=\"Regularized linear model on partial data\")\n", "\n", "plt.legend(loc=\"lower right\")\n", "plt.axis([0, 110000, 0, 10])\n", "save_fig('ridge_model_plot')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [], "source": [ "backup = oecd_bli, gdp_per_capita\n", "\n", "def prepare_country_stats(oecd_bli, gdp_per_capita):\n", " return sample_data" ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [], "source": [ "# Replace this linear model:\n", "model = sklearn.linear_model.LinearRegression()" ] }, { "cell_type": "code", "execution_count": 96, "metadata": {}, "outputs": [], "source": [ "# with this k-neighbors regression model:\n", "model = sklearn.neighbors.KNeighborsRegressor(n_neighbors=3)" ] }, { "cell_type": "code", "execution_count": 97, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[5.76666667]]\n" ] } ], "source": [ "X = np.c_[country_stats[\"GDP per capita\"]]\n", "y = np.c_[country_stats[\"Life satisfaction\"]]\n", "\n", "# Train the model\n", "model.fit(X, y)\n", "\n", "# Make a prediction for Cyprus\n", "X_new = np.array([[22587.0]]) # Cyprus' GDP per capita\n", "print(model.predict(X_new)) # outputs [[ 5.76666667]]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.1" }, "nav_menu": {}, "toc": { "navigate_menu": true, "number_sections": true, "sideBar": true, "threshold": 6, "toc_cell": false, "toc_section_display": "block", "toc_window_display": true }, "toc_position": { "height": "616px", "left": "0px", "right": "20px", "top": "106px", "width": "213px" } }, "nbformat": 4, "nbformat_minor": 1 }