{ "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._\n", "\n", "\n", " \n", "
\n", " Run in Google Colab\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Warning**: this is the code for the 1st edition of the book. Please visit https://github.com/ageron/handson-ml2 for the 2nd edition code, with up-to-date notebooks using the latest library versions." ] }, { "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": 1, "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)\n", "os.makedirs(IMAGES_PATH, exist_ok=True)\n", "\n", "def save_fig(fig_id, tight_layout=True, fig_extension=\"png\", resolution=300):\n", " path = os.path.join(IMAGES_PATH, fig_id + \".\" + fig_extension)\n", " print(\"Saving figure\", fig_id)\n", " if tight_layout:\n", " plt.tight_layout()\n", " plt.savefig(path, format=fig_extension, dpi=resolution)" ] }, { "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": 2, "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": 3, "metadata": {}, "outputs": [], "source": [ "import os\n", "datapath = os.path.join(\"datasets\", \"lifesat\", \"\")" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloading oecd_bli_2015.csv\n", "Downloading gdp_per_capita.csv\n" ] } ], "source": [ "# Download the data\n", "import urllib.request\n", "DOWNLOAD_ROOT = \"https://raw.githubusercontent.com/ageron/handson-ml/master/\"\n", "os.makedirs(datapath, exist_ok=True)\n", "for filename in (\"oecd_bli_2015.csv\", \"gdp_per_capita.csv\"):\n", " print(\"Downloading\", filename)\n", " url = DOWNLOAD_ROOT + \"datasets/lifesat/\" + filename\n", " urllib.request.urlretrieve(url, datapath + filename)" ] }, { "cell_type": "code", "execution_count": 5, "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": 6, "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": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "oecd_bli = pd.read_csv(datapath + \"oecd_bli_2015.csv\", thousands=',')\n", "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": 7, "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": 7, "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": 8, "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": 8, "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": 9, "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": 9, "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": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "GDP per capita 55805.204\n", "Life satisfaction 7.200\n", "Name: United States, dtype: float64" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "full_country_stats[[\"GDP per capita\", 'Life satisfaction']].loc[\"United States\"]" ] }, { "cell_type": "code", "execution_count": 11, "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": 12, "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": 13, "metadata": {}, "outputs": [], "source": [ "sample_data.to_csv(os.path.join(\"datasets\", \"lifesat\", \"lifesat.csv\"))" ] }, { "cell_type": "code", "execution_count": 14, "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": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_data.loc[list(position_text.keys())]" ] }, { "cell_type": "code", "execution_count": 15, "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": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(4.853052800266436, 4.911544589158484e-05)" ] }, "execution_count": 16, "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": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Saving figure best_fit_model_plot\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWAAAADQCAYAAAA53LuNAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3XmYHFXV+PHvmS0JM9kTs5qEkJVICDCyCBKWsCkgkiibiAtERBTfmBBfgZ8IKCKgrwroEwWjAZRFBURUwCQgRJYJJMGYhWxkgSwTEjKTZdbz++NWp2t6unuqp5fqnjmf56kn3dVVdU83zZnbt+4iqooxxpjcKwo7AGOM6awsARtjTEgsARtjTEgsARtjTEgsARtjTEgsARtjTEgsARtjTEhymoBF5FoRqRKROhGZG/Pa6SKyUkT2icgCERmey9iMMSbXcl0Dfhe4DXjAv1NE+gF/Am4C+gBVwCM5js0YY3KqJJeFqeqfAESkEhjqe+lCYLmqPua9fjNQLSLjVHVlLmM0xphcyWkCTmICsDTyRFX3ishab3+LBCwi04HpAOXl5ceMGzcul3EaYzqJxYsXV6tq/2yWkS8JuALYEbPvA6B77IGqOgeYA1BZWalVVVXZj84Y0+mIyDvZLiNfekHUAj1i9vUAakKIxRhjciJfEvBy4MjIExEpBw7z9htjTIeU625oJSLSFSgGikWkq4iUAH8GPiIiU73X/x+wzG7AGWM6slzXgG8E9gPfBj7nPb5RVXcAU4HvA7uA44CLcxybMcbkVK67od0M3JzgtecB69JgjOk08qUN2BhjOh1LwMYYExJLwMYYExJLwMYYExJLwMYYExJLwMYYExJLwMYYExJLwMYYExJLwMYYExJLwMYYExJLwMYYExJLwMYYExJLwMYYExJLwMYYExJLwMYYExJLwMYYE5LAE7KLyEXA6cCHiEncqnp+huMyxpgOL1ACFpE7gW8CC4B3Ac1mUMYY0xkErQF/HrhEVR/PZjDGGNOZBG0DLgKWZDMQY4zpbIIm4Dm4VYyzRkRGiMgzIrJLRLaKyD3ekvXGGNMhBU1wvYBLReQMYBnQ4H9RVb+RgVjuA7YDg7zyngOuAX6WgWsbY0zeCZqADyfaBBG7dHymbsgdCtyjqgeArSLyd2BChq5tjDF5J1ACVtVTsx0I8H/AxSKyEOgNnAPclINyjTEmFCkNxBCRriLyERGZICJdMxzLi7ga7x5gM1AFPBEnhukiUiUiVTt27MhwCMYYkzuBErCIlHp9gXcBS4G3gF0i8iMRKU03CBEpAv4O/AkoB/rhasF3xB6rqnNUtVJVK/v3759u0cYY00p9fW7KCdoGfAdwCXA18JK37+PA7bgkPjPNOPoAw3BtwHVAnYj8BrgNuD7NaxtjTFx79sDKlbBiRctt3brclB80AV8KfElVn/HtWysiO4Bfk2YCVtVqEVkPfFVE7gIqgCtwPS6MMabdVGHbttZJdsUKePfd6HGlpTB6NEycCBddBLfdlv3YgibgnsDaOPvX4rqMZcKFuBtxs4EmYD7wPxm6tjEmZDtr69i8az9De3ejb0WXNvenqqkJNmyIJld/zXb37uhxFRUwfjxMmQLjxrnH48fDyJEuCUfkUwJeCnwD+FrM/uvI0Ag5VV0CnJKJaxlj8suTS7Yw+4/LKC0qoqG5mR9Nncj5k4Yk3J/MgQOwenXrJLt6tXstYsAAl1gvvjiaZMePhyFDQCTLbzigoAn4euAZEZkCvOLtOx4YjOsuZkynl6maXKGV3ZadtXXM/uMyDjQ0c4BmAK7/4zIOH9Qj7v4TR/Wjb0UXdu+O3z67fj00u8MRgREjXGI944xokh03Dvr0CekNpyBoP+AXRWQMrgYcGYjxGHCfqr6b+ExjOocgNblsJclkZe+srWP5u3sAZcLgnqEk58279lNaVHQwyQIUi7Bk025KpIjGmlIadlbQsLOCmt09OGd+EZvWwdat0WuUlcGYMXD00XDZZdFEO2YMdOuW87eUMYHnWvAS7Q1ZjMWYgpSohhepyUGwBJ3psl9aU823Hl1Co5f3SouFuz9zZEbKTcXQ3t2ob1Qa3j/kYKKt3lnBrMf7s3HdaTTXRRtei7o00HxEMWef3bI2e+ihUNIBZ4ZJ+JZE5Ghgiao2e48TUtU3Mh6ZMQUiXg2vtKiIzbv207eiS6AEnemyl7+7h+sfX3ow+QI0NCmzHs9MuYns3w+rVrmmgsVLG1n6VjNbNpSy7u2zaGyINrwWVxxge79aTj+vjKU1qzmk/z6K+9Zw9xVj+dRRqf+ByOcmmGSS/U2pAgbiJsipws35EK/pWoHizIdmTGEY2rsbDc3NLfY1NDcztLf7bdxWgs5G2aAUSxGuQ1FUcZFkpNz334/f22DDBtftCwAppqx3HaV9dzH506WsOLCF5h57KO1bS1HXRrp3KeHOK49jaO9RaSXPbP26yIVkCfhQYIfvsTEmjr4VXfjR1IlcH5MEIsmkrQSdjbInDO5Jkza3Or6pWQOXqwqbN8e/EbZ9e/S4Ll1g7Fg49li44goYemgDt738Cs3da5ESF8OmEqECoc5XJY98Bn0rurT7D0I2f13kQsIErKrv+J8Cm1S11cxnIjIsG4EZU0jOnzSEE0f1i1uTaytBpyr253aisu+cdiQzYtqA75zWutzGRli7tnWSXbkSamujx/Xq5dpkzz23Zbeu4cOh2PcbeOmmvVSs3UdNXTTZlhUXM/3kkdy7cA2lRUXUNzXxtVNGtev9+2Xz10UuSJyc2vogkSZgkKpuj9nfF9iuqqE0QVRWVmpVVVUYRRuTsva2U/rPe2lNdUo/tyO9IPbsr6dUSymt7cV775S1SLRr1kCDb4bvIUNaJtjIjbABA4L1n91ZW8eJd8znQEM0KXYtLeLl2acB8NCrG7l3wRrKitNvMkhWVroJWEQWq2plWhdpQ9D7ikL8eX8rgANx9htjYrTnp7a/fbO+qYlmdTfTkv3crq7212S78OJr3Vm2vJnGDw45eExxMRx2mEuun/pUdETYuHHQo0f67zNRjX9nbR33LVxDXWPzweaIdJoMMv3rIteSJmARiaxGocDtIrLP93IxcCy2VpwxWRGvfTNCFZr2dOPAnp788M5m9myNJt3q6uhx3bopzT3rKBtcS/kRmyjtW0vFwH28/P1jGdw3e0kqUbNINpoMkjX/5Lu2asBHeP8KMB7wT9JWD7wB3JWFuIzp9Dbv2k+xFlNffQiNXv/Zg9v75WiD+9/3Ltyor/Hj4YILWjYd7JIPuHjOIuqaoj9gy4qFHfv2ZzUBQ/waf7ZuSKZzIy9MSRNwZCUMb2rI61R1T06iMqaTqa1t3dvgP8t7sGbtFGiOTttd0mM/Zf1q6T5iNyV9arhu6gCuPL8/iabGbtxW3CL5AtQ1KeVl4fQcLfQmg0wL2gb8v0AP3GoVB4nIUKBBVbdlOjBjOhpV2LEj/rSImzdHjyspgVGj4IiPFDHp5Bpeql5Hef99FPWp4a5LJng/t0sZ2ntgm4lrb30TXUuLWt2k2lvflOSs7CrkJoNMC5qAHwQeAX4Vs/8s4CLgzEwGZQwU7uim5mZ4553WXbpWrHADGCK6HaKMGaucckrRwRtg48e75BudFrE7O2vHtfocgn4eiX7aZ6IPcjoKtckg04Im4EpaT0UJ8C/gzsyFY4xTCKOb6urg7bdbJ9lVq9yQ3Ij+/V1inTbN/bu7rJp5K9+iW696Dmgzn2njvaWTrOwnf34LmoBLgHj/xbom2G9Mu+Xb6KY9e1oPuY0sW9Pk+yU/fLhLsKee2vJGWN++0WNcv9XXaTqkmVrvlna235v95M9fQRPwq8BXvc3va8DrGY3IdHphjG5q77I1kSQ7diwcckji60eENXLLfvLnp6AJ+AZgvohMxC0VBHAacBQwJRuBmc4rm3MnxC5b428+SLRsjb82O3JketMiZvO9mcITdEL2V0TkBGAWbu02gDeBa1R1abaCM51TJtot/cvW+LfVq13bbURk2ZpLLqHFjbBsLVtjbbLGL9BcEPnK5oIIplB7EwSJe/fu+L0NYpetOfTQlgk2svXuncM35FOo/006k3yaC+IgERkIlPn3qerGjEVkMqoQehMkEmm3VIUtW+LfCCvUZWusTdZAwAQsIj2BnwGfJSb5ejI2rEZELga+CwwDtgJfUNV/Zer6YQirtpNvvQna0tjoaq7x2mf3+IYA9ejhEqt/2Zrx410ttzjON3FnbR2rN1lt0+SfoDXgu4AjgQuAPwFfAobglqX/VqaCEZEzgDtwgzteAwZl6tphCbMGmq9zpfqXrfFvb78N9b7ZRgYNcon18stbJtqBA4O3z7b387cmApMLQRPwOcAlqvovb27gxar6iIi8B3wFeDxD8XwPuEVVX/Geb8nQdUMRdg007Dvu/mVr/LVZ/7I1RUWuZ8H48fDJT0bbaceNcxOAp6O9n38hN9uYwhI0AfcCIitkfAD0BdYA/wZ+nYlARKQYN+LuKRFZgxvk8QQwS1X3+46bDkwHGDYsvxfjyFQNtL21sVzccY8sWxNvfTD/sjVdu7q+sscd55atidRmR492r6Ui6OfRns8/7D+apnMJmoDXAiOBjcAK4GIReQ3XJe39ZCemYABQCkwDPg40AE8CN+L6IQOgqnOAOeB6QWSo7KzIRA003dpYpkZBNTS4ZWtib4K1d9ma9krl82jP55+vzTamYwqagOcCE4GFwA+Bp4FrgSJcO3AmRGq5P1fV9wBE5MfEJOBCkm4NNFO1sVTuuO/dG799Nt6yNaPGNHPetAaOOrKIj04qZfx4+NCHstN/FlL/PNrz+YfdbGM6l6ADMX7iezxfRMbhmgveVtW3MhGIqu4Skc20XPoor2u4QURqoMvf3QMoEwb3DHxuNmtj1dXwyuJ6Xn2zkR2by9iwpoQVK2Cjr0Nh7LI1/mG3C9a5mujOoiLe2NnM2F4TGTAgu+2k7fk8Uv0FYAMlTC4lTMD+hThF5AHchOw1cLDfbzb6/v4G+LqI/B3XBPE/uNp2QUt1IcWIdGtjzc2waVP8G2Fu2ZoyoAwpaeLQUfWcdFJZi0UYR492fWtjhdVO2t7PI9U+tzZ5jcmVZDXg/bhFN7cDVwCzgZosx3Mr0A9YjVvs81Hg+1kuM6vSSVZBa2P19a6JIPZG2MqVsM+3il/fvi65nnNuE3/fvBrpVUNpv1qKe+yntKyInwVcSTbMCWVyVTu1gRImF5Il4EXAEyKyGLcm3M9EZH+8A1X1S5kIRlUbgGu8rUNIN1n5a2M9S7qxY3MX5s1rWaNdu9YNYogYNszVYK+6quWNsMiyNUs31fDmrzdSUxc9KZWYwmwntdqp6UiSJeDLgZnAKFxbbF+gLsnxJo5Uk5Wq677VsrdBF1as6BJ32ZrDD4epU1u2z1ZUZDamWGG3k1rt1HQUgSbjEZH1QKWq7sx+SMEVymQ8Ty3Z0ipZnTtxSKtlayLbrl3Rc8vLW08gM368uzkWXbYmMzGlOtjARouZjiwXk/G0ezY0ESn1mgxCUwgJOLJszWtvNlC1pJGtG8tY93Yxq1a5KRMjIsvW+Ldx42DoUDdaLBssgRqTWN7MhiYi3wC2qOofvef3A1eIyFrgfFVdlcUYC0Jk2ZrYG2HRZWtKgVJGjHDJ9fTTW9Zs/cvW5Ir9lDcmXEEHYnwDNwEPInIybla0S4GpwN3AuVmJLs+ouukP4w27zeSyNfnCasjGZFfQBDwEWO89Pg94TFUfFZG3cCsjdyiJlq1ZsQI++CB6XPfurhab6WVr8oFNSGNM9gVNE3uADwGbgDOILkXfgJs0pyClumzNpZe2TLSDB2dv2G2YbEIaY3IjaAJ+FviViLyB65b2N2//BKI147wVu2xNZFu/Pjoton/ZmrPOarl8TWdbtsYmpDEmN4Im4K/hRqQNA6apamQGtKOB32cjsFSpunbYeDfC/MvWdOnilqiprITPfS5/l63JdROAP9nbhDTG5EZBL8o5dGilTplSFXfZmp494y/CmGjZmnyys7aOE++Yz4GGaBLsWlrEywGHCqcqXrIH0u4nbEwhC7Ubmoj0idR0RaRPsov4asQ5tWULPPts+svW5JtcNgEkau99efZpvDz7NOsFYUwWJWuC2CEig1R1O1BN/KkhxdsfSp1y0iR4880wSs6uXDYBJEv2R364lyVeY7IoWQI+jehqF6eRh3Pz5ntTQnvlcq4Fa+81JjwJE7CqvuB7vDAn0ZiDcjXrV9gT6xjTmQUdinxwcvaY/X2B7araQeui4crVUGGb4tGYcATthpbodlYXoD5DsZgQ2bwQxuRe0gQsIjO8hwpcLSK+9W8pxq1evDJLsRljTIfWVg34696/AlwJNPleqwc2AFdnPixjjOn4kiZgVT0UQEQWABeq6q5kxxtjjAku6LL0p2Y7EGOM6WwCT5ooImOAabj5IFosVp6pRTm9ckYDbwGPq+rnMnVdY4zJN0G7oX0S+CPwJnAM8DpwGK4XRKbnA77Xu74xxnRoQVcbuwX4nqqegFsZ+XJgBPA8sDBTwYjIxcBu4J+ZuqYxxuSroAl4LPCI97gBOERVD+AS8zczEYiI9PCuN6ON46aLSJWIVO3YsSMTRRtjTCiCJuAaoitfvIeblB1cE0ampiu/FbhfVTcnO0hV56hqpapW9u/fP0NFG2NM7gW9CfcqcBLwX+CvwN0iciTwaeDf6QYhIpOAKcBR6V7LGGMKRdAa8AzgFe/xzbgliqYCa3ADNNJ1Cq5NeaOIbAVmAlO9JZDyxj33wKhRbuWMs88GawExxqQjUAJW1XWqusx7vE9Vv6qqE1V1mqpuzEAcc3C9KiZ52y9xNe2zMnDtjLjhBrjrLpgzB159Fdatg+uvz30ct9/uJpq/9trkxzU1wU03uRVAunZ1/954IzQ2Ro+5+WZ3Lf82cGBWwzfG+ATthtYfQFV3eM+PAC4Clqtq2mvCqeo+YJ+vvFrgQKS8sFVVucS3aBEcf7zbd+21cNttuY3jlVfcH4CJE9s+9o474N574be/hSOOgGXL4Ior3Jp4N90UPW7sWFi4MPq8o86xbEw+CtoG/CgwD3hARPoBLwLvAl8XkcGqencmg1LVmzN5vXTddRecfHI0+QL07w/V1bmL4YMP4LLL4IEH4Hvfa/v4RYvgvPPcBjBiBJx/vqu9+5WUWK3XmLAEbQOeSLQNeBqwRlUnAJ8HvpKNwPJFQwP85S9w4YUt9+/f7xb+DOoHP4CKiuTbv5IMaZk+HaZNg1MDDgo/6SRYsMAtVgrw3//C/PnwiU+0PG7dOhg82DVRXHyxe26MyY2gNeBuQGQqyinAU97jN4APZzqofLJkCezbB7Nnw3e+E93f0ABHeX02nn4avvUtaG52x10Z57bk1VfDZz+bvKwhCRYd/tWvYM0aePDB4HHPng01NXD44a5ZobHRtWNfc030mOOOg7lz3crR27e7JpWPfQyWL4e+fYOXZYxpn6AJ+G3gQhH5I3AmcKe3fwBu5FqHtWoVlJXBW2+13H/JJXDiiS6xzZjhaps9e8Ixx8CnP906gfXp47b2lP+d78BLL0FpafDzHnkEfvc7ePhhmDDB/SG57jpX0/3yl90x55zT8pzjj4eRI1278Yykw2GMMZkQtAnie8AduPl/X1HVSEviWbj5ITqsDz6Afv1c97PI1quXS2jTpsFrr7kEN2SIa0Y45xx49tnW12lvE8S//+3amidMcO21JSXwwgtw333ucV1d/LhnzYKZM12zwhFHwOWXu6R6++2J32tFhSvn7bfb91kZY1ITdDrKP4nIMGAwsNT30vO4SXo6rH793E/55mYo8v5c3X47nHCC2x5/vGXTwZAhsGVL6+u0twniggugsrLlvi9+EUaPdjXjsrLW54BrNont0VBc7N5HIgcOuDbjoO3Mxpj0BJ6OUlW3Adti9r2a4PAO47TTXDPD97/vapGPPw7z5sHLL6d2nfY2QfTq5Ta/8nJ3rY98JLrvnnvcFrnpdt558MMfuiaHCRPgzTfhxz+Gz38+es7Mme64YcNcG/Ctt8Leva67mjEm+4I2QXRa/fu7ttRf/9rd0HruOdcEMHq0e33w4JY13i1b3L5cq6527cURP/+5ayK55hoYP97dJLzqKveHJGLzZteWPXas6+XRpYvrazx8eO7jN6YzElUNO4Z2q6ys1KqqqlBjaGx0CW7hwuhNuEWLrBeBMYVORBaramXbR7Zf4CYIE19JCdx9t2s3bW52w5Mt+YZjxAjo0cO11ffu7XqmGJPPLAFnwPnnu82Eb9Ei15vDmEIQuA1YRAaIyEwR+YU3HBkROVFEDs1eePnFZkMzxmRSoAQsIscAq4DLgC8DPbyXzgC+n+i8jqTQZkOrqYFvftPdUOvWzY1wez1mpb0XX3Q19yFD3DXnzs1OzEHLue++6OxtxxyTfGh2PCIweTJ89KPw0ENph21M1gWtAd8F/FRVj8KtCRfxD+DEjEeVZyKzof3hD65b2sSJLgH+9a+5jSOV2dCuvBL+8Q83qu2tt+DMM2HKlJY9NmprXVe2n/7UJekgFi2KP/hj/XrYsCH+OUHKeeQRN1LvO99xXeY+9jE3qGWjb7LTSZPcdWK3d991r7/0EixeDE895Qa+LFsW7D0ZExpVbXMD9gAjvcc1vscjcNNGBrpOprdjjjlGc+Gii1QnT2657+GHVUVyUryqqu7erTpypOr8+S6Wr30t8bH79qkWF6s+8UTL/UcfrXrDDfHPKS9X/c1vksfQ3Oyuce65qvX10f0bNqgOH646a1bb7yNROcceq3rllS33jRql+u1vt33NeGbObPv9GJMMUKVZzmFBa8D7ib/22zhge5p/A/JaIc6G1tjoJmTv2rXl/m7dXC2xvUTgmWfcUOWLLnLlbN7sfhWccELyYc7J1Ne7muuZZ7bcf+aZrsYdxN69rtkFXI17/nw3AMWYfBa0F8STwHdF5DPecxWREbj5ITr0UOQgs6EFkcvZ0Lp3dwnxttvcT/SBA+H3v3fzSowa1fb5yQwY4JLb5Mnu/fznP65pYN689k/mXl3t/mAMGNC6rOefD3aNbdvcJEjgrnXVVa4t2Jh8FjQBzwSeAXYAhwAv4WZCexm4MTuh5Ye2ZkMD9z/+woVw+uluqHI8uZ4Nbd48+NKXYOhQlxiPPtrFvHhx6jHEGjzYtYdXVsKgQe6GV0nIHRpHjoSlS9s+zph8EnRNuD2qehJwATAb+ClwtqpOVtW92QwwbG3Nhgbu5tHvfpf8OrmeDe2ww9xxtbWwaZObta2hwSWqdFVXwxe+AGed5f4oXH118kl+2tKvn/sjsW1by/3bttlqHaZjS1hvEZEmYJCqbheRB4DrVHU+MD9n0eWBtmZDAzjllJbrqsWT69nQIsrL3bZrl+sV8aMfJT++Le+/D2ec4WJ98knXq2LyZPjKV1wPDZHUr1lW5rqdPfccfOYz0f3PPQdTp6YXrzH5LNkPx/1ABe4m2xW4mm9NLoLKJ4U6G9o//uH+aIwb59qPZ81yj7/4xeg5tbXuNXDHbtzoavZ9+rgZ0mKpwic/6YZaP/GEm7xn5Mhom/CNN7ac7CeVcmbMcJ/vsce6pp1f/tJ1L7v66tQ/M2MKRqLuEcCzwDLgN0Az8HvggXhbJrpjAF2A+4F3cIl+CXBOsnNy1Q3tscdUhw1T7dZN9cwzVf/739bHLFigOnVqTsKJ2w3tu99VhejzRx5x3dbKylQHDnTH797d8pwFC9w5sdsVVyQu+7nnVPfubb1/5UrVVavinxO0nHvvdd3Zyspcd7cXXkgchzHZRg66oSWcDU1EBuBuvo0Czgf+SctBGP4kfl66fwhEpByYBcwFNgKf8JL+Eaq6Id45+TAbWsTCha4GmugmnDGmsIQ6G5q6CdhneYGsBy5R1Z3ZCkTdzbybfbue9so9BrcUkjHGdChBlyTK+YQ7Xg18DLA812WnasoU1wVq717X7euxx6I36IwxJpFkvSBmAPep6gHvcUKq+uNMBiUipcBDwG9VdWXMa9OB6QDD4t0pCkHQwQLGGOOXrA14PVCpqju9x4moqmagd+nBcouAh3Ezrn1KVRsSHZtPbcDGmI4l7DbgQ+M9ziYREVxPiAHAJ5IlX2OMKXRpLcopIsNF5NFMBQP8AhgPnKeq+zN4XWOMyTvprorcC8jIWCURGQ58BZgEbBWRWm+7LBPXN8aYfJM3a8Kp6jtAOwayGmNMYUq3BmyMMaadLAEbY0xIkjZBiMhTbZzfo43XjTHGJNBWG3BbQ493Asn6CBtjjEkgaQJW1S8me90YY0z7WRuwMcaExBKwMcaExBKwMcaExBKwMcaExBKwMcaExBKwMcaExBKwMcaExBKwMcaExBKwMcaExBKwMcaExBKwMcaExBKwMcaExBKwMcaExBKwMcaExBKwMcaExBKwMcaEJK8SsIj0EZE/i8heEXlHRC4NOyZjjMmWvFmW3nMvUA8MACYBfxWRpaq6PNywjDEm8/KmBiwi5cBU4CZVrVXVl4CngMvDjcwYY7Ijn2rAY4BGVV3t27cUmOw/SESmA9O9p3Ui8p8cxZdp/YDqsINoh0KNGyz2MBRq3ABjs11APiXgCmBPzL4PgO7+Hao6B5gDICJVqlqZm/Ayq1BjL9S4wWIPQ6HGDS72bJeRN00QQC3QI2ZfD6AmhFiMMSbr8ikBrwZKRGS0b9+RgN2AM8Z0SHmTgFV1L/An4BYRKReRE4FPAfOSnDYnJ8FlR6HGXqhxg8UehkKNG3IQu6hqtssITET6AA8AZwA7gW+r6sPhRmWMMdmRVwnYGGM6k7xpgjDGmM7GErAxxoSkIBNwmHNGiMi1IlIlInUiMjfmtdNFZKWI7BORBSIy3PdaFxF5QET2iMhWEZmRqXNTiL2LiNzvfWY1IrJERM4phPhF5EERec+7xmoRubIQ4vZda7SIHBCRB337LvX+W+wVkSe8eyCR15J+x9M5N4WYF3ox13rbqkKJ3bvWxSKywrvWWhH5uLc/f74vqlpwG/B74BHc4I2TcAM2JuSo7AuBC4BfAHN9+/t5cXwG6ArcCbzie/124F9Ab2A8sBU4O91zU4y9HLgZGIH743surp/1iHyPH5gAdPEej/Op/RoeAAAH4klEQVSucUy+x+271rPetR70vZ8a4GTve/ww8Icg3/F0zk0x5oXAlQn+W+R77GcA7wDH477rQ7wtr74vOUuamdpwSaQeGOPbNw/4YY7juI2WCXg6sCgmzv3AOO/5u8CZvtdvjXzx0jk3A+9jGW4OjoKJHzdE9D3gs4UQN3Ax8Cjuj18kAf8AeNh3zGHe97p7W9/xdM5NMe6FxE/AhRD7IuDLcfbn1felEJsgEs0ZMSGkeCImeHEAB/s1rwUmiEhvYJD/dVrGnM657SYiA3Cf5/JCiF9E7hORfcBKXAJ+Jt/jFpEewC1A7M/R2LLX4iUf2v6Op3Nuqm4XkWoReVlETimE2EWkGKgE+ovIGhHZLCL3iEi3OOWH+n0pxAQcaM6IEFR4cfhF4qrwPY99Ld1z20VESoGHgN+q6spCiF9Vr/HO+zhu0E5dAcR9K3C/qm6O2d9W2cm+4+mcm4rZwEjcT/c5wF9E5LACiH0AUApMw31XJgFHATcGKB9y+H0pxAScr3NGJIur1vc89rV0z02ZiBThftrVA9dmIIacxa+qTeqmKh0KfDWf4xaRScAU4CdxXm6r7GTf8XTODUxVX1XVGlWtU9XfAi8DnyiA2Pd7//5cVd9T1WrgxwFjhxx+XwoxAefrnBHLvTiAg/MbHwYsV9VduJ/MR/qO98eczrkpEREB7sfVEqaqakMhxe9TEikjj+M+BXeDc6OIbAVmAlNF5I04ZY8EuuC+3219x9M5Nx0KSL7H7v232+zF6489Xvnhfl9SbdzOhw34A+5uaTlwIrntBVGCuwN6O64W2dXb19+LY6q37w5a3iH9IfAC7g7pOO8/VuTuarvPbUf8vwReASpi9udt/MCHcDeyKoBi4CxgL3B+nsd9CDDQt90FPO6VOwH3c/vj3vf4QVr2Bkj4HU/n3BRi7+V9zpHv92XeZz4m32P3rnML8Lr33emN651wa759X0JPpu1MIn2AJ7wvxEbg0hyWfTPur6l/u9l7bQruBtF+3B3kEb7zuuDmudgDbANmxFy33eemEPtwL94DuJ9Mke2yfI7f++K/AOz2rvEWcFUmys7F5x7z3XnQ9/xS7/u7F3gS6BP0O57OuSl85q/jfkLvxv3RPqMQYveuUwrc58W+FfgZ0DXfvi82F4QxxoSkENuAjTGmQ7AEbIwxIbEEbIwxIbEEbIwxIbEEbIwxIbEEbIwxIbEEbEwIRGSEiKiIVIYdiwmPJWCTlIgMEJGfiMjb3uTc20VkkYh8XUQqfMdt8BKKesdt8ibWPi/ONdW31Yib4P7C3L6z0G3CzZ61BEBETvE+j37hhmVyyRKwSUhERgBvAGcDNwFHA8fh5nQ9HTcU2O8WXFIZgxs6vAH4s4jcE+fyV3nHfhQ3bd9jInJCpt9DMiJSlsvy/NRNKrRVVRvDisHkgXSGVtrWsTfgb7iaWnmC18X3eAMwM84x03HDn0/17VNgmu95KbAPuD1BOSO8cy4FXsINpV6Jb/Jr77jDgb/ihs9ux80pMND3+lzgadw0i5uB7Une+/HAfNyQ2A+8x4O9187GzS2wC3gf+AcwPpV4fcdU+h77t7lByrKtsDerAZu4RKQvbjKWe9VNPN2KehmiDffjksfURAeom5GtAZeIk/kRbkz/JOA54EkRGeLFOwh4EfgPcCxuzH6Fd4z/ez4ZmIhLbKfHK0REjgQWAGtwE8Icj1smp8Q7pBz4P6+cU3AJ+i9xatQJ442xiejnMwH3y+C6FMsyhSjsvwC25eeGa2pQ4NMx+zcTncTnl779G4hTA/ZeewV4xvf8YA0YN4HJjd6+cxKcP8J7/QbfviLc9IW3ec9vAf4Zc15v77xjvedzgR14a8slee8PAf9O4bMqB5qAk1KIN3JMpff8FO95v1TKsq2wN6sBm1RFVhh4DTclXxBCy7lZAeaJSC2u6WEGLnn/rY3r/DvyQFWbgVdxzQ7gFug8WaIr+Nbiapbg5myN+I+q1rVRzlG4Jof4b0bkMBF52FtpNzLzVREwLIV4A0mhLFOASto+xHRSa3BJc5x/p6quB/DWZmuTtz7XGFzC9psF/B3Yo6rb047WJaW/4iY9j7XN9zhuc0qKnsb9EvgKsAVoBP4LZKNZIJdlmRyzGrCJS1V34pZSv9bf3awdrsRN7v14zP6tqromxeR7fOSBt7LHscAKb9cbuPbTd7zr+rdUl7R5Ezgt3gte2/g44Aeq+ryqrsCt+xWvMpMs3lj13r/F7SzLFCBLwCaZa3DfkcUicomIHC4iY0TkEtxyK00xx3cXkYEi8mER+ZiI/AS4F7hHVV/IQDxfFZFpIjIWd2NqOPAL77V7gZ7AIyJynIiMFJEpIjJHRFJd1PFO4Cjv3CNFZKyIXCkiw3A3FKuBq0RklIhMxq0yEq87WbJ4Y72D+8XxSRHp7/3RS6UsU4jCboS2Lb833FI6P8U1SdThbr69Dvwv0N133AaiXajqcD+bnwDOj3PNFt3QAsQwwjvnMmARrlvXKmJu2gGjcTXtXbgVC1YBPwfKvNfnAk8HLPMkXK+K/bhVFZ4HBnmvnYbrbXHA+/cs73P5QtB4ibkJ5+27CbeMTTPRbmhJy7KtsDdbEcPkPW9AyHrgo6paFW40bSu0eE14rAnCGGNCYgnYGGNCYk0QxhgTEqsBG2NMSCwBG2NMSCwBG2NMSCwBG2NMSCwBG2NMSP4/lZxJo8AfWPUAAAAASUVORK5CYII=\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": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "22587.49\n" ] }, { "data": { "text/plain": [ "5.96244744318815" ] }, "execution_count": 18, "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": 19, "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": 20, "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": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_data[7:10]" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5.766666666666667" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(5.1+5.7+6.5)/3" ] }, { "cell_type": "code", "execution_count": 22, "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": 23, "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": 24, "metadata": {}, "outputs": [], "source": [ "oecd_bli, gdp_per_capita = backup" ] }, { "cell_type": "code", "execution_count": 25, "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": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "missing_data" ] }, { "cell_type": "code", "execution_count": 26, "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": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Saving figure representative_training_data_scatterplot\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjgAAADQCAYAAAAK/RswAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzsnXd4U2X7xz+ne9HSlj0KlFHoBkoBoQwRUBmyhyAiomwUxIEDUfT3IiAKCL5MEUH0ZYq4AAHZUwEREZQps3vQnTy/P54mbaEjLWmTludzXb16npOTc+6kTfLNPTUhBAqFQqFQKBTlCRtLG6BQKBQKhUJhbpTAUSgUCoVCUe5QAkehUCgUCkW5QwkchUKhUCgU5Q4lcBQKhUKhUJQ7lMBRKBQKhUJR7lACR6FQKBQKRbmjVAWOpmnjNU07pmlamqZpK++6rZOmaWc1TUvWNG2Xpml1StM2hUKhUCgU5YfS9uBcB94DVuTcqWlaJWAj8BbgBRwDvi5l2xQKhUKhUJQT7ErzYkKIjQCapoUBtXLc1Af4QwixLuv26UCUpmmNhRBnS9NGhUKhUCgUZZ9SFTgFEACcNCyEEHc0Tfsna38ugaNp2vPA8wCurq7NGzduXJp2KhQKhULxQJOSIn87O8vff/4JHh5Qo4Zc//YbVKkCNWvKdWQkVKgATk7muf7x48ejhBCVCzvOWgSOGxB51754oMLdBwohlgBLAMLCwsSxY8dK3jqFQqFQKB4g0tPBwUFuz54NtrYwebJcN2oEISGwbp1cjx0LLVrAM8/IdWKiFDQlhaZpl005zloEThLgftc+dyDRArYoFAqFQvHA8OuvcPky9O4t1/37w7//wsGDcr1vHzg6Zh+/bBlUzuE/WbQo9/lKUtwUBWsROH8ATxsWmqa5AvWz9isUCoVCoSgmer0ULD4+cr18OXz7LWzeLNeLFsGWLdkCp2dPiIvLvv/mzaBp2et27UrH7vultMvE7TRNcwJsAVtN05w0TbMDNgGBmqb1zbp9GnBKJRgrFAqFQlE0fv8d3n0XMjLk+r33oG7d7NyZ1FQpYAy3T5smvTgGnnoKJkzIXucUN2WJ0i4TfxNIAV4DhmZtvymEiAT6Au8DsUBLYFAp26ZQKBQKhdWTkgJHjshcF4Dt22VezMWLcv3bbzB9ugw7gfTILFkCQsj1uHGwezfY28u1jw/UylnXXE4oVYEjhJguhNDu+pmeddsOIURjIYSzEKKDEOJSadqmUCgUCoW1IATodHL76lWYOBFOnZLrgwehZUs4fFiuK1WC4GDIzJTrfv0gKQkaNJDr0FAYORJcXEr3MVgaNapBoVAoFAoLkp4O338PZ7OSMq5eBW9v+OILudbr4bPP4Px5uW7eHDZtgqZN5bppU1i/Hho2lGsXlwdPzORFuRQ4tra2hIaGEhISQrNmzThw4IBZzjty5EjOnDkDQN26dYmKijLLeQ1omsbQoUON68zMTCpXrkz37t2Ldb4tW7Ywc+ZMc5lXaty8eZNBgwZRv359mjdvzuOPP86SJUvyfR5K+u9iKnnZfe7cObOce/r06cyZM6fQ4+rWrUtQUBDBwcG0b9+ey5dNqqYsEitXrmT8+PF53ubm5gbA9evX6devn9mvrVCUVdLTITZWbuv1MHQorMjq6S8E9OgBX34p19Wrw8CB2R4YHx9ISIC+feXawwN69ZIiSJE/1lJFZVacnZ05ceIEAD/99BNTp07ll19+yXVMZmYmdnZFe/jLli0zm4154erqyunTp0lJScHZ2Znt27dT09ApqRj07NmTnj17mtHCkkcIQe/evXn66af56quvADh58iRbtmzJ9z4l/XcxhfzsvnXrFo0aNSpVW3bt2kWlSpV4++23ee+991i6dGmpXh+gRo0arF+/vtSvq1BYC+vXg52dFCIA9etD585S1NjYwKVLYPgu5ugIhw5lCxo7O/j00+xzldUkX0tTLj04OUlISMDT0xOA3bt3ExERQc+ePfH39wegV69eNG/enICAAJYsWQJIz0doaCihoaH4+flRr149ADp06EBJNxZ8/PHH+e677wBYu3YtgwcPNt52584dRowYQXh4OE2bNuWbb74B4KOPPmLEiBEA/P777wQGBpKcnJzrm/atW7fo3bs3ISEhhISEGL1ac+fOJTAwkMDAQD7++OMSfWymsGvXLuzt7Rk9erRxX0hICBERESQlJdGvXz8aN27MkCFDEFkZc/n9XVavXk14eDihoaGMGjUKnSGgXcp2T5s2zfj/VLNmTZ7J6oaVn30//vgjzZo1IyQkhE6dOhnPd+bMGTp06ICvry/z588v1KbWrVtz7do14zq/67m5uTFp0iQCAgLo1KkTkZGy52bO5zUqKoq6desa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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": 28, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/ageron/.virtualenvs/ml/lib/python3.6/site-packages/numpy/lib/nanfunctions.py:1431: RuntimeWarning: overflow encountered in multiply\n", " sqr = np.multiply(arr, arr, out=arr)\n", "/Users/ageron/.virtualenvs/ml/lib/python3.6/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": 29, "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": 29, "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": 30, "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": 30, "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": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Saving figure ridge_model_plot\n" ] }, { "data": { "image/png": "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\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": 32, "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": 33, "metadata": {}, "outputs": [], "source": [ "# Replace this linear model:\n", "import sklearn.linear_model\n", "model = sklearn.linear_model.LinearRegression()" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "# with this k-neighbors regression model:\n", "import sklearn.neighbors\n", "model = sklearn.neighbors.KNeighborsRegressor(n_neighbors=3)" ] }, { "cell_type": "code", "execution_count": 35, "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": [] } ], "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.10" }, "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 }