{ "cells": [ { "cell_type": "markdown", "id": "e4f267ab", "metadata": {}, "source": [ "# Laboratory Session 1: Machine Learning Landscape\n", "\n", "## Introducción\n", "\n", "Para la presente sesión (Machine Learning Landscape) el alumno explorará el uso del entorno Jupyter para el análisis de datos y programación enfocada a la ciencia de datos. \n", "\n", "En esta sesión aprenderá los conceptos básicos de los módulos `Numpy`, `Pandas`, `Matplotlib` y `Sklearn` a través del desarrollo de **un modelo lineal para determinar el nivel de satisfacción de vida a partir del parámetro GDP**. En consecuencia, el modelo desarrollado utiliza como datos de entrenamiento información recolectada por la OECD y GDP. Los parámetros obtenidos después del entrenamiento son usados para evaluar por inspección visual el comportamiento de los datos contra los datos reales. Por lo tanto, para la presente sección se pueden identificar los siguientes objetivos.\n", "\n", "Objetivo General: *Desarrollar un modelo basado en la regresión lineal usando las funciones `fit` del módulo Sklearn para determinar el nivel de satisfacción de vida en función de GDP de cada país.*\n", "\n", "Objetivos Específicos:\n", "\n", "- Aprender el arranque y manejo básico de la plataforma Jupyter y los comandos de inserción, copia, borrado y evaluación de celdas\n", "- Identificar el procedimiento de instalación de módulos nuevos en Python usando el comando **pip3​** \n", "- Conocer el procedimiento de lectura de archivos CSV\n", "- Relacionarse con el procedimiento de acceso a datos por nombres de columnas, manipulación, edición y filtrado de datos con la estructura de Pandas\n", "- Crear una función en Python para leer las bases de datos de la OECD y GDP, y posteriormente crear una nueva base de datos que exclusivamente incluyan \"Life Satisfaction\" y \"GDP per capita\"\n", "- Entrenar un modelo basado en la regresión lineal \n", "- Comparar el modelo con los datos reales y determinar nuevos valores de instancias" ] }, { "cell_type": "markdown", "id": "53912466", "metadata": {}, "source": [ "# The Data: Life Satisfaction and GDP per capita\n", "The next sections will explorer the two datasets: 1) Organisation for Economic Co-operation and Development and 2)International Monetary Fund.\n", "\n", "## Life satisfaction data description\n", "\n", "This dataset was obtained from the OECD's website at: http://stats.oecd.org/index.aspx?DataSetCode=BLI\n", "\n", "```\n", "Int64Index: 3292 entries, 0 to 3291\n", "Data columns (total 17 columns):\n", "\"LOCATION\" 3292 non-null object\n", "Country 3292 non-null object\n", "INDICATOR 3292 non-null object\n", "Indicator 3292 non-null object\n", "MEASURE 3292 non-null object\n", "Measure 3292 non-null object\n", "INEQUALITY 3292 non-null object\n", "Inequality 3292 non-null object\n", "Unit Code 3292 non-null object\n", "Unit 3292 non-null object\n", "PowerCode Code 3292 non-null int64\n", "PowerCode 3292 non-null object\n", "Reference Period Code 0 non-null float64\n", "Reference Period 0 non-null float64\n", "Value 3292 non-null float64\n", "Flag Codes 1120 non-null object\n", "Flags 1120 non-null object\n", "dtypes: float64(3), int64(1), object(13)\n", "memory usage: 462.9+ KB\n", "```\n" ] }, { "cell_type": "markdown", "id": "72915229", "metadata": {}, "source": [ "### Example using Python Pandas\n", "\n", "```\n", ">>> life_sat = pd.read_csv(\"oecd_bli_2015.csv\", thousands=',')\n", "\n", ">>> life_sat_total = life_sat[life_sat[\"INEQUALITY\"]==\"TOT\"]\n", "\n", ">>> life_sat_total = life_sat_total.pivot(index=\"Country\", columns=\"Indicator\", values=\"Value\")\n", "\n", ">>> life_sat_total.info()\n", "\n", "Index: 37 entries, Australia to United States\n", "Data columns (total 24 columns):\n", "Air pollution 37 non-null float64\n", "Assault rate 37 non-null float64\n", "Consultation on rule-making 37 non-null float64\n", "Dwellings without basic facilities 37 non-null float64\n", "Educational attainment 37 non-null float64\n", "Employees working very long hours 37 non-null float64\n", "Employment rate 37 non-null float64\n", "Homicide rate 37 non-null float64\n", "Household net adjusted disposable income 37 non-null float64\n", "Household net financial wealth 37 non-null float64\n", "Housing expenditure 37 non-null float64\n", "Job security 37 non-null float64\n", "Life expectancy 37 non-null float64\n", "Life satisfaction 37 non-null float64\n", "Long-term unemployment rate 37 non-null float64\n", "Personal earnings 37 non-null float64\n", "Quality of support network 37 non-null float64\n", "Rooms per person 37 non-null float64\n", "Self-reported health 37 non-null float64\n", "Student skills 37 non-null float64\n", "Time devoted to leisure and personal care 37 non-null float64\n", "Voter turnout 37 non-null float64\n", "Water quality 37 non-null float64\n", "Years in education 37 non-null float64\n", "dtypes: float64(24)\n", "memory usage: 7.2+ KB\n", "```" ] }, { "cell_type": "code", "execution_count": 3, "id": "86e530da", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 3292 entries, 0 to 3291\n", "Data columns (total 17 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 LOCATION 3292 non-null object \n", " 1 Country 3292 non-null object \n", " 2 INDICATOR 3292 non-null object \n", " 3 Indicator 3292 non-null object \n", " 4 MEASURE 3292 non-null object \n", " 5 Measure 3292 non-null object \n", " 6 INEQUALITY 3292 non-null object \n", " 7 Inequality 3292 non-null object \n", " 8 Unit Code 3292 non-null object \n", " 9 Unit 3292 non-null object \n", " 10 PowerCode Code 3292 non-null int64 \n", " 11 PowerCode 3292 non-null object \n", " 12 Reference Period Code 0 non-null float64\n", " 13 Reference Period 0 non-null float64\n", " 14 Value 3292 non-null float64\n", " 15 Flag Codes 1120 non-null object \n", " 16 Flags 1120 non-null object \n", "dtypes: float64(3), int64(1), object(13)\n", "memory usage: 437.3+ KB\n" ] } ], "source": [ "# Load the data\n", "import numpy as np\n", "import pandas as pd\n", "url = \"https://raw.githubusercontent.com/machine-learning-course-uac/1-ml-landscape/main/oecd_bli_2015.csv\"\n", "oecd_bli = pd.read_csv(url, thousands=',')\n", "oecd_bli.info()" ] }, { "cell_type": "code", "execution_count": 4, "id": "7a58ef40", "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", "
LOCATIONCountryINDICATORIndicatorMEASUREMeasureINEQUALITYInequalityUnit CodeUnitPowerCode CodePowerCodeReference Period CodeReference PeriodValueFlag CodesFlags
0AUSAustraliaHO_BASEDwellings without basic facilitiesLValueTOTTotalPCPercentage0unitsNaNNaN1.10EEstimated value
1AUTAustriaHO_BASEDwellings without basic facilitiesLValueTOTTotalPCPercentage0unitsNaNNaN1.00NaNNaN
2BELBelgiumHO_BASEDwellings without basic facilitiesLValueTOTTotalPCPercentage0unitsNaNNaN2.00NaNNaN
3CANCanadaHO_BASEDwellings without basic facilitiesLValueTOTTotalPCPercentage0unitsNaNNaN0.20NaNNaN
4CZECzech RepublicHO_BASEDwellings without basic facilitiesLValueTOTTotalPCPercentage0unitsNaNNaN0.90NaNNaN
......................................................
3287ESTEstoniaWL_TNOWTime devoted to leisure and personal careLValueWMNWomenHOURHours0unitsNaNNaN14.43NaNNaN
3288ISRIsraelWL_TNOWTime devoted to leisure and personal careLValueWMNWomenHOURHours0unitsNaNNaN14.24EEstimated value
3289RUSRussiaWL_TNOWTime devoted to leisure and personal careLValueWMNWomenHOURHours0unitsNaNNaN14.75EEstimated value
3290SVNSloveniaWL_TNOWTime devoted to leisure and personal careLValueWMNWomenHOURHours0unitsNaNNaN14.12NaNNaN
3291OECDOECD - TotalWL_TNOWTime devoted to leisure and personal careLValueWMNWomenHOURHours0unitsNaNNaN14.74NaNNaN
\n", "

3292 rows × 17 columns

\n", "
" ], "text/plain": [ " LOCATION Country INDICATOR \\\n", "0 AUS Australia HO_BASE \n", "1 AUT Austria HO_BASE \n", "2 BEL Belgium HO_BASE \n", "3 CAN Canada HO_BASE \n", "4 CZE Czech Republic HO_BASE \n", "... ... ... ... \n", "3287 EST Estonia WL_TNOW \n", "3288 ISR Israel WL_TNOW \n", "3289 RUS Russia WL_TNOW \n", "3290 SVN Slovenia WL_TNOW \n", "3291 OECD OECD - Total WL_TNOW \n", "\n", " Indicator MEASURE Measure INEQUALITY \\\n", "0 Dwellings without basic facilities L Value TOT \n", "1 Dwellings without basic facilities L Value TOT \n", "2 Dwellings without basic facilities L Value TOT \n", "3 Dwellings without basic facilities L Value TOT \n", "4 Dwellings without basic facilities L Value TOT \n", "... ... ... ... ... \n", "3287 Time devoted to leisure and personal care L Value WMN \n", "3288 Time devoted to leisure and personal care L Value WMN \n", "3289 Time devoted to leisure and personal care L Value WMN \n", "3290 Time devoted to leisure and personal care L Value WMN \n", "3291 Time devoted to leisure and personal care L Value WMN \n", "\n", " Inequality Unit Code Unit PowerCode Code PowerCode \\\n", "0 Total PC Percentage 0 units \n", "1 Total PC Percentage 0 units \n", "2 Total PC Percentage 0 units \n", "3 Total PC Percentage 0 units \n", "4 Total PC Percentage 0 units \n", "... ... ... ... ... ... \n", "3287 Women HOUR Hours 0 units \n", "3288 Women HOUR Hours 0 units \n", "3289 Women HOUR Hours 0 units \n", "3290 Women HOUR Hours 0 units \n", "3291 Women HOUR Hours 0 units \n", "\n", " Reference Period Code Reference Period Value Flag Codes \\\n", "0 NaN NaN 1.10 E \n", "1 NaN NaN 1.00 NaN \n", "2 NaN NaN 2.00 NaN \n", "3 NaN NaN 0.20 NaN \n", "4 NaN NaN 0.90 NaN \n", "... ... ... ... ... \n", "3287 NaN NaN 14.43 NaN \n", "3288 NaN NaN 14.24 E \n", "3289 NaN NaN 14.75 E \n", "3290 NaN NaN 14.12 NaN \n", "3291 NaN NaN 14.74 NaN \n", "\n", " Flags \n", "0 Estimated value \n", "1 NaN \n", "2 NaN \n", "3 NaN \n", "4 NaN \n", "... ... \n", "3287 NaN \n", "3288 Estimated value \n", "3289 Estimated value \n", "3290 NaN \n", "3291 NaN \n", "\n", "[3292 rows x 17 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "oecd_bli" ] }, { "cell_type": "code", "execution_count": 10, "id": "d1c803f7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Int64Index: 888 entries, 0 to 3217\n", "Data columns (total 17 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 LOCATION 888 non-null object \n", " 1 Country 888 non-null object \n", " 2 INDICATOR 888 non-null object \n", " 3 Indicator 888 non-null object \n", " 4 MEASURE 888 non-null object \n", " 5 Measure 888 non-null object \n", " 6 INEQUALITY 888 non-null object \n", " 7 Inequality 888 non-null object \n", " 8 Unit Code 888 non-null object \n", " 9 Unit 888 non-null object \n", " 10 PowerCode Code 888 non-null int64 \n", " 11 PowerCode 888 non-null object \n", " 12 Reference Period Code 0 non-null float64\n", " 13 Reference Period 0 non-null float64\n", " 14 Value 888 non-null float64\n", " 15 Flag Codes 58 non-null object \n", " 16 Flags 58 non-null object \n", "dtypes: float64(3), int64(1), object(13)\n", "memory usage: 124.9+ KB\n" ] } ], "source": [ "life_sat_total = oecd_bli[oecd_bli[\"INEQUALITY\"]==\"TOT\"]\n", "life_sat_total.info()" ] }, { "cell_type": "code", "execution_count": 11, "id": "426e54c9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Int64Index: 24 entries, 1 to 3182\n", "Data columns (total 17 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 LOCATION 24 non-null object \n", " 1 Country 24 non-null object \n", " 2 INDICATOR 24 non-null object \n", " 3 Indicator 24 non-null object \n", " 4 MEASURE 24 non-null object \n", " 5 Measure 24 non-null object \n", " 6 INEQUALITY 24 non-null object \n", " 7 Inequality 24 non-null object \n", " 8 Unit Code 24 non-null object \n", " 9 Unit 24 non-null object \n", " 10 PowerCode Code 24 non-null int64 \n", " 11 PowerCode 24 non-null object \n", " 12 Reference Period Code 0 non-null float64\n", " 13 Reference Period 0 non-null float64\n", " 14 Value 24 non-null float64\n", " 15 Flag Codes 0 non-null object \n", " 16 Flags 0 non-null object \n", "dtypes: float64(3), int64(1), object(13)\n", "memory usage: 3.4+ KB\n" ] } ], "source": [ "new = life_sat_total[life_sat_total[\"Country\"]=='Austria']\n", "new.info()" ] }, { "cell_type": "code", "execution_count": 15, "id": "20e499fb", "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", " \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
Belgium21.06.64.52.072.04.5762.01.128307.083876.0...3.8848082.094.02.274.0509.015.7189.087.018.9
Brazil18.07.94.06.745.010.4167.025.511664.06844.0...1.9717177.090.01.669.0402.014.9779.072.016.3
Canada15.01.310.50.289.03.9472.01.529365.067913.0...0.9046911.092.02.589.0522.014.2561.091.017.2
Chile46.06.92.09.457.015.4262.04.414533.017733.0...1.5922101.086.01.259.0436.014.4149.073.016.5
Czech Republic16.02.86.80.992.06.9868.00.818404.017299.0...3.1220338.085.01.460.0500.014.9859.085.018.1
Denmark15.03.97.00.978.02.0373.00.326491.044488.0...1.7848347.095.01.972.0498.016.0688.094.019.4
Estonia9.05.53.38.190.03.3068.04.815167.07680.0...3.8218944.089.01.554.0526.014.9064.079.017.5
Finland15.02.49.00.685.03.5869.01.427927.018761.0...1.7340060.095.01.965.0529.014.8969.094.019.7
France12.05.03.50.573.08.1564.00.628799.048741.0...3.9940242.087.01.867.0500.015.3380.082.016.4
Germany16.03.64.50.186.05.2573.00.531252.050394.0...2.3743682.094.01.865.0515.015.3172.095.018.2
Greece27.03.76.50.768.06.1649.01.618575.014579.0...18.3925503.083.01.274.0466.014.9164.069.018.6
Hungary15.03.67.94.882.03.1958.01.315442.013277.0...5.1020948.087.01.157.0487.015.0462.077.017.6
Iceland18.02.75.10.471.012.2582.00.323965.043045.0...1.1855716.096.01.577.0484.014.6181.097.019.8
Ireland13.02.69.00.275.04.2060.00.823917.031580.0...8.3949506.096.02.182.0516.015.1970.080.017.6
Israel21.06.42.53.785.016.0367.02.322104.052933.0...0.7928817.087.01.280.0474.014.4868.068.015.8
Italy21.04.75.01.157.03.6656.00.725166.054987.0...6.9434561.090.01.466.0490.014.9875.071.016.8
Japan24.01.47.36.494.022.2672.00.326111.086764.0...1.6735405.089.01.830.0540.014.9353.085.016.3
Korea30.02.110.44.282.018.7264.01.119510.029091.0...0.0136354.072.01.435.0542.014.6376.078.017.5
Luxembourg12.04.36.00.178.03.4766.00.438951.061765.0...1.7856021.087.02.072.0490.015.1291.086.015.1
Mexico30.012.89.04.237.028.8361.023.413085.09056.0...0.0816193.077.01.066.0417.013.8963.067.014.4
Netherlands30.04.96.10.073.00.4574.00.927888.077961.0...2.4047590.090.02.076.0519.015.4475.092.018.7
New Zealand11.02.210.30.274.013.8773.01.223815.028290.0...0.7535609.094.02.490.0509.014.8777.089.018.1
Norway16.03.38.10.382.02.8275.00.633492.08797.0...0.3250282.094.02.076.0496.015.5678.094.017.9
OECD - Total20.03.97.32.475.012.5165.04.025908.067139.0...2.7936118.088.01.868.0497.014.9768.081.017.7
Poland33.01.410.83.290.07.4160.00.917852.010919.0...3.7722655.091.01.158.0521.014.2055.079.018.4
Portugal18.05.76.50.938.09.6261.01.120086.031245.0...9.1123688.086.01.646.0488.014.9558.086.017.6
Russia15.03.82.515.194.00.1669.012.819292.03412.0...1.7020885.090.00.937.0481.014.9765.056.016.0
Slovak Republic13.03.06.60.692.07.0260.01.217503.08663.0...9.4620307.090.01.166.0472.014.9959.081.016.3
Slovenia26.03.910.30.585.05.6363.00.419326.018465.0...5.1532037.090.01.565.0499.014.6252.088.018.4
Spain24.04.27.30.155.05.8956.00.622477.024774.0...12.9634824.095.01.972.0490.016.0669.071.017.6
Sweden10.05.110.90.088.01.1374.00.729185.060328.0...1.3740818.092.01.781.0482.015.1186.095.019.3
Switzerland20.04.28.40.086.06.7280.00.533491.0108823.0...1.4654236.096.01.881.0518.014.9849.096.017.3
Turkey35.05.05.512.734.040.8650.01.214095.03251.0...2.3716919.086.01.168.0462.013.4288.062.016.4
United Kingdom13.01.911.50.278.012.7071.00.327029.060778.0...2.7741192.091.01.974.0502.014.8366.088.016.4
United States18.01.58.30.189.011.3067.05.241355.0145769.0...1.9156340.090.02.488.0492.014.2768.085.017.2
\n", "

37 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", "Belgium 21.0 6.6 4.5 \n", "Brazil 18.0 7.9 4.0 \n", "Canada 15.0 1.3 10.5 \n", "Chile 46.0 6.9 2.0 \n", "Czech Republic 16.0 2.8 6.8 \n", "Denmark 15.0 3.9 7.0 \n", "Estonia 9.0 5.5 3.3 \n", "Finland 15.0 2.4 9.0 \n", "France 12.0 5.0 3.5 \n", "Germany 16.0 3.6 4.5 \n", "Greece 27.0 3.7 6.5 \n", "Hungary 15.0 3.6 7.9 \n", "Iceland 18.0 2.7 5.1 \n", "Ireland 13.0 2.6 9.0 \n", "Israel 21.0 6.4 2.5 \n", "Italy 21.0 4.7 5.0 \n", "Japan 24.0 1.4 7.3 \n", "Korea 30.0 2.1 10.4 \n", "Luxembourg 12.0 4.3 6.0 \n", "Mexico 30.0 12.8 9.0 \n", "Netherlands 30.0 4.9 6.1 \n", "New Zealand 11.0 2.2 10.3 \n", "Norway 16.0 3.3 8.1 \n", "OECD - Total 20.0 3.9 7.3 \n", "Poland 33.0 1.4 10.8 \n", "Portugal 18.0 5.7 6.5 \n", "Russia 15.0 3.8 2.5 \n", "Slovak Republic 13.0 3.0 6.6 \n", "Slovenia 26.0 3.9 10.3 \n", "Spain 24.0 4.2 7.3 \n", "Sweden 10.0 5.1 10.9 \n", "Switzerland 20.0 4.2 8.4 \n", "Turkey 35.0 5.0 5.5 \n", "United Kingdom 13.0 1.9 11.5 \n", "United States 18.0 1.5 8.3 \n", "\n", "Indicator Dwellings without basic facilities Educational attainment \\\n", "Country \n", "Australia 1.1 76.0 \n", "Austria 1.0 83.0 \n", "Belgium 2.0 72.0 \n", "Brazil 6.7 45.0 \n", "Canada 0.2 89.0 \n", "Chile 9.4 57.0 \n", "Czech Republic 0.9 92.0 \n", "Denmark 0.9 78.0 \n", "Estonia 8.1 90.0 \n", "Finland 0.6 85.0 \n", "France 0.5 73.0 \n", "Germany 0.1 86.0 \n", "Greece 0.7 68.0 \n", "Hungary 4.8 82.0 \n", "Iceland 0.4 71.0 \n", "Ireland 0.2 75.0 \n", "Israel 3.7 85.0 \n", "Italy 1.1 57.0 \n", "Japan 6.4 94.0 \n", "Korea 4.2 82.0 \n", "Luxembourg 0.1 78.0 \n", "Mexico 4.2 37.0 \n", "Netherlands 0.0 73.0 \n", "New Zealand 0.2 74.0 \n", "Norway 0.3 82.0 \n", "OECD - Total 2.4 75.0 \n", "Poland 3.2 90.0 \n", "Portugal 0.9 38.0 \n", "Russia 15.1 94.0 \n", "Slovak Republic 0.6 92.0 \n", "Slovenia 0.5 85.0 \n", "Spain 0.1 55.0 \n", "Sweden 0.0 88.0 \n", "Switzerland 0.0 86.0 \n", "Turkey 12.7 34.0 \n", "United Kingdom 0.2 78.0 \n", "United States 0.1 89.0 \n", "\n", "Indicator Employees working very long hours Employment rate \\\n", "Country \n", "Australia 14.02 72.0 \n", "Austria 7.61 72.0 \n", "Belgium 4.57 62.0 \n", "Brazil 10.41 67.0 \n", "Canada 3.94 72.0 \n", "Chile 15.42 62.0 \n", "Czech Republic 6.98 68.0 \n", "Denmark 2.03 73.0 \n", "Estonia 3.30 68.0 \n", "Finland 3.58 69.0 \n", "France 8.15 64.0 \n", "Germany 5.25 73.0 \n", "Greece 6.16 49.0 \n", "Hungary 3.19 58.0 \n", "Iceland 12.25 82.0 \n", "Ireland 4.20 60.0 \n", "Israel 16.03 67.0 \n", "Italy 3.66 56.0 \n", "Japan 22.26 72.0 \n", "Korea 18.72 64.0 \n", "Luxembourg 3.47 66.0 \n", "Mexico 28.83 61.0 \n", "Netherlands 0.45 74.0 \n", "New Zealand 13.87 73.0 \n", "Norway 2.82 75.0 \n", "OECD - Total 12.51 65.0 \n", "Poland 7.41 60.0 \n", "Portugal 9.62 61.0 \n", "Russia 0.16 69.0 \n", "Slovak Republic 7.02 60.0 \n", "Slovenia 5.63 63.0 \n", "Spain 5.89 56.0 \n", "Sweden 1.13 74.0 \n", "Switzerland 6.72 80.0 \n", "Turkey 40.86 50.0 \n", "United Kingdom 12.70 71.0 \n", "United States 11.30 67.0 \n", "\n", "Indicator Homicide rate Household net adjusted disposable income \\\n", "Country \n", "Australia 0.8 31588.0 \n", "Austria 0.4 31173.0 \n", "Belgium 1.1 28307.0 \n", "Brazil 25.5 11664.0 \n", "Canada 1.5 29365.0 \n", "Chile 4.4 14533.0 \n", "Czech Republic 0.8 18404.0 \n", "Denmark 0.3 26491.0 \n", "Estonia 4.8 15167.0 \n", "Finland 1.4 27927.0 \n", "France 0.6 28799.0 \n", "Germany 0.5 31252.0 \n", "Greece 1.6 18575.0 \n", "Hungary 1.3 15442.0 \n", "Iceland 0.3 23965.0 \n", "Ireland 0.8 23917.0 \n", "Israel 2.3 22104.0 \n", "Italy 0.7 25166.0 \n", "Japan 0.3 26111.0 \n", "Korea 1.1 19510.0 \n", "Luxembourg 0.4 38951.0 \n", "Mexico 23.4 13085.0 \n", "Netherlands 0.9 27888.0 \n", "New Zealand 1.2 23815.0 \n", "Norway 0.6 33492.0 \n", "OECD - Total 4.0 25908.0 \n", "Poland 0.9 17852.0 \n", "Portugal 1.1 20086.0 \n", "Russia 12.8 19292.0 \n", "Slovak Republic 1.2 17503.0 \n", "Slovenia 0.4 19326.0 \n", "Spain 0.6 22477.0 \n", "Sweden 0.7 29185.0 \n", "Switzerland 0.5 33491.0 \n", "Turkey 1.2 14095.0 \n", "United Kingdom 0.3 27029.0 \n", "United States 5.2 41355.0 \n", "\n", "Indicator Household net financial wealth ... \\\n", "Country ... \n", "Australia 47657.0 ... \n", "Austria 49887.0 ... \n", "Belgium 83876.0 ... \n", "Brazil 6844.0 ... \n", "Canada 67913.0 ... \n", "Chile 17733.0 ... \n", "Czech Republic 17299.0 ... \n", "Denmark 44488.0 ... \n", "Estonia 7680.0 ... \n", "Finland 18761.0 ... \n", "France 48741.0 ... \n", "Germany 50394.0 ... \n", "Greece 14579.0 ... \n", "Hungary 13277.0 ... \n", "Iceland 43045.0 ... \n", "Ireland 31580.0 ... \n", "Israel 52933.0 ... \n", "Italy 54987.0 ... \n", "Japan 86764.0 ... \n", "Korea 29091.0 ... \n", "Luxembourg 61765.0 ... \n", "Mexico 9056.0 ... \n", "Netherlands 77961.0 ... \n", "New Zealand 28290.0 ... \n", "Norway 8797.0 ... \n", "OECD - Total 67139.0 ... \n", "Poland 10919.0 ... \n", "Portugal 31245.0 ... \n", "Russia 3412.0 ... \n", "Slovak Republic 8663.0 ... \n", "Slovenia 18465.0 ... \n", "Spain 24774.0 ... \n", "Sweden 60328.0 ... \n", "Switzerland 108823.0 ... \n", "Turkey 3251.0 ... \n", "United Kingdom 60778.0 ... \n", "United States 145769.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", "Belgium 3.88 48082.0 \n", "Brazil 1.97 17177.0 \n", "Canada 0.90 46911.0 \n", "Chile 1.59 22101.0 \n", "Czech Republic 3.12 20338.0 \n", "Denmark 1.78 48347.0 \n", "Estonia 3.82 18944.0 \n", "Finland 1.73 40060.0 \n", "France 3.99 40242.0 \n", "Germany 2.37 43682.0 \n", "Greece 18.39 25503.0 \n", "Hungary 5.10 20948.0 \n", "Iceland 1.18 55716.0 \n", "Ireland 8.39 49506.0 \n", "Israel 0.79 28817.0 \n", "Italy 6.94 34561.0 \n", "Japan 1.67 35405.0 \n", "Korea 0.01 36354.0 \n", "Luxembourg 1.78 56021.0 \n", "Mexico 0.08 16193.0 \n", "Netherlands 2.40 47590.0 \n", "New Zealand 0.75 35609.0 \n", "Norway 0.32 50282.0 \n", "OECD - Total 2.79 36118.0 \n", "Poland 3.77 22655.0 \n", "Portugal 9.11 23688.0 \n", "Russia 1.70 20885.0 \n", "Slovak Republic 9.46 20307.0 \n", "Slovenia 5.15 32037.0 \n", "Spain 12.96 34824.0 \n", "Sweden 1.37 40818.0 \n", "Switzerland 1.46 54236.0 \n", "Turkey 2.37 16919.0 \n", "United Kingdom 2.77 41192.0 \n", "United States 1.91 56340.0 \n", "\n", "Indicator Quality of support network Rooms per person \\\n", "Country \n", "Australia 92.0 2.3 \n", "Austria 89.0 1.6 \n", "Belgium 94.0 2.2 \n", "Brazil 90.0 1.6 \n", "Canada 92.0 2.5 \n", "Chile 86.0 1.2 \n", "Czech Republic 85.0 1.4 \n", "Denmark 95.0 1.9 \n", "Estonia 89.0 1.5 \n", "Finland 95.0 1.9 \n", "France 87.0 1.8 \n", "Germany 94.0 1.8 \n", "Greece 83.0 1.2 \n", "Hungary 87.0 1.1 \n", "Iceland 96.0 1.5 \n", "Ireland 96.0 2.1 \n", "Israel 87.0 1.2 \n", "Italy 90.0 1.4 \n", "Japan 89.0 1.8 \n", "Korea 72.0 1.4 \n", "Luxembourg 87.0 2.0 \n", "Mexico 77.0 1.0 \n", "Netherlands 90.0 2.0 \n", "New Zealand 94.0 2.4 \n", "Norway 94.0 2.0 \n", "OECD - Total 88.0 1.8 \n", "Poland 91.0 1.1 \n", "Portugal 86.0 1.6 \n", "Russia 90.0 0.9 \n", "Slovak Republic 90.0 1.1 \n", "Slovenia 90.0 1.5 \n", "Spain 95.0 1.9 \n", "Sweden 92.0 1.7 \n", "Switzerland 96.0 1.8 \n", "Turkey 86.0 1.1 \n", "United Kingdom 91.0 1.9 \n", "United States 90.0 2.4 \n", "\n", "Indicator Self-reported health Student skills \\\n", "Country \n", "Australia 85.0 512.0 \n", "Austria 69.0 500.0 \n", "Belgium 74.0 509.0 \n", "Brazil 69.0 402.0 \n", "Canada 89.0 522.0 \n", "Chile 59.0 436.0 \n", "Czech Republic 60.0 500.0 \n", "Denmark 72.0 498.0 \n", "Estonia 54.0 526.0 \n", "Finland 65.0 529.0 \n", "France 67.0 500.0 \n", "Germany 65.0 515.0 \n", "Greece 74.0 466.0 \n", "Hungary 57.0 487.0 \n", "Iceland 77.0 484.0 \n", "Ireland 82.0 516.0 \n", "Israel 80.0 474.0 \n", "Italy 66.0 490.0 \n", "Japan 30.0 540.0 \n", "Korea 35.0 542.0 \n", "Luxembourg 72.0 490.0 \n", "Mexico 66.0 417.0 \n", "Netherlands 76.0 519.0 \n", "New Zealand 90.0 509.0 \n", "Norway 76.0 496.0 \n", "OECD - Total 68.0 497.0 \n", "Poland 58.0 521.0 \n", "Portugal 46.0 488.0 \n", "Russia 37.0 481.0 \n", "Slovak Republic 66.0 472.0 \n", "Slovenia 65.0 499.0 \n", "Spain 72.0 490.0 \n", "Sweden 81.0 482.0 \n", "Switzerland 81.0 518.0 \n", "Turkey 68.0 462.0 \n", "United Kingdom 74.0 502.0 \n", "United States 88.0 492.0 \n", "\n", "Indicator Time devoted to leisure and personal care Voter turnout \\\n", "Country \n", "Australia 14.41 93.0 \n", "Austria 14.46 75.0 \n", "Belgium 15.71 89.0 \n", "Brazil 14.97 79.0 \n", "Canada 14.25 61.0 \n", "Chile 14.41 49.0 \n", "Czech Republic 14.98 59.0 \n", "Denmark 16.06 88.0 \n", "Estonia 14.90 64.0 \n", "Finland 14.89 69.0 \n", "France 15.33 80.0 \n", "Germany 15.31 72.0 \n", "Greece 14.91 64.0 \n", "Hungary 15.04 62.0 \n", "Iceland 14.61 81.0 \n", "Ireland 15.19 70.0 \n", "Israel 14.48 68.0 \n", "Italy 14.98 75.0 \n", "Japan 14.93 53.0 \n", "Korea 14.63 76.0 \n", "Luxembourg 15.12 91.0 \n", "Mexico 13.89 63.0 \n", "Netherlands 15.44 75.0 \n", "New Zealand 14.87 77.0 \n", "Norway 15.56 78.0 \n", "OECD - Total 14.97 68.0 \n", "Poland 14.20 55.0 \n", "Portugal 14.95 58.0 \n", "Russia 14.97 65.0 \n", "Slovak Republic 14.99 59.0 \n", "Slovenia 14.62 52.0 \n", "Spain 16.06 69.0 \n", "Sweden 15.11 86.0 \n", "Switzerland 14.98 49.0 \n", "Turkey 13.42 88.0 \n", "United Kingdom 14.83 66.0 \n", "United States 14.27 68.0 \n", "\n", "Indicator Water quality Years in education \n", "Country \n", "Australia 91.0 19.4 \n", "Austria 94.0 17.0 \n", "Belgium 87.0 18.9 \n", "Brazil 72.0 16.3 \n", "Canada 91.0 17.2 \n", "Chile 73.0 16.5 \n", "Czech Republic 85.0 18.1 \n", "Denmark 94.0 19.4 \n", "Estonia 79.0 17.5 \n", "Finland 94.0 19.7 \n", "France 82.0 16.4 \n", "Germany 95.0 18.2 \n", "Greece 69.0 18.6 \n", "Hungary 77.0 17.6 \n", "Iceland 97.0 19.8 \n", "Ireland 80.0 17.6 \n", "Israel 68.0 15.8 \n", "Italy 71.0 16.8 \n", "Japan 85.0 16.3 \n", "Korea 78.0 17.5 \n", "Luxembourg 86.0 15.1 \n", "Mexico 67.0 14.4 \n", "Netherlands 92.0 18.7 \n", "New Zealand 89.0 18.1 \n", "Norway 94.0 17.9 \n", "OECD - Total 81.0 17.7 \n", "Poland 79.0 18.4 \n", "Portugal 86.0 17.6 \n", "Russia 56.0 16.0 \n", "Slovak Republic 81.0 16.3 \n", "Slovenia 88.0 18.4 \n", "Spain 71.0 17.6 \n", "Sweden 95.0 19.3 \n", "Switzerland 96.0 17.3 \n", "Turkey 62.0 16.4 \n", "United Kingdom 88.0 16.4 \n", "United States 85.0 17.2 \n", "\n", "[37 rows x 24 columns]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "life_sat_pivoted = life_sat_total.pivot(index=\"Country\", columns=\"Indicator\", values=\"Value\")\n", "life_sat_pivoted" ] }, { "cell_type": "markdown", "id": "6bb04a1c", "metadata": {}, "source": [ "## GDP per capita\n", "The Dataset obtained from the IMF's website at: http://goo.gl/j1MSKe\n", "\n", "### Data description\n", "```\n", "Int64Index: 190 entries, 0 to 189\n", "Data columns (total 7 columns):\n", "Country 190 non-null object\n", "Subject Descriptor 189 non-null object\n", "Units 189 non-null object\n", "Scale 189 non-null object\n", "Country/Series-specific Notes 188 non-null object\n", "2015 187 non-null float64\n", "Estimates Start After 188 non-null float64\n", "dtypes: float64(2), object(5)\n", "memory usage: 11.9+ KB\n", "```\n", "\n", "### Example using Python Pandas\n", "\n", "```\n", ">>> gdp_per_capita = pd.read_csv(\n", "... datapath+\"gdp_per_capita.csv\", thousands=',', delimiter='\\t',\n", "... encoding='latin1', na_values=\"n/a\", index_col=\"Country\")\n", "...\n", ">>> gdp_per_capita.rename(columns={\"2015\": \"GDP per capita\"}, inplace=True)\n", "```" ] }, { "cell_type": "code", "execution_count": 17, "id": "fc31575a", "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", "
CountrySubject DescriptorUnitsScaleCountry/Series-specific Notes2015Estimates Start After
0AfghanistanGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...599.9942013.0
1AlbaniaGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...3995.3832010.0
2AlgeriaGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...4318.1352014.0
3AngolaGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...4100.3152014.0
4Antigua and BarbudaGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...14414.3022011.0
........................
185VietnamGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...2088.3442012.0
186YemenGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...1302.9402008.0
187ZambiaGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...1350.1512010.0
188ZimbabweGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...1064.3502012.0
189International Monetary Fund, World Economic Ou...NaNNaNNaNNaNNaNNaN
\n", "

190 rows × 7 columns

\n", "
" ], "text/plain": [ " Country \\\n", "0 Afghanistan \n", "1 Albania \n", "2 Algeria \n", "3 Angola \n", "4 Antigua and Barbuda \n", ".. ... \n", "185 Vietnam \n", "186 Yemen \n", "187 Zambia \n", "188 Zimbabwe \n", "189 International Monetary Fund, World Economic Ou... \n", "\n", " Subject Descriptor Units Scale \\\n", "0 Gross domestic product per capita, current prices U.S. dollars Units \n", "1 Gross domestic product per capita, current prices U.S. dollars Units \n", "2 Gross domestic product per capita, current prices U.S. dollars Units \n", "3 Gross domestic product per capita, current prices U.S. dollars Units \n", "4 Gross domestic product per capita, current prices U.S. dollars Units \n", ".. ... ... ... \n", "185 Gross domestic product per capita, current prices U.S. dollars Units \n", "186 Gross domestic product per capita, current prices U.S. dollars Units \n", "187 Gross domestic product per capita, current prices U.S. dollars Units \n", "188 Gross domestic product per capita, current prices U.S. dollars Units \n", "189 NaN NaN NaN \n", "\n", " Country/Series-specific Notes 2015 \\\n", "0 See notes for: Gross domestic product, curren... 599.994 \n", "1 See notes for: Gross domestic product, curren... 3995.383 \n", "2 See notes for: Gross domestic product, curren... 4318.135 \n", "3 See notes for: Gross domestic product, curren... 4100.315 \n", "4 See notes for: Gross domestic product, curren... 14414.302 \n", ".. ... ... \n", "185 See notes for: Gross domestic product, curren... 2088.344 \n", "186 See notes for: Gross domestic product, curren... 1302.940 \n", "187 See notes for: Gross domestic product, curren... 1350.151 \n", "188 See notes for: Gross domestic product, curren... 1064.350 \n", "189 NaN NaN \n", "\n", " Estimates Start After \n", "0 2013.0 \n", "1 2010.0 \n", "2 2014.0 \n", "3 2014.0 \n", "4 2011.0 \n", ".. ... \n", "185 2012.0 \n", "186 2008.0 \n", "187 2010.0 \n", "188 2012.0 \n", "189 NaN \n", "\n", "[190 rows x 7 columns]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "url2 = \"https://raw.githubusercontent.com/machine-learning-course-uac/1-ml-landscape/main/gdp_per_capita.csv\"\n", "gdp_per_capita = pd.read_csv(url2,thousands=',',delimiter='\\t', encoding='latin1', na_values=\"n/a\")\n", "gdp_per_capita" ] }, { "cell_type": "code", "execution_count": 18, "id": "b355820d", "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", "
CountrySubject DescriptorUnitsScaleCountry/Series-specific NotesGDPEstimates Start After
0AfghanistanGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...599.9942013.0
1AlbaniaGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...3995.3832010.0
2AlgeriaGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...4318.1352014.0
3AngolaGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...4100.3152014.0
4Antigua and BarbudaGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...14414.3022011.0
........................
185VietnamGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...2088.3442012.0
186YemenGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...1302.9402008.0
187ZambiaGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...1350.1512010.0
188ZimbabweGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...1064.3502012.0
189International Monetary Fund, World Economic Ou...NaNNaNNaNNaNNaNNaN
\n", "

190 rows × 7 columns

\n", "
" ], "text/plain": [ " Country \\\n", "0 Afghanistan \n", "1 Albania \n", "2 Algeria \n", "3 Angola \n", "4 Antigua and Barbuda \n", ".. ... \n", "185 Vietnam \n", "186 Yemen \n", "187 Zambia \n", "188 Zimbabwe \n", "189 International Monetary Fund, World Economic Ou... \n", "\n", " Subject Descriptor Units Scale \\\n", "0 Gross domestic product per capita, current prices U.S. dollars Units \n", "1 Gross domestic product per capita, current prices U.S. dollars Units \n", "2 Gross domestic product per capita, current prices U.S. dollars Units \n", "3 Gross domestic product per capita, current prices U.S. dollars Units \n", "4 Gross domestic product per capita, current prices U.S. dollars Units \n", ".. ... ... ... \n", "185 Gross domestic product per capita, current prices U.S. dollars Units \n", "186 Gross domestic product per capita, current prices U.S. dollars Units \n", "187 Gross domestic product per capita, current prices U.S. dollars Units \n", "188 Gross domestic product per capita, current prices U.S. dollars Units \n", "189 NaN NaN NaN \n", "\n", " Country/Series-specific Notes GDP \\\n", "0 See notes for: Gross domestic product, curren... 599.994 \n", "1 See notes for: Gross domestic product, curren... 3995.383 \n", "2 See notes for: Gross domestic product, curren... 4318.135 \n", "3 See notes for: Gross domestic product, curren... 4100.315 \n", "4 See notes for: Gross domestic product, curren... 14414.302 \n", ".. ... ... \n", "185 See notes for: Gross domestic product, curren... 2088.344 \n", "186 See notes for: Gross domestic product, curren... 1302.940 \n", "187 See notes for: Gross domestic product, curren... 1350.151 \n", "188 See notes for: Gross domestic product, curren... 1064.350 \n", "189 NaN NaN \n", "\n", " Estimates Start After \n", "0 2013.0 \n", "1 2010.0 \n", "2 2014.0 \n", "3 2014.0 \n", "4 2011.0 \n", ".. ... \n", "185 2012.0 \n", "186 2008.0 \n", "187 2010.0 \n", "188 2012.0 \n", "189 NaN \n", "\n", "[190 rows x 7 columns]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gdp_per_capita.rename(columns={\"2015\": \"GDP\"}, inplace=True)\n", "gdp_per_capita" ] }, { "cell_type": "code", "execution_count": 19, "id": "44bce56b", "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", "
Subject DescriptorUnitsScaleCountry/Series-specific NotesGDPEstimates 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
AlgeriaGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...4318.1352014.0
AngolaGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...4100.3152014.0
Antigua and BarbudaGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...14414.3022011.0
.....................
VietnamGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...2088.3442012.0
YemenGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...1302.9402008.0
ZambiaGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...1350.1512010.0
ZimbabweGross domestic product per capita, current pricesU.S. dollarsUnitsSee notes for: Gross domestic product, curren...1064.3502012.0
International Monetary Fund, World Economic Outlook Database, April 2016NaNNaNNaNNaNNaNNaN
\n", "

190 rows × 6 columns

\n", "
" ], "text/plain": [ " Subject Descriptor \\\n", "Country \n", "Afghanistan Gross domestic product per capita, current prices \n", "Albania Gross domestic product per capita, current prices \n", "Algeria Gross domestic product per capita, current prices \n", "Angola Gross domestic product per capita, current prices \n", "Antigua and Barbuda Gross domestic product per capita, current prices \n", "... ... \n", "Vietnam Gross domestic product per capita, current prices \n", "Yemen Gross domestic product per capita, current prices \n", "Zambia Gross domestic product per capita, current prices \n", "Zimbabwe Gross domestic product per capita, current prices \n", "International Monetary Fund, World Economic Out... NaN \n", "\n", " Units Scale \\\n", "Country \n", "Afghanistan U.S. dollars Units \n", "Albania U.S. dollars Units \n", "Algeria U.S. dollars Units \n", "Angola U.S. dollars Units \n", "Antigua and Barbuda U.S. dollars Units \n", "... ... ... \n", "Vietnam U.S. dollars Units \n", "Yemen U.S. dollars Units \n", "Zambia U.S. dollars Units \n", "Zimbabwe U.S. dollars Units \n", "International Monetary Fund, World Economic Out... NaN NaN \n", "\n", " Country/Series-specific Notes \\\n", "Country \n", "Afghanistan See notes for: Gross domestic product, curren... \n", "Albania See notes for: Gross domestic product, curren... \n", "Algeria See notes for: Gross domestic product, curren... \n", "Angola See notes for: Gross domestic product, curren... \n", "Antigua and Barbuda See notes for: Gross domestic product, curren... \n", "... ... \n", "Vietnam See notes for: Gross domestic product, curren... \n", "Yemen See notes for: Gross domestic product, curren... \n", "Zambia See notes for: Gross domestic product, curren... \n", "Zimbabwe See notes for: Gross domestic product, curren... \n", "International Monetary Fund, World Economic Out... NaN \n", "\n", " GDP \\\n", "Country \n", "Afghanistan 599.994 \n", "Albania 3995.383 \n", "Algeria 4318.135 \n", "Angola 4100.315 \n", "Antigua and Barbuda 14414.302 \n", "... ... \n", "Vietnam 2088.344 \n", "Yemen 1302.940 \n", "Zambia 1350.151 \n", "Zimbabwe 1064.350 \n", "International Monetary Fund, World Economic Out... NaN \n", "\n", " Estimates Start After \n", "Country \n", "Afghanistan 2013.0 \n", "Albania 2010.0 \n", "Algeria 2014.0 \n", "Angola 2014.0 \n", "Antigua and Barbuda 2011.0 \n", "... ... \n", "Vietnam 2012.0 \n", "Yemen 2008.0 \n", "Zambia 2010.0 \n", "Zimbabwe 2012.0 \n", "International Monetary Fund, World Economic Out... NaN \n", "\n", "[190 rows x 6 columns]" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gdp_per_capita.set_index(\"Country\", inplace=True)\n", "gdp_per_capita" ] }, { "cell_type": "markdown", "id": "d334c46b", "metadata": {}, "source": [ "# Making all the process in a function " ] }, { "cell_type": "code", "execution_count": 20, "id": "a0cb5245", "metadata": {}, "outputs": [], "source": [ "def CountryStats(oecd, gdp):\n", " # YOUR CODE HERE\n", " return country_stats[[\"GDP\", 'Life satisfaction']].iloc[keep_indices]" ] }, { "cell_type": "code", "execution_count": 10, "id": "37cd9901", "metadata": {}, "outputs": [], "source": [ "import mluac as ml\n", "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 23, "id": "df9ca7f1", "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", "
GDP per capitaLife satisfaction
Country
Russia9054.9146.0
Turkey9437.3725.6
Hungary12239.8944.9
Poland12495.3345.8
Slovak Republic15991.7366.1
Estonia17288.0835.6
Greece18064.2884.8
Portugal19121.5925.1
Slovenia20732.4825.7
Spain25864.7216.5
Korea27195.1975.8
Italy29866.5816.0
Japan32485.5455.9
Israel35343.3367.4
New Zealand37044.8917.3
France37675.0066.5
Belgium40106.6326.9
Germany40996.5117.0
Finland41973.9887.4
Canada43331.9617.3
Netherlands43603.1157.3
Austria43724.0316.9
United Kingdom43770.6886.8
Sweden49866.2667.2
Iceland50854.5837.5
Australia50961.8657.3
Ireland51350.7447.0
Denmark52114.1657.5
United States55805.2047.2
\n", "
" ], "text/plain": [ " GDP per capita Life satisfaction\n", "Country \n", "Russia 9054.914 6.0\n", "Turkey 9437.372 5.6\n", "Hungary 12239.894 4.9\n", "Poland 12495.334 5.8\n", "Slovak Republic 15991.736 6.1\n", "Estonia 17288.083 5.6\n", "Greece 18064.288 4.8\n", "Portugal 19121.592 5.1\n", "Slovenia 20732.482 5.7\n", "Spain 25864.721 6.5\n", "Korea 27195.197 5.8\n", "Italy 29866.581 6.0\n", "Japan 32485.545 5.9\n", "Israel 35343.336 7.4\n", "New Zealand 37044.891 7.3\n", "France 37675.006 6.5\n", "Belgium 40106.632 6.9\n", "Germany 40996.511 7.0\n", "Finland 41973.988 7.4\n", "Canada 43331.961 7.3\n", "Netherlands 43603.115 7.3\n", "Austria 43724.031 6.9\n", "United Kingdom 43770.688 6.8\n", "Sweden 49866.266 7.2\n", "Iceland 50854.583 7.5\n", "Australia 50961.865 7.3\n", "Ireland 51350.744 7.0\n", "Denmark 52114.165 7.5\n", "United States 55805.204 7.2" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "url2 = \"https://raw.githubusercontent.com/machine-learning-course-uac/1-ml-landscape/main/gdp_per_capita.csv\"\n", "gdp_per_capita = pd.read_csv(url2,thousands=',',delimiter='\\t', encoding='latin1', na_values=\"n/a\")\n", "url = \"https://raw.githubusercontent.com/machine-learning-course-uac/1-ml-landscape/main/oecd_bli_2015.csv\"\n", "oecd_bli = pd.read_csv(url, thousands=',')\n", "cs = ml.prepare_country_stats(oecd_bli, gdp_per_capita)\n", "cs" ] }, { "cell_type": "markdown", "id": "3466ca29", "metadata": {}, "source": [ "## Exploring the data" ] }, { "cell_type": "code", "execution_count": 18, "id": "5bfd30f2", "metadata": {}, "outputs": [], "source": [ "X = np.c_[cs[\"GDP per capita\"]]\n", "y = np.c_[cs[\"Life satisfaction\"]]" ] }, { "cell_type": "code", "execution_count": 19, "id": "51ac6ffc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 9054.914],\n", " [ 9437.372],\n", " [12239.894],\n", " [12495.334],\n", " [15991.736],\n", " [17288.083],\n", " [18064.288],\n", " [19121.592],\n", " [20732.482],\n", " [25864.721],\n", " [27195.197],\n", " [29866.581],\n", " [32485.545],\n", " [35343.336],\n", " [37044.891],\n", " [37675.006],\n", " [40106.632],\n", " [40996.511],\n", " [41973.988],\n", " [43331.961],\n", " [43603.115],\n", " [43724.031],\n", " [43770.688],\n", " [49866.266],\n", " [50854.583],\n", " [50961.865],\n", " [51350.744],\n", " [52114.165],\n", " [55805.204]])" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X" ] }, { "cell_type": "code", "execution_count": 20, "id": "75460ea4", "metadata": {}, "outputs": [ { "data": { "image/png": "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uO+++1ptbzQa0bt3b0yZMgXPPPNMk21qampQU1Nj+b2srAzx8fFOHWhNREREylJ8oPUTTzyBL7/8Ert27cK5c+dw7tw5y2dCCOzevdvm4CRJghBC0YHOERER6NWrF06cOGFTe41Gg0GDBrXYPiAgAAEBAUqFSERERB7OpqQoMDAQX3/9NdavX49t27ahoKAANTU1+PrrryFJEoYMGWJ3T5GSKioqcPLkSdxzzz02ta+vr8ehQ4dYJJSIiIgsZE3eqFKpIEkSDh06hD59+igZV4see+wxpKamokuXLjAYDFi8eDH279+PI0eOICoqCtOmTUNcXByWL18OAHj66adx3XXXoUePHigpKcELL7yAjRs3Ys+ePTbH7Yp5ioiIiEhZit8+8zRnz57FlClT8NtvvyEqKgqjR4/G999/j6ioKADAmTNnrIqHXrp0CQ888AAKCwsRGRmJIUOG4LvvvnNpIkdERESeTVZP0enTpwEAcXFxrU6e6O3YU0REROR9XNZT1KVLFzmLExEREXkMm+YpIiIiImrrbOopmjlzJoArj9O/8847jd53xO/XRURERORONo0pMj9lBlx5nL2p9+1hnqeo4bo8HccUEREReR/FxxR17ty5yeSnufeJiIiIvI1NSdGpU6fsep+IiIjI23CgNRERERHcMHnj2bNnsXfvXgDAxIkTXb15IiIioia5PCnavn077r33XqhUKtTV1bl680RERERNctvtMxkTaRMREREpjmOKiIiIiMCkiIiIiAgAkyIiIiIiAEyKiIiIiAAwKSIiIiICwKSIiIiICACTIiIiIiIAdkze+PTTTyuywf379yuyHiIiIiIlScLGWRRVKhUkSVJko0IISJKE+vp6RdbnCmVlZQgPD0dpaSnCwsLcHQ4RERHZwJ7rt11lPjgLNREREbVVNidFubm5zoyDiIiIyK1sTorGjh3rzDiIiIiI3IpPnxERERGBSRERERERACZFRERERACYFBEREREBYFJEREREBIBJEREREREAJkVEREREAJgUEREREQFgUkREREQEgEkREREREQAmRUREREQAmBQRERERAbCjICxRW2Q0GpGVlQW9Xo+KigqEhIQgMTERKSkp0Gg07g6PiIhciEkR+SSDwYCVK1ciPT0dxcXF8PPzgyRJEEKgrq4OUVFRSEtLw+zZsxEbG+vucImIyAUkIYRw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WSPy8vLE/v37xYQJE0Tnzp1FRUWFpc2cOXNEfHy82L59u/jpp5/EddddJ0aOHGn5vK6uTvTr10+MGzdO7Nu3T2RnZ4urrrpKLFiwwNLml19+Ee3atRPz5s0TR44cEa+//rpQq9Vi69atljYff/yx8Pf3F6tXrxaHDx8WDzzwgIiIiBDnz593zcFwg02bNomsrCzx888/i2PHjol//vOfQqPRiLy8PCEEj70r/fjjj6Jr167immuuEQ8//LDlfZ4D51q8eLHo27evOHfunOVVXFxs+ZzH3/MwKXKR3ydFJpNJREdHixdeeMHyXklJiQgICBAfffSREEKII0eOCABi9+7dljZbtmwRkiSJgoICIYQQK1asEJGRkaKmpsbS5oknnhAJCQmW3++66y6RkpJiFc/w4cPF7NmzFd1HT1dUVCQAiK+//loIceV4azQasX79ekubo0ePCgBi165dQogria1KpRKFhYWWNunp6SIsLMxyzB9//HHRt29fq23dfffdYvz48Zbfhw0bJubOnWv5vb6+XsTGxorly5crv6MeLDIyUrz99ts89i5UXl4uevbsKXJycsTYsWMtSRHPgfMtXrxYDBgwoMnPePw9E2+fuUl+fj4KCwsxbtw4y3vh4eEYPnw4du3aBQDYtWsXIiIiMHToUEubcePGQaVS4YcffrC0uf766+Hv729pM378eBw7dgyXLl2ytGm4HXMb83Z8RWlpKQCgffv2AIA9e/bAaDRaHZvExER07tzZ6hz0798fHTt2tLQZP348ysrKcPjwYUublo5vbW0t9uzZY9VGpVJh3LhxPnMO6uvr8fHHH6OyshIjRozgsXehuXPnIiUlpdFx4jlwjePHjyM2Nhbdu3fH1KlTcebMGQA8/p6KSZGbFBYWAoDVl938u/mzwsJCaLVaq8/9/PzQvn17qzZNraPhNpprY/7cF5hMJjzyyCMYNWoU+vXrB+DKcfH390dERIRV29+fA0ePb1lZGaqrq3HhwgXU19f75Dk4dOgQQkJCEBAQgDlz5mDDhg3o06cPj72LfPzxx9i7dy+WL1/e6DOeA+cbPnw41q5di61btyI9PR35+fkYM2YMysvLefw9lJ+7AyByhblz5yIvLw87duxwdyg+JSEhAfv370dpaSk++eQTTJ8+HV9//bW7w/IJv/76Kx5++GHk5OQgMDDQ3eH4pFtvvdXy8zXXXIPhw4ejS5cuWLduHYKCgtwYGTWHPUVuEh0dDQCNnjQ4f/685bPo6GgUFRVZfV5XV4eLFy9atWlqHQ230Vwb8+dt3UMPPYTNmzcjNzcXnTp1srwfHR2N2tpalJSUWLX//Tlw9PiGhYUhKCgIV111FdRqtU+eA39/f/To0QNDhgzB8uXLMWDAAPznP//hsXeBPXv2oKioCIMHD4afnx/8/Pzw9ddf47XXXoOfnx86duzIc+BiERER6NWrF06cOMG/AQ/FpMhNunXrhujoaGzfvt3yXllZGX744QeMGDECADBixAiUlJRgz549ljZfffUVTCYThg8fbmnzzTffwGg0Wtrk5OQgISEBkZGRljYNt2NuY95OWyWEwEMPPYQNGzbgq6++Qrdu3aw+HzJkCDQajdWxOXbsGM6cOWN1Dg4dOmSVnObk5CAsLAx9+vSxtGnp+Pr7+2PIkCFWbUwmE7Zv397mz8HvmUwm1NTU8Ni7wE033YRDhw5h//79ltfQoUMxdepUy888B65VUVGBkydPIiYmhn8DnsrdI73bsvLycrFv3z6xb98+AUC8/PLLYt++feL06dNCiCuP5EdERIjPP/9cHDx4UEyaNKnJR/IHDRokfvjhB7Fjxw7Rs2dPq0fyS0pKRMeOHcU999wj8vLyxMcffyzatWvX6JF8Pz8/8eKLL4qjR4+KxYsX+8Qj+WlpaSI8PFzodDqrR2KrqqosbebMmSM6d+4svvrqK/HTTz+JESNGiBEjRlg+Nz8Se/PNN4v9+/eLrVu3iqioqCYfiZ0/f744evSoePPNN5t8JDYgIECsXbtWHDlyRMyaNUtERERYPVXS1vzjH/8QX3/9tcjPzxcHDx4U//jHP4QkSeLLL78UQvDYu0PDp8+E4DlwtkcffVTodDqRn58vdu7cKcaNGyeuuuoqUVRUJITg8fdETIqcKDc3VwBo9Jo+fboQ4spj+YsWLRIdO3YUAQEB4qabbhLHjh2zWsdvv/0mpkyZIkJCQkRYWJi49957RXl5uVWbAwcOiNGjR4uAgAARFxcnnn322UaxrFu3TvTq1Uv4+/uLvn37iqysLKftt6do6tgDEGvWrLG0qa6uFg8++KCIjIwU7dq1E5MnTxbnzp2zWs+pU6fErbfeKoKCgsRVV10lHn30UWE0Gq3a5ObmioEDBwp/f3/RvXt3q22Yvf7666Jz587C399fDBs2THz//ffO2G2PMXPmTNGlSxfh7+8voqKixE033WRJiITgsXeH3ydFPAfOdffdd4uYmBjh7+8v4uLixN133y1OnDhh+ZzH3/NIQgjhnj4qIiIiIs/BMUVEREREYFJEREREBIBJEREREREAJkVEREREAJgUEREREQFgUkREREQEgEkREREREQAmRUREREQAmBQREVErTp06BUmSIEkS1q5d6+5wiJyGSRGRm9XV1eHTTz/FrFmz0L9/f2i1Wmg0GoSHh6NHjx6YPHkyXnjhBeTn57e4nq5du1ouXA1fISEhiIuLw4ABAzBt2jS8/vrrKCgosCm2JUuWNLlOlUqFsLAw9O7dG/feey+++eYbJQ4FEZF7ubvOCJEv+/zzz0WPHj2ardP2+1dKSkqzhXy7dOli83rUarWYPHmyyM/PbzG+xYsX27zOGTNmiLq6OiccJXK3/Pz8JmsHmq1Zs8byeWvfKSJP5ufspIuImvavf/0LTz31FMT/Lz+YlJSE2267Dddccw06dOiAqqoqnDt3Dt988w02b96MU6dOISsrC506dcJbb73V7HpjY2PxxRdfWH43Go24dOkSTp8+je+++w7r169HaWkpNmzYgO3bt+ODDz5Aampqq/GuXr0a1157LQBACIHffvsN27dvx6uvvoqKigqsXbsWUVFReP7552UeGfI0Xbt2tXxPido0NydlRD7pnXfesfzPumPHjiI3N7fF9nV1deKDDz4QnTt3FrNnz26yjbmnqEuXLi2uq7y8XMybN8+y/aCgILF79+4m2zbsKWouxt27dwt/f38BQPj7+4vi4uIWt09tD3uKqK3gmCIiF/v1118xd+5cAEBYWBh27NiBpKSkFpdRq9WYOnUqDhw4gJSUFFnbDwkJwUsvvYRnn30WAFBdXY3777/f4fUNHToUd999NwCgtrYWubm5suIjInIXJkVELvbyyy/j8uXLAIBly5ahR48eNi8bERFh060uWzz++OMYPnw4AODAgQPIzs52eF3Dhg2z/Hz69Gm7lm3qyab169dj3Lhx0Gq1CAoKQmJiIhYsWICSkhKb1pmbm4vp06eje/fuaNeuHcLCwtC/f3/Mnz8fBoOh2eUaDiwHgNLSUjzzzDMYNGgQIiIiZD19VVxcjKeffhqjRo2yDKaPjIzE8OHD8fjjj+PgwYONlqmt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PXj99ddhMpmQkpKC+fPnY/To0QgMDMSePXvwyiuv4Pjx4xg1apRNtwwHDBiAI0eOYMiQIZYyHzU1NcjOzsYrr7yCuro6+Pn54c0337R7PwcNGoTAwEBcvnwZixYtgkajQZcuXaBSXfl/d1xcHIKCgjB+/HhotVoUFRVh4cKFOHXqFCZPnoyrrroKJ06cwKpVq7B9+3ab94lIce6ZSJuIhBDis88+E927d7epqKYkSeKWW25ptlREw3IOrb38/PzEHXfc0WpJDlsLwsrx+xISM2bMaDbumJgYcfjw4WbXVVtbK9LS0oQkSa0eg27durW4v0pau3atCAoKsrsg7NKlS1tc5tFHH221xEbDgrCrVq1qtiCsv7+/+Oijj5qMv7UyH0II8fjjj9tUEHbr1q0iMDCw2bZJSUkiLy+v1e0ROQNvnxG50eTJk3Hs2DGsW7cO9913H/r06YOrrroKfn5+CAsLQ7du3TBx4kQsX74cJ0+exJYtW+weBNuuXTvExMSgf//++Mtf/oLXXnsNp0+fxqeffiqrJIezrFmzBh9++CGSkpLQoUMHBAQEoFevXnj88cdx+PBh9OnTp9llNRoNVqxYgQMHDuCvf/0r+vfvj/DwcKjVaoSHh2PgwIG477778Mknn+Do0aMu26fp06fj5MmTePLJJzFkyBBERERArVYjMjIS1113Hf75z39i69atjZZ76qmnkJWVhZtvvhmRkZHw9/dHp06dcMcdd+DLL7/Eiy++aFcc999/P7799lvcddddiI2Nhb+/P+Li4jBt2jTs27cPf/rTnxzex2effRarVq3CmDFj0L59+2anNBg/fjx++ukn/OUvf0FsbCw0Gg2ioqIwduxYZGRkYPv27W4vlEy+SxKCk0AQkfucOnXKUkV9zZo1mDFjhnsDamO6du2K06dPY/r06c2O4yGiK9hTRERERAQmRUREREQAmBQRERERAWBSRERERASASRERERERAD59RkRERASAPUVEREREAJgUEREREQFgUkREREQEgEkREREREQAmRUREREQAmBQRERERAWBSRERERASASRERERERAOD/AaL14pvo7OEUAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(X,y, 'ok', markersize=12, label=\"Data\")\n", "plt.xlabel(\"GDP per capita\", fontsize=20)\n", "plt.ylabel(\"Life satisfaction\", fontsize=20)\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "d4cdb351", "metadata": {}, "source": [ "# Model of GDP and Life Satisfaction\n", "## Fitting and predictions" ] }, { "cell_type": "code", "execution_count": 21, "id": "86ee41bd", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
LinearRegression()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "LinearRegression()" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ ">>> from sklearn.linear_model import LinearRegression\n", "# Select a linear model\n", "model = LinearRegression()\n", "\n", "# Train the model\n", "model.fit(X, y)" ] }, { "cell_type": "code", "execution_count": 22, "id": "25b99bc8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[5.96242338]]\n" ] } ], "source": [ "# Make a prediction for Cyprus\n", "X_new = [[22587]] # Cyprus' GDP per capita\n", "print(model.predict(X_new)) # outputs [[ 5.96242338]]" ] }, { "cell_type": "markdown", "id": "fe2c6057", "metadata": {}, "source": [ "## Extracting data from model\n", "\n", "The Linear regression model\n", "\n", "$$f(\\theta)=x_0 +x_1 \\theta_1 +x_2 \\theta_2 + \\cdots$$" ] }, { "cell_type": "code", "execution_count": 25, "id": "5278c68f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4.853052800266435" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#theta_0\n", "t0 = model.intercept_[0]\n", "t0" ] }, { "cell_type": "code", "execution_count": 27, "id": "7964db8c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[4.91154459e-05]])" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#theta_1\n", "t1 =model.coef_\n", "t1" ] }, { "cell_type": "code", "execution_count": 29, "id": "2c494d36", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkUAAAG+CAYAAACdw3CGAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB8l0lEQVR4nO3deVhU1f8H8PedYd9dQBZxV3BXLJfMpNI0Cc12W9Q0U9TMLEtzt0xbLMsUtUzbrG9mmgSaS6CllqapoI6p4cYiruzCwJzfH1fmBzLADDPM+n49zzzKPefee+4dxvl47jnnIwkhBIiIiIgcnMLSDSAiIiKyBgyKiIiIiMCgiIiIiAgAgyIiIiIiAAyKiIiIiAAwKCIiIiICwKCIiIiICADgZOkG2AqNRoP09HR4e3tDkiRLN4eIiIj0IIRAbm4ugoODoVBU3xfEoEhP6enpCA0NtXQziIiIqBYuXLiAxo0bV1uHQZGevL29Acg31cfHx8KtISIiIn3k5OQgNDRU+z1eHQZFeip7ZObj48OgiIiIyMboM/SFA62JiIiIwKCIiIiICACDIiIiIiIAHFNkcqWlpVCr1ZZuht1ydnaGUqm0dDOIiMgOMSgyESEEMjMzcePGDUs3xe75+fkhMDCQ60UREZFJMSgykbKAKCAgAB4eHvzCrgNCCBQUFCArKwsAEBQUZOEWERGRPWFQZAKlpaXagKhBgwaWbo5dc3d3BwBkZWUhICCAj9KIiMhkONDaBMrGEHl4eFi4JY6h7D5z7BYREZkSgyIT4iMz8+B9JiKiusCgiIiIiAgMioiIiIgAMCiiOpaUlARJkgxaqqBZs2ZYsmRJnbWJiIisjEYDrFkDjB5t0WYwKHJwI0eOhCRJGDduXKWyCRMmQJIkjBw50vwNIyIix5CcDNxzDzBqFPDFF8DmzRZrCqfk1wWNBrh61bJtaNAAUOgX84aGhuL777/HRx99pJ3yfvPmTaxbtw5NmjSpy1YSEZGjyssD5s0DPvoIKC39/+0vvQTcfz/g6Wn2JrGnqC5cvQoEBFj2ZUBQFhERgdDQUPz000/abT/99BOaNGmCrl27arcVFRVh0qRJCAgIgJubG+6++24cOHCgwrESEhLQpk0buLu7495778XZs2crne+PP/5Anz594O7ujtDQUEyaNAn5+fmG32ciIrI9QgA//QS0bQt88EHFgAgAzp8HNm60SNMYFBEAYNSoUVizZo325y+++ALPP/98hTqvv/46NmzYgC+//BKHDh1Cq1atMGDAAFy7dg0AcOHCBTzyyCOIjo7G4cOH8cILL2DatGkVjnHmzBkMHDgQjz76KI4ePYr//e9/+OOPPzBx4sS6v0giIrKs//4DHnoIePRR4OLFyuUtWgBbtgDPPmv+toGPz+iWZ599FtOnT8e5c+cAAHv27MH333+PpKQkAEB+fj5iY2Oxdu1aPPjggwCAzz77DNu3b8fq1asxdepUxMbGomXLlli8eDEAICwsDMnJyXj33Xe151m4cCGeeeYZTJ48GQDQunVrfPLJJ+jbty9iY2Ph5uZmvosmIrIDarUa8fHxUKlUyMvLg5eXF8LDwxEVFQVnZ2ej65tEUZHcK/T228DNm5XLXVyAadPk161hHJbAoIgAAP7+/oiKisLatWshhEBUVBQaNmyoLT9z5gzUajV69+6t3ebs7Izu3bvjxIkTAIATJ06gR48eFY7bq1evCj8fOXIER48exbfffqvdJoSARqNBamoq2rZtWxeXR0Rkd9LT07Fy5UrExsbi8uXLcHJygiRJEEKgpKQE/v7+iImJwdixYxEcHGxwfZP57Tdg/Hjg5End5f36AcuWAW3amO6ctcSgqC40aADcSlpq0TYYaNSoUdrHWMuWLTN1iwAAeXl5GDt2LCZNmlSpjIO6iYj0k5SUhOjoaBQWFqL01pickpKSCnUuX76MBQsW4MMPP8Rbb72FWbNm6V0/Li4OkZGRxjUyMxN49VVg3Trd5UFB8iDrJ54ArCRTAYOiuqBQAP7+lm6FwQYOHIji4mJIkoQBAwZUKGvZsiVcXFywZ88eNG3aFIDcBXvgwAHto7C2bdti821TKf/8888KP0dEROD48eNo1apV3V0IEZEdS0pKQv/+/aHRaKDRaKqtW1paivz8fLzyyitQKBR61S8oKED//v2xffv22gVGpaXAihXAjBlAdnblcoUCmDgRmD8f8PU1/Ph1iAOtSUupVOLEiRM4fvx4pezznp6eiImJwdSpU7F161YcP34cY8aMQUFBAUbfWmxr3LhxOHXqFKZOnYqTJ09i3bp1WLt2bYXjvPHGG9i7dy8mTpyIw4cP49SpU/j555850JqISA/p6emIjo7WKyAqI4QAAL3rlx178ODBSE9PN6yBBw4APXrIQY+ugKh7d7nOxx9bXUAEMCii2/j4+MDHx0dn2aJFi/Doo4/iueeeQ0REBE6fPo1ff/0V9erVAyA//tqwYQM2bdqEzp07Y8WKFXjnnXcqHKNTp07YtWsX/v33X/Tp0wddu3bF7NmzTfv8mojITq1cuRKFhYV6Bzi1pdFokJ+fj1WrVum3w40b8rihHj2Agwcrl/v5yb1He/cCERGmbKpJSaIshLQhzZo1086SKm/8+PE6x8KsXbu20vRyV1dX3NQ1Ar4KOTk58PX1RXZ2dqWg4ebNm0hNTUXz5s05e8oMeL+JyBGp1WqEhITg8uXLZjtnQEAALl68WPWsNCGAb7+Vxw5VNZZ2+HDg/fflNfQsoLrv79vZ5JiiAwcOaAeKAUBKSgr69++Pxx9/vMp9fHx8cLLcyHfJSgZ1ERER6SM+Pt6sAREAZGVlISEhAUOGDKlceOKE3Dt0a+mWStq2BWJjgb5967SNpmSTQZH/bYOYFy1ahJYtW6JvNTdekiQEBgbqfY6ioiIUFRVpf87JyTG8oURERCaiUqng5ORUadZYXVIqlVCpVBWDooICeb2hDz4A1OrKO7m7A3PmAK+8Iq8/ZENsfkxRcXExvvnmG4waNara3p+8vDw0bdoUoaGhGDJkCI4dO1btcRcuXAhfX1/tKzQ01NRNJyIi0lteXp7Zn3IoFArk5ub+/4ZffgHatwcWLtQdEA0eLPcgvfGGzQVEgB0ERZs2bcKNGzeqzeQeFhaGL774Aj///DO++eYbaDQa3HXXXbioa4nxW6ZPn47s7Gzt68KFC3XQeiIiIv14eXnB3MOANRoNvL295XxkQ4cC0dGAjpyWaNIE+Pln+XVr2RZbZJOPz8pbvXo1HnzwwWpnL/Xq1avCysp33XUX2rZti5UrV+Ktt97SuY+rqytcXV1N3l4iIqLaCA8PN+ujM0Betyj8+HF5fFBBQeUKTk7Aa68BM2daJKu9qdl0UHTu3Dns2LGjQnZ3fTg7O6Nr1644ffp0HbWsdiySj4aIzMbRP+OOfv3GioqKgr+/v3lnnymVGPTVV7oL+/YFli8H2rUzW3vqmk0HRWvWrEFAQACioqIM2q+0tBTJyckYNGhQHbXMMBbLR0NEZuHon3FHv35TcXZ2RkxMDBYsWFBhBnZdUQCIKS1FpXDV318eZP3cc1aTnsNkhI0qLS0VTZo0EW+88Ualsueee05MmzZN+/O8efPEr7/+Ks6cOSMOHjwonnrqKeHm5iaOHTum9/mys7MFAJGdnV2prLCwUBw/flwUFhYafB2JiYnCy8tLKJVKAaDKl1KpFF5eXiIxMdHgc9gbY+43kbk5+mfc0a/f1NLS0oSXl5dQKBTV3k9jXwpAeAMiTV6JSH5JkhDjxglx7Zqlb4NBqvv+vp3NDrTesWMHzp8/j1GjRlUqO3/+PDIyMrQ/X79+HWPGjEHbtm0xaNAg5OTkYO/evWhn4S6/svw1BQUFNUb95fPRJFW1JgQRWRVH/4w7+vXXheDgYMTFxUGhUECh0O8rvGzGmr71FbdecQC0/XZduwL79snrDt3KYmCXzBCk2QVT9xTVNtpXKBTC29tbpKWlmeS6RowYoT22k5OTCAgIEP369ROrV68WpaWleh9nzZo1wtfX1yRtqgl7isgWWMtn3FIc/frrWmJiovD29q6xB67sfn700Uf61b/VQ5RU1jvk7S3Exx8LoVZb+pJrzSF6imxdbfPXGJyPRg8DBw5ERkYGzp49iy1btuDee+/Fyy+/jIceesjsMx2I7IU1fcYtwdGvv65FRkZCpVJh5syZ2gWNlUolnJ2dtQm9AwICMGvWLKhUKkyePLlyfYUCzgDK0n8HAJgFQAWgLwA89RRw8iQwaZI8y8wRmCFIswum7CkqLi4W/v7+Rj3vDQgIEMXFxUZf14gRI8SQIUMqbd+5c6cAID777DMhhBCLFy8WHTp0EB4eHqJx48YiJiZG5ObmCiHk/7Hc3r45c+YIIYT46quvRLdu3YSXl5do1KiRGDZsmLh06ZJRbWZPEVk7a/qMW4KjX7+5FRcXi02bNolFixaJGTNmiEWLFolNmzZVef+Kjx0Tm7p0EYsAMQMQiwCxCRDFZb1DrVsLsW2bma+i7hjSU8SgSE+mDIo2btxokoFwmzZtMvq6qgqKhBCic+fO4sEHHxRCCPHRRx+J3377TaSmpoqdO3eKsLAwERMTI4QQoqioSCxZskT4+PiIjIwMkZGRoQ2YVq9eLRISEsSZM2fEvn37RK9evbTHrC0GRWTtrOkzbgmOfv1Wq7BQiDlzhHB1/f/B0+Vfrq5CzJ8v17MjfHxm5cry1xijLB9NXQoPD8fZWyuXTp48Gffeey+aNWuG++67D2+//TZ++OEHAICLiwt8fX21+eUCAwPh5eUFABg1ahQefPBBtGjRAj179sQnn3yCLVu2IC8vr07bTmRJtvIZryuOfv1W6ddfgQ4dgHnzgHJ5PbUGDgSOHQNmzQLc3MzfPivBoMgCTJG/plI+mjoghNC2c8eOHbj//vsREhICb29vPPfcc7h69SoKdK1wWs7BgwcRHR2NJk2awNvbW5u09/z583XadiJLspXPeF1x9Ou3KmlpwBNPyEHPmTOVy0NCgPXrgYQEoGVL87fPyjAosgBT5K/R5qOpQydOnEDz5s1x9uxZPPTQQ+jUqRM2bNiAgwcPYtmyZQDkhLxVyc/Px4ABA+Dj44Nvv/0WBw4cwMaNG2vcj8jW2cpnvK44+vVbhZISYMkSIDxcDnpup1TKWexPnAAee8z+FmGsJQcZTm5dTJG/prS0FOHh4SZqUWW//fYbkpOT8corr+DgwYPQaDRYvHixdp2LskdnZVxcXCqtQ6JSqXD16lUsWrQIoaGhAIC///67ztpMZC1s4TNelxz9+i3uzz+BmBjg8GHd5b16yesNde5s1mbZAgZFFmCK/DUBAQEmS1NSVFSEzMxMlJaW4tKlS9i6dSsWLlyIhx56CMOHD0dKSgrUajWWLl2K6Oho7NmzBytWrKhwjGbNmiEvLw87d+5E586d4eHhgSZNmsDFxQVLly7FuHHjkJKSUmUCXiJ7UpefcVvIH2bK6y9/vdnZ2bh48SIAoHHjxvD19bW6a7cUtVqN+O+/h+rTT5G3fz+8AIQDiAL+P01H/frAu+8Co0YBei7k6HDqeNC33TD14o2zZ8+ucRGtql4KhUI75d1Yty/e6O/vL/r16ye++OKLCos3fvjhhyIoKEi4u7uLAQMGiK+++koAENevX9fWGTdunGjQoEGFKfnr1q0TzZo1E66urqJXr15i8+bNAoD4559/at1mzj4jW2Dqz3haWpqYPXu2dqq7k5OTcHZ2Fk5OTgKA8Pf3F7Nnz7aaRQ+Nvf4pU6ZUuF5JknTWs8ZrN6e0tDQxe9Ys4e/tLf9eAML51p8AhD8gZgMi7amnhLh82dLNtQhDZp9JQhj54NdB5OTkwNfXF9nZ2fDx8alQdvPmTaSmpqJ58+Zw03PUfnp6OsLCwlBQUGDQ4mYKhQKenp5QqVQOmzixNvebyNxM+RlPSkpCdHQ0CgsLq02XoVQq4e7ujri4OERGRhp7CUYx5vpdXV2hUChw8+ZNvROfWtO1m0tSUhKio6JQWFCA6u6SUqGAu4eHQ92b8qr7/r4d+88spDb5a8rqxsXFOWxARGQrTPUZt9X8YbW9fkCeiFFTAHg7a7p2c0jasgX9779f/r2ooW6pRuNQ98YYDIosKDIyEtu3b4enp6d2WfaqlP3vcceOHdpp7URk3Yz9jKenpyM6OhoajUbv3payuoMHD0Z6errR12AMQ6/f3d0drq6uEEIYnB4EsK5rrzNCIH31akRHRcnXq+duDnFvTIBBkYUZmr+GARGRbTHmM24P+cMMuf4XX3wRxcXFtQqIyljTtZtcaioQHY2VL7yAQiH0DojK2PW9MRGOKdKTqccU6aJWq5GQkACVSoXc3Fx4e3sjPDwcgwYNcviZFeVxTBHZKkM+42q1GiEhIUbP4Lp48aLV/PtR3fUDMPp6y7O2azdKcTHwwQfA229DXViIEADG3CW7ujd6MGRMEYMiPekTFDVr1gzu7u4WaqHjKCwsxNmzZxkUkV3btGkThg4dapLjDBkyxAQtqlumut7bj2kL116txERg/HjgVsqTTQBMcZfs4t7oiQOtzaws2q4p5QWZRtl9dpT/5ZBjcrT8Yaa43vJs6dp1unQJePZZ4L77tAERAKhg/AKDNn9v6hAXbzQBpVIJPz8/ZGVlAQA8PDyMzvtDlQkhUFBQgKysLPj5+dU4cJPIljla/jBTXG95tnTtFZSWAitXAm++CWRnVyrOAyApFIAR465s9t6YAYMiEwkMDAQAbWBEdcfPz097v4nslaPlDzPF9ZZnS9eu9fffcnqOqtIhdesGr549IVauNCoossl7YyYMikxEkiQEBQUhICAAarXa0s2xW+VnrBDZM0fLH2aK6y3Plq4dN24AM2cCy5cDugJDX19gwQJg3DiEx8Wh5FZC7tqyqXtjZhxorSdDBmoRERnLHmefVccU11ueTVy7EMB33wFTpshjiG6jBhB/zz1Q3X038iQJXl5eaNWqFcaPH29Xvxd1nc/PkO9v9hQREVkhZ2dnxMTEYMGCBQat7FxGoVAgJibGar74amLs9ZZnE9euUgETJgC//VapKB3AygYNEFtSgsu7d8Np715IkgQhBEpKSrTjVmvTp2FN9yY9PR0rV65EbGwsLl++DCcnpwrX6e/vj5iYGIwdO9ZsWRzYU6Qn9hQRkbk5Wo7E2l5veVZ/7YWF8qOw994DdAy1SHJ2RrQkobC01Ojg8HbWdG/Mmc+PU/KJiOyAo+VIrM31lmf1156QALRvLwdFugKinj3RXwgUlJTUSUBkLffGmvP5MSgiIrJijpYj0ZDrLc+qr/3CBeCRR4CoKDlVx+1CQ+V8ZikpBuW505c13Rtrz+fHoIiIyMo5Wo5EXderaw2jsm1We+1qtZyeo21bYOPGyuVOTsDUqcDx41h57lyt8tyV8fDwAGD9vxfWns+PY4r0xDFFRGQNHC1HYvnrvXHjBtLS0iBJEoKDg+Hn52e9175nDzBuHJCSoru8Tx95Cn6HDiaZeefv74/Y2FicPn3aan8vLDWjkrnP6gCDIiIiqtGVK8DrrwNr1ugub9gQeP99YMQI4FZPl6PkubPUdXKgNRERkTlpNMDnnwNhYVUHRGPGyFPxR47UBkSA4+S5s4Xr5DpFRERExjhyRE7PsW+f7vLOnYEVK4CePXUWO0qeO1u4TvYUERER1UZurrwadbduugMiLy/go4/kXGZVBERyNcfIc2cL18meIiIiIkMIAWzYAEyeDKSl6a7z+ONyQBQSUuPhHCXPnS1cJwda64kDrYmICKdPAy+9BGzdqru8ZUtg2TJgwAC9D+koee5sYfYZH58RERHV5OZNYP58oEMH3QGRiwswZ448Bd+AgAj4/7xvhixWWZ415TOrji1cJ3uK9MSeIiIiB7V9u5y89dQp3eX9+8u9Q61b1/oUjpLnzhLXyZ4iIiIiY6WnA089BTzwgO6AKCgI+N//gF9/NSogAhwnz521XyeDIiIiovJKSoCPPwbCw+Wg53YKBfDyy/KaQ088UWHNIWM4Sp47a75OBkVERERl/voL6N5dnlmmaz2cnj2BgweBJUuAOhhK4Sh57qz1OjmmSE8cU0REZMeuXwemTwdWrZKn3N+uXj1g0SLghRfkniIzcJQ8d3V9ncx9VgcYFBER2SEhgK++krPVVzVVfORI4L33gFs9GmRbDPn+5uKNRETkmI4dA8aPB3bv1l3evj0QGytntCeHwDFFRETkWPLzgWnTgC5ddAdEHh5yz9A//zAgcjDsKSIiIsfx88/ApEnA+fO6yx9+WJ551qSJWZtF1oFBERER2b+zZ+VgKC5Od3mzZsDSpcBDD5mzVWRlTBoU5ebmIjU1Fbm5uSgtLa2x/j333GPK0xMRkYWo1WrEx8dDpVIhLy8PXl5eCA8PR1RUlGVnShUXAx9+KKfoKCysXO7sLA+ynjFDfmxmJ6z2/bByJgmKPvvsMyxfvhzJycnQdzKbJElGZ8slIiLLSk9Px8qVKxEbG4vLly/DyckJkiRBCIGSkhL4+/sjJiYGY8eONf+qy0lJ8kDqEyd0l0dGAsuXA23bmrNVdcqq3w8bYNSU/NLSUjz66KOIu9UdacihJEnSqzfJWnBKPhFRRUlJSYiOjkZhYWG1/54rlUq4u7sjLi4OkZGRdd+wrCzgtdeAr7/WXR4QACxeDDzzjMlWo7YGVvt+WJjZpuSvWLECmzdvBgA0atQIzz//PLp164b69evrndOEiIhsT1JSEvr37w+NRlNjYs/S0lIUFBSgf//+2L59e919EZeWAp99Ji/CeONG5XJJAmJigLfflhdjtCNW+X7YIKN6inr06IEDBw6gXbt2+P3331HPzn7JymNPERGRzCozuh86JAc8+/frLu/WTV5z6M47TXteK2CV74cVMeT726junBMnTkCSJMyaNcuuAyIiIvp/K1euRGFhoUFfwACg0WiQn5+PVatWma4x2dnyrLI779QdEPn4yLPK/vrLLgMiwMreDxtnkmdcYWFhpjiM3po1awZJkiq9JkyYUOU+69evR3h4ONzc3NCxY0ckJCSYscVERPZBrVYjNja21mNCNRoNYmNjoVarjWuIEMD338uZ7JcuBXQFBE8/DZw8CUycCNSQjd1WWc37YSeMCopat24NALh27ZpJGqOvAwcOICMjQ/vavn07AODxxx/XWX/v3r0YNmwYRo8ejX/++QcPP/wwHn74YaSkpJiz2URENi8+Ph6Xq8oRpqesrCzj/mP677/AAw8Aw4YBmZmVy9u0AXbsAL79FggMrP15bIBVvB92xKig6KmnnoIQAr/88oup2qMXf39/BAYGal+//PILWrZsib59++qs//HHH2PgwIGYOnUq2rZti7feegsRERH49NNPqzxHUVERcnJyKryIiBydSqWCk5Nxq7kolUqoVCrDdywsBGbPBjp2lIOe27m5AW+9BRw9Ctx/v1FttBUWfT/skFFB0aRJk9C5c2fExsbi999/N1WbDFJcXIxvvvkGo0aNglTF1Mp9+/ahX79+FbYNGDAA+/btq/K4CxcuhK+vr/YVGhpq0nYTEdmivLy8Kv+t1ZdCoUBubq5hO23ZAnToIAc9xcWVywcNkhO8zpwJuLoa1T5bYrH3w04ZFRS5urri119/Rbdu3dC/f3+8/vrrOHz4MG7evGmq9tVo06ZNuHHjBkaOHFllnczMTDRq1KjCtkaNGiFTV7frLdOnT0d2drb2deHCBVM1mYjIZnl5eRm0Jp0uGo0G3t7e+lW+eBF47DE56Pnvv8rljRsDGzYAv/wCtGhhVLtskdnfDztnVJ+bstzANSEEFi9ejMWLF+u1r6lWtF69ejUefPBBk08ndHV1hasD/W+DiEgf4eHhRv/bXVpaivDw8OorlZQAn3wCzJkD5OVVLlcqgcmTgblzAS8vo9pjy8z2fjgIo4Ki26NTY6NVQ507dw47duzATz/9VG29wMBAXLp0qcK2S5cuIdDOB+AREZlC+Txa2dnZ8PT0RH5+fq2PFxAQgEGDBlVdYe9eec2ho0crtwVAfHg4VAMGIM/NDV6ffurQOb2ioqLg7+9v1GDrGt8PB2JUUDRnzhxTtaNW1qxZg4CAAERFRVVbr1evXti5cycmT56s3bZ9+3b06tWrjltIRGS7qsqjZUzPhEKhQExMjO4A5upV4I03gNWrK7cFwEp3d8Q6OeGySgWn06eZ0wuAs7MzYmJisGDBglpNy6/2/XBEwkaVlpaKJk2aiDfeeKNS2XPPPSemTZum/XnPnj3CyclJfPDBB+LEiRNizpw5wtnZWSQnJ+t9vuzsbAFAZGdnm6T9RETWLDExUXh5eQmlUikAmOSlUCiEt7e3SEtLq3iy0lIhVq8WokEDIeQViCq8EgHh5eQklApFtcdXKpXCy8tLJCYmWuSeWUpaWprw8vISihruj97vh50x5PvbZhOU7dixA+fPn8eoUaMqlZ0/fx4ZGRnan++66y6sW7cOq1atQufOnfHjjz9i06ZN6NChgzmbTERkE8ryaBUUFJgscbdCoYBCoUBcXFzFnpzkZOCee4DRo+Weotvb0qIF+iuVKNBoUGpATq+kpCSTtNsWBAcHIy4uTnuP9VHl++HgjMp95kiY+4yIHEFt82hVpyzHVlxc3P+vJ5eXJw+SXrJETuR6Oy8vpL/6KsIWL2ZOLz0lJSVh8ODBNQazOt8PO2a23Ge3U6vV+Ouvv7B69Wq8//77eP/997F69Wr89ddfXEKciMgG1DaPVhlJkuDs7KydnRwQEIBZs2ZBpVLJX8BCAD/9BLRtCyxerDsgeuwx4MQJrBSCOb0MEBkZCZVKhZkzZ8Lf3x+APEu82veDKjBJT1FBQQHeeustfPbZZ7h+/brOOvXq1cOLL76ImTNnwsPDw9hTmh17iojI3qnVaoSEhBg1k8nT0xMvvfQS/Pz8EB4ejkGDBv3/IN7//gNeegmoKqVEixbAsmXAwIEmaUtAQAAuXrzokIOI1Wo1EhISoFKpkJubC29v78rvh4Mw5Pvb6KDo/Pnz6NevH86cOVPjlHxJktCqVSvs3LkTjRs3Nua0ZsegiIjs3aZNmzB06FCTHGfIkCH/v6GoCHj/fWDBAkDX4r4uLsC0afLL3b1u20IOx2yPz9RqNR588EGcPn0aQgiEh4fj3XffRVJSElQqFVQqFZKSkvDee++hXbt2EELg1KlTePDBB02ycCMREZlOneTR2rkT6NwZmDVLd0DUr5882HrePG1AVGdtIaqBUUHR559/jhMnTkCSJMyYMQPJycmYOnUq7rnnHrRp0wZt2rTBPffcg9deew1Hjx7FzJkzAQDHjx/H559/bpILICIi0zBpHq3MTODpp+Wg5+TJyhUDA4HvvgO2bZOz2tdlW4j0ZFRQtH79ekiShIcffhhvvfVWhbQflU6kUGD+/PkYOnQohBBYv369MacmIiITM1kereRkICxMDnpup1AAkyYBKhXw1FNAFYEPc3qRJRgVFKWkpACAzrWCqjJ69GgAQHJysjGnJiIiEzNZHq3Nm4GcnMqF3bsDBw4AH38M+Pqapy3M6UUGMCooys7OBgCD1oEICgoCIA98IiIi61GWR8sYAQAqZdHy8wNWrJBzmkVEmK8tzOlFBjIqKKpfvz4AIDU1Ve99yuqW7UtERNahLI9WdUMhqqMAEAOgwoTv4cPlMUVjx8qZ7c3VFub0olowKiiKiIiAEALLli3Te5/ly5dDkiR07drVmFMTEVEdGDt2LNzd3fVOF1FGAcATwItlG9q2BZKSgC+/BAICzNoWAHB1dcWLL75Yc0WicowKioYNGwZAXlp81KhRyM/Pr7JuQUEBXnjhBfz2228AgKefftqYUxMRUR2oVR6tW684AMHu7sCiRcDhw4CRKyaXtaU2iouL8e+//xp1fnI8Ri3eKIRAnz59sHfvXkiSBH9/fzzxxBPo0aMHAgICIEkSLl26hL/++gs//PADLl++DCEE7r77buzevduU11HnuHgjETkSvfNoQe4higPQd8gQeRB106Yma0d6ejpatWqFwsJCg/Zz1PxnVJlZV7S+fv06oqKi8Oeff8oHrGJ6ZdlpevXqhV9++QX16tUz5rRmx6CIiBxNeno6Vq1aheVLl+LytWtQQg6CNABKIQ+qjgHwYkgIgmNjgehok7dhzpw5WLBgQbWBWVUUCgVmzZqFuXPnmrxdZDvMGhQB8loQsbGxWL58OU6cOKGzTtu2bTFhwgSMGzeuVs+HLY1BERE5HLUa+OgjqOfORUJhIVQAcgF4AwgHMEiphPPUqcDMmYCnZx2cnvnPyHhmD4rKy8jIQEpKCq5duwZAnmXWoUMH7VR8W8WgiIgcyu7dQEwMcPy47vK+fYHly4F27eqsCcx/RqZgyPe3cYlldAgKCrL5AIiIyGFdvgxMnSrPGtPF3x9YvBh49tkqV6M2lbL8Z8Ys4liW/4xBEenD9p5jERGR6Wk0wMqVcnoOXQGRJAHjxslrDj33XJ0HRADzn5H5mbyniIiIbMw//8iPyv76S3d5RAQQGyun6TAj5j8jc9MrKJo/f77277Nnz9a5vTbKH4uIiMwsJweYPRtYulTuKbqdjw/w9tvA+PEGrUZtKsx/Ruam10BrhUKh7cIsPy2y/PbaqM0US0vhQGsishtCAD/8ALzyCpCRobvOsGHy2CELjhHl7DMyBUO+v/UeUySE0NmNWba9Ni8iIjKzU6eAgQOBp57SHRC1aQNs3w6sW2fRgAhg/jMyP72CIo1Go31Vtb02LyIiMpObN4G5c4GOHYFt2yqXu7oC8+cDR48C/fqZvXlVqXUutlsrWjP/GRmCs8+IiOzdr78CHToA8+YBRUWVywcOBI4dA2bNkoMjK1KrXGy36sbFxTHFBxmEQRERkb1KSwOeeEIOes6cqVweEgL8+COQkAC0bGn+9ukpMjIS27dvh6enZ42P0sp6iHbs2IG+RiakJcdjVFB033334f7778e5c+f03ic9PV27HxER1YGSEmDJEiA8HFi/vnK5UglMmQKcOAE8+qhZ1hwyVmRkJFQqFWbOnAl/f38A8sKMzs7O2kApICAAs2bNgkqlYkBEtWJUmo+y2WfJyclop+dS72fOnEHr1q0hSRJnnxERmdq+ffKaQ0eO6C7v1QtYsQLo1Mm87TIhtVqNhIQEqFQq5ObmwtvbG+Hh4Rg0aBAHVVMlFk3zQUREFnDtGjB9OrBqle7y+vWB994Dnn8esMGk3OU5OztjyJAhTN1BJmf2oCg/Px8A4ObmZu5TExHZHyHktBxTpwJXruiuM2oU8O67QMOG5m0bkY0xe1C0ZcsWAEDjxo3NfWoiIvty7Jj8qOz333WXd+wop+fo3du87SKyUQYFRaNGjdK5febMmfDz86t236KiIpw5cwYHDhyAJEkcBEdEVFv5+fKaQh9+KA+qvp2npzz9ftIkgGNsiPRm0EDr29N6lO2qb6qPsvr169fHgQMH0Lx5c0PaalEcaE1EFicE8PPPcrBz4YLuOo88Is88Cw01a9OIrFWdDbRu0qRJhQDo3LlzkCQJQUFB1Y74lyQJbm5uCAoKwl133YWYmBguqEVEZIizZ4GXXgJ++UV3efPmwKefAoMGmbVZRPbEoKDo7NmzFX4uW11027Ztek/JJyIiAxQXAx98IGerLyysXO7sDLzxBvDmm4C7u/nbR2RHjBpofc8990CSJHh6epqqPUREVCYxERg/HlCpdJffdx+wfDkQFmbedhHZKaOCoqSkJBM1g4iItC5dAl57DfjmG93lgYHyIOunnrKJ1aiJbIVtr+BFRGRPSkv/v+dHV0CkUAATJ8o9R8OGMSAiMjGjgqLU1FRtHrO0tLQa66elpeH+++/Xuz4RkcM4eFBOwTFhApCdXbn8jjuA/fuBpUsBX1/zt4/IARgVFH311VdISkpCcXExQkJCaqwfEhKCkpISJCUl4euvvzbm1ERE9iE7W55V1r07cOBA5XJfX7n36M8/gW7dzN8+IgdiVFC0c+dOSJKERx55RO99HnnkEQghsG3bNmNOTURk24QA1q2TH5V9+img0VSu8+yzwMmT8qrVtzLBE1HdMWqg9YkTJwAAEREReu/TpUsXAMDx48eNOTURke06eVJ+TLZzp+7y8HC5d+jee83bLiIHZ1RPUfat5941pfgor6zu9evXjTk1EZHtKSwEZs0COnXSHRC5uwPvvAMcOcKAiMgCjOop8vHxwfXr13H16lW99ymr6+HhYcypiYhsS0KCPHMsNVV3+UMPAZ98Iq9MTUQWYVRPUbNmzQAYtl5RYmIiADllCBGR3btwAXj0USAqSndAFBoKbNwIbN7MgIjIwozqKerXrx8OHTqEZcuWISYmBkFBQdXWT0tLw7JlyyBJEvr162fMqYnIRNRqNeLj46FSqZCXlwcvLy+Eh4cjKiqq2pyGVAO1Wu75mTNHzmp/OycnYMoUYPZsOau90afj+0hkNGGEs2fPChcXF6FQKETbtm3FkSNHqqx7+PBhER4eLiRJEi4uLuL06dPGnNrssrOzBQCRnZ1t6aYQmURaWpqYPXu28Pf3FwCEk5OTcHZ2Fk5OTgKA8Pf3F7NnzxZpaWmWbqrt+eMPITp2FEKeY1b51aePEMnJJjkV30ei6hny/S0JIYQxQdUHH3yA119/HZIkQZIkREZGok+fPtpeo4yMDOzevRu7du1C2akWLFiAadOmGXNas8vJyYGvry+ys7Ph4+Nj6eYQGSUpKQnR0dEoLCxEaWlplfWUSiXc3d0RFxeHyMhI8zXQVl25Iidn/eIL3eUNG8rJXYcPN8lq1HwfiWpmyPe30UERALz11luYN28eNBoNpCo+6EIIKBQKzJs3DzNmzDD2lGbHoIjsRVJSEvr37w+NRgONrrVxbqNQKKBQKLB9+3Z+oVZFowHWrAFefx24dk13nRdfBBYuBOrXN8kp+T4S6cfsQREAHD58GO+99x62bt2KGzduVCjz8/NDVFQUXnvtNXTu3NkUpzM7BkVkD9LT0xEWFoaCggK9vkjLKBQKeHp6QqVSITg4uA5baIOOHpUXV9y7V3d5587AihVAz54mOyXfRyL9GfL9bbKEsF26dMG6detw9epVnD59Gn/++Sf+/PNPnD59GlevXsXXX39tswERkb1YuXIlCgsLDfoiBQCNRoP8/HysWrWqjlpmg3Jz5YHSERG6AyJvb2DJEuDvv00aEAF8H4nqisl6iswtLS0Nb7zxBrZs2YKCggK0atUKa9aswR133KGzflJSEu7VsRhaRkYGAgMDazwfe4rI1qnVaoSEhODy5cu1PkZAQAAuXrzo2LOZhAA2bAAmTwaqSmz9xBPAhx8CeuSENBTfRyLDWKSnyJyuX7+O3r17w9nZGVu2bMHx48exePFi1KtXr8Z9T548iYyMDO0rICDADC0msrz4+HijvkgBICsrCwkJCSZqkQ06cwYYNAh4/HHdAVGrVsCvvwL/+1+dBEQA30eiumTUOkWW8u677yI0NBRr1qzRbmuu56JnAQEBeqUlKSoqQlFRkfbnnJwcg9tJZE1UKhWcnJxQUlJS62MolUqoVCoMGTLEhC2zAUVFwLvvyik4yv27oOXqCkyfLs88c3Or06bwfSSqOyYLis6cOYPNmzfjyJEjuHLlCgoLC1HdkzlJkrCzqmSINdi8eTMGDBiAxx9/HLt27UJISAjGjx+PMWPG1Lhvly5dUFRUhA4dOmDu3Lno3bu3znoLFy7EvHnzatU+ImuUl5dX5exQfSkUCuTm5pqoRTZixw5g/Hjg1Cnd5Q88IGe5b93aLM3h+0hUd4wOigoKCjBhwgR8/fXXlYIgIUSlD29ZHWM+1P/99x9iY2MxZcoUvPnmmzhw4AAmTZoEFxcXjBgxQuc+QUFBWLFiBe644w4UFRXh888/R2RkJP766y9ERERUqj99+nRMmTJF+3NOTg5CQ0Nr3WYiS/Py8qr2Pyr60Gg08Pb2NlGLrFx6OvDqq8D33+suDwqSB1I//rhJ1hzSF99HorpjVFAkhMDQoUOxY8cOCCHQsGFDNG7cGIcPH4YkSejTpw+uXbuGkydPoqSkBJIkISwsTK+BzdXRaDS444478M477wAAunbtipSUFKxYsaLKoCgsLAxhYWHan++66y6cOXMGH330Eb7++utK9V1dXeHq6mpUO4msSXh4uFGPXACgtLQU4eHhJmqRlSopAZYvB2bOlGeY3U6hACZNAubNAyww6YLvI1HdMWqg9fr167F9+3YAwJw5c5CZmYmvvvpKW75r1y4kJyfj+vXr+PDDD+Hp6Ylr167hrbfe0iaGrY2goCC0a9euwra2bdvi/PnzBh2ne/fuOH36dK3bQWRLoqKi4O/vb9QxAgICMGjQIBO1yArt3w907w68/LLugKhnT+DgQeCjjywSEAF8H4nqklFB0bp16wAAvXr1wpw5c6BQKHQ+FvP09MTkyZOxc+dO5Obm4pFHHkF6enqtz9u7d2+cPHmywrZ///0XTZs2Neg4hw8frjGJLZG9cHZ2RkxMDJRKZa32VygUiImJsc9p3Nevywsw9uwJ/PNP5fJ69YCVK4E9e4AuXczevPL4PhLVIWOSrIWEhAiFQiHWrl2r3ZaSkiIkSRIKhULnPlOmTBGSJIk33nij1ufdv3+/cHJyEgsWLBCnTp0S3377rfDw8BDffPONts60adPEc889p/35o48+Eps2bRKnTp0SycnJ4uWXXxYKhULs2LFDr3MyISzZg7S0NOHl5SUUCoUAoPdLoVAIb29v+0sqqtEI8eWXQvj7V528deRIIbKyLN3SCvg+EunPkO9vo3qKrly5AgBo0aKFdlv5/30UFhZW2icqKgoA8Msvv9T6vHfeeSc2btyI7777Dh06dMBbb72FJUuW4JlnntHWycjIqPA4rbi4GK+++io6duyIvn374siRI9ixYwfuv//+WreDyNYEBwcjLi5OmwdLH2V14+Li7Cs1xPHjwL33AiNGALrW/WnfHti9W85pZuTjKlPj+0hUN4xa0drLywuFhYU4ePAgutzqUs7IyEBISAgkScLp06crrR908OBB3HnnnfD29kZ2drZRjTcnrmhN9iQpKQmDBw9GQUFBtdnVy3JlxcXFoW/fvmZsYR3KzwfeegtYvFgeVH07Dw9g7lx5xWorf8Tk0O8jkZ7MtqJ12f82yq+uGhgYCHd3dwDAoUOHKu1z6tZaH8bOniCi2ouMjIRKpcLMmTO1g3aVSiWcnZ21Y1UCAgIwa9YsqFQq+/ki3bxZ7gF6913dAdHDDwMnTgBTp1p9QAQ48PtIVEeM6il6/PHH8dNPP+H999+vsKbPfffdh127diEyMrLCAo1qtRq9e/fG33//jU6dOuHw4cNGNd6c2FNE9kqtViMhIQEqlQq5ubnw9vZGeHg4Bg0aZD+Dcc+dk6fRb96su7xZM2DpUuChh8zaLFNyiPeRqBYM+f42KiiKjY3FhAkT0K9fP2zbtk27/ZtvvsHw4cO1axU9/vjjyM/Px3fffYcjR45AkiS89dZbePPNN2t7arNjUERkg4qL5cSs8+cDOsY4wtlZ7hWaMUN+bEZEdsdsQVFmZiZCQkKgUChw8uTJCgOuBw0ahK1bt+pc0bpr167Ys2cP3Oo4R5ApMSgisjG7dsnpOY4f110eGSkv0ti2rVmbRUTmZbYxRYGBgVCr1bh582aFgAgANm7ciBkzZqBRo0YQQkAIAV9fX0yYMAGJiYk2FRARkQ3JypJnlEVG6g6IAgKAr78GfvuNARERVWBUT5G+rl27hpKSEvj7+xudyNBS2FNEZOU0GmDVKjlb/Y0blcslSV6g8e235cUYicghGPL9rVfus4iICEiShB9//LHCFPuydYBCQkKqXV21fv36+pyGiKh2Dh2SA579+3WXd+sGxMYCd95p3nYRkU3RKygqS/B6+2KMzZo1g0KhwNGjRyvlIiMiqnPZ2cCsWcCyZXJP0e18fIAFC+SAqZZpMYjIcegVFJU98tLo+EfHDE/fiIgqEgL43/+AV14BMjN113n6aXmBxsBA87aNiGyWXgOtfX19AQAXLlyo08YQEdXo33+BBx4Ahg3THRC1aQPs2AF8+y0DIiIyiF5BUceOHQEAb7/9NlQqVaXl5G118DQR2ZDCQmD2bKBjRznouZ2bm5y+4+hRgDkNiagW9Hp89sILL+D333/Hn3/+ifbt21coE0KgQ4cOBp9YkiSm+iAi/WzZAkycCPz3n+7yQYPkFalvWxqEiMgQevUUPffcc3jttdegUCi0aw6VH0tUfpshLyKial28CDz2mBz06AqIGjcGNmwAfvmFARERGU2vniIAeO+99zBp0iQkJiYiLS0NRUVFmDdvHiRJwrhx4xAQEFCX7SQiR1JSAnzyCTBnDpCXV7lcqZSz2M+dC3h5mbt1RGSnjFq8UaFQQJIkJCcn2/2UfC7eSGQme/fKU+iPHtVd3ru3vObQrbGORETVMfnijVVp0qQJJEmCi4uLMYchIgKuXgXeeANYvVp3eYMGwHvvASNHAgqjMhQREelkVFB09uxZEzWDiByWRgOsXQu8/rocGOnywgvAokVyYEREVEeMCor0VVRUhBs3bsDf3x8K/g+PiMokJ8uPyvbs0V3eqZP8qOyuu8zbLiJySEZFKLm5uUhISEBCQgLydAyGvHLlCh599FH4+PggODgY9erVw6uvvoqioiJjTktEti4vD3jtNaBrV90BkZeXvBr1wYMMiIjIbIzqKfrpp5/w/PPPo3HjxpUepWk0Gjz44IM4dOiQdvp9bm4ulixZgrNnz2LDhg3GnJqIbJEQwMaNwMsvy9PtdXnsMeCjj+Tp9kREZmRUT9Gvv/4KABg6dGilx2L/+9//cPDgQQBAREQEXnnlFUREREAIgU2bNmHr1q3GnJqIbM1//wEPPQQ8+qjugKhFCyAhAVi/ngEREVmEUT1FKSkpkCQJd+no3v7qq68AAN26dcPevXvh5OQEtVqNPn364MCBA/jyyy8xcOBAY05PRLagqEieNfbOO8DNm5XLXVzkWWfTpwPu7uZvHxHRLUb1FGVlZQEAmjdvXmG7Wq3G7t27IUkSJkyYACcnOfZydnbGuHHjIITA/v37jTk1EdmCnTvlwdKzZ+sOiPr1kwdbz5/PgIiILM6ooOjatWsAUGmdogMHDqCwsBAAKvUGtWnTBgCQqSu7NRHZh4wM4Omn5aDn338rlwcFAd9/D2zbJme1JyKyAkYFRR4eHgD+v8eozO7duwEArVq1QqNGjSqUufN/g0T2q7RUTswaHg58913lcoUCmDQJOHECePJJQJLM30YioioYFRS1bNkSAJCUlFRh+8aNGyFJEu65555K+1y+fBkAmCuNyN4cOAB07y4HPTk5lcu7d5frfPwx4Otr/vYREdXAqKCof//+EEJg+fLl2LJlC/Ly8rB06VIcOHAAABAdHV1pn6O38hkFBwcbc2oishbXrwPjxwM9egCHDlUu9/MDVqyQc5pFRJi9eURE+jJq9tnLL7+MFStWIDc3Fw899FCFsrZt2+oMiuLj4yFJErp27WrMqYnI0oQAvvlGXoTxtkfoWsOHA++/D7BnmIhsgFE9RUFBQYiLi0NgYCCEENpXixYt8OOPP0K6bbzAmTNn8PvvvwMA+vXrZ8ypiciSTpwA7rtPDnp0BURt2wJJScCXXzIgIiKbYXTusz59+iA1NRV79uxBZmYmgoKCcPfdd2un4ZeXkZGBWbNmAQAeeOABY09NROZWUAC8/TbwwQeAWl253N0dmDMHeOUVef0hIiIbIomyHBxUrZycHPj6+iI7Oxs+Pj6Wbg6R+cXFAS+9BJw7p7t88GDgk0+Apk3N2y4iomoY8v1tdE8REdm58+flGWU//6y7vEkTeRr+4MHmbRcRkYkxKCKroFarER8fD5VKhby8PHh5eSE8PBxRUVFwdna2dPMck1otJ2adN09+bHY7Jyd5kPXMmYCnp/nbR0RkYnoFRWV5zABg+PDhOrfXRvljkWNKT0/HypUrERsbi8uXL8PJyQmSJEEIgZKSEvj7+yMmJgZjx47lMg7mtHs3EBMDHD+uu7xvX2D5cqBdO/O2i4ioDuk1pkihUECSJEiShJKSkkrba3Xi245l7TimyPSSkpIQHR2NwsJClJaWVllPqVTC3d0dcXFxiIyMNF8DHdHly8DUqfKsMV38/eVB1s89x9WoicgmGPL9rfeU/LLp9lVtr82LHFdSUhL69++PgoKCagMiACgtLUVBQQH69+9fafV0MhGNBli1CggL0x0QSRIwbhxw8qQ8DZ8BERHZIb0en6Wmphq0nag66enpiI6OhkajgUaj0WufsnqDBw+GSqXiozRT+ucf+VHZX3/pLu/aFYiNlVesJiKyY3oFRU2rmGJb1Xai6qxcuRKFhYV6B0RlNBoN8vPzsWrVKsydO7duGudIcnKA2bPlmWO63gtvb3lNovHj5UHVRER2jusU6YljikxDrVYjJCREmxi4NgICAnDx4kXOSqstIYAffpAXWMzI0F3nqaeADz8EgoLM2zYiIhOrkzFFuowaNQqjR49GRlX/sOpw+fJl7X7keOLj440KiAAgKysLCQkJJmqRgzl1Chg4UA56dH1uW7cGtm0DvvuOARERORyjgqK1a9di7dq1uH79ut775OTkaPcjx6NSqXSmgDGEUqmESqUyUYscxM2bwNy5QMeOctBzO1dXYP584OhRoH9/szePiMgacKAAmVVeXl6tl3Eoo1AokJuba6IWOYBffwUmTADOnNFdPnAg8OmnQMuW5m0XEZGVMaqnqDZu3rwJAHB1dTX3qckKeHl5Gb0cg0ajgbe3t4laZMfS0oAnnpCDHl0BUUgIsH49kJDAgIiICBYIivbs2QMAaNSokblPTVYgPDzc6EU7S0tLER4ebqIW2aGSEmDJEiA8XA56bqdUAlOmACdOAI89xjWHiIhuMejx2fz583VuX758OQICAqrdt6ioCGfOnMHmzZshSRJ69+5tyKntkiPm+4qKioK/v7/Rs88GDRpkwlbZkX375DWHjhzRXd6rl7zmUOfO5m1XLTniZ4SILEgYQJIkoVAotC9Jkiptq+klSZJwd3cXhw8fNuTUFpednS0AiOzsbKOPlZaWJmbPni38/f0FAOHk5CScnZ2Fk5OTACD8/f3F7NmzRVpamglabn1mz54tlEqlAGDwS6FQiDlz5lj6EqzP1atCjBkjhDzhvvKrfn0hPvtMiNJSS7dUL47+GSEi0zHk+9ugdYoUiopP28oGzOpzCDc3NwQFBeGuu+7Ca6+9hs428j/VMqZap4j5vuQVrcPCwlBQUGDQAo4KhQKenp5c0bo8IeS0HFOnAleu6K4zahTw7rtAw4bmbVst8TNCRKZkyPe3UYs3liWETU5ORjs7z5ZtiqCoLN+XvuktFAoFFAoFtm/fbnf/6Nf2XuzYsQN9+/Y1QwttQEqK/Kjsjz90l3foID8qu/tu87bLCPyMEJGpmW3xxiZNmqBJkyZwcXEx5jAOobb5vjQaDQYPHoz09PQ6bqF5RUZGYvv27fD09IRSqay2blkPEQOiW/LygNdfl3OS6QqIPD2B998HDh2yqYCInxEisjSjgqKzZ88iNTUVrVq1MlV79JaWloZnn30WDRo0gLu7Ozp27Ii///672n2SkpIQEREBV1dXtGrVyqwLSJoi35e9iYyMhEqlwsyZM+Hv7w9AfiTi7OysDZQCAgIwa9YsqFQqBkRCABs3Au3ayUGPrll8jzwizyp77TXAxgYi8zNCRJZmk7nPrl+/jq5du+Lee+9FTEwM/P39cerUKbRs2RItq1hvJTU1FR06dMC4cePwwgsvYOfOnZg8eTLi4+MxYMCAGs9pzOMz5vuqmVqtRkJCAlQqFXJzc+Ht7Y3w8HAMGjTIbq/ZIKmpwEsvAfHxusubN5cXYLTRWXn8jBBRXTHbmCJLmTZtGvbs2YPff/9d733eeOMNxMfHIyUlRbvtqaeewo0bN7B169Ya9zcmKNq0aROGDh1q0D5VHWfIkCFGH4dsSHEx8MEHcrb6wsLK5c7O8qO0N98EPDzM3z4T4WeEiOqKId/fJkvzkZiYiE2bNuHIkSO4cuUKCgsLq52VJkkSzlSVdqAGmzdvxoABA/D4449j165dCAkJwfjx4zFmzJgq99m3bx/69etXYduAAQMwefJknfWLiopQVFSk/TknJ6dWbQX+P9+XMYsWluX74j/4DiQxERg/Hqgqz9t99wHLlwNhYeZtVx3gZ4SIrIHRQVFWVhaeeuop7Nq1C0DV0/MlSapQZkz+q//++w+xsbGYMmUK3nzzTRw4cACTJk2Ci4sLRowYoXOfzMzMSqtoN2rUCDk5OSgsLIS7u3uFsoULF2LevHm1bmN5zPdFBrl0CXj1VeDbb3WXBwYCH34oZ7q3k9Wo+RkhImtgVFCkVqvx4IMP4vDhwxBCoEuXLggJCUF8fDwkScKzzz6La9eu4dChQ8jIyIAkSYiIiECHDh2MarRGo8Edd9yBd955BwDQtWtXpKSkYMWKFVUGRYaaPn06pkyZov05JycHoaGhtToW832RXkpLgZUr5Udh2dmVyxUKuefo7bcBX1/zt68O8TNCRNbAqNlna9euxT///AMAWLNmDQ4dOoRFixZpy7/88kvExcUhLS0NP/30E4KCgnD8+HE89NBDWLNmTa3PGxQUVGldpLZt2+L8+fNV7hMYGIhLly5V2Hbp0iX4+PhU6iUC5IS1Pj4+FV61xXxfVKO//wZ69pSz2esKiO64A9i/H1i61O4CIoCfESKyDkb1FG3YsAEAMHDgwBp7aB5++GF07NgRd9xxB0aOHIlOnTqhdevWtTpv7969cfLkyQrb/v33XzRt2rTKfXr16oWEhIQK27Zv345evXrVqg2GYL4vqtKNG8DMmfLYIF09Jb6+wMKFwIsvyolc7ZQlPyPMr0ZEWsbkEwkMDBQKhUKsW7dOuy0lJUWbD02j0VTaZ86cOUKSJDFhwoRan3f//v3CyclJLFiwQJw6dUp8++23wsPDQ3zzzTfaOtOmTRPPPfec9uf//vtPeHh4iKlTp4oTJ06IZcuWCaVSKbZu3arXOY3NfcZ8X1SBRiPEt98K0ahR1fnKnn1WiMxMS7fUbMz9GWF+NSLHYMj3t1FBkYuLi1AoFGLfvn3abf/++682KMrLy6u0z+7du4UkSaJNmzbGnFrExcWJDh06CFdXVxEeHi5WrVpVoXzEiBGib9++FbYlJiaKLl26CBcXF9GiRQuxZs0avc9nbFCUlpYmvLy8hEKhMPgfe29vb/7DbE9OnBDivvuqDobCw4X47TdLt9LszPkZSUxMFF5eXjUGYUqlUnh5eYnExMS6u3AiqlNmC4rK/gE7ePCgdltmZqY2KDp58mSlffbv3y8kSRKenp7GnNrsjA2KhJD/IXZyctL7H32FQiGcnJxEUlKSCa+ELKagQIgZM4RwdtYdDLm7C/HOO0IUFVm6pRZjjs9Ibc/BwIjINhny/W107jMAFQYwN2rUSDsD5K+//qq0T9niicZOv7VFzPflwBISgPbtgQULALW6cvlDDwHHjgHTpwMOnEuwrj8jzK9GRNUxKiiKiIgAAO0MtDL33HMPhBD4+OOPKyyAeOPGDbz77ruQJKnS7DFHwXxfDubCBTkfWVSUnKrjdqGhcj6zzZvlVB1Up58R5lcjouoYleZj7dq1GDVqFHr16oU9e/Zot8fHxyM6OhqSJKFVq1YYPHgw8vPztdPzJUnCJ598ggkTJpjkIszBmDQfVWG+LzumVgMffwzMnQvk51cud3ICpkwBZs+Ws9qTTqb8jDC/GpFjMlvusxs3bqBLly4QQuC3336rkIz1hRdewBdffCGf5NajsrJTDRgwAPHx8VAojOqoMqu6CIrITu3ZA4wbB5TLs1dBnz7yFHwjFzElwzC/GpFjMuT726ioxM/PD2fPnsW5c+cqZaf//PPP8dlnn6FHjx7w9PSEq6srOnbsiPfffx9xcXE2FRAR6eXKFWDUKODuu3UHRA0bAmvXArt2MSCygLL8asYoy69GRPbJZAlhdRk9ejRGjx5dl6cgsjyNBvjiC+CNN4Br13TXefFFeRHG+vXN2zbSYn41IqpJnQZFRHbv6FEgJgbYu1d3eefOwIoVcgoPsijmVyOimvAZFlFt5ObKA6UjInQHRN7ewJIl/5/TjCyO+dWIqCZG9RSp1WqcOnUKANCyZUu4urpWKL958yZmzJiBH374AVeuXEHz5s0RExODl156yZjTkgkx75OBhAA2bAAmTwbS0nTXeeIJ4MMPgZAQszbNnGzx94Y5CImoRsasEvm///1PKBQK0bBhQ3Hz5s1K5QMHDhQKhUJIkqR9KRQKo/KeWYopVrS2Jsz7VAunTwsxcGDV6TlatRLi118t3co6Zeu/N8xBSOR4zJbmY9SoUUKSJPHCCy9UKvvll1+0QVBoaKh45JFHROPGjbXb9uzZY8ypzc6egiLmfTJQYaEQ8+YJ4eqqOxhydRVi7ly5nh2zh98b5iAkcjxmS/Nx6NAhSJKkc0XZsjWK2rRpg2PHjmHDhg1ISUlB27ZtAchT9sn8kpKS0L9/fxQUFKC0tLTauqWlpSgoKED//v2RlJRkngZam+3bgU6dgDlzgHKrs2s98ACQnCyXu7mZv31mYi+/N8HBwdolQfRdFqSsblxcHIKDg+u4hURkSUYFRVlZWQCAVq1aVdiu0Wiwc+dOSJKEl156STtbw9fXFxMnToQQAvv27TPm1FQLzPtkgPR04Kmn5KDn1ri5CoKCgP/9D9i6FWjd2vztMyN7+71hDkIiqopRQdGVK1cAAO7u7hW2Hz58GDk5OQDkwY3ldbi1aN2FCxeMOTXVAvM+6aGkRE7PER4uBz23UyjkQdYqlTyg2gESG9vj7w1zEBKRLkal+fDx8UF+fj62bduG+++/X7t9yZIlmDJlCkJDQ3Hu3LkK+xw+fBgRERFwdXVFYWFh7VtuZrae5oN5n/Tw11/ymkO3JTjW6tkTiI0FunQxa7MsyRF+b5iDkMi+GfL9bdSU/KZNm+L48eP466+/KgRFcXFxkCQJ99xzT6V9rt1a8bfsf2dkHvHx8UZ9sQHy49KEhAT7y/t07Rrw5pvAqlXy0Onb1asHvPsuMHq03FPkQBzh98bZ2RlDhgyx2vYRkfkY9S/8vffeCyEEli5dihMnTgAANm/erB1cqWs9j5RbOaGCgoKMOTUZiHmfdBAC+PJL+VHZypW6A6KRI4GTJ4ExYxwuIAL4e0NEjsWof+VfeukluLi4ICsrCx06dEDDhg0xdOhQCCEQEhKCRx99tNI+27ZtgyRJ6NSpkzGnJgMx79Ntjh0DIiPloEdXT0j79sDu3cCaNYAD92ry94aIHIlRQVHr1q3x9ddfw8PDA0IIXLt2DUII+Pn54bvvvoOLi0uF+pmZmdi+fTsA4L777jPm1GQg5n26JT8fmDZNHhe0e3flcg8P4L335HFFffqYvXnWhr83RORIjE4I+/jjj6Nv376Ij49HZmYmgoKCMHjwYNTXkQ386NGjePrppwHofrRGdYd5nwD8/DMwaRJw/rzu8qFD5XxlTZqYtVnWjL83RORIjJp95kg4+8z6ZxFV6exZORiKi9Nd3qwZsHQp8NBDBh3WFvN/Gcqhf2+IyC6YbfYZ2Q5nZ2fExMRgwYIFNa5IrItCoUBMTIxtfbEVF8uJWefPB3Qt/+DsDEydCsyYIT8201N6ejpWrlyJ2NhYXL58GU5OTpAkCUIIlJSUwN/fHzExMRg7dqzNr4DskL83ROSw2FOkJ1vvKQLkL/OwsDAUFBQYtBBf2aq+KpXKdr7kd+2S1xy6NSuykshIYPly4FbaGX0lJSUhOjoahYWF1QYJSqUS7u7uiIuLQ2RkpEHnsDYO9XtDRHbHkO9vx5tj7MAcIu9TVhYwfLgc9OgKiAICgK+/Bn77rVYBkT3k/zKUQ/zeEBGBQZHDsdu8T6WlwIoVQFiYHPTcTpKA8ePl9BzPPmtweg57y/9lKLv9vSEiKodBkQOyu7xPhw4Bd90lPy67caNyeUSEnMJj2TJ5depasMf8X4ayu98bIqLbcEyRnuxhTJEuNp33KTsbmDVLDnZ0BSs+PsCCBXKwVEPvRnU4A6sym/69ISKHYsj3N4MiPdlrUGSThJAz2L/yCpCZqbvO008DixcDgYFGn27Tpk0YOnSoSY7D/FpERObFgdZkv/79F3jgAWDYMN0BUVgYsHMn8O23JgmIAOb/IiJyFAyKyDYUFgKzZwMdOwI7dlQud3MD3n4bOHIEMHEKGeb/IiJyDFy8kazfli3AxInAf//pLh80SF6RukWLOjk9838RETkGkwZFZ86cwb59+5CZmYmCggKMHz8eDRs2NOUpyJFcvAhMngxs2KC7vHFj4JNPgIcfNniKvSGY/4uIyDGYZKD1oUOHMHnyZOzZs6fC9uTkZLRr107787JlyzBv3jz4+vri+PHjNjVLxRwDrR0hl5ZeSkrkYGfOHCAvr3K5Ugn1pEmIv/NOqM6dq/N7xdlnRES2y6Dvb2GkuLg44ebmJhQKhZAkSftSKBTi2LFjFerm5OQILy8voVAoxE8//WTsqc0qOztbABDZ2dkmP3ZaWpqYPXu28Pf3FwCEk5OTcHZ2Fk5OTgKA8Pf3F7NnzxZpaWkmP7fV2bNHiE6dhJDnmFV6pd1xh5g9dqzZ79Xs2bOFUqkUAAx+KRQKMWfOHJO2h4iI9GPI97dRQVF6errw8vISkiSJDh06iK1bt4q8vLwqgyIhhHj66aeFQqEQY8aMMebUZldXQVFiYqLw8vKq8QtXqVQKLy8vkZiYaNLzW40rV4QYPbrKYEg0aCASX3/dYvcqLS1NG9AbGhB5e3s7RkBLRGSFDPn+Nmr22UcffYT8/Hw0bdoUv//+OwYMGABPT89q94mMjIQQAgcPHjTm1HbBUXNpVaDRAF98IU+lX71ad50XXkDS6tXo/+GHFrtXzP9FRGT/jAqKtm7dCkmS8Oqrr8LPz0+vfcoGm6amphpzapvn6Lm0AADJycA99wCjRwNXr1Yu79QJ2LMH6fPmIfrZZy1+r5j/i4jIvhkVFJ07dw4A0L17d733KRvklKdrAK0DcehcWnl5wGuvAV27ArcNzgcAeHkBH34IHDwI3HWXVd0r5v8iIrJfRs0+8/T0xM2bN7Fnzx707NlTu12hUECSpEqzzwBg9+7diIyMhJ+fH65du1b7lpuZKWefOexsJiGAjRuBl1+Wp9vr8thjwEcfydPtYd33ivm/iIisnyHf30atUxQYGIizZ8/iv//+qxAUVWf//v0AgCZNmhhzapsWHx9v1Jc8AGRlZSEhIcF2cmn99x/w0ktAQoLu8hYt5MSuAwdW2GzN98rZ2RlDhgyxnfeAiIiqZdTjsz59+kAIgfXr1+tVv7i4GCtXroQkSYiMjDTm1DbNoXJpFRXJ6Tfat9cdELm4yOk7UlIqBUSAg90rIiKyKKOCopEjRwIANm/ejO3bt1dbt7i4GMOHD8eZM2cgSRLGjBljzKltmsPk0tq5E+jcGZg1C7h5s3J5v37yYOt58wB3d52HcJh7RUREFmdUUBQZGYknn3wSQghER0fjjTfe0D4eA4CzZ89i7969eP/999G+fXusX78ekiRh3LhxaN++vdGNt1V2n0srMxN4+mk56Dl5snJ5UBDw/ffAtm1AmzbVHsru7xUREVkNo3OfrV27Frm5uUhISMAHH3yADz74QPs/++joaG29si+2Rx55BB9//LGxp7VpdptLq7QUiI0FZswAcnIqlysUcmLX+fMBX1+9Dmm394qIiKyOSXKfAcBnn32G9957D2fOnNFZ3rhxY7z55psYN26cKU5ndpx9VoMDB4CYGHkavS7du8sBU0SEQYe1y3tFRERmY7bZZ+WNGTMGY8aMwfHjx/H3338jKysLpaWlaNCgAbp27YqIiAijx4bYC2dnZ8TExGDBggU1rs6si0KhQExMjHV8yd+4Abz5JrBihTzl/nZ+fsCiRcALLwA1LHioi13dKyIismp69RRNmTIFADBt2jQEBATUeaOskSl7igB5ReuwsDAUFBQYtChh2UrJKpXKsqkjhAC+/RZ49VUgK0t3nREjgPfeA4z8nbH5e0VERBZjyPe3XgOtlyxZgo8//hhXrlypsL158+Zo2bIlTp8+XfvWOiibzqV14gRw333Ac8/pDojatQN27QLWrjU6IAJs/F4REZHNMDrNx9mzZ1FcXGyq9jgUm8ulVVAgPyrr3BnQlWjVw0N+VPbPP3JOMxOyuXtFREQ2R6+gyMPDAwAq9RRZyty5cyFJUoVXdbOL1q5dW6m+m5ubGVtcNZvJpfXLL/ICjAsXAmp15fIhQ4Djx4E33pAXZKwDNnOviIjIJuk10LpVq1ZITk7GV199hT59+ljFgOn27dtjx44d2p9rWvXYx8cHJ8utmWMN11AmODgYc+fOxYwZM6wvl9b583Kusk2bdJc3bQosXQqUW36hLln1vSIiIpumV1A0dOhQHD16FGvWrMGWLVvQokWLCl88zz//PDw9PQ06sSRJ2Llzp2GtLcfJyQmBgYEGnc+Q+pZgVbm01Go5Meu8efJjs9s5OcmZ7mfOBAx8703Bqu4VERHZBb2CojfeeAPbtm3Dvn37kJGRgYyMDG2ZEAIHDhzQ+4SSJEEIYXRPzalTpxAcHAw3Nzf06tULCxcurDbJbF5eHpo2bQqNRoOIiAi888471a6qXVRUhKKiIu3POboWI7RXv/8urzl07Jju8r59geXL5QHVREREdkLvxRtLSkqwfv167NixA2lpaSgqKsKuXbsgSRK6detmcE8RACQmJhq8DwBs2bIFeXl5CAsLQ0ZGBubNm4e0tDSkpKToTOewb98+nDp1Cp06dUJ2djY++OAD7N69G8eOHUPjxo11nmPu3LmYN29epe2mmpJvlS5fBqZOBb78Une5vz+weDHw7LOAFT1+JCIiqoohU/KNWtFaoVBAkiQkJyejnQV7DW7cuIGmTZviww8/xOjRo2usr1ar0bZtWwwbNgxvvfWWzjq6eopCQ0PtMyjSaIDPPwemTQOuX69cLknA2LHAO+8A9eqZv31ERES1ZJEVrS3Jz88Pbdq00Xu9JGdnZ3Tt2rXa+q6urnB1dTVVE63X4cPyo7I//9RdHhEhp+fo3t2szSIiIjI3o9YpSk1NxX///Yc2NWQ6r2t5eXk4c+YMgoKC9KpfWlqK5ORkvevbpZwcYPJkoFs33QGRjw/wySfA/v0MiIiIyCEY1VPUtGlTU7XDIK+99hqio6PRtGlTpKenY86cOVAqlRg2bBgAYPjw4QgJCcHChQsBAPPnz0fPnj3RqlUr3LhxA++//z7OnTuHF154wSLttyghgPXr5YCo3ID5CoYNk8cOOXLQSEREDscmH59dvHgRw4YNw9WrV+Hv74+7774bf/75p3ZBv/Pnz1dIB3H9+nWMGTMGmZmZqFevHrp164a9e/dadByURZw6BUycCGzbpru8dWt5Vlm/fuZtFxERkRXQa6D1qFGj5MqShNWrV1faXqsT33Ysa2fqhLBmdfOmnH5j0SKg3OBxLVdXOX3H668DVrLSNxERkSmYfPZZ2SwzQB6Po2u7IcrWKSp/LGtns0HRr78CEyYAZ87oLh84EPj0U6BlS/O2i4iIyAxMPvusSZMmOoOfqraTFUhLA155RR4/pEtICLBkCfDoo1xziIiICHoGRWfPnjVoO1lQSYnc8zNrFpCXV7lcqZRzmc2dC+hY6JKIiMhR2eRAa6rCvn3ymkNHjugu79VLXnOoc2fztouIiMgGmD0ounjxIg4dOgQAGDx4sLlPb5+uXZNXo/7sM93l9esD770HPP88oDBqaSoiIiK7ZfagaOfOnXj++eehUChQUlJi7tPbFyHkPGVTpwJXruiuM2oU8O67QMOG5m0bERGRjbHY4zMjUq4RAKSkyI/K/vhDd3nHjvKjst69zdsuIiIiG8VnKbYmL09eT6hrV90Bkacn8MEHwMGDDIiIiIgMwIHWtkIIYNMmeebYhQu66zzyiDzNPjTUnC0jIiKyCwyKbEFqKvDSS0B8vO7y5s3lafiDBpm3XURERHaEj8+sWXEx8M47QPv2ugMiZ2dg5kzg2DEGREREREZiT5G1SkwExo8HVCrd5ffdJydvDQszb7uIiIjsFHuKrM2lS8Czz8pBj66AKDAQWLcO2LGDAREREZEJMSiyFqWl/9/z8+23lcsVCmDiRDlQGjaM+cqIiIhMTO/HZ/PnzzfJCQ8fPmyS49iVv/+W1xz6+2/d5XfcAaxYAXTrZt52ERERORBJ6LmKokKhgGSi3gkhBCRJQmlpqUmOZw45OTnw9fVFdnY2fHx8THPQGzfkgdLLl8tT7m/n6wssXAi8+KKcyJWIiIgMYsj3t0EDrbkKtQkJAdx7L1BVz9mzz8qLMDZqZNZmEREROSq9g6LExMS6bIfjkSTgtdfk4Ke8tm3lnqPISIs0i4iIyFHp/fjM0dXJ4zMhgH79gN9+A9zdgVmzgFdfBVxcTHN8IiIiB2fI9zdnn1mSJAHLlsnpOY4fB6ZPZ0BERERkIVy80dLCw4ENGyzdCiIiIofHniIiIiIiMCgiIiIiAsCgiIiIiAgAgyIiIiIiAAyKiIiIiAAwKCIiIiICwKCIiIiICACDIiIiIiIADIqIiIiIADAoIiIiIgLAoIiIiIgIAHOfkYNTq9WIj4+HSqVCXl4evLy8EB4ejqioKDg7O1u6eUREZEYMisghpaenY+XKlYiNjcXly5fh5OQESZIghEBJSQn8/f0RExODsWPHIjg42NLNJSIiM5CEEMLSjbAFOTk58PX1RXZ2Nnx8fCzdHDJCUlISoqOjUVhYiNLS0irrKZVKuLu7Iy4uDpGRkeZrIBERmYwh398cU0QOJSkpCf3790dBQUG1AREAlJaWoqCgAP3790dSUpJ5GkhERBbDoIgcRnp6OqKjo6HRaKDRaPTap6zu4MGDkZ6eXsctJCIiS2JQRA5j5cqVKCws1DsgKqPRaJCfn49Vq1bVUcuIiMgaMCgih6BWqxEbG1vjI7OqaDQaxMbGQq1Wm7hlRERkLRgUkUOIj4/H5cuXjTpGVlYWEhISTNQiIiKyNgyKyCGoVCo4ORm3AoVSqYRKpTJRi4iIyNowKCKHkJeXB0mSjDqGQqFAbm6uiVpERETWhkEROQQvLy8YuySXRqOBt7e3iVpERETWhkEROYTw8HCUlJQYdYzS0lKEh4ebqEVERGRtGBSRQ4iKioK/v79RxwgICMCgQYNM1CIiIrI2DIrIITg7OyMmJgZKpbJW+ysUCsTExDBJLBGRHWNQRA5j7NixcHd3h0Jh2K+9QqGAp6cnXnzxxTpqGRERWQMGReQwgoODERcXB4VCoXdgVFY3Li4OwcHBddxCIiKyJAZF5FAiIyOxfft2eHp61vgorayHaMeOHejbt6+ZWkhERJZik0HR3LlzIUlShVdNs4LWr1+P8PBwuLm5oWPHjlyZ2IFFRkZCpVJh5syZ2sHXSqUSzs7O2kApICAAs2bNgkqlYkBEROQgjFvi14Lat2+PHTt2aH+ubrXivXv3YtiwYVi4cCEeeughrFu3Dg8//DAOHTqEDh06mKO5ZGWCg4Mxd+5czJgxAwkJCVCpVMjNzYW3tzfCw8MxaNAgDqomInIwkjB2RTsLmDt3LjZt2oTDhw/rVf/JJ59Efn4+fvnlF+22nj17okuXLlixYoVex8jJyYGvry+ys7Ph4+NTm2YTERGRmRny/W2Tj88A4NSpUwgODkaLFi3wzDPP4Pz581XW3bdvH/r161dh24ABA7Bv374q9ykqKkJOTk6FFxEREdkvmwyKevTogbVr12Lr1q2IjY1Famoq+vTpU2VeqszMTDRq1KjCtkaNGiEzM7PKcyxcuBC+vr7aV2hoqEmvgYiIiKyLTQZFDz74IB5//HF06tQJAwYMQEJCAm7cuIEffvjBZOeYPn06srOzta8LFy6Y7NhERERkfWx2oHV5fn5+aNOmDU6fPq2zPDAwEJcuXaqw7dKlSwgMDKzymK6urnB1dTVpO4mIiMh62UVQlJeXhzNnzuC5557TWd6rVy/s3LkTkydP1m7bvn07evXqZaYWWh+1Wo34+HioVCrk5eXBy8sL4eHhiIqK4qwrIiJySDYZFL322muIjo5G06ZNkZ6ejjlz5kCpVGLYsGEAgOHDhyMkJAQLFy4EALz88svo27cvFi9ejKioKHz//ff4+++/sWrVKktehkWkp6dj5cqViI2NxeXLl+Hk5ARJkiCEQElJCfz9/RETE4OxY8dyBWciInIoNjmm6OLFixg2bBjCwsLwxBNPoEGDBvjzzz+1C/GdP38eGRkZ2vp33XUX1q1bh1WrVqFz58748ccfsWnTJodboygpKQlhYWFYsGABLl++DAAoKSmBWq1GSUkJAODy5ctYsGABwsLCkJSUZMHWEhERmZdNrlNkCba+TlFSUhL69+8PjUYDjUZTY/2ynF/bt29HZGRk3TeQiIioDjjEOkWkv/T0dERHR+sdEAHQ1h08eDDS09PruIVERESWx6DIAaxcuRKFhYV6B0RlNBoN8vPzHXLsFREROR4GRXZOrVYjNjYWpaWltdpfo9EgNjYWarXaxC0jIiKyLgyK7Fx8fLx2UHVtZWVlISEhwUQtIiIisk4MiuycSqWCk5NxKy8olUqoVCoTtYiIiMg6MSiyc3l5eZAkyahjKBSKKvPKERER2QsGRXbOy8sLxq66oNFo4O3tbaIWERERWScGRXYuPDxcuzBjbZWWliI8PNxELSIiIrJONpnmg/QXFRUFf39/owZbBwQEYNCgQSZsVd1jbjciIjIUgyI75+zsjJiYGCxYsKBW0/IVCgViYmJsJpBgbjciIqotpvnQky2n+UhPT0dYWBgKCgoMWsBRoVDA09MTKpXKJgKIpKQkREdHo7CwsNoAUKlUwt3dHXFxcUxhQkRk55jmgyoIDg5GXFycNp+ZPsrqxsXF2UxA1L9/fxQUFNTYI1ZaWoqCggL079+fSW+JiEiLQZGDiIyMxPbt2+Hp6QmlUllt3bIeoh07dqBv375mamHtMbcbERGZAoMiBxIZGQmVSoWZM2fC398fgPwoydnZWRsoBQQEYNasWVCpVDYREAHM7UZERKbBMUV6suUxRbqo1WokJCRApVIhNzcX3t7eCA8Px6BBg2xmUDUgX0dISIjRs+suXrxoU9dNRET6MeT7m7PPHJSzszOGDBmCIUOGWLopRjFlbjdbvxdERGQcPj4jm8bcbkREZCoMisimMbcbERGZCoMismnM7UZERKbCoIhsGnO7ERGRqTAoIptWltvNGLaY242IiEyPQRHZtLLcbjUtSFkVW8vtRkREdYdBEdm8sWPHwt3dXe8UJmXKVu5+8cUX66hlRERkSxgUkc1zhNxuRERU9xgUkV2w59xuRERkHgyKyG7Ya243IiIyD+Y+05O95T6zd/aS242IiIxjyPc3gyI9MSgiIiKyPYZ8f/PxGREREREYFBEREREBYFBEREREBIBBEREREREABkVEREREAAAnSzfAVpRN0svJybFwS4iIiEhfZd/b+ky2Z1Ckp9zcXABAaGiohVtCREREhsrNzYWvr2+1dbhOkZ40Gg3S09Ph7e0NSZLMfv6cnByEhobiwoULXCfJAnj/LY/vgWXx/lse34PaEUIgNzcXwcHBNebHZE+RnhQKBRo3bmzpZsDHx4cfBgvi/bc8vgeWxftveXwPDFdTD1EZDrQmIiIiAoMiIiIiIgAMimyGq6sr5syZA1dXV0s3xSHx/lse3wPL4v23PL4HdY8DrYmIiIjAniIiIiIiAAyKiIiIiAAwKCIiIiICwKCIiIiICACDojq1e/duREdHIzg4GJIkYdOmTRXKhRCYPXs2goKC4O7ujn79+uHUqVMV6ly7dg3PPPMMfHx84Ofnh9GjRyMvL69CnaNHj6JPnz5wc3NDaGgo3nvvvUptWb9+PcLDw+Hm5oaOHTsiISHB5NdrbRYuXIg777wT3t7eCAgIwMMPP4yTJ09WqHPz5k1MmDABDRo0gJeXFx599FFcunSpQp3z588jKioKHh4eCAgIwNSpU1FSUlKhTlJSEiIiIuDq6opWrVph7dq1ldqzbNkyNGvWDG5ubujRowf2799v8mu2JrGxsejUqZN2oblevXphy5Yt2nLee/NatGgRJEnC5MmTtdv4HtStuXPnQpKkCq/w8HBtOe+/FRJUZxISEsSMGTPETz/9JACIjRs3VihftGiR8PX1FZs2bRJHjhwRgwcPFs2bNxeFhYXaOgMHDhSdO3cWf/75p/j9999Fq1atxLBhw7Tl2dnZolGjRuKZZ54RKSkp4rvvvhPu7u5i5cqV2jp79uwRSqVSvPfee+L48eNi5syZwtnZWSQnJ9f5PbCkAQMGiDVr1oiUlBRx+PBhMWjQINGkSRORl5enrTNu3DgRGhoqdu7cKf7++2/Rs2dPcdddd2nLS0pKRIcOHUS/fv3EP//8IxISEkTDhg3F9OnTtXX+++8/4eHhIaZMmSKOHz8uli5dKpRKpdi6dau2zvfffy9cXFzEF198IY4dOybGjBkj/Pz8xKVLl8xzMyxg8+bNIj4+Xvz777/i5MmT4s033xTOzs4iJSVFCMF7b0779+8XzZo1E506dRIvv/yydjvfg7o1Z84c0b59e5GRkaF9Xb58WVvO+299GBSZye1BkUajEYGBgeL999/Xbrtx44ZwdXUV3333nRBCiOPHjwsA4sCBA9o6W7ZsEZIkibS0NCGEEMuXLxf16tUTRUVF2jpvvPGGCAsL0/78xBNPiKioqArt6dGjhxg7dqxJr9HaZWVlCQBi165dQgj5fjs7O4v169dr65w4cUIAEPv27RNCyIGtQqEQmZmZ2jqxsbHCx8dHe89ff/110b59+wrnevLJJ8WAAQO0P3fv3l1MmDBB+3NpaakIDg4WCxcuNP2FWrF69eqJzz//nPfejHJzc0Xr1q3F9u3bRd++fbVBEd+DujdnzhzRuXNnnWW8/9aJj88sJDU1FZmZmejXr592m6+vL3r06IF9+/YBAPbt2wc/Pz/ccccd2jr9+vWDQqHAX3/9pa1zzz33wMXFRVtnwIABOHnyJK5fv66tU/48ZXXKzuMosrOzAQD169cHABw8eBBqtbrCvQkPD0eTJk0qvAcdO3ZEo0aNtHUGDBiAnJwcHDt2TFunuvtbXFyMgwcPVqijUCjQr18/h3kPSktL8f333yM/Px+9evXivTejCRMmICoqqtJ94ntgHqdOnUJwcDBatGiBZ555BufPnwfA+2+tGBRZSGZmJgBU+GUv+7msLDMzEwEBARXKnZycUL9+/Qp1dB2j/DmqqlNW7gg0Gg0mT56M3r17o0OHDgDk++Li4gI/P78KdW9/D2p7f3NyclBYWIgrV66gtLTUId+D5ORkeHl5wdXVFePGjcPGjRvRrl073nsz+f7773Ho0CEsXLiwUhnfg7rXo0cPrF27Flu3bkVsbCxSU1PRp08f5Obm8v5bKSdLN4DIHCZMmICUlBT88ccflm6KQwkLC8Phw4eRnZ2NH3/8ESNGjMCuXbss3SyHcOHCBbz88svYvn073NzcLN0ch/Tggw9q/96pUyf06NEDTZs2xQ8//AB3d3cLtoyqwp4iCwkMDASASjMNLl26pC0LDAxEVlZWhfKSkhJcu3atQh1dxyh/jqrqlJXbu4kTJ+KXX35BYmIiGjdurN0eGBiI4uJi3Lhxo0L929+D2t5fHx8fuLu7o2HDhlAqlQ75Hri4uKBVq1bo1q0bFi5ciM6dO+Pjjz/mvTeDgwcPIisrCxEREXBycoKTkxN27dqFTz75BE5OTmjUqBHfAzPz8/NDmzZtcPr0aX4GrBSDIgtp3rw5AgMDsXPnTu22nJwc/PXXX+jVqxcAoFevXrhx4wYOHjyorfPbb79Bo9GgR48e2jq7d++GWq3W1tm+fTvCwsJQr149bZ3y5ymrU3YeeyWEwMSJE7Fx40b89ttvaN68eYXybt26wdnZucK9OXnyJM6fP1/hPUhOTq4QnG7fvh0+Pj5o166dtk5199fFxQXdunWrUEej0WDnzp12/x7cTqPRoKioiPfeDO6//34kJyfj8OHD2tcdd9yBZ555Rvt3vgfmlZeXhzNnziAoKIifAWtl6ZHe9iw3N1f8888/4p9//hEAxIcffij++ecfce7cOSGEPCXfz89P/Pzzz+Lo0aNiyJAhOqfkd+3aVfz111/ijz/+EK1bt64wJf/GjRuiUaNG4rnnnhMpKSni+++/Fx4eHpWm5Ds5OYkPPvhAnDhxQsyZM8chpuTHxMQIX19fkZSUVGFKbEFBgbbOuHHjRJMmTcRvv/0m/v77b9GrVy/Rq1cvbXnZlNgHHnhAHD58WGzdulX4+/vrnBI7depUceLECbFs2TKdU2JdXV3F2rVrxfHjx8WLL74o/Pz8KswqsTfTpk0Tu3btEqmpqeLo0aNi2rRpQpIksW3bNiEE770llJ99JgTfg7r26quviqSkJJGamir27Nkj+vXrJxo2bCiysrKEELz/1ohBUR1KTEwUACq9RowYIYSQp+XPmjVLNGrUSLi6uor7779fnDx5ssIxrl69KoYNGya8vLyEj4+PeP7550Vubm6FOkeOHBF33323cHV1FSEhIWLRokWV2vLDDz+INm3aCBcXF9G+fXsRHx9fZ9dtLXTdewBizZo12jqFhYVi/Pjxol69esLDw0MMHTpUZGRkVDjO2bNnxYMPPijc3d1Fw4YNxauvvirUanWFOomJiaJLly7CxcVFtGjRosI5yixdulQ0adJEuLi4iO7du4s///yzLi7baowaNUo0bdpUuLi4CH9/f3H//fdrAyIheO8t4fagiO9B3XryySdFUFCQcHFxESEhIeLJJ58Up0+f1pbz/lsfSQghLNNHRURERGQ9OKaIiIiICAyKiIiIiAAwKCIiIiICwKCIiIiICACDIiIiIiIADIqIiIiIADAoIiIiIgLAoIiIiIgIAIMiIiKqwdmzZyFJEiRJwtq1ay3dHKI6w6CIyMJKSkqwYcMGvPjii+jYsSMCAgLg7OwMX19ftGrVCkOHDsX777+P1NTUao/TrFkz7RdX+ZeXlxdCQkLQuXNnDB8+HEuXLkVaWppebZs7d67OYyoUCvj4+KBt27Z4/vnnsXv3blPcCiIiy7J0nhEiR/bzzz+LVq1aVZmn7fZXVFRUlYl8mzZtqvdxlEqlGDp0qEhNTa22fXPmzNH7mCNHjhQlJSV1cJfI0lJTU3XmDiyzZs0abXlNv1NE1syproMuItLt7bffxuzZsyFupR+MjIzEQw89hE6dOqFBgwYoKChARkYGdu/ejV9++QVnz55FfHw8GjdujBUrVlR53ODgYPz666/an9VqNa5fv45z585h7969WL9+PbKzs7Fx40bs3LkT33zzDaKjo2ts7xdffIE777wTACCEwNWrV7Fz504sWbIEeXl5WLt2Lfz9/fHee+8ZeWfI2jRr1kz7e0pk1ywclBE5pNWrV2v/Z92oUSORmJhYbf2SkhLxzTffiCZNmoixY8fqrFPWU9S0adNqj5WbmyumTJmiPb+7u7s4cOCAzrrle4qqauOBAweEi4uLACBcXFzE5cuXqz0/2R/2FJG94JgiIjO7cOECJkyYAADw8fHBH3/8gcjIyGr3USqVeOaZZ3DkyBFERUUZdX4vLy8sXrwYixYtAgAUFhbihRdeqPXx7rjjDjz55JMAgOLiYiQmJhrVPiIiS2FQRGRmH374IW7evAkAWLBgAVq1aqX3vn5+fno96tLH66+/jh49egAAjhw5goSEhFofq3v37tq/nzt3zqB9dc1sWr9+Pfr164eAgAC4u7sjPDwc06dPx40bN/Q6ZmJiIkaMGIEWLVrAw8MDPj4+6NixI6ZOnYr09PQq9ys/sBwAsrOz8dZbb6Fr167w8/MzavbV5cuXMX/+fPTu3Vs7mL5evXro0aMHXn/9dRw9erTSPsXFxYiLi8PEiRNx5513ol69enB2dkaDBg3Qo0cPzJ07F1euXKn2vGUD8EeOHAkAOHDgAIYNG4bQ0FC4ubkhNDQUzz//PFQqVZXHqGr2WVJSEiRJwvPPP6/d1rx580oD85OSkioc788//8TMmTMRGRmJwMBAuLi4wMfHB+3atUNMTAyOHz9e8w0lqguW7qoiciQajUY0aNBAABDe3t4iLy/PZMfW9/FZeevWrdM+9hgzZkylcn0enwkhxIoVK7T1Fi1aZFC7bx/EO2rUqCoHcwcHB4sTJ05UeazCwkLx1FNPVTsg3NPTU2zevFnn/uWv999//xXNmjWrtL+ugcY1+eabb4Snp2e17dL1vo0YMaLGAe4NGjQQf/zxR5XnLvu9GDFihFi9erVwcnLSeRxXV1fxww8/6DxGVQOtExMT9RqEX/53p/yjtqpeSqVSLFu2zOD7TGQsDrQmMqOUlBRcvXoVANCnTx94enpatD39+vXT/v3333+v9XGSk5O1fw8ODq71cZYvX44DBw6ge/fueOWVV9C6dWtkZWVh7dq1+OGHH5Ceno4BAwYgJSUF3t7eFfYVQuCxxx5DfHw8ACA6OhpPPPEEWrRoAYVCgf3792Px4sU4f/48HnvsMezZswd33HFHlW157LHHkJaWhpdeegmDBw9GvXr1cOrUKTRt2tSga/r6668xfPhwAICbmxvGjBmDBx98EIGBgcjLy8PRo0exefNmnDp1qtK+JSUlaNGiBYYOHYru3bujSZMmcHJywrlz57Bjxw588cUXuHr1KoYOHYqUlBQEBARU2Y7Dhw9j3bp1CAgIwPTp09G9e3fcvHkTCQkJWLJkCYqKivDMM8+gefPm1d6X8u68804kJyfj559/xsyZMwEAv/76a6XfgebNm1e4pnr16mHIkCG455570Lp1a3h6eiI9PR2HDh3CJ598gitXrmDixIkIDw/Hfffdp1dbiEzC0lEZkSP55ptvtP8bnjlzpkmPXZueIiGEaNy4sQAgnJycKpXp01N08eJF4efnJwAISZLE2bNnDTp/+V4IAGLQoEFCrVZXqjd//nxtnalTp1YqX7VqlQAgnJ2dxZYtW3Se69q1a6J9+/YCgOjdu3e116tQKMSvv/5q0LXcLj09XXh4eAgAIiAgoMrlFIQQ4vz585W2nT59Wmg0mir3OXr0qPDy8qr296n8Ug1NmzYVGRkZler89ttv2h6kO++8s1K5KafkX7x4UeTn51dZfuPGDdGpUycBQNx9993VHovI1DimiMiMyo//8Pf3r7KeRqNBSkpKlS+1Wm2yNjVo0ACA/D/4nJwcvfYRt6bk//DDD7j77ru1Y32efPJJg3tSynN1dcVnn30GJ6fKndgzZsxAhw4dAACrV69GcXFxhfa8++67AIBJkyZh4MCBOo9fr149vP/++wCAPXv26OydKTNy5Eg88MADtb4WAFi6dCkKCgoAAKtWrdK2X5fQ0NBK21q2bKkd36RLx44dtYPkN23aVGN7Fi9ejMDAwErb7733XowZMwaAPObo77//rvFYtRUSEgIPD48qy319fTF//nwAwB9//KHtWSUyBz4+IzKj3Nxc7d+re3SWk5ODjh07VlmempqKZs2amaRNXl5eFdrn4+Ojs969995b7XHuvPPOatdP0scDDzxQ5eM3hUKBESNGYOrUqbh27RoOHTqEnj17AgCOHz+OM2fOAJAfe1Xnnnvu0f593759aN26tc56zzzzTG0uoYJffvkFANCiRQsMHjzY6ONdv34d165dw82bN7XrBvn5+QGQ74FarYazs7POfcseWVVl1KhRiI2NBQDs2LFD70doxsrPz8fly5eRn5+vvaby13DkyBE+QiOzYVBEZEblx8Hk5+dbsCX/r3ygVlVAVBWlUonOnTtjxIgRiImJqfILWV9li0NWpfwst+TkZG1QVL5no1evXnqfLzMzs8qyTp066X0cXdRqNVJSUgAAd999d7U9PtVJTk7GRx99hC1btlTbXo1Gg+vXr1c5rqhr1646e+DKdOnSBS4uLiguLq4wRqwuXLlyBR9++CE2bNiAU6dOVbswZE2z64hMiUERkRmVPaoC5CnaVfHz86v0RTFy5Eh8+eWXJm9T2ZeOk5NTpcHL5ZVf0VqSJHh6eqJRo0Zwd3c3WVuqGygMAI0aNdL+/dq1a9q/Z2Vl1ep8ZY+2dKlXr16tjlnm2rVr2vcwKCioVsdYvXo1xo0bh5KSEr3qFxYWVllW0711cnJC/fr1kZmZWeHemtrBgwcxYMAAvR+LVXdNRKbGoIjIjDp37qz9+z///GPBlsiysrK06/aEhYVVW7d58+bVjokxhdr2ppSWlmr/HhcXp/ejxeoCBaVSWau2mIpKpdIGRAEBAZg6dSruu+8+NGvWDN7e3tpeuS+++AKjR48GgGp7XGp7b02puLgYTzzxBK5evQpnZ2e89NJLGDJkCNq0aYN69erB1dUVAPDff/+hZcuWAKq/JiJTY1BEZEYdOnRAgwYNcPXqVfz+++8oKCiodtBpXdu+fbv273fffbfF2lHm0qVLepfXr19f+/fyPXB+fn51Hrzpo379+lAoFNBoNMjIyDB4/7Vr16KkpARKpRK7du1CeHi4znr69urUdG9LSkq0xyp/b03pt99+w3///QdAXn6hqpXU67Kniqg6nH1GZEaSJOHZZ58FIA+mrovHYfoSQuCTTz7R/jx06FCLtaXMgQMH9C4vH/h07dpV+/c9e/aYvmG14OzsrG3j77//bnCPx7FjxwDIvYtVBUQA9J4pdvjw4Wofwx05ckQ7o8/QoFLfXqiyawKgTQ2jS13OfiOqDoMiIjObMmUK3NzcAADTp09HamqqRdrx7rvvYv/+/QCAiIgIDBgwwCLtKG/btm1V9qpoNBptEFmvXj1ERERoyyIiItC4cWMA8tT3sjQqllaWkiU1NRU///yzQfuWBTDVDcjPyMjA5s2b9TretWvXEBcXV2X5F198of17+UU99VH2+wwARUVFVdYrH5RVdV0ajQafffaZQecnMhUGRURm1qRJE20PTXZ2Nu6++2788ccf1e4jhNA771dN8vLy8Nprr2H69OkAAA8PD3z++ecmObaxioqKMHbs2ApjhMosWrRIOytq1KhR2vEngDxd/8033wQgj0cZPnx4tV/OOTk5+PTTT03c+somTpyoXXph7Nix2tlouly8eLHCz2VLBZw6dQp79+6tVL+goABPP/20QQORp0yZovMx2q5du7Bq1SoAQLdu3WqcBXi78gPJy5ZG0KX88gdV5ZCbPn06Dh06ZND5iUyFY4qILGDMmDFIS0vDvHnzkJ6ejj59+uC+++5DdHQ0OnbsiPr166O0tBSZmZk4dOgQfvjhB+2jB6VSCRcXlyqPXX4qeNnPN27cwNmzZ7F37178+OOP2gDL19cX3377bYXHT5Z0xx13IC4uDr17966Q5uPLL7/E999/DwBo3LgxZs2aVWnfcePGYfv27di4cSPWr1+PQ4cOYezYsejevTt8fX2Rk5MDlUqFpKQkbN68GW5ubpg4cWKdXk9gYCBiY2MxfPhwZGVloXv37pXSfKSkpGDz5s04efJkhYDiueeew9KlS6HRaBAVFYWpU6fi7rvvhpubGw4ePIiPPvoIp06dQu/evfV6ZNi5c2ccP34c3bp106b5KCoqQkJCAj766COUlJTAyckJy5YtM/g6u3btCjc3N9y8eROzZs2Cs7MzmjZtCoVC/n93SEgI3N3dMWDAAAQEBCArKwszZ87E2bNnMXToUDRs2BCnT5/GZ599hp07d+p9TUQmZ5mFtIlICCF++ukn0aJFC72SakqSJAYOHFhlqojy6Rxqejk5OYlHHnmkxpQc+iaENcbtKSRGjhxZZbuDgoLEsWPHqjxWcXGxiImJEZIk1XgPmjdvXu31mtLatWuFu7u7wQlh582bV+0+r776ao0pNsonhP3ss8+qTAjr4uIivvvuO53trynNhxBCvP7663olhN26datwc3Orsm5kZKRISUmp8XxEdYGPz4gsaOjQoTh58iR++OEHjB49Gu3atUPDhg3h5OQEHx8fNG/eHIMHD8bChQtx5swZbNmyxeBBsB4eHggKCkLHjh3x7LPP4pNPPsG5c+ewYcMGo1Jy1JU1a9Zg3bp1iIyMRIMGDeDq6oo2bdrg9ddfx7Fjx9CuXbsq93V2dsby5ctx5MgRvPTSS+jYsSN8fX2hVCrh6+uLLl26YPTo0fjxxx9x4sQJs13TiBEjcObMGcyYMQPdunWDn58flEol6tWrh549e+LNN9/E1q1bK+03e/ZsxMfH44EHHkC9evXg4uKCxo0b45FHHsG2bdvwwQcfGNSOF154Ab///jueeOIJBAcHw8XFBSEhIRg+fDj++ecfPPXUU7W+xkWLFuGzzz5Dnz59UL9+/SqXNBgwYAD+/vtvPPvsswgODoazszP8/f3Rt29frFq1Cjt37rR4omRyXJIQXASCiCzn7Nmz2izqa9aswciRIy3bIDvTrFkznDt3DiNGjKhyHA8RydhTRERERAQGRUREREQAGBQRERERAWBQRERERASAQRERERERAM4+IyIiIgLAniIiIiIiAAyKiIiIiAAwKCIiIiICwKCIiIiICACDIiIiIiIADIqIiIiIADAoIiIiIgLAoIiIiIgIAPB/TmwggjTZtJ8AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "Xest=np.linspace(0, 60000, 1000)\n", "plt.plot(X, t0 + t1*X, \"r\", linewidth=3,label=\"Model\")\n", "plt.plot(X,y, 'ok', markersize=12, label=\"Data\")\n", "plt.xlabel(\"GDP per capita\", fontsize=20)\n", "plt.ylabel(\"Life satisfaction\", fontsize=20)\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "id": "714824a0", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" } }, "nbformat": 4, "nbformat_minor": 5 }