{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Atherosclerosis - Disease lethality prediction\n", "\n", "With this notebook we give a brief introduction to feature engineering on relational data with *many columns.* We discuss why feature engineering on such data is *particularly challenging* and what we can do to overcome these problems.\n", "\n", "Summary:\n", "\n", "- Prediction type: __Binary classification__\n", "- Domain: __Health__\n", "- Prediction target: __Mortality within one year__ \n", "- Source data: __146 columns in 2 tables, 22 MB__\n", "- Population size: __28433__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Feature engineering and the curse of dimensionality\n", "\n", "### The problem\n", "\n", "To illustrate the point, we give a simplified example based on the real data used in the analysis below. When we engineer features from relational data, we usually write something like this:\n", "\n", "```sql\n", "SELECT AVG(t2.HDL)\n", "FROM population_training t1\n", "LEFT JOIN contr t2\n", "ON t1.ICO = t2.ICO\n", "WHERE t1.AGE >= 60 AND t1.ALKOHOL IN ('1', '2')\n", "GROUP BY t1.ICO;\n", "```\n", "\n", "Think about that for a second. This feature aggregates high-density lipoprotein (HDL) cholesterol values recorded during control dates conditional on age and alcohol consumption. We arbitrarily choose both, the column to aggregate over *(HDL)* and the set of columns to construct conditions on *(AGE* and *ALKOHOL)* out of a greater set of 146 columns.\n", "\n", "Every column that we have can either be aggregated (here *HDL)* or it can be used for our conditions (here *AGE* and *ALKOHOL)*. That means if we have *n* columns to aggregate, we can potentially build conditions for $n$ other columns. In other words, the computational complexity is $n^2$ in the number of columns.\n", "\n", "Note that this problem occurs regardless of whether you automate feature engineering or you do it by hand. The size of the search space is $n^2$ in the number of columns in either case, unless you can rule out something a-priori.\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The solution\n", "\n", "So when we have relational data sets with many columns, what do we do? The answer is to write different features. Specifically, suppose we had features like this:\n", "\n", "```sql\n", "SELECT AVG(\n", " CASE WHEN t1.AGE >= THEN weight1\n", " CASE WHEN t1.ALKOHOL IN ('1', '2') THEN weight2\n", " END\n", ")\n", "FROM population_training t1\n", "LEFT JOIN contr t2\n", "ON t1.ICO = t2.ICO\n", "GROUP BY t1.ICO;\n", "```\n", "\n", "*weight1* and *weight2* are learnable weights. An algorithm that generates features like this can only use columns for conditions, it is not allowed to aggregate columns – and it doesn't need to do so.\n", "\n", "That means the computational complexity is linear instead of quadratic. For data sets with a large number of columns this can make all the difference in the world. For instance, if you have 100 columns the size of the search space of the second approach is only 1% of the size of the search space of the first one.\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Background\n", "\n", "To illustrate the problem of dimensionality in predictive analytics on relational data, we use the STULONG 1 dataset. It is a longitudinal study of atherosclerosis patients.\n", "\n", "One of its defining features is that it contains many columns, which makes it a good candidate to illustrate the problem discussed in this notebook.\n", "\n", "The are some academic studies related to this dataset:\n", "\n", "* https://www.researchgate.net/publication/228572841_Mining_episode_rules_in_STULONG_dataset\n", "* https://citeseerx.ist.psu.edu/doc_view/pid/3a9cb05b77b631b6fcbe253eb93e053ba8c0719c\n", "\n", "The way these studies handle the large number of columns in the data set is to divide the columns into subgroups and then handling each subgroup separately. Even though this is one way to overcome the curse of dimensionality, it is not a very satisfying approach. We would like to be able to handle a large number of columns at once.\n", "\n", "\n", "The analysis is based on the STULONG 1 dataset. It is publicly available and can be downloaded the [the CTU Prague Relational Learning Repository](https://relational.fit.cvut.cz/dataset/Atherosclerosis) (Now residing at [relational-data.org](https://relational-data.org/dataset/Atherosclerosis).).\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Analysis" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's get started with the analysis and set up your session:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "%pip install -q \"getml==1.5.0\" \"featuretools==1.31.0\" \"tsfresh==0.20.3\" \"matplotlib==3.9.2\" \"ipywidgets==8.1.5\"" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "getML API version: 1.5.0\n", "\n" ] } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "import getml\n", "\n", "%matplotlib inline \n", "\n", "print(f\"getML API version: {getml.__version__}\\n\")" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Launching ./getML --allow-push-notifications=true --allow-remote-ips=true --home-directory=/home/user --in-memory=true --install=false --launch-browser=true --log=false --token=token in /home/user/.getML/getml-1.5.0-x64-linux...\n", "Launched the getML Engine. The log output will be stored in /home/user/.getML/logs/20240912133457.log.\n", "\u001b[2K Loading pipelines... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% • 00:00\n", "\u001b[?25h" ] }, { "data": { "text/html": [ "
Connected to project 'atherosclerosis'.\n",
       "
\n" ], "text/plain": [ "Connected to project \u001b[32m'atherosclerosis'\u001b[0m.\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "getml.engine.launch(allow_remote_ips=True, token='token')\n", "getml.engine.set_project('atherosclerosis')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1. Loading data\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 1.1 Download from source\n", "\n", "Downloading the raw data and convert it into a prediction ready format takes time. To get to the getML model building as fast as possible, we prepared the data for you and excluded the code from this notebook. It is made available in the example notebook featuring the full analysis." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "population, contr = getml.datasets.load_atherosclerosis()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 1.2 Prepare data for getML\n", "\n", "The `getml.datasets.load_atherosclerosis` method took care of the entire data lifting:\n", "* Downloads csv's from our servers in python\n", "* Converts csv's to getML [DataFrames](https://docs.getml.com/latest/api/getml.data.DataFrame.html#getml.data.DataFrame)\n", "* Sets [roles](https://docs.getml.com/latest/user_guide/annotating_data/annotating_data.html#roles) to columns inside getML DataFrames" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Data visualization__\n", "\n", "The original data (image below) model is condensed into 2 tables: \n", "\n", "* A population table *population_{train/test/validate}*, based on `death` table\n", "* A peripheral table: `contr`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Death:__ population table\n", "\n", "* Reference Date: Period of time from 1976 to 1999\n", "* Target: If the patient dies within one year after each reference date\n" ] }, { "cell_type": "code", "execution_count": 5, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
nameREFERENCE_DATEENTRY_DATE ICOTARGETKONSKUP STAV VZDELANI ZODPOV TELAKTZA AKTPOZAM DOPRAVA DOPRATRV ALKOHOL BOLHR BOLDK DUSNOST MOC RARISK OBEZRISK KOURRISK HTRISK CHOLRISK KOURENI DOBAKOUR BYVKURAK PIVOMN VINOMN LIHMN KAVA CAJ CUKR VYSKA VAHA SYST1 DIAST1 SYST2 DIAST2 TRIC SUBSC CHLST TRIGL AGEPARTICIPATION ROKNAR ROKVSTUP MESVSTUP PIVO7 PIVO10 PIVO12 VINO LIHOV IM IML HT HTD HTL ICT DIABET DIABD DIABL HYPLIP HYPLD HYPLL IMTRV HTTRV DIABTRV HYPLTRV DENUMR MESUMR ROKUMR PRICUMR DUMMY YEARICTL ICTTRV DEATH_DATE
role time_stamptime_stampjoin_keytargetcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalnumericalnumericalnumericalnumericalnumericalnumericalnumericalnumericalnumericalnumericalnumericalnumericalnumericalnumericalnumericalnumericalnumericalnumericalnumericalnumerical numericalunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_stringunused_stringunused_string
unit time stamptime stamp
01977-01-011976-10-0110001\n", " 0 \n", " 413112362111100100\n", " 4 \n", " \n", " 10 \n", " \n", " nan \n", " \n", " 1 \n", " \n", " 4 \n", " \n", " 9 \n", " \n", " 2 \n", " \n", " 4 \n", " \n", " 3 \n", " \n", " 169 \n", " \n", " 71 \n", " \n", " 120 \n", " \n", " 85 \n", " \n", " 120 \n", " \n", " 90 \n", " \n", " 4 \n", " \n", " 12 \n", " \n", " 209 \n", " \n", " 86 \n", " \n", " 48 \n", " \n", " -1899 \n", " \n", " 29 \n", " \n", " 1976 \n", " \n", " 10 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 12 \n", " \n", " 2 \n", " \n", " nan \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 1 \n", " \n", " 1977 \n", " NULLNULLNULL
11978-01-011976-10-0110001\n", " 0 \n", " 413112362111100100\n", " 4 \n", " \n", " 10 \n", " \n", " nan \n", " \n", " 1 \n", " \n", " 4 \n", " \n", " 9 \n", " \n", " 2 \n", " \n", " 4 \n", " \n", " 3 \n", " \n", " 169 \n", " \n", " 71 \n", " \n", " 120 \n", " \n", " 85 \n", " \n", " 120 \n", " \n", " 90 \n", " \n", " 4 \n", " \n", " 12 \n", " \n", " 209 \n", " \n", " 86 \n", " \n", " 49 \n", " \n", " -1898 \n", " \n", " 29 \n", " \n", " 1976 \n", " \n", " 10 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 12 \n", " \n", " 2 \n", " \n", " nan \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 1 \n", " \n", " 1978 \n", " NULLNULLNULL
21979-01-011976-10-0110001\n", " 0 \n", " 413112362111100100\n", " 4 \n", " \n", " 10 \n", " \n", " nan \n", " \n", " 1 \n", " \n", " 4 \n", " \n", " 9 \n", " \n", " 2 \n", " \n", " 4 \n", " \n", " 3 \n", " \n", " 169 \n", " \n", " 71 \n", " \n", " 120 \n", " \n", " 85 \n", " \n", " 120 \n", " \n", " 90 \n", " \n", " 4 \n", " \n", " 12 \n", " \n", " 209 \n", " \n", " 86 \n", " \n", " 50 \n", " \n", " -1897 \n", " \n", " 29 \n", " \n", " 1976 \n", " \n", " 10 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 12 \n", " \n", " 2 \n", " \n", " nan \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 1 \n", " \n", " 1979 \n", " NULLNULLNULL
31980-01-011976-10-0110001\n", " 0 \n", " 413112362111100100\n", " 4 \n", " \n", " 10 \n", " \n", " nan \n", " \n", " 1 \n", " \n", " 4 \n", " \n", " 9 \n", " \n", " 2 \n", " \n", " 4 \n", " \n", " 3 \n", " \n", " 169 \n", " \n", " 71 \n", " \n", " 120 \n", " \n", " 85 \n", " \n", " 120 \n", " \n", " 90 \n", " \n", " 4 \n", " \n", " 12 \n", " \n", " 209 \n", " \n", " 86 \n", " \n", " 51 \n", " \n", " -1896 \n", " \n", " 29 \n", " \n", " 1976 \n", " \n", " 10 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 12 \n", " \n", " 2 \n", " \n", " nan \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 1 \n", " \n", " 1980 \n", " NULLNULLNULL
41981-01-011976-10-0110001\n", " 0 \n", " 413112362111100100\n", " 4 \n", " \n", " 10 \n", " \n", " nan \n", " \n", " 1 \n", " \n", " 4 \n", " \n", " 9 \n", " \n", " 2 \n", " \n", " 4 \n", " \n", " 3 \n", " \n", " 169 \n", " \n", " 71 \n", " \n", " 120 \n", " \n", " 85 \n", " \n", " 120 \n", " \n", " 90 \n", " \n", " 4 \n", " \n", " 12 \n", " \n", " 209 \n", " \n", " 86 \n", " \n", " 52 \n", " \n", " -1895 \n", " \n", " 29 \n", " \n", " 1976 \n", " \n", " 10 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 12 \n", " \n", " 2 \n", " \n", " nan \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 1 \n", " \n", " 1981 \n", " NULLNULLNULL
.........\n", " ... \n", " ......................................................\n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " .........
284281995-01-011977-03-0130065\n", " 0 \n", " 522312152322100100\n", " 4 \n", " \n", " 10 \n", " \n", " nan \n", " \n", " 3 \n", " \n", " 4 \n", " \n", " 7 \n", " \n", " 1 \n", " \n", " 5 \n", " \n", " 2 \n", " \n", " 179 \n", " \n", " 69 \n", " \n", " 110 \n", " \n", " 80 \n", " \n", " 120 \n", " \n", " 80 \n", " \n", " 10 \n", " \n", " 18 \n", " \n", " 235 \n", " \n", " 733 \n", " \n", " 67 \n", " \n", " -1882 \n", " \n", " 28 \n", " \n", " 1977 \n", " \n", " 3 \n", " \n", " nan \n", " \n", " 9 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " nan \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 1 \n", " \n", " 1995 \n", " NULLNULLNULL
284291996-01-011977-03-0130065\n", " 0 \n", " 522312152322100100\n", " 4 \n", " \n", " 10 \n", " \n", " nan \n", " \n", " 3 \n", " \n", " 4 \n", " \n", " 7 \n", " \n", " 1 \n", " \n", " 5 \n", " \n", " 2 \n", " \n", " 179 \n", " \n", " 69 \n", " \n", " 110 \n", " \n", " 80 \n", " \n", " 120 \n", " \n", " 80 \n", " \n", " 10 \n", " \n", " 18 \n", " \n", " 235 \n", " \n", " 733 \n", " \n", " 68 \n", " \n", " -1881 \n", " \n", " 28 \n", " \n", " 1977 \n", " \n", " 3 \n", " \n", " nan \n", " \n", " 9 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " nan \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 1 \n", " \n", " 1996 \n", " NULLNULLNULL
284301997-01-011977-03-0130065\n", " 0 \n", " 522312152322100100\n", " 4 \n", " \n", " 10 \n", " \n", " nan \n", " \n", " 3 \n", " \n", " 4 \n", " \n", " 7 \n", " \n", " 1 \n", " \n", " 5 \n", " \n", " 2 \n", " \n", " 179 \n", " \n", " 69 \n", " \n", " 110 \n", " \n", " 80 \n", " \n", " 120 \n", " \n", " 80 \n", " \n", " 10 \n", " \n", " 18 \n", " \n", " 235 \n", " \n", " 733 \n", " \n", " 69 \n", " \n", " -1880 \n", " \n", " 28 \n", " \n", " 1977 \n", " \n", " 3 \n", " \n", " nan \n", " \n", " 9 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " nan \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 1 \n", " \n", " 1997 \n", " NULLNULLNULL
284311998-01-011977-03-0130065\n", " 0 \n", " 522312152322100100\n", " 4 \n", " \n", " 10 \n", " \n", " nan \n", " \n", " 3 \n", " \n", " 4 \n", " \n", " 7 \n", " \n", " 1 \n", " \n", " 5 \n", " \n", " 2 \n", " \n", " 179 \n", " \n", " 69 \n", " \n", " 110 \n", " \n", " 80 \n", " \n", " 120 \n", " \n", " 80 \n", " \n", " 10 \n", " \n", " 18 \n", " \n", " 235 \n", " \n", " 733 \n", " \n", " 70 \n", " \n", " -1879 \n", " \n", " 28 \n", " \n", " 1977 \n", " \n", " 3 \n", " \n", " nan \n", " \n", " 9 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " nan \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 1 \n", " \n", " 1998 \n", " NULLNULLNULL
284321999-01-011977-03-0130065\n", " 0 \n", " 522312152322100100\n", " 4 \n", " \n", " 10 \n", " \n", " nan \n", " \n", " 3 \n", " \n", " 4 \n", " \n", " 7 \n", " \n", " 1 \n", " \n", " 5 \n", " \n", " 2 \n", " \n", " 179 \n", " \n", " 69 \n", " \n", " 110 \n", " \n", " 80 \n", " \n", " 120 \n", " \n", " 80 \n", " \n", " 10 \n", " \n", " 18 \n", " \n", " 235 \n", " \n", " 733 \n", " \n", " 71 \n", " \n", " -1878 \n", " \n", " 28 \n", " \n", " 1977 \n", " \n", " 3 \n", " \n", " nan \n", " \n", " 9 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " nan \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 1 \n", " \n", " 1999 \n", " NULLNULLNULL
\n", "\n", "

\n", " 28433 rows x 76 columns
\n", " memory usage: 15.27 MB
\n", " name: population
\n", " type: getml.DataFrame
\n", " \n", "

\n" ], "text/plain": [ " name REFERENCE_DATE ENTRY_DATE ICO TARGET ... DUMMY YEAR ICTL ICTTRV \n", " role time_stamp time_stamp join_key target ... unused_float unused_float unused_string unused_string\n", " unit time stamp time stamp ... \n", " 0 1977-01-01 1976-10-01 10001 0 ... 1 1977 NULL NULL \n", " 1 1978-01-01 1976-10-01 10001 0 ... 1 1978 NULL NULL \n", " 2 1979-01-01 1976-10-01 10001 0 ... 1 1979 NULL NULL \n", " 3 1980-01-01 1976-10-01 10001 0 ... 1 1980 NULL NULL \n", " 4 1981-01-01 1976-10-01 10001 0 ... 1 1981 NULL NULL \n", " ... ... ... ... ... ... ... ... \n", "28428 1995-01-01 1977-03-01 30065 0 ... 1 1995 NULL NULL \n", "28429 1996-01-01 1977-03-01 30065 0 ... 1 1996 NULL NULL \n", "28430 1997-01-01 1977-03-01 30065 0 ... 1 1997 NULL NULL \n", "28431 1998-01-01 1977-03-01 30065 0 ... 1 1998 NULL NULL \n", "28432 1999-01-01 1977-03-01 30065 0 ... 1 1999 NULL NULL \n", "\n", " name DEATH_DATE \n", " role unused_string\n", " unit \n", " 0 NULL \n", " 1 NULL \n", " 2 NULL \n", " 3 NULL \n", " 4 NULL \n", " ... \n", "28428 NULL \n", "28429 NULL \n", "28430 NULL \n", "28431 NULL \n", "28432 NULL \n", "\n", "\n", "28433 rows x 76 columns\n", "memory usage: 15.27 MB\n", "type: getml.DataFrame" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "population" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Contr:__ peripheral table\n", "\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
nameCONTROL_DATE ICOZMTELAKT AKTPOZAM ZMDIET LEKTLAK ZMKOUR POCCIG PRACNES JINAONE BOLHR BOLDK DUSN HODNSK HYPERD HYPCHL HYPTGL HMOT CHLST HDL HDLMG LDL ROKVYS MESVYS PORADK ZMCHARZA LEKCHOL SRDCE HYPERT CEVMOZ DIAB HODN0 ROK0 HODN1 ROK1 HODN2 ROK2 HODN3 ROK3 HODN4 ROK4 HODN11 ROK11 HODN12 ROK12 HODN13 ROK13 HODN14 ROK14 HODN15 ROK15 HODN21 ROK21 HODN23 ROK23 SYST DIAST TRIC SUBSC HYPERSD HYPERS CHLSTMG TRIGL TRIGLMG MOC GLYKEMIE KYSMOC
role time_stampjoin_keycategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalnumericalnumericalnumericalnumericalnumericalunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_float
unit time stamp
01977-09-0110001321220121112222\n", " 71 \n", " \n", " 5.61\n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 1977 \n", " \n", " 9 \n", " \n", " 1 \n", " \n", " 20 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 0 \n", " \n", " 0 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 130 \n", " \n", " 90 \n", " \n", " 4 \n", " \n", " 12 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 217 \n", " \n", " 1.22\n", " \n", " 108 \n", " \n", " 1 \n", " \n", " nan \n", " \n", " nan \n", "
11979-01-01100011112102NULL1212222\n", " 72 \n", " \n", " 6 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 1979 \n", " \n", " 1 \n", " \n", " 2 \n", " \n", " 20 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 0 \n", " \n", " 0 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 140 \n", " \n", " 90 \n", " \n", " 4 \n", " \n", " 11 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 232 \n", " \n", " 4.4\n", " \n", " 389 \n", " \n", " 3 \n", " \n", " nan \n", " \n", " nan \n", "
21980-04-01100012112102NULL2112222\n", " 71 \n", " \n", " 6.23\n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 1980 \n", " \n", " 4 \n", " \n", " 3 \n", " \n", " 20 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 0 \n", " \n", " 0 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 130 \n", " \n", " 90 \n", " \n", " 5 \n", " \n", " 22 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 241 \n", " \n", " 1.51\n", " \n", " 134 \n", " \n", " 1 \n", " \n", " nan \n", " \n", " nan \n", "
31982-01-0110001211210121112222\n", " 74 \n", " \n", " 5.2\n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 1982 \n", " \n", " 1 \n", " \n", " 4 \n", " \n", " 20 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 0 \n", " \n", " 0 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 150 \n", " \n", " 100 \n", " \n", " 9 \n", " \n", " 18 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 201 \n", " \n", " 1.42\n", " \n", " 126 \n", " \n", " 1 \n", " \n", " nan \n", " \n", " nan \n", "
41983-02-01100012212102NULL1212222\n", " 73 \n", " \n", " 6.08\n", " \n", " 1.47\n", " \n", " 57 \n", " \n", " 4.15\n", " \n", " 1983 \n", " \n", " 2 \n", " \n", " 5 \n", " \n", " 20 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 0 \n", " \n", " 0 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 165 \n", " \n", " 105 \n", " \n", " 7 \n", " \n", " 15 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 235 \n", " \n", " 0.99\n", " \n", " 88 \n", " \n", " 1 \n", " \n", " nan \n", " \n", " nan \n", "
...................................................\n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", "
105671987-10-01203582212102NULL4113222\n", " 85 \n", " \n", " 4.89\n", " \n", " 0.98\n", " \n", " 38 \n", " \n", " 3.11\n", " \n", " 1987 \n", " \n", " 10 \n", " \n", " 1 \n", " \n", " 20 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 0 \n", " \n", " 0 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 120 \n", " \n", " 80 \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 189 \n", " \n", " 1.74\n", " \n", " 154 \n", " \n", " 1 \n", " \n", " nan \n", " \n", " nan \n", "
105681987-11-012035922121142NULL1113222\n", " 80 \n", " \n", " 4.5\n", " \n", " 0.98\n", " \n", " 38 \n", " \n", " 3.16\n", " \n", " 1987 \n", " \n", " 11 \n", " \n", " 1 \n", " \n", " 20 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 0 \n", " \n", " 0 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 100 \n", " \n", " 70 \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 174 \n", " \n", " 0.79\n", " \n", " 70 \n", " \n", " 1 \n", " \n", " nan \n", " \n", " nan \n", "
105691987-10-01203602252102NULL2123222\n", " 95 \n", " \n", " 5.51\n", " \n", " 1.29\n", " \n", " 50 \n", " \n", " 3.68\n", " \n", " 1987 \n", " \n", " 10 \n", " \n", " 1 \n", " \n", " 40 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 0 \n", " \n", " 0 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 120 \n", " \n", " 80 \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 213 \n", " \n", " 1.18\n", " \n", " 104 \n", " \n", " 1 \n", " \n", " nan \n", " \n", " nan \n", "
105701987-10-01203621212102NULL6413222\n", " 56 \n", " \n", " 4.89\n", " \n", " 3 \n", " \n", " 116 \n", " \n", " 1.51\n", " \n", " 1987 \n", " \n", " 10 \n", " \n", " 1 \n", " \n", " 40 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 0 \n", " \n", " 0 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 140 \n", " \n", " 85 \n", " \n", " nan \n", " \n", " nan \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 189 \n", " \n", " 0.82\n", " \n", " 73 \n", " \n", " 1 \n", " \n", " nan \n", " \n", " nan \n", "
105711978-09-013003721123152NULL4124221\n", " 72 \n", " \n", " 5.61\n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 1978 \n", " \n", " 9 \n", " \n", " 1 \n", " \n", " 20 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 0 \n", " \n", " 0 \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " nan \n", " \n", " 125 \n", " \n", " 90 \n", " \n", " 9 \n", " \n", " 17 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 217 \n", " \n", " nan \n", " \n", " nan \n", " \n", " 1 \n", " \n", " nan \n", " \n", " nan \n", "
\n", "\n", "

\n", " 10572 rows x 67 columns
\n", " memory usage: 4.99 MB
\n", " name: contr
\n", " type: getml.DataFrame
\n", " \n", "

\n" ], "text/plain": [ " name CONTROL_DATE ICO ZMTELAKT AKTPOZAM ... TRIGL TRIGLMG MOC GLYKEMIE\n", " role time_stamp join_key categorical categorical ... unused_float unused_float unused_float unused_float\n", " unit time stamp ... \n", " 0 1977-09-01 10001 3 2 ... 1.22 108 1 nan \n", " 1 1979-01-01 10001 1 1 ... 4.4 389 3 nan \n", " 2 1980-04-01 10001 2 1 ... 1.51 134 1 nan \n", " 3 1982-01-01 10001 2 1 ... 1.42 126 1 nan \n", " 4 1983-02-01 10001 2 2 ... 0.99 88 1 nan \n", " ... ... ... ... ... ... ... ...\n", "10567 1987-10-01 20358 2 2 ... 1.74 154 1 nan \n", "10568 1987-11-01 20359 2 2 ... 0.79 70 1 nan \n", "10569 1987-10-01 20360 2 2 ... 1.18 104 1 nan \n", "10570 1987-10-01 20362 1 2 ... 0.82 73 1 nan \n", "10571 1978-09-01 30037 2 1 ... nan nan 1 nan \n", "\n", " name KYSMOC\n", " role unused_float\n", " unit \n", " 0 nan \n", " 1 nan \n", " 2 nan \n", " 3 nan \n", " 4 nan \n", " ...\n", "10567 nan \n", "10568 nan \n", "10569 nan \n", "10570 nan \n", "10571 nan \n", "\n", "\n", "10572 rows x 67 columns\n", "memory usage: 4.99 MB\n", "type: getml.DataFrame" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "contr" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 1.3 Define relational model\n", "\n", "To start with relational learning, we need to specify an abstract data model. Here, we use the [high-level star schema API](https://docs.getml.com/latest/api/getml.data.StarSchema.html) that allows us to define the abstract data model and construct a [container](https://docs.getml.com/latest/api/getml.data.Container.html) with the concrete data at one-go. While a simple `StarSchema` indeed works in many cases, it is not sufficient for more complex data models like schoflake schemas, where you would have to define the data model and construct the container in separate steps, by utilzing getML's [full-fledged data model](https://docs.getml.com/latest/api/getml.data.DataModel.html) and [container](https://docs.getml.com/latest/api/getml.data.Container.html) APIs respectively." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "split = getml.data.split.random(train=0.7, test=0.3)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "data model\n", "
\n", "
diagram
\n", "
contrpopulationICO = ICOCONTROL_DATE <= REFERENCE_DATE
\n", "
\n", "\n", "
\n", "
staging
\n", " \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
data framesstaging table
0populationPOPULATION__STAGING_TABLE_1
1contrCONTR__STAGING_TABLE_2
\n", "
\n", " \n", "container\n", "
\n", "
\n", "
population
\n", " \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
subsetname rowstype
0testpopulation8557View
1trainpopulation19876View
\n", "
\n", "
\n", "
peripheral
\n", " \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
name rowstype
0contr10572DataFrame
\n", "
\n", "
" ], "text/plain": [ "data model\n", "\n", " population:\n", " columns:\n", " - KONSKUP: categorical\n", " - STAV: categorical\n", " - VZDELANI: categorical\n", " - ZODPOV: categorical\n", " - TELAKTZA: categorical\n", " - ...\n", "\n", " joins:\n", " - right: 'contr'\n", " on: (population.ICO, contr.ICO)\n", " time_stamps: (population.REFERENCE_DATE, contr.CONTROL_DATE)\n", " relationship: 'many-to-many'\n", " lagged_targets: False\n", "\n", " contr:\n", " columns:\n", " - ZMTELAKT: categorical\n", " - AKTPOZAM: categorical\n", " - ZMDIET: categorical\n", " - LEKTLAK: categorical\n", " - ZMKOUR: categorical\n", " - ...\n", "\n", "\n", "container\n", "\n", " population\n", " subset name rows type\n", " 0 test population 8557 View\n", " 1 train population 19876 View\n", "\n", " peripheral\n", " name rows type \n", " 0 contr 10572 DataFrame" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "star_schema = getml.data.StarSchema(population, split=split)\n", "\n", "star_schema.join(\n", " contr,\n", " on=\"ICO\",\n", " time_stamps=(\"REFERENCE_DATE\", \"CONTROL_DATE\")\n", ")\n", "\n", "star_schema" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2. Predictive modeling\n", "\n", "We loaded the data, defined the roles, units and the abstract data model. Next, we create a getML pipeline for relational learning." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 2.1 Fitting the pipeline\n", "\n", "To illustrate the problem of computational complexity, we fit two getML pipelines using different feature learning algorithms:\n", "\n", "The first pipeline uses `RelMT` and the second pipeline uses `Relboost`. To demonstrate the power of feature ensembling, we build a third pipeline that uses both algorithms. At the end, we compare the runtime and predictive accuracies of all three pipelines." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "relmt = getml.feature_learning.RelMT(\n", " num_features=30,\n", " loss_function=getml.feature_learning.loss_functions.CrossEntropyLoss,\n", " num_threads=1\n", ")\n", "\n", "relboost = getml.feature_learning.Relboost(\n", " num_features=60,\n", " loss_function=getml.feature_learning.loss_functions.CrossEntropyLoss,\n", " min_num_samples=500,\n", " max_depth=2,\n", " num_threads=1\n", ")\n", "\n", "feature_selector = getml.predictors.XGBoostClassifier()\n", "\n", "xgboost = getml.predictors.XGBoostClassifier(\n", " max_depth=5,\n", " reg_lambda=100.0,\n", " learning_rate=0.1\n", ")" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Pipeline(data_model='population',\n",
       "         feature_learners=['RelMT'],\n",
       "         feature_selectors=['XGBoostClassifier'],\n",
       "         include_categorical=True,\n",
       "         loss_function='CrossEntropyLoss',\n",
       "         peripheral=['contr'],\n",
       "         predictors=['XGBoostClassifier'],\n",
       "         preprocessors=[],\n",
       "         share_selected_features=0.8,\n",
       "         tags=['relmt'])
" ], "text/plain": [ "Pipeline(data_model='population',\n", " feature_learners=['RelMT'],\n", " feature_selectors=['XGBoostClassifier'],\n", " include_categorical=True,\n", " loss_function='CrossEntropyLoss',\n", " peripheral=['contr'],\n", " predictors=['XGBoostClassifier'],\n", " preprocessors=[],\n", " share_selected_features=0.8,\n", " tags=['relmt'])" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pipe1 = getml.pipeline.Pipeline(\n", " tags=[\"relmt\"],\n", " data_model=star_schema.data_model,\n", " feature_learners=relmt,\n", " feature_selectors=feature_selector,\n", " share_selected_features=0.8,\n", " predictors=xgboost,\n", " include_categorical=True\n", ")\n", "\n", "pipe1" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Pipeline(data_model='population',\n",
       "         feature_learners=['Relboost'],\n",
       "         feature_selectors=['XGBoostClassifier'],\n",
       "         include_categorical=True,\n",
       "         loss_function='CrossEntropyLoss',\n",
       "         peripheral=['contr'],\n",
       "         predictors=['XGBoostClassifier'],\n",
       "         preprocessors=[],\n",
       "         share_selected_features=0.8,\n",
       "         tags=['relboost'])
" ], "text/plain": [ "Pipeline(data_model='population',\n", " feature_learners=['Relboost'],\n", " feature_selectors=['XGBoostClassifier'],\n", " include_categorical=True,\n", " loss_function='CrossEntropyLoss',\n", " peripheral=['contr'],\n", " predictors=['XGBoostClassifier'],\n", " preprocessors=[],\n", " share_selected_features=0.8,\n", " tags=['relboost'])" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pipe2 = getml.pipeline.Pipeline(\n", " tags=[\"relboost\"],\n", " data_model=star_schema.data_model,\n", " feature_learners=relboost,\n", " feature_selectors=feature_selector,\n", " share_selected_features=0.8, \n", " predictors=xgboost,\n", " include_categorical=True\n", ")\n", "\n", "pipe2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We begin with RelMT. Features generated by RelMT suffer from quadratic complexity. Luckily, the number of columns is not too high, so it is still manageble." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It always a good idea to check before fitting. There is one minor warning: This warning means that about 12% of patients never appear in CONTR (presumably because they never showed up to their health check-ups)." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Checking data model...\n",
       "
\n" ], "text/plain": [ "Checking data model\u001b[33m...\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2K Staging... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% • 00:00\n", "\u001b[2K Checking... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% • 00:00\n", "\u001b[?25h" ] }, { "data": { "text/html": [ "
The pipeline check generated 1 issues labeled INFO and 0 issues labeled WARNING.\n",
       "
\n" ], "text/plain": [ "The pipeline check generated \u001b[1;36m1\u001b[0m issues labeled INFO and \u001b[1;36m0\u001b[0m issues labeled WARNING.\n" ] }, "metadata": {}, "output_type": "display_data" }, { "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", "
typelabel message
0INFOFOREIGN KEYS NOT FOUNDWhen joining POPULATION__STAGING_TABLE_1 and CONTR__STAGING_TABLE_2 over 'ICO' and 'ICO', there are no corresponding entries for 12.291205% of entries in 'ICO' in 'POPULATION__STAGING_TABLE_1'. You might want to double-check your join keys.
" ], "text/plain": [ " type label message \n", "0 INFO FOREIGN KEYS NOT FOUND When joining POPULATION__STAGING..." ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pipe1.check(star_schema.train)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Checking data model...\n",
       "
\n" ], "text/plain": [ "Checking data model\u001b[33m...\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2K Staging... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% • 00:00\n", "\u001b[?25h" ] }, { "data": { "text/html": [ "
The pipeline check generated 1 issues labeled INFO and 0 issues labeled WARNING.\n",
       "
\n" ], "text/plain": [ "The pipeline check generated \u001b[1;36m1\u001b[0m issues labeled INFO and \u001b[1;36m0\u001b[0m issues labeled WARNING.\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
To see the issues in full, run .check() on the pipeline.\n",
       "
\n" ], "text/plain": [ "To see the issues in full, run \u001b[1;35m.check\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m on the pipeline.\n" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2K Staging... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% • 00:00\n", "\u001b[2K RelMT: Training features... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% • 07:02\n", "\u001b[2K RelMT: Building features... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% • 00:01\n", "\u001b[2K XGBoost: Training as feature selector... ━━━━━━━━━━━━━━━━━━━━━━━━ 100% • 00:02\n", "\u001b[2K XGBoost: Training as predictor... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% • 00:04\n", "\u001b[?25h" ] }, { "data": { "text/html": [ "
Trained pipeline.\n",
       "
\n" ], "text/plain": [ "Trained pipeline.\n" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Time taken: 0:07:11.228924.\n", "\n" ] }, { "data": { "text/html": [ "
Pipeline(data_model='population',\n",
       "         feature_learners=['RelMT'],\n",
       "         feature_selectors=['XGBoostClassifier'],\n",
       "         include_categorical=True,\n",
       "         loss_function='CrossEntropyLoss',\n",
       "         peripheral=['contr'],\n",
       "         predictors=['XGBoostClassifier'],\n",
       "         preprocessors=[],\n",
       "         share_selected_features=0.8,\n",
       "         tags=['relmt', 'container-5Vksxn'])
" ], "text/plain": [ "Pipeline(data_model='population',\n", " feature_learners=['RelMT'],\n", " feature_selectors=['XGBoostClassifier'],\n", " include_categorical=True,\n", " loss_function='CrossEntropyLoss',\n", " peripheral=['contr'],\n", " predictors=['XGBoostClassifier'],\n", " preprocessors=[],\n", " share_selected_features=0.8,\n", " tags=['relmt', 'container-5Vksxn'])" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pipe1.fit(star_schema.train)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's see how well Relboost does. This algorithm has linear complexity in the number of columns." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Checking data model...\n",
       "
\n" ], "text/plain": [ "Checking data model\u001b[33m...\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2K Staging... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% • 00:00\n", "\u001b[2K Checking... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% • 00:00\n", "\u001b[?25h" ] }, { "data": { "text/html": [ "
The pipeline check generated 1 issues labeled INFO and 0 issues labeled WARNING.\n",
       "
\n" ], "text/plain": [ "The pipeline check generated \u001b[1;36m1\u001b[0m issues labeled INFO and \u001b[1;36m0\u001b[0m issues labeled WARNING.\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
To see the issues in full, run .check() on the pipeline.\n",
       "
\n" ], "text/plain": [ "To see the issues in full, run \u001b[1;35m.check\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m on the pipeline.\n" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2K Staging... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% • 00:00\n", "\u001b[2K Relboost: Training features... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% • 00:22\n", "\u001b[2K Relboost: Building features... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% • 00:03\n", "\u001b[2K XGBoost: Training as feature selector... ━━━━━━━━━━━━━━━━━━━━━━━━ 100% • 00:02\n", "\u001b[2K XGBoost: Training as predictor... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% • 00:03\n", "\u001b[?25h" ] }, { "data": { "text/html": [ "
Trained pipeline.\n",
       "
\n" ], "text/plain": [ "Trained pipeline.\n" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Time taken: 0:00:31.813144.\n", "\n" ] }, { "data": { "text/html": [ "
Pipeline(data_model='population',\n",
       "         feature_learners=['Relboost'],\n",
       "         feature_selectors=['XGBoostClassifier'],\n",
       "         include_categorical=True,\n",
       "         loss_function='CrossEntropyLoss',\n",
       "         peripheral=['contr'],\n",
       "         predictors=['XGBoostClassifier'],\n",
       "         preprocessors=[],\n",
       "         share_selected_features=0.8,\n",
       "         tags=['relboost', 'container-5Vksxn'])
" ], "text/plain": [ "Pipeline(data_model='population',\n", " feature_learners=['Relboost'],\n", " feature_selectors=['XGBoostClassifier'],\n", " include_categorical=True,\n", " loss_function='CrossEntropyLoss',\n", " peripheral=['contr'],\n", " predictors=['XGBoostClassifier'],\n", " preprocessors=[],\n", " share_selected_features=0.8,\n", " tags=['relboost', 'container-5Vksxn'])" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pipe2.fit(star_schema.train)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that this runs through in under a minute. This demonstrates the power of computational complexity theory. If we had more columns, the difference between these two algorithms would become even more noticable." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 2.2 Model evaluation" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2K Staging... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% • 00:00\n", "\u001b[2K Preprocessing... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% • 00:00\n", "\u001b[2K RelMT: Building features... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% • 00:00\n", "\u001b[?25h" ] }, { "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", "
date time set usedtargetaccuracy auccross entropy
02024-09-12 13:09:44trainTARGET0.98910.89040.0507
12024-09-12 13:10:17testTARGET0.98670.71430.06851
" ], "text/plain": [ " date time set used target accuracy auc cross entropy\n", "0 2024-09-12 13:09:44 train TARGET 0.9891 0.8904 0.0507 \n", "1 2024-09-12 13:10:17 test TARGET 0.9867 0.7143 0.06851" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pipe1.score(star_schema.test)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2K Staging... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% • 00:00\n", "\u001b[2K Preprocessing... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% • 00:00\n", "\u001b[2K Relboost: Building features... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% • 00:01\n", "\u001b[?25h" ] }, { "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", "
date time set usedtargetaccuracy auccross entropy
02024-09-12 13:10:16trainTARGET0.98780.89120.0538
12024-09-12 13:10:19testTARGET0.98670.71070.06748
" ], "text/plain": [ " date time set used target accuracy auc cross entropy\n", "0 2024-09-12 13:10:16 train TARGET 0.9878 0.8912 0.0538 \n", "1 2024-09-12 13:10:19 test TARGET 0.9867 0.7107 0.06748" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pipe2.score(star_schema.test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 2.3 Studying the features\n", "\n", "It is always a good idea to study the features generated by the algorithms." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABl4AAAOkCAYAAADHhknPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACf4klEQVR4nOzdeZhWdd0/8M89wzAsiqQICCKjZoKCoij8QBMzdDTKsETFEsKlhUgNl8AFBrFESoNyIS1xKR5Nex7SQAhRrIRcwiVLzVTERHB7BAMZxpnz+6OLeRwZBhi+w3APr9d1cdF9zve853PODMPIu3PuXJZlWQAAAAAAALDVChp7AAAAAAAAgKZC8QIAAAAAAJCI4gUAAAAAACARxQsAAAAAAEAiihcAAAAAAIBEFC8AAAAAAACJKF4AAAAAAAASUbwAAAAAAAAkongBAAAAAABIRPECAABN3OOPPx79+/eP1q1bRy6Xi6eeeqqxR2IjysrKIpfLJc1csGBB5HK5WLBgQdJcAACgds0aewAAAKDhVFRUxJAhQ6JFixbx4x//OFq1ahVdu3ZN/nGWLVsWN910UwwePDh69eqVPJ9Nu+GGG6JVq1bxta99rbFHAQCAHZriBQAAmrCXXnopXn311bj55pvj7LPPbrCPs2zZspgwYUKUlJQoXhrJDTfcEO3atdugeDnqqKPigw8+iObNmzfOYAAAsIPxqDEAAGjC3nzzzYiIaNu2beMOUk9r166Nqqqqxh6jTlVVVbF27dpa961evXobT7OhgoKCaNGiRRQU+M8/AADYFvzkDQAATdTXvva1GDBgQEREDBkyJHK5XBx99NHV+59//vk4+eSTY9ddd40WLVrEYYcdFvfee2+NjHfffTcuvPDC6NmzZ+y0007Rpk2bOOGEE+Lpp5+uXrNgwYI4/PDDIyJixIgRkcvlIpfLxa233hoRESUlJbU+/uroo4+uMc/69yK5884747LLLovOnTtHq1atYtWqVRER8eijj8bxxx8fu+yyS7Rq1SoGDBgQjzzyyGZdi7Vr10ZZWVl86lOfihYtWsQee+wRX/rSl+Kll16qXrN69eq44IILokuXLlFcXBz7779//OhHP4osy2pk5XK5GDVqVPzqV7+KAw88MIqLi2POnDlx6623Ri6Xi4cffjhGjhwZ7du3jz333LP6uPvvvz8+/elPR+vWrWPnnXeOQYMGxd/+9rdNzj59+vQ45phjon379lFcXBwHHHBA3HjjjTXWlJSUxN/+9rd4+OGHq6//+mu7sfd4ufvuu6N3797RsmXLaNeuXXz1q1+N119/vcaar33ta7HTTjvF66+/HoMHD46ddtopdt9997jwwgujsrKyxto777wzevfuHTvvvHO0adMmevbsGVOnTt3k+QEAQFPjUWMAANBEfeMb34jOnTvHD37wgzj33HPj8MMPjw4dOkRExN/+9rc44ogjonPnzjFmzJho3bp1/PrXv47BgwfHb37zmzjppJMiIuLll1+OmTNnxpAhQ2LvvfeOFStWxM9+9rMYMGBA/P3vf49OnTpF9+7d44orrohx48bF17/+9fj0pz8dERH9+/ev19wTJ06M5s2bx4UXXhjl5eXRvHnzePDBB+OEE06I3r17x/jx46OgoKC6kPjjH/8Yffr02WheZWVlfP7zn4/58+fHaaedFuedd168//77MW/evHj22Wdj3333jSzL4sQTT4yHHnoozjrrrOjVq1fMnTs3Lrroonj99dfjxz/+cY3MBx98MH7961/HqFGjol27dlFSUhJPPfVURESMHDkydt999xg3blz1HS933HFHDB8+PEpLS+Pqq6+ONWvWxI033hhHHnlkPPnkk1FSUrLR+W+88cY48MAD48QTT4xmzZrFfffdFyNHjoyqqqr49re/HRERU6ZMie985zux0047xaWXXhoRUf25rs2tt94aI0aMiMMPPzyuuuqqWLFiRUydOjUeeeSRePLJJ2vcIVVZWRmlpaXRt2/f+NGPfhQPPPBAXHPNNbHvvvvGt771rYiImDdvXgwdOjQ++9nPxtVXXx0REc8991w88sgjcd555210DgAAaJIyAACgyXrooYeyiMjuvvvuGts/+9nPZj179szWrl1bva2qqirr379/tt9++1VvW7t2bVZZWVnj2FdeeSUrLi7Orrjiiuptjz/+eBYR2fTp0zeYoWvXrtnw4cM32D5gwIBswIABG8y6zz77ZGvWrKkx13777ZeVlpZmVVVV1dvXrFmT7b333tmxxx5b5zW45ZZbsojIrr322g32rc+bOXNmFhHZlVdeWWP/ySefnOVyueyf//xn9baIyAoKCrK//e1vNdZOnz49i4jsyCOPzD788MPq7e+//37Wtm3b7Jxzzqmxfvny5dkuu+xSY/v48eOzj/9n2kevxXqlpaXZPvvsU2PbgQceWON6rrf+uj700ENZlmXZunXrsvbt22c9evTIPvjgg+p1v/vd77KIyMaNG1e9bfjw4VlE1PhcZ1mWHXLIIVnv3r2rX5933nlZmzZtapw3AADsqDxqDAAAdjDvvvtuPPjgg3HKKafE+++/H2+//Xa8/fbb8c4770RpaWm8+OKL1Y+cKi4urn5vkMrKynjnnXdip512iv333z8WL17cIPMNHz48WrZsWf36qaeeihdffDFOP/30eOedd6rnXb16dXz2s5+NP/zhD3W+D8xvfvObaNeuXXznO9/ZYF8ul4uIiNmzZ0dhYWGce+65NfZfcMEFkWVZ3H///TW2DxgwIA444IBaP94555wThYWF1a/nzZsX7733XgwdOrR69rfffjsKCwujb9++8dBDD9V5PT56LVauXBlvv/12DBgwIF5++eVYuXJlncfW5oknnog333wzRo4cGS1atKjePmjQoOjWrVvMmjVrg2O++c1v1nj96U9/Ol5++eXq123bto3Vq1fHvHnztngeAABoajxqDAAAdjD//Oc/I8uyuPzyy+Pyyy+vdc2bb74ZnTt3jqqqqpg6dWrccMMN8corr9R4X4/ddtutQebbe++9a7x+8cUXI+I/hczGrFy5Mj7xiU/Uuu+ll16K/fffP5o12/h//rz66qvRqVOn2HnnnWts7969e/X+umbcnPmPOeaYWte3adNmo1kREY888kiMHz8+Fi1aFGvWrKmxb+XKlbHLLrvUefzHrT+X/ffff4N93bp1iz/96U81trVo0SJ23333Gts+8YlPxP/+7/9Wvx45cmT8+te/jhNOOCE6d+4cxx13XJxyyilx/PHHb9FsAADQFCheAABgB7P+7pALL7wwSktLa13zyU9+MiIifvCDH8Tll18eZ555ZkycODF23XXXKCgoiPPPP7/Ou0w+av1dJR9XWVlZ486Q9T56h8dH5/3hD38YvXr1qjVrp5122qxZUvn4jHXtWz//HXfcER07dtxgfV2F0EsvvRSf/exno1u3bnHttddGly5donnz5jF79uz48Y9/vNmfg61R2+fo49q3bx9PPfVUzJ07N+6///64//77Y/r06TFs2LC47bbbGnxGAADYniheAABgB7PPPvtERERRUVEMHDiwzrX33HNPfOYzn4lf/OIXNba/99570a5du+rXGytXIv5zd8R77723wfZXX321epa67LvvvhHxnztDNjXvxo5/9NFHo6KiIoqKimpd07Vr13jggQfi/fffr3HXy/PPP1+9v77Wz9++ffstnv++++6L8vLyuPfee2Ovvfaq3l7b48nq+hx81PpzeeGFFza4C+eFF16o97k2b948vvCFL8QXvvCFqKqqipEjR8bPfvazuPzyy6uLPAAA2BF4jxcAANjBtG/fPo4++uj42c9+Fm+88cYG+996663q/11YWBhZltXYf/fdd1e/B8x6rVu3joiotWDZd999489//nOsW7euetvvfve7eO211zZr3t69e8e+++4bP/rRj+Lf//53nfPW5stf/nK8/fbbcd11122wb/25fe5zn4vKysoN1vz4xz+OXC4XJ5xwwmbNWpvS0tJo06ZN/OAHP4iKiootmn/93SYf/RysXLkypk+fvsHa1q1b13r9P+6www6L9u3bx7Rp06K8vLx6+/333x/PPfdcDBo0aJMZH/fOO+/UeF1QUBAHHXRQRESNjwEAADsCd7wAAMAO6Prrr48jjzwyevbsGeecc07ss88+sWLFili0aFH861//iqeffjoiIj7/+c/HFVdcESNGjIj+/fvHX//61/jVr361wZ0q++67b7Rt2zamTZsWO++8c7Ru3Tr69u0be++9d5x99tlxzz33xPHHHx+nnHJKvPTSS/HLX/6y+k6QTSkoKIif//znccIJJ8SBBx4YI0aMiM6dO8frr78eDz30ULRp0ybuu+++jR4/bNiwuP3222P06NHx2GOPxac//elYvXp1PPDAAzFy5Mj44he/GF/4whfiM5/5TFx66aWxZMmSOPjgg+P3v/99/Pa3v43zzz9/s2etTZs2beLGG2+MM844Iw499NA47bTTYvfdd4+lS5fGrFmz4ogjjqi1FIqIOO6446rvJPnGN74R//73v+Pmm2+O9u3bb1Ca9e7dO2688ca48sor45Of/GS0b9++1veVKSoqiquvvjpGjBgRAwYMiKFDh8aKFSti6tSpUVJSEt/97ne3+BzPPvvsePfdd+OYY46JPffcM1599dX46U9/Gr169ap+nxwAANhRKF4AAGAHdMABB8QTTzwREyZMiFtvvTXeeeedaN++fRxyyCExbty46nWXXHJJrF69OmbMmBF33XVXHHrooTFr1qwYM2ZMjbyioqK47bbbYuzYsfHNb34zPvzww5g+fXrsvffeUVpaGtdcc01ce+21cf7558dhhx0Wv/vd7+KCCy7Y7HmPPvroWLRoUUycODGuu+66+Pe//x0dO3aMvn37xje+8Y06jy0sLIzZs2fH97///ZgxY0b85je/id122626eIr4T7lz7733xrhx4+Kuu+6K6dOnR0lJSfzwhz/cojk35vTTT49OnTrFpEmT4oc//GGUl5dH586d49Of/nSMGDFio8ftv//+cc8998Rll10WF154YXTs2DG+9a1vxe677x5nnnlmjbXjxo2LV199NSZPnhzvv/9+DBgwoNbiJSLia1/7WrRq1SomTZoU3/ve96J169Zx0kknxdVXXx1t27bd4vP76le/GjfddFPccMMN8d5770XHjh3j1FNPjbKysigo8KAFAAB2LLns488NAAAAAAAAoF78X48AAAAAAAASUbwAAAAAAAAkongBAAAAAABIRPECAAAAAACQiOIFAAAAAAAgEcULAAAAAABAIs0ae4DtUVVVVSxbtix23nnnyOVyjT0OAAAAAADQiLIsi/fffz86deoUBQV139OieKnFsmXLokuXLo09BgAAAAAAsB157bXXYs8996xzjeKlFjvvvHNE/OcCtmnTppGnyT8VFRXx+9//Po477rgoKiqSL1++fPk7QH4+zy5fvnz58uXLly8/v/LzeXb58uXLb8r5Td2qVauiS5cu1f1BXRQvtVj/eLE2bdooXuqhoqIiWrVqFW3atGmwbxDy5cuXL3/7ys/n2eXLly9fvnz58uXnV34+zy5fvnz5TTl/R7E5b09S94PIAAAAAAAA2GyKFwAAAAAAgEQULwAAAAAAAIkoXgAAAAAAABJRvAAAAAAAACSieAEAAAAAAEhE8QIAAAAAAJCI4gUAAAAAACARxQsAAAAAAEAiihcAAAAAAIBEFC8AAAAAAACJKF4AAAAAAAASUbwAAAAAAAAkongBAAAAAABIRPECAAAAAACQiOIFAAAAAAAgEcULAAAAAABAIooXAAAAAACARBQvAAAAAAAAiSheAAAAAAAAElG8AAAAAAAAJKJ4AQAAAAAASETxAgAAAAAAkIjiBQAAAAAAIBHFCwAAAAAAQCKKFwAAAAAAgEQULwAAAAAAAIkoXgAAAAAAABJRvAAAAAAAACSieAEAAAAAAEhE8QIAAAAAAJCI4gUAAAAAACCRZo09APmlZMysTa4pLsxicp+IHmVzo7wyV+faJZMGpRoNAAAAAAAanTteAAAAAAAAElG8AAAAAAAAJKJ4AQAAAAAASETxAgAAAAAAkIjiBQAAAAAAIBHFCwAAAAAAQCKKFwAAAAAAgEQULwAAAAAAAIkoXgAAAAAAABJRvAAAAAAAACSieAEAAAAAAEhE8QIAAAAAAJCI4gUAAAAAACARxQsAAAAAAEAiihcAAAAAAIBEFC8AAAAAAACJKF4AAAAAAAASUbwAAAAAAAAkongBAAAAAABIRPECAAAAAACQiOIFAAAAAAAgEcULAAAAAABAIooXAAAAAACARBQvAAAAAAAAiSheAAAAAAAAElG8AAAAAAAAJKJ4AQAAAAAASETxAgAAAAAAkIjiBQAAAAAAIBHFCwAAAAAAQCKKFwAAAAAAgEQULwAAAAAAAIkoXgAAAAAAABJRvAAAAAAAACSieAEAAAAAAEhE8QIAAAAAAJCI4gUAAAAAACARxQsAAAAAAEAiihcAAAAAAIBEFC8AAAAAAACJKF4AAAAAAAASUbwAAAAAAAAkongBAAAAAABIRPECAAAAAACQiOIFAAAAAAAgkUYvXq6//vooKSmJFi1aRN++feOxxx6rc/3dd98d3bp1ixYtWkTPnj1j9uzZNfb/+9//jlGjRsWee+4ZLVu2jAMOOCCmTZvWkKcAAAAAAAAQEY1cvNx1110xevToGD9+fCxevDgOPvjgKC0tjTfffLPW9QsXLoyhQ4fGWWedFU8++WQMHjw4Bg8eHM8++2z1mtGjR8ecOXPil7/8ZTz33HNx/vnnx6hRo+Lee+/dVqcFAAAAAADsoBq1eLn22mvjnHPOiREjRlTfmdKqVau45ZZbal0/derUOP744+Oiiy6K7t27x8SJE+PQQw+N6667rnrNwoULY/jw4XH00UdHSUlJfP3rX4+DDz54k3fSAAAAAAAAbK1mjfWB161bF3/5y19i7Nix1dsKCgpi4MCBsWjRolqPWbRoUYwePbrGttLS0pg5c2b16/79+8e9994bZ555ZnTq1CkWLFgQ//jHP+LHP/7xRmcpLy+P8vLy6terVq2KiIiKioqoqKioz+k1WcWF2abXFGQ1fq9Lfa7v+mMa6nMjX758+fK3r2z58uXLly9fvnz58rdVtnz58uXLZ2O25Lrlsizb9L+ON4Bly5ZF586dY+HChdGvX7/q7RdffHE8/PDD8eijj25wTPPmzeO2226LoUOHVm+74YYbYsKECbFixYqI+E+J8vWvfz1uv/32aNasWRQUFMTNN98cw4YN2+gsZWVlMWHChA22z5gxI1q1arU1pwkAAAAAAOS5NWvWxOmnnx4rV66MNm3a1Lm20e54aSg//elP489//nPce++90bVr1/jDH/4Q3/72t6NTp04xcODAWo8ZO3ZsjTtpVq1aFV26dInjjjtukxdwR9OjbO4m1xQXZDHxsKq4/ImCKK/K1bn22bLSLZ6hoqIi5s2bF8cee2wUFRVt8fHy5cuXLz99fj7PLl++fPny5cuXLz+/8vN5dvny5ctvyvlN3fonZW2ORite2rVrF4WFhdV3qqy3YsWK6NixY63HdOzYsc71H3zwQVxyySXxP//zPzFo0KCIiDjooIPiqaeeih/96EcbLV6Ki4ujuLh4g+1FRUW+AD+mvLLuIqXG2qrcJtdvzfVt6M+PfPny5cvfvrLly5cvX758+fLly99W2fLly5cvn4/bkmtW0IBz1Kl58+bRu3fvmD9/fvW2qqqqmD9/fo1Hj31Uv379aqyPiJg3b171+oqK/7wnS0FBzdMqLCyMqqqqxGcAAAAAAABQU6M+amz06NExfPjwOOyww6JPnz4xZcqUWL16dYwYMSIiIoYNGxadO3eOq666KiIizjvvvBgwYEBcc801MWjQoLjzzjvjiSeeiJtuuikiItq0aRMDBgyIiy66KFq2bBldu3aNhx9+OG6//fa49tprG+08AQAAAACAHUOjFi+nnnpqvPXWWzFu3LhYvnx59OrVK+bMmRMdOnSIiIilS5fWuHulf//+MWPGjLjsssvikksuif322y9mzpwZPXr0qF5z5513xtixY+MrX/lKvPvuu9G1a9f4/ve/H9/85je3+fkBAAAAAAA7lkYtXiIiRo0aFaNGjap134IFCzbYNmTIkBgyZMhG8zp27BjTp09PNR4AAAAAAMBma7T3eAEAAAAAAGhqFC8AAAAAAACJKF4AAAAAAAASUbwAAAAAAAAkongBAAAAAABIRPECAAAAAACQiOIFAAAAAAAgEcULAAAAAABAIooXAAAAAACARBQvAAAAAAAAiSheAAAAAAAAElG8AAAAAAAAJKJ4AQAAAAAASETxAgAAAAAAkIjiBQAAAAAAIBHFCwAAAAAAQCKKFwAAAAAAgEQULwAAAAAAAIkoXgAAAAAAABJRvAAAAAAAACSieAEAAAAAAEhE8QIAAAAAAJCI4gUAAAAAACARxQsAAAAAAEAiihcAAAAAAIBEFC8AAAAAAACJKF4AAAAAAAASUbwAAAAAAAAkongBAAAAAABIRPECAAAAAACQiOIFAAAAAAAgEcULAAAAAABAIooXAAAAAACARBQvAAAAAAAAiSheAAAAAAAAElG8AAAAAAAAJKJ4AQAAAAAASETxAgAAAAAAkEizxh4APqpkzKxNrikuzGJyn4geZXOjvDJX59olkwalGg0AAAAAADbJHS8AAAAAAACJKF4AAAAAAAASUbwAAAAAAAAkongBAAAAAABIRPECAAAAAACQiOIFAAAAAAAgEcULAAAAAABAIooXAAAAAACARBQvAAAAAAAAiSheAAAAAAAAElG8AAAAAAAAJKJ4AQAAAAAASETxAgAAAAAAkIjiBQAAAAAAIBHFCwAAAAAAQCKKFwAAAAAAgEQULwAAAAAAAIkoXgAAAAAAABJRvAAAAAAAACSieAEAAAAAAEhE8QIAAAAAAJCI4gUAAAAAACARxQsAAAAAAEAiihcAAAAAAIBEFC8AAAAAAACJKF4AAAAAAAASUbwAAAAAAAAkongBAAAAAABIRPECAAAAAACQiOIFAAAAAAAgEcULAAAAAABAIooXAAAAAACARBQvAAAAAAAAiSheAAAAAAAAElG8AAAAAAAAJKJ4AQAAAAAASETxAgAAAAAAkIjiBQAAAAAAIBHFCwAAAAAAQCKKFwAAAAAAgEQULwAAAAAAAIkoXgAAAAAAABJRvAAAAAAAACSieAEAAAAAAEhE8QIAAAAAAJCI4gUAAAAAACARxQsAAAAAAEAiihcAAAAAAIBEFC8AAAAAAACJKF4AAAAAAAASUbwAAAAAAAAkongBAAAAAABIRPECAAAAAACQiOIFAAAAAAAgEcULAAAAAABAIooXAAAAAACARBQvAAAAAAAAiSheAAAAAAAAElG8AAAAAAAAJKJ4AQAAAAAASETxAgAAAAAAkIjiBQAAAAAAIBHFCwAAAAAAQCKKFwAAAAAAgEQULwAAAAAAAIkoXgAAAAAAABJRvAAAAAAAACSieAEAAAAAAEhE8QIAAAAAAJCI4gUAAAAAACARxQsAAAAAAEAiihcAAAAAAIBEFC8AAAAAAACJKF4AAAAAAAASUbwAAAAAAAAkongBAAAAAABIRPECAAAAAACQiOIFAAAAAAAgEcULAAAAAABAIooXAAAAAACARBQvAAAAAAAAiSheAAAAAAAAElG8AAAAAAAAJKJ4AQAAAAAASETxAgAAAAAAkIjiBQAAAAAAIBHFCwAAAAAAQCKKFwAAAAAAgEQULwAAAAAAAIkoXgAAAAAAABJRvAAAAAAAACTS6MXL9ddfHyUlJdGiRYvo27dvPPbYY3Wuv/vuu6Nbt27RokWL6NmzZ8yePXuDNc8991yceOKJscsuu0Tr1q3j8MMPj6VLlzbUKQAAAAAAAEREIxcvd911V4wePTrGjx8fixcvjoMPPjhKS0vjzTffrHX9woULY+jQoXHWWWfFk08+GYMHD47BgwfHs88+W73mpZdeiiOPPDK6desWCxYsiGeeeSYuv/zyaNGixbY6LQAAAAAAYAfVqMXLtddeG+ecc06MGDEiDjjggJg2bVq0atUqbrnlllrXT506NY4//vi46KKLonv37jFx4sQ49NBD47rrrqtec+mll8bnPve5mDx5chxyyCGx7777xoknnhjt27ffVqcFAAAAAADsoJo11gdet25d/OUvf4mxY8dWbysoKIiBAwfGokWLaj1m0aJFMXr06BrbSktLY+bMmRERUVVVFbNmzYqLL744SktL48knn4y99947xo4dG4MHD97oLOXl5VFeXl79etWqVRERUVFRERUVFfU8w6apuDDb9JqCrMbvdfn49W3o/M2x/piG+tzLly9fflPMz+fZ5cuXL1++fPny5edXfj7PLl++fPlNOb+p25LrlsuybNP/et0Ali1bFp07d46FCxdGv379qrdffPHF8fDDD8ejjz66wTHNmzeP2267LYYOHVq97YYbbogJEybEihUrYvny5bHHHntEq1at4sorr4zPfOYzMWfOnLjkkkvioYceigEDBtQ6S1lZWUyYMGGD7TNmzIhWrVolOFsAAAAAACBfrVmzJk4//fRYuXJltGnTps61jXbHS0OoqqqKiIgvfvGL8d3vfjciInr16hULFy6MadOmbbR4GTt2bI07aVatWhVdunSJ4447bpMXcEfTo2zuJtcUF2Qx8bCquPyJgiivytW59tmy0m2avzkqKipi3rx5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+/bto1evXpHL5SLLsg3W5XK5qKys3OwBTj311Hjrrbdi3LhxsXz58ujVq1fMmTMnOnToEBERS5cujYKCgur1/fv3jxkzZsRll10Wl1xySey3334xc+bM6NGjx2Z/TAAAAAAAgIaw2cXLK6+8Ervvvnv1/05p1KhRG3202IIFCzbYNmTIkBgyZMhm59f2vi4A8FElY2Ztck1xYRaT+0T0KJtb53vILJk0KOVoAAAAAOSRzS5eunbtWv2/X3311ejfv380a1bz8A8//DAWLlxYYy0AAAAAAMCOomDTSzb0mc98Jt59990Ntq9cuTI+85nPbPVQAAAAAAAA+ahexUuWZZHLbfiIlXfeeSdat2691UMBAAAAAADko81+1FhExJe+9KWIiMjlcvG1r30tiouLq/dVVlbGM888E/379087IQAAAAAAQJ7YouJll112iYj/3PGy8847R8uWLav3NW/ePP7f//t/cc4556SdEAAAAAAAIE9sUfEyffr0iIgoKSmJCy+80GPFAAAAAAAAPmKLipf1xo8fn3oOAAAAAACAvFev4iUi4p577olf//rXsXTp0li3bl2NfYsXL97qwQAAAAAAAPJNQX0O+slPfhIjRoyIDh06xJNPPhl9+vSJ3XbbLV5++eU44YQTUs8IAAAAAACQF+pVvNxwww1x0003xU9/+tNo3rx5XHzxxTFv3rw499xzY+XKlalnBAAAAAAAyAv1Kl6WLl0a/fv3j4iIli1bxvvvvx8REWeccUb813/9V7rpAAAAAAAA8ki9ipeOHTvGu+++GxERe+21V/z5z3+OiIhXXnklsixLNx0AAAAAAEAeqVfxcswxx8S9994bEREjRoyI7373u3HsscfGqaeeGieddFLSAQEAAAAAAPJFs/ocdNNNN0VVVVVERHz729+O3XbbLRYuXBgnnnhifOMb30g6IAAAAAAAQL6oV/FSUFAQBQX/d7PMaaedFqeddlqyoQAAAAAAAPLRZhcvzzzzzGaHHnTQQfUaBgCaqpIxsza5prgwi8l9InqUzY3yytxG1y2ZNGib5wMAAACweTa7eOnVq1fkcrnIsqzOdblcLiorK7d6MAAAAAAAgHyz2cXLK6+80pBzAADbsU3dUbO5d9NEuKMGAAAAaNo2u3jp2rVrQ84BAAAAAACQ9wrqe+Add9wRRxxxRHTq1CleffXViIiY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Nzhmr732itGjR8f5559fvW38+PExc+bMePrpp+Pll1+OfffdN5588sno1atX9ZoBAwZEr169YurUqRtklpWVxYQJEzbYPmPGjGjVqtVWnSMAAAAAAJDf1qxZE6effnqsXLky2rRpU+faRr3j5e23347Kysro0KFDje0dOnSI559/vtZjli9fXuv65cuXV+9fv21jaz5u7NixMXr06OrXq1atii5dusRxxx23yQvIhioqKmLevHlx7LHHRlFRkXz58uXL3wHy83l2+fLly5cvX758+dtXfo+yuXXuLy7IYuJhVXH5EwVRXpWrc+2zZaXbPH9Ttvba5/v1yffrL79u+fz53dTsEdv3/NtDflO3/klZm6PRHzW2PSguLo7i4uINthcVFfkC3AoNff3ky5cvX/72l5/Ps8uXL1++fPny5cvfPvLLK+v+x8zqdVW5Ta6t7WM3dP7mqu+1z/frk+/XX37d8vnzu7mzR2yf829P+U3VllyzggacY5PatWsXhYWFsWLFihrbV6xYER07dqz1mI4dO9a5fv3vW5IJAAAAAACQQqMWL82bN4/evXvH/Pnzq7dVVVXF/Pnzo1+/frUe069fvxrrIyLmzZtXvX7vvfeOjh071lizatWqePTRRzeaCQAAAAAAkEKjP2ps9OjRMXz48DjssMOiT58+MWXKlFi9enWMGDEiIiKGDRsWnTt3jquuuioiIs4777wYMGBAXHPNNTFo0KC4884744knnoibbropIiJyuVycf/75ceWVV8Z+++0Xe++9d1x++eXRqVOnGDx4cGOdJgAAAAAAsANo9OLl1FNPjbfeeivGjRsXy5cvj169esWcOXOiQ4cOERGxdOnSKCj4vxtz+vfvHzNmzIjLLrssLrnkkthvv/1i5syZ0aNHj+o1F198caxevTq+/vWvx3vvvRdHHnlkzJkzJ1q0aLHNzw8AAAAAANhxNHrxEhExatSoGDVqVK37FixYsMG2IUOGxJAhQzaal8vl4oorrogrrrgi1YgAAAAAAACb1Kjv8QIAAAAAANCUKF4AAAAAAAAS2S4eNQYAAAAAAI1lyaRBm1xTUVERs2fPjmfLSqOoqGgbTEW+cscLAAAAAABAIooXAAAAAACARDxqDAAAAACArbapx3V5VBc7Cne8AAAAAAAAJKJ4AQAAAAAASETxAgAAAAAAkIjiBQAAAAAAIBHFCwAAAAAAQCKKFwAAAAAAgEQULwAAAAAAAIkoXgAAAAAAABJRvAAAAAAAACSieAEAAAAAAEhE8QIAAAAAAJCI4gUAAAAAACARxQsAAAAAAEAiihcAAAAAAIBEFC8AAAAAAACJKF4AAAAAAAASUbwAAAAAAAAkongBAAAAAABIRPECAAAAAACQiOIFAAAAAAAgEcULAAAAAABAIs0aewAAAAAAYMewZNKgOvdXVFTE7Nmz49my0igqKtpGUwGk5Y4XAAAAAACARBQvAAAAAAAAiXjUGAAAAAAQER4FBpCCO14AAAAAAAASUbwAAAAAAAAk4lFjAAAAAJAnPAoMYPvnjhcAAAAAAIBEFC8AAAAAAACJKF4AAAAAAAASUbwAAAAAAAAkongBAAAAAABIRPECAAAAAACQiOIFAAAAAAAgEcULAAAAAABAIooXAAAAAACARBQvAAAAAAAAiSheAAAAAAAAElG8AAAAAAAAJKJ4AQAAAAAASETxAgAAAAAAkIjiBQAAAAAAIBHFCwAAAAAAQCKKFwAAAAAAgEQULwAAAAAAAIkoXgAAAAAAABJRvAAAAAAAACSieAEAAAAAAEhE8QIAAAAAAJCI4gUAAAAAACARxQsAAAAAAEAiihcAAAAAAIBEFC8AAAAAAACJKF4AAAAAAAASUbwAAAAAAAAkongBAAAAAABIRPECAAAAAACQSLPGHgAAAAAAtpUlkwbVub+ioiJmz54dz5aVRlFR0TaaCoCmxB0vAAAAAAAAiSheAAAAAAAAElG8AAAAAAAAJKJ4AQAAAAAASETxAgAAAAAAkIjiBQAAAAAAIBHFCwAAAAAAQCKKFwAAAAAAgEQULwAAAAAAAIkoXgAAAAAAABJRvAAAAAAAACSieAEAAAAAAEhE8QIAAAAAAJCI4gUAAAAAACCRZo09AAAAAACst2TSoDr3V1RUxOzZs+PZstIoKiraRlMBwOZzxwsAAAAAAEAiihcAAAAAAIBEFC8AAAAAAACJKF4AAAAAAAASUbwAAAAAAAAkongBAAAAAABIRPECAAAAAACQiOIFAAAAAAAgEcULAAAAAABAIooXAAAAAACARBQvAAAAAAAAiSheAAAAAAAAElG8AAAAAAAAJKJ4AQAAAAAASETxAgAAAAAAkIjiBQAAAAAAIBHFCwAAAAAAQCKKFwAAAAAAgEQULwAAAAAAAIkoXgAAAAAAABJRvAAAAAAAACSieAEAAAAAAEhE8QIAAAAAAJCI4gUAAAAAACARxQsAAAAAAEAiihcAAAAAAIBEFC8AAAAAAACJKF4AAAAAAAASUbwAAAAAAAAkongBAAAAAABIRPECAAAAAACQiOIFAAAAAAAgEcULAAAAAABAIs0ae4DtUZZlERGxatWqRp4kP1VUVMSaNWti1apVUVRUJF++fPnyd4D8fJ5dvnz58uXLly9ffn7l5/Ps8uXLl9+U85u69X3B+v6gLoqXWrz//vsREdGlS5dGngQAAAAAANhevP/++7HLLrvUuSaXbU49s4OpqqqKZcuWxc477xy5XK6xx8k7q1atii5dusRrr70Wbdq0kS9fvnz5O0B+Ps8uX758+fLly5cvP7/y83l2+fLly2/K+U1dlmXx/vvvR6dOnaKgoO53cXHHSy0KCgpizz33bOwx8l6bNm0a9A+wfPny5cvf/vLzeXb58uXLly9fvnz5+ZWfz7PLly9fflPOb8o2dafLenXXMgAAAAAAAGw2xQsAAAAAAEAiiheSKy4ujvHjx0dxcbF8+fLly99B8vN5dvny5cuXL1++fPn5lZ/Ps8uXL19+U87n/+SyLMsaewgAAAAAAICmwB0vAAAAAAAAiSheAAAAAAAAElG8AAAAAAAAJKJ4AQAAAAAASETxAgAAAAAAkIjihbzyz3/+M+bOnRsffPBBRERkWdbIE20fKisrY8WKFfHWW2819ijkuVdeeSU+/PDDxh6j3lasWBHLly9v7DF2WAsWLKj+/gzA5sn3n2cbev58/rmEzZPPfwbyeXaAuvj+BltP8UKDeu6552KfffbZ6px33nknBg4cGJ/61Kfic5/7XLzxxhsREXHWWWfFBRdcsNX5661bty7+9a9/xdKlS2v8aggvvfRSHHPMMVuVMWvWrDjqqKOidevW0alTp+jYsWO0bds2zjjjjCRzP/3003HllVfGDTfcEG+//XaNfatWrYozzzxzqz9GXV577bV6f4w333yzxuunnnoqhg8fHkcccUScfPLJsWDBggQTbtzWzL7ec889F9OnT4/nn38+IiKef/75+Na3vhVnnnlmPPjggynG3MD+++8fL774YvLc1atXx/Tp0+PSSy+N6667Lt55552tynv33Xfj5JNPjr322iu+9a1vRWVlZZx99tmxxx57ROfOnaN///7V3yfq64MPPog//elP8fe//32DfWvXro3bb799q/LrsrVfPz179oyJEyfGa6+9lnCqTTvuuONiyZIlSbLeeOON+OUvfxmzZ8+OdevW1di3evXquOKKK7Yqv6H/fM2bNy/Gjx9fnfWHP/whTjjhhDjmmGNi+vTpW5X9ne98J/74xz9u9Yx1eeONN2LcuHFxzDHHRPfu3ePAAw+ML3zhC/GLX/wiKisrtzr/7bffjsmTJ8dJJ50U/fr1i379+sVJJ50UP/zhD5P8nwiuu+66GDZsWNx5550REXHHHXfEAQccEN26dYtLLrlkq/8ht6HzP2rZsmUxfvz4+MpXvhIXXnhh9ddsfS1evDheeeWV6td33HFHHHHEEdGlS5c48sgjq8+pvrbF1+e2vP4fleLv9toUFxfHc889t9U52+La1ybV/HPmzIm//vWvERFRVVUVEydOjM6dO0dxcXHsueeeMWnSpK3+R6Cf//znMXz48Orvw3fddVd079499tlnnxg/fvxWZe+6667VPy9/4hOfiF133XWjv/baa6844YQT4plnntmij9HQf3c15J+t8vLyuPDCC+Ooo46Kq6++OiIirrzyythpp51i5513jtNPPz1WrVq11eewXuqfPTcm1dd/RMP/7Pn000/HsGHDYp999omWLVtG69ato2fPnnH55Zcnvfa1SfH9s6F/NqnL1s7f0H/3RjT8z1YN+fW5La7P3//+9xg5cmQccsghsccee8Qee+wRhxxySIwcObLWc9paa9eujVWrVtX4tTUa+vNbm3z6+aShvz80VH5T+N7AJmTQgJ566qmsoKBgq3POOOOMrLS0NHvttdeynXbaKXvppZeyLMuyOXPmZAcccMBW5//jH//IjjzyyKygoKDGr1wul2T+2mzttbn99tuznXfeObvggguySy+9NOvYsWM2ZsyY7MYbb8wGDBiQtWvXLvvHP/5R7/y5c+dmzZs3zw488MBsr732ynbbbbfswQcfrN6/fPnyBrs2623NNSooKMhWrFiRZVmWPfLII1lRUVE2YMCA7KKLLsqOPfbYrFmzZtnDDz+cctwatvbze//992fNmzfPdt1116xFixbZ/fffn+2+++7ZwIEDs2OOOSYrLCzM5s+fX+/8k046qdZfBQUF2cCBA6tf11f37t2zd955J8uyLFu6dGlWUlKS7bLLLtnhhx+e7brrrln79u2zl19+ud75Z555ZtajR4/spz/9aTZgwIDsi1/8YnbQQQdlf/rTn7KFCxdmhx9+eDZs2LB657/wwgtZ165dq78HHHXUUdmyZcuq9zf01//Wfv3kcrlst912ywoLC7PS0tLsnnvuySoqKpLNd8ghh9T6K5fLZd27d69+XV+PPfZY1rZt26xNmzZZy5Yts09+8pPZs88+W71/a69/Q//5uuOOO7JmzZplhx56aLbTTjtl06dPz9q2bZudffbZ2Zlnnpk1b948u/vuu+udv/7rcr/99ssmTZqUvfHGG/XOqs3jjz+e7bLLLlnv3r2zI488MissLMzOOOOM7NRTT83atm2b9e/fP1u1alW98x977LHsE5/4RNa5c+ds+PDh2cUXX5xdfPHF2fDhw7M999wz23XXXbPHH3+83vkTJ07Mdt555+zLX/5y1rFjx2zSpEnZbrvtll155ZXZD37wg2z33XfPxo0bt93mt2zZMnvzzTezLMuyv/3tb9kuu+ySffKTn8yGDBmSdevWLWvVqlX29NNP1zv/oIMOyubNm5dlWZbdfPPNWcuWLbNzzz03u/HGG7Pzzz8/22mnnbJf/OIX9c5v6K/Phr7+ddna783f/e53a/1VUFCQDRs2rPp1fTX0tW/o+ffff//sD3/4Q5ZlWfaDH/wg22233bJrr702u//++7Mp/7+9N4+Lqm7//19nZJVNRFAUEBT3FbXcJUvTPqal3ncumWG2mWmZ3Laa6K2SpZXepbmUZW6ZWS6lrZr7koCSuSKlmblkuOYG1+8Pf8zXERlgzrxneI+v5+NxHjLn4HMuruvifd7Me+act9+WihUrymuvveaw/6233pKAgADp0aOHREZGytixY629M3r0aAkODpbp06c77P/www/l4sWL1q/tbdOnT5f77rtPmjRpUmy/6nOX6t+tYcOGSeXKlWX48OFSp04deeqppyQmJkbmzp0r8+fPl/j4eBkyZIjDftVzT9X9r3ruuWrVKvH395eePXtKv379pGzZsvL000/L888/L/Hx8VK9enWnjxnXY3b8VD03KQqz8as+96qeW6nuT9X5+eqrr8THx0datGgho0aNkqlTp8rUqVNl1KhR0qpVK/H19ZVVq1Y57M/n/PnzMnjwYAkPDy/w2pKZ/Kiur+7zE9Xjg0q/7mMDKRouvBBTFDZA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eKdvSXjmmWekfv36snLlSvnhhx+kffv2cscdd1iPr1q1SqpXr+6w/5133hFfX18ZOnSoLF26VDZv3iybN2+WpUuXytChQ8Xf31/effddh/2vvPKKhIeHy6OPPipxcXHywgsvSExMjEybNk3ee+89iY6ONnWdatV+wzCkXLlyEhoaKt7e3vLxxx/bHP/mm28kNjbWYf+RI0ckNjZW2rVrJ88995z4+/tLmzZt5LHHHpN27dqJj4+PfPnll6biV9mfKvOvemzO5+zZs9K/f39p2LChZGZmOvXcqzL3+aiKPycnR5o1aybx8fHy0EMPiZ+fn1StWlU6duwocXFxEhISIps3b3bY37p1a5vL9N7I8uXLpX79+g77r2fkyJESGRkpEydOFD8/P/nvf/8rAwcOlLCwMOulKEuK6nOX6rHtrbfeEj8/P+nQoYOEhobKlClTpFKlSjJixAh54YUXJCQkRMaMGeOwX/XcMx9V/a967jl69GiJioqSadOmyQcffCD169e3uSz1kiVLTF3ORvX4qXpuojp+1ede1XMr1f2pOj+LFi0SLy8v6dq1q0yePFkWLlwoCxculMmTJ0u3bt3Ex8enwJjhCA0aNJA1a9aIiMhdd90lw4cPF5Frl6E3M/6orm8+us5PVI8PKv26jw2kaLjwQkxx9OhRm8v9qCQnJ0fGjh0r//73v+Wee+6Rl19+2eaGbma4/uPD129mPlK8a9cuuzepunz5suncTZ06VVq1aiVNmzaVl156Sf755x/rsX379pm6fNqSJUvsLqrNmzfP5mTjCGvXrrX5A/JGzp07Z524lJQ1a9bYbDdetujtt9+W119/3SG3iNrYRUSmTZsmK1asKPT4iy++aLPQZpZ169ZJXFycWCwWp0yurr/3R0pKSoGbFSYnJ0vv3r1NPcf69etl4sSJ1nu97Nq1Sx566CHp2bOnfPjhh6bc48ePt/tx8EGDBpn640t1/yQlJSm9weiN7Nu3T2677TYxDMMp/TNz5kzp169focdfe+01Uy88q/79WrJkifz444+FHk9NTZVXXnnFYX9sbKycPHnS4f9fFGfPnpUHHnhAvLy8xDAMadWqlc2l077++usC914oKQsXLpTmzZtbn8MwDPHy8pLmzZvLJ598Ysqdm5sr48aNk3vvvVfGjx8veXl5smDBAomOjpawsDBJSkqSc+fOlVr/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jgEDBmDSpEm4/fbbAQBbtmzBf/7zH/To0cOUm+MDIYQQYgvPXYQQQgghxFVw4YWYRkQQHx+PXbt2oUaNGoiOjnZ3SCXG19cXsbGxBfbHxcXBx8fHJTG0bdsW/v7+Jfo/qnOve21LU/yO1Jd++3hCfd977z0kJyejb9++1ssaenl5YeDAgXjjjTdMxXQrjQ+lsT/pp59+z/frHPut6i9N5y7VlMb8008//fTTrx7d80O/e9yu8N+SCCFOoG7durJp0yZ3h+Ewo0ePlj59+sjFixet+y5evCgPPvigpKSkmPYfOHBAXn75Zendu7ccO3ZMRES++uor+fnnn027Vede99q6In6V9aXfPp5QXxGRc+fOyY4dO2THjh1y7tw5p3k9YXzQuT/pp59+ff06x06/fXSf24ronX/66aeffk/2q0b3/NDvHrcr/OTmcOGFOIVly5ZJmzZtJDMz092hOMT9998vQUFBUqFCBbnrrrvkrrvukgoVKkhwcLB0797dZispa9asEX9/f+nQoYP4+PhIVlaWiIikpqZKz549TceuOve611Z1/KrrS799dK+vanQfH3TvT/rpp19Pv86x0180us9tdc8//fTTT7+n+lWje37o98zYiX248EKcQrly5cTHx0csFov4+flJaGiozVbaSUpKKvZWUlq0aCGTJk0SEZHAwEDrALdlyxapUqWK6dhV51732qqOX3V96beP7vVVje7jg+79ST/99Ovp1zl2+otG97mt7vmnn3766fdUv2p0zw/97nG7wk8Kh/d4IU7h7bffdncIppg9e7Yyd2ZmJubPn19gf0REBE6ePGnarzr3utdWdfyq60u/fXSvr2p0Hx9070/66adfT7/OsdNfNLrPbXXPP/3000+/p/pVo3t+6HeP2xV+UjhceCFO4eGHH3Z3CKWWcuXK4ejRo4iLi7PZn56ejipVqpj2q8697rVVHb/q+tJvH93rqxrdxwfd+5N++unX069z7PQXje5zW93zTz/99NPvqX7V6J4f+t3jdoWfFI7F3QEQz+DQoUN2t9JIkyZN8PfffwMAEhIS0KRJk0I3M/Tu3RvPP/88/vzzTxiGgby8PGzYsAHJycno37+/6Z9Dde51rO31qI5fdX3pt4/u9VWN7uOD7v1JP/306+nXOXb6i0b3ua3u+aeffvrp91S/anTPD/2eGTspAndf64x4BoZhiMViKXQrjaSkpMj58+etX9vbzHDp0iV59NFHxcvLSwzDEG9vb7FYLNKvXz+5evWq6Z9Dde51rO31qI5fdX3pt4/u9VWN7uOD7v1JP/306+nXOXb6i0b3ua3u+aeffvrp91S/anTPD/2eGTuxjyEi4u7FH6I/O3bssHl85coVpKen480338S4cePQo0cPN0XmXkQEhw8fRnh4OE6ePInMzEycO3cOCQkJqFGjhlOeQ3Xuda+tyvhV15f+otG5vq5A5/FB9/6kn3769fTrHDv9xUPnua3u+aeffvrp91S/anTPD/2eGTspBgoWcwixsmLFCklMTHR3GEWydetW2bx5c4H9mzdvlm3btjnszc3NFW9vb9m3b5+Z8BxCde51qW1hOCN+1fWl33F0qK870WF80L0/6aeffj39OsdOvzl0mNvqnn/66aeffk/1q0b3/NDvHrcr/MQ+vMcLUUqtWrWwbds2d4dRJIMHD8bhw4cL7D9y5AgGDx7ssNdisaBGjRr466+/zITnEKpzr0ttC8MZ8auuL/2Oo0N93YkO44Pu/Uk//fTr6dc5dvrNocPcVvf8008//fR7ql81uueHfve4XeEnReDulR/iGZw+fdpmy8nJkd27d0uvXr2kUaNG7g6vSAICAiQrK6vA/oMHD0pgYKAp97Jly6RNmzaSmZlpylMYqnOve21Vx6+6vvTbR/f6qkb38UH3/qSffvr19OscO/1Fo/vcVvf8008//fR7ql81uueHfve4XeEnhcN7vBCnYLFYYBiGzT4RQXR0NBYuXIiWLVu6KbLiERYWhhUrVhSIc+PGjejSpQv+/vtvh92hoaG4cOECrl69Ch8fH/j7+9scP3XqlMNuQH3uda+t6vhV15d+++heX9XoPj7o3p/000+/nn6dY6e/aHSf2+qef/rpp59+T/WrRvf80O8etyv8pHC83B0A8QxWr15t89hisSA8PBzx8fHw8ir9bXb33XfjxRdfxNKlSxESEgIAyMnJwUsvvYSOHTuacr/99ttOiLBwVOde99qqjl91fem3j+71VY3u44Pu/Uk//fTr6dc5dvqLRve5re75p59++un3VL9qdM8P/e5xu8JPCoefeCFOYe3atWjVqlWBP1auXr2KjRs3ol27dm6KrHgcOXIE7dq1w19//YWEhAQAQEZGBipWrIhvv/0W0dHRbo6wcFTn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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "names, correlations = pipe2.features.correlations()\n", "\n", "plt.subplots(figsize=(20, 10))\n", "\n", "plt.bar(names, correlations)\n", "\n", "plt.title(\"feature correlations\")\n", "plt.grid(True)\n", "plt.xlabel(\"features\")\n", "plt.ylabel(\"correlations\")\n", "plt.xticks(rotation='vertical')\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABl4AAAOkCAYAAADHhknPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAADMM0lEQVR4nOz9fZzVdZ0//j+Gq0EwNHUVJRMN8wrSxHAhU1MUjTLaDRO3RLxo1/16FWkfMJUh3GRpdbUPGmuluVuspu2HbcOViNQuJAtR01JXS9REwYuUwhxw5vz+6OdsIwPB+BqHN+d+v93ODeb9fp3nPM77HLDh0euchlqtVgsAAAAAAABvWI/uDgAAAAAAALClULwAAAAAAAAUongBAAAAAAAoRPECAAAAAABQiOIFAAAAAACgEMULAAAAAABAIYoXAAAAAACAQhQvAAAAAAAAhSheAAAAAAAAClG8AADAFupnP/tZRo0alf79+6ehoSH33ntvd0d6Uy1btiwNDQ352te+1t1RAACAOtKruwMAAADlrV27NuPHj0/fvn3zz//8z+nXr19222234t9n+fLlueaaazJu3LgccMABxefXu6uvvjr9+vXLySef3N1RAACAjdRQq9Vq3R0CAAAo66GHHso+++yTL3/5yznttNO67PssWbIk73nPe3LddddtduVArVZLc3NzevfunZ49e3Z3nE4ZOnRodthhh9x+++3dHQUAANhI3moMAAC2QCtXrkySbLvttt0bpJNeeeWVtLa2vqEZDQ0N6du3byVLl5dffrm7IwAAAJ2keAEAgC3MySefnMMOOyxJMn78+DQ0NOTwww9vO//QQw/lox/9aLbbbrv07ds3Bx10UL797W+3m/HCCy/kvPPOy7Bhw7L11ltnwIABOfbYY3Pfffe1rbn99tvznve8J0kyadKkNDQ0tPtMlcGDB3e4C+bwww9vl+f2229PQ0NDbrjhhlx44YUZNGhQ+vXrl1WrViVJ7rrrrhxzzDHZZptt0q9fvxx22GH58Y9//GevQ0ef8XLyySdn6623zhNPPJEPfvCD2XrrrTNo0KBcddVVSZL7778/RxxxRPr375/ddtstc+fObTfza1/7WhoaGvKDH/wgf/u3f5vtt98+AwYMyEknnZTf/va362S4+uqrs99++6WxsTG77LJL/r//7//Liy++uM71GDp0aO6+++4ceuih6devXy644IIMHjw4v/jFL3LHHXe0XdvXrtvGPD9/em2/+c1v5h/+4R/ytre9LX379s2RRx6ZRx99dJ28d911Vz7wgQ/krW99a/r37593vetdufLKK9ut2ZjXz9q1azN9+vTsueee6du3b7bffvsccsghWbhw4QafMwAA2BL4jBcAANjC/O3f/m0GDRqUz3/+8zn77LPznve8JzvttFOS5Be/+EXe+973ZtCgQZkyZUr69++fb37zmxk3bly+9a1v5SMf+UiS5Ne//nXmzZuX8ePHZ/fdd8+KFSvyL//yLznssMPyy1/+Mrvsskv22WeffO5zn8vFF1+cT37yk3nf+96XJBk1alSncs+YMSN9+vTJeeedl+bm5vTp0yff//73c+yxx2b48OGZNm1aevTokeuuuy5HHHFEfvjDH2bEiBGb/H1aWlpy7LHH5tBDD82sWbPyjW98I2eeeWb69++fz372s/mbv/mb/NVf/VXmzJmTk046KSNHjszuu+/ebsaZZ56ZbbfdNk1NTXn44YfzpS99KY8//nhb0ZEkTU1NmT59ekaPHp0zzjijbd3Pfvaz/PjHP07v3r3b5j3//PM59thjc8IJJ+TjH/94dtpppxx++OE566yzsvXWW+ezn/1skrQ9jxvz/PypmTNnpkePHjnvvPPy0ksvZdasWfmbv/mb3HXXXW1rFi5cmA9+8IPZeeedc84552TgwIF58MEH853vfCfnnHNOko1//TQ1NeXSSy/NaaedlhEjRmTVqlVZsmRJli5dmqOOOmqTnzMAAKiUGgAAsMW57bbbaklqN910U7vjRx55ZG3YsGG1V155pe1Ya2trbdSoUbU999yz7dgrr7xSa2lpaXffxx57rNbY2Fj73Oc+13bsZz/7WS1J7brrrlsnw2677VabOHHiOscPO+yw2mGHHbZO1j322KP28ssvt8u155571saMGVNrbW1tO/7yyy/Xdt9999pRRx21wWvw2GOPrZNt4sSJtSS1z3/+823Hfvvb39a22mqrWkNDQ+2GG25oO/7QQw/VktSmTZvWduy6666rJakNHz68tmbNmrbjs2bNqiWp/ed//metVqvVVq5cWevTp0/t6KOPbncdZ8+eXUtSu/baa9tdjyS1OXPmrPMY9ttvv3bX6jUb+/y8dm332WefWnNzc9vxK6+8spakdv/999dqtVrt1Vdfre2+++613Xbbrfbb3/623dw/vfYb+/rZf//9a2PHjl0nNwAA1ANvNQYAAHXihRdeyPe///0cf/zx+d3vfpfnnnsuzz33XJ5//vmMGTMmjzzySJ566qkkSWNjY3r0+OOPCy0tLXn++eez9dZbZ6+99srSpUu7JN/EiROz1VZbtX1977335pFHHsmJJ56Y559/vi3v6tWrc+SRR+YHP/hBpz8H5rTTTmv7/bbbbpu99tor/fv3z/HHH992fK+99sq2226bX//61+vc/5Of/GS7HStnnHFGevXqlVtuuSVJ8r3vfS9r1qzJueee23Ydk+T000/PgAEDMn/+/HbzGhsbM2nSpI3Ov6nPz6RJk9KnT5+2r1/bnfTaY7vnnnvy2GOP5dxzz13nc4Fe28GzKa+fbbfdNr/4xS/yyCOPbPRjAgCALYW3GgMAgDrx6KOPplar5aKLLspFF13U4ZqVK1dm0KBBaW1tzZVXXpmrr746jz32WFpaWtrWbL/99l2S7/Vv5/XaP9pPnDhxvfd56aWX8ta3vnWTvk/fvn3zF3/xF+2ObbPNNnnb297WVjL86fGOPrtlzz33bPf11ltvnZ133jnLli1Lkjz++ONJ/lje/Kk+ffpkjz32aDv/mkGDBrUrRv6cTX1+3v72t7f7+rVr9tpj+9WvfpUkGTp06Hq/56a8fj73uc/lwx/+cN75zndm6NChOeaYY/KJT3wi73rXuzb6MQIAQFUpXgAAoE68tjvkvPPOy5gxYzpcM2TIkCTJ5z//+Vx00UU55ZRTMmPGjGy33Xbp0aNHzj333I3eZfL6EuM1LS0t6dmz5zrH/3S3y5/m/cIXvpADDjigw1lbb731RmX5Ux197w0dr9Vqm/w9NtXrH/ufs6nPT4nHtimvn0MPPTS/+tWv8p//+Z/57ne/m6985Sv553/+58yZM6fdbiMAANgSKV4AAKBO7LHHHkmS3r17Z/To0Rtce/PNN+f9739/vvrVr7Y7/uKLL2aHHXZo+3p95Uryx10VL7744jrHH3/88bYsG/KOd7wjSTJgwIA/m/fN9sgjj+T9739/29e///3v8/TTT+cDH/hAkmS33XZLkjz88MPtHuuaNWvy2GOPbfTjWd/13djnZ2O9dq0feOCB9WbblNdPkmy33XaZNGlSJk2alN///vc59NBD09TUpHgBAGCL5zNeAACgTuy44445/PDD8y//8i95+umn1zn/7LPPtv2+Z8+e6+yGuOmmm9o+w+M1/fv3T5IOC5Z3vOMd+clPfpI1a9a0HfvOd76TJ598cqPyDh8+PO94xzvyT//0T/n973+/wbxvtmuuuSZr165t+/pLX/pSXn311Rx77LFJktGjR6dPnz754he/2O46fvWrX81LL72UsWPHbtT36d+/f4fXdmOfn4114IEHZvfdd88VV1yxzvd77ftsyuvn+eefb3du6623zpAhQ9Lc3NypfAAAUCV2vAAAQB256qqrcsghh2TYsGE5/fTTs8cee2TFihVZvHhxfvOb3+S+++5Lknzwgx/M5z73uUyaNCmjRo3K/fffn2984xvr7FR5xzvekW233TZz5szJW97ylvTv3z8HH3xwdt9995x22mm5+eabc8wxx+T444/Pr371q3z9619v213x5/To0SNf+cpXcuyxx2a//fbLpEmTMmjQoDz11FO57bbbMmDAgPzXf/1X8Wu0MdasWZMjjzwyxx9/fB5++OFcffXVOeSQQ3LcccclSf7iL/4iU6dOzfTp03PMMcfkuOOOa1v3nve8Jx//+Mc36vsMHz48X/rSl3LJJZdkyJAh2XHHHXPEEUds9POzsXr06JEvfelL+dCHPpQDDjggkyZNys4775yHHnoov/jFL7JgwYIkG//62XfffXP44Ydn+PDh2W677bJkyZLcfPPNOfPMMzuVDwAAqkTxAgAAdWTffffNkiVLMn369Hzta1/L888/nx133DHvfve7c/HFF7etu+CCC7J69erMnTs3N954Yw488MDMnz8/U6ZMaTevd+/euf766zN16tT83d/9XV599dVcd9112X333TNmzJhcdtllufzyy3PuuefmoIMOyne+8518+tOf3ui8hx9+eBYvXpwZM2Zk9uzZ+f3vf5+BAwfm4IMPzt/+7d8Wuy6bavbs2fnGN76Riy++OGvXrs2ECRPyxS9+sd1bgzU1NeUv/uIvMnv27HzqU5/Kdtttl09+8pP5/Oc/n969e2/U97n44ovz+OOPZ9asWfnd736Xww47LEccccRGPz+bYsyYMbntttsyffr0XHbZZWltbc073vGOnH766W1rNvb1c/bZZ+fb3/52vvvd76a5uTm77bZbLrnkkpx//vmdzgcAAFXRUHszPikSAABgC/C1r30tkyZN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3Lm58MILc8EFF2TPPffMvHnzMnTo0CRJz54989BDD+X666/Pc889l+233z7vec978sMf/jD77bdftzxGAAAAAACgPnR78ZIkZ555Zs4888wOz91+++3rHBs/fvx6d6/07ds3//Ef/1EyHgAAAAAAwEbp1s94AQAAAAAA2JIoXgAAAAAAAApRvAAAAAAAABTSqeLl+uuvz/z589u+/sxnPpNtt902o0aNyuOPP14sHAAAAAAAQJV0qnj5/Oc/n6222ipJsnjx4lx11VWZNWtWdthhh3zqU58qGhAAAAAAAKAqenXmTk8++WSGDBmSJJk3b17++q//Op/85Cfz3ve+N4cffnjJfAAAAAAAAJXRqR0vW2+9dZ5//vkkyXe/+90cddRRSZK+ffvmD3/4Q7l0AAAAAAAAFdKpHS9HHXVUTjvttLz73e/O//zP/+QDH/hAkuQXv/hFBg8eXDIfAAAAAABAZXRqx8tVV12VkSNH5tlnn823vvWtbL/99kmSu+++OxMmTCgaEAAAAAAAoCo6teNl2223zezZs9c5Pn369DccCAAAAAAAoKo6teMlSX74wx/m4x//eEaNGpWnnnoqSfJv//Zv+dGPflQsHAAAAAAAQJV0qnj51re+lTFjxmSrrbbK0qVL09zcnCR56aWX8vnPf75oQAAAAAAAgKroVPFyySWXZM6cOfnyl7+c3r17tx1/73vfm6VLlxYLBwAAAAAAUCWdKl4efvjhHHrooesc32abbfLiiy++0UwAAAAAAACV1KniZeDAgXn00UfXOf6jH/0oe+yxxxsOBQAAAAAAUEWdKl5OP/30nHPOObnrrrvS0NCQ5cuX5xvf+EbOO++8nHHGGaUzAgAAAAAAVEKvztxpypQpaW1tzZFHHpmXX345hx56aBobG3PeeeflrLPOKp0RAAAAAACgEjpVvDQ0NOSzn/1szj///Dz66KP5/e9/n3333Tdbb7116XwAAAAAAACV0ani5aWXXkpLS0u222677Lvvvm3HX3jhhfTq1SsDBgwoFhAAAAAAAKAqOvUZLyeccEJuuOGGdY5/85vfzAknnPCGQwEAAAAAAFRRp4qXu+66K+9///vXOX744YfnrrvuesOhAAAAAAAAqqhTxUtzc3NeffXVdY6vXbs2f/jDH95wKAAAAAAAgCrqVPEyYsSIXHPNNescnzNnToYPH/6GQwEAAAAAAFRRr87c6ZJLLsno0aNz33335cgjj0ySLFq0KD/72c/y3e9+t2hAAAAAAACAqujUjpf3vve9Wbx4cXbdddd885vfzH/9139lyJAh+fnPf573ve99pTMCAAAAAABUQqd2vCTJAQcckG984xslswAAAAAAAFRap4uX1tbWPProo1m5cmVaW1vbnTv00EPfcDAAAAAAAICq6VTx8pOf/CQnnnhiHn/88dRqtXbnGhoa0tLSUiQcAAAAAABAlXSqePm7v/u7HHTQQZk/f3523nnnNDQ0lM4FAAAAAABQOZ0qXh555JHcfPPNGTJkSOk8AAAAAAAAldWp4uXggw/Oo48+qngBNhuDp8xf77nGnrXMGpEMbVqQ5paOd+gtmzm2q6IBAAAAAHWkU8XLWWedlU9/+tN55plnMmzYsPTu3bvd+Xe9611FwgEAAAAAAFRJp4qXv/7rv06SnHLKKW3HGhoaUqvV0tDQkJaWljLpAAAAAAAAKqRTxctjjz1WOgcAAAAAAEDldap42W233UrnAAAAAAAAqLxOFS+v+eUvf5knnngia9asaXf8uOOOe0OhAAAAAAAAqqhTxcuvf/3rfOQjH8n999/f9tkuyR8/5yWJz3gBAAAAAADqUo/O3Omcc87J7rvvnpUrV6Zfv375xS9+kR/84Ac56KCDcvvttxeOCAAAAAAAUA2d2vGyePHifP/7388OO+yQHj16pEePHjnkkENy6aWX5uyzz84999xTOicAAAAAAMBmr1M7XlpaWvKWt7wlSbLDDjtk+fLlSZLddtstDz/8cLl0AAAAAAAAFdKpHS9Dhw7Nfffdl9133z0HH3xwZs2alT59+uSaa67JHnvsUTojAAAAAABAJXSqeLnwwguzevXqJMnnPve5fPCDH8z73ve+bL/99rnhhhuKBgQAAAAAAKiKThUvY8aMafv9kCFD8tBDD+WFF17IW9/61jQ0NBQLBwAAAAAAUCWdKl5OOeWUXHnllW2f85Ik2223XVavXp2zzjor1157bbGAAN1l8JT56z3X2LOWWSOSoU0L0tzSceG8bObYrooGAAAAAGymenTmTtdff33+8Ic/rHP8D3/4Q/71X//1DYcCAAAAAACook3a8bJq1arUarXUarX87ne/S9++fdvOtbS05JZbbsmOO+5YPCQAAAAAAEAVbFLxsu2226ahoSENDQ155zvfuc75hoaGTJ8+vVg4AAAAAACAKtmk4uW2225LrVbLEUcckW9961vZbrvt2s716dMnu+22W3bZZZfiIQEAAAAAAKpgk4qXww47LK+++momTpyYgw46KLvuumtX5QIAAAAAAKicHpt6h169euXmm29OS0tLV+QBAAAAAACorE0uXpLkiCOOyB133FE6CwAAAAAAQKVt0luNvebYY4/NlClTcv/992f48OHp379/u/PHHXdckXAAAAAAAABV0qni5e///u+TJJdffvk65xoaGrwNGQAAAAAAUJc6Vby0traWzgEAAAAAAFB5nfqMFwAAAAAAANbV6eLljjvuyIc+9KEMGTIkQ4YMyXHHHZcf/vCHJbMBAAAAAABUSqeKl69//esZPXp0+vXrl7PPPjtnn312ttpqqxx55JGZO3du6YwAAAAAAACV0KnPePmHf/iHzJo1K5/61Kfajp199tm5/PLLM2PGjJx44onFAgIAAAAAAFRFp3a8/PrXv86HPvShdY4fd9xxeeyxx95wKAAAAAAAgCrqVPGy6667ZtGiResc/973vpddd931DYcCAAAAAACook691dinP/3pnH322bn33nszatSoJMmPf/zjfO1rX8uVV15ZNCAAAAAAAEBVdKp4OeOMMzJw4MBcdtll+eY3v5kk2WeffXLjjTfmwx/+cNGAAFuKwVPmb/B8Y89aZo1IhjYtSHNLQ4drls0c2xXRAAAAAIBCOlW8JMlHPvKRfOQjHymZBQAAAAAAoNI6XbwkyZIlS/Lggw8mSfbdd98MHz68SCgAAAAAAIAq6lTx8pvf/CYTJkzIj3/842y77bZJkhdffDGjRo3KDTfckLe97W0lMwIAAAAAAFRCj87c6bTTTsvatWvz4IMP5oUXXsgLL7yQBx98MK2trTnttNNKZwQAAAAAAKiETu14ueOOO3LnnXdmr732aju211575f/+3/+b973vfcXCAbBhg6fMX++5xp61zBqRDG1akOaWhvWuWzZzbFdEAwAAAIC61KkdL7vuumvWrl27zvGWlpbssssubzgUAAAAAABAFXWqePnCF76Qs846K0uWLGk7tmTJkpxzzjn5p3/6p2LhAAAAAAAAqqRTbzV28skn5+WXX87BBx+cXr3+OOLVV19Nr169csopp+SUU05pW/vCCy+USQoAAAAAALCZ61TxcsUVVxSOAQAAAAAAUH2dKl4mTpxYOgcAAAAAAEDldap4ec3KlSuzcuXKtLa2tjv+rne96w2FAgAAAAAAqKJOFS933313Jk6cmAcffDC1Wq3duYaGhrS0tBQJBwAAAAAAUCWdKl5OOeWUvPOd78xXv/rV7LTTTmloaCidC4BuMnjK/PWea+xZy6wRydCmBWluWf/f/ctmju2KaAAAAACw2etU8fLrX/863/rWtzJkyJDSeQDYAr3RMkeRAwAAAEBV9OjMnY488sjcd999pbMAAAAAAABUWqd2vHzlK1/JxIkT88ADD2To0KHp3bt3u/PHHXdckXAAAAAAAABV0qniZfHixfnxj3+c//7v/17nXENDQ1paWt5wMAAAAAAAgKrp1FuNnXXWWfn4xz+ep59+Oq2tre1uShcAAAAAAKBedap4ef755/OpT30qO+20U+k8AAAAAAAAldWp4uWv/uqvctttt5XOAgAAAAAAUGmd+oyXd77znZk6dWp+9KMfZdiwYendu3e782effXaRcAAAAAAAAFXSqeLlK1/5SrbeeuvccccdueOOO9qda2hoULwAAAAAAAB1qVPFy2OPPVY6BwAAAAAAQOVtdPEyefLkzJgxI/3798/kyZPXu66hoSGXXXZZkXAAAAAAAABVstHFyz333JO1a9e2/X59Ghoa3ngqAAAAAACACtro4uW2227r8PcA8GYbPGX+Bs839qxl1ohkaNOCNLd0/H8IWDZzbJfPBAAAAKD+9OjuAAAAAAAAAFuKjd7xAgBsmg3totmYHTSJXTQAAAAAVWPHCwAAAAAAQCGKFwAAAAAAgEIULwAAAAAAAIUoXgAAAAAAAApRvAAAAAAAABSieAEAAAAAAChE8QIAAAAAAFCI4gUAAAAAAKAQxQsAAAAAAEAhihcAAAAAAIBCFC8AAAAAAACFKF4AAAAAAAAKUbwAAAAAAAAUongBAAAAAAAoRPECAAAAAABQiOIFAAAAAACgEMULAAAAAABAIYoXAAAAAACAQhQvAAAAAAAAhSheAAAAAAAAClG8AAAAAAAAFKJ4AQAAAAAAKETxAgAAAAAAUIjiBQAAAAAAoJBe3R0AANh4g6fMX++5xp61zBqRDG1akOaWhg7XLJs59k2ZCQAAAFCv7HgBAAAAAAAoRPECAAAAAABQiOIFAAAAAACgEMULAAAAAABAIYoXAAAAAACAQhQvAAAAAAAAhSheAAAAAAAAClG8AAAAAAAAFKJ4AQAAAAAAKETxAgAAAAAAUIjiBQAAAAAAoBDFCwAAAAAAQCGKFwAAAAAAgEIULwAAAAAAAIUoXgAAAAAAAArp1d0BAIAty+Ap8zd4vrFnLbNGJEObFqS5paHDNctmju2KaAAAAABdzo4XAAAAAACAQhQvAAAAAAAAhSheAAAAAAAACtksiperrroqgwcPTt++fXPwwQfnpz/96QbX33TTTdl7773Tt2/fDBs2LLfcckvbubVr1+b//J//k2HDhqV///7ZZZddctJJJ2X58uVd/TAAAAAAAIA61+3Fy4033pjJkydn2rRpWbp0afbff/+MGTMmK1eu7HD9nXfemQkTJuTUU0/NPffck3HjxmXcuHF54IEHkiQvv/xyli5dmosuuihLly7Nf/zHf+Thhx/Occcd92Y+LAAAAAAAoA716u4Al19+eU4//fRMmjQpSTJnzpzMnz8/1157baZMmbLO+iuvvDLHHHNMzj///CTJjBkzsnDhwsyePTtz5szJNttsk4ULF7a7z+zZszNixIg88cQTefvb377OzObm5jQ3N7d9vWrVqiR/3D2zdu3aYo91S9DYs7bh8z1q7X7tyOuv6Zs9c2PmdcXMjl5LpWfWy7Xsipmen817Zndfy66Yublcy66Y2RXXckNeW1vyv9lmlptZhYz1PLMKGasyswoZ63lmFTJWZWYVMtbzzCpkrOeZVchYlZlVyFjPM6uQsSozq5CxnmzKNWuo1Wob/teRLrRmzZr069cvN998c8aNG9d2fOLEiXnxxRfzn//5n+vc5+1vf3smT56cc889t+3YtGnTMm/evNx3330dfp/vfe97Ofroo/Piiy9mwIAB65xvamrK9OnT1zk+d+7c9OvXb9MfGAAAAAAAsMV4+eWXc+KJJ+all17qsGf4U9264+W5555LS0tLdtppp3bHd9pppzz00EMd3ueZZ57pcP0zzzzT4fpXXnkl/+f//J9MmDBhvRdj6tSpmTx5ctvXq1atyq677pqjjz76z17AejO0acEGzzf2qGXGQa25aEmPNLc2dLjmgaYx3TpzY+Z1xczXz+uKmfVyLbtipudn857Z3deyK2ZuLteyK2Z2xbXckLVr12bhwoU56qij0rt3742+n5lvzswqZKznmVXIWJWZVchYzzOr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z+y+++656KKLsssuu2TcuHHd9TABAAAAAIA60O3Fy8c+9rE8++yzufjii/PMM8/kgAMOyK233pqddtopSfLEE0+kR4//3ZgzatSozJ07NxdeeGEuuOCC7Lnnnpk3b16GDh3atuYzn/lMVq9enU9+8pN58cUXc8ghh+TWW29N37593/THV28aGxszbdq0dd66bXOaWYWMVZlZhYz1PLMKGet5ZhUyVmVmFTLW88wqZKznmVXIWJWZVchYzzOrkLEqM6uQsZ5nViFjPc+sQsaqzKxCxnqeWYWMVZlZhYx0rKFWq9W6OwQAAAAAAMCWoFs/4wUAAAAAAGBLongBAAAAAAAoRPECAAAAAABQiOIFAAAAAACgEMULAAAAAABAIYoX6sqjjz6aBQsW5A9/+EOSpFardXMi6Fpe42zJWlpasmLFijz77LPdHYUtgL8vN28rVqzIM888090xtgiPPfZYXn311e6OAeuoyt/DVclZWlf/vdGZ6/rv//7v6z13/vnnv5E4da9eX+dVcfvtt7f9uxaw+VK80Glf+cpXMnHixFx33XVJkhtvvDH77LNP9thjj0ybNm2T55111ln54Q9/WDpmkuT555/P6NGj8853vjMf+MAH8vTTTydJTj311Hz605/epFldmTNJVq9eneuuuy6f/exnM3v27Dz//POdmvPLX/4yf//3f593v/vd2XnnnbPzzjvn3e9+d/7+7/8+v/zlLzs1c/bs2TnppJNyww03JEn+7d/+Lfvuu2/23nvvXHDBBZ36H+N/+MMf8qMf/ajDTK+88kr+9V//dZPmrVy5st3X9957byZOnJj3vve9+ehHP5rbb799k+Z1xfO9dOnSPPbYY21f/9u//Vve+973Ztddd80hhxzSdn1LaGxszIMPPtjp+z/44IO57rrr8tBDDyVJHnrooZxxxhk55ZRT8v3vf7/b5yXJfffdl0suuSRXX311nnvuuXbnVq1alVNOOWWTZz799NP5+te/nltuuSVr1qxpd2716tX53Oc+16ms6/Pkk092Kudzzz2XWbNm5SMf+UhGjhyZkSNH5iMf+Ui+8IUvdKqMWLhwYaZNm9b2XPzgBz/IsccemyOOOKLt7/pNVfrPeJLMnz8/hx56aPr3759ddtklAwcOzLbbbptPfOITeeKJJzqVc0N+9atf5Ygjjtik+5R+bjqyZs2a/OY3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ggULqFq1aoo0DQYD/fnnn/Thhx9SgQIFyMHBgVq0aEHr1q2j5OTkHPktVKgQxcbGEhGZ3XiJi4sjNzc3q/o0GAymGwWdO3emOnXq0L1794iI6OHDh9SwYUPq2LGjIs2KFSvSyJEjsz0+evRoqlChgiLNEiVK0K+//kpEqV8W7Ozs6McffzQdX7VqFYWEhCjSbNWqFTVr1oxu3bpFFy9epGbNmlFwcDBdvXqViNRdAEpfno0aNaKePXuaHf/www+pfv36ivS0rpcuLi505coVIkr9IjVv3jyz40uXLlV1Q7By5cpUr149s81gMFD16tWpXr169MYbbyjSrF27No0YMYKIiJYvX07e3t5mJ60ff/wxNWrUyGp6aZppGikpKTRlyhRyd3enjRs3EpG6OtSwYUPq0aMHJScn04MHD6hfv37k4+NDx44dU625Zs2al25fffWVYs2aNWtSnz59KCUlJdOxlJQU6tOnD9WqVctivcqVK9OMGTOIiOjPP/8kFxcXmjZtmun41KlTqW7duoo8imjjpUuXphUrVpheHz58mPz9/U3l0KFDB8UXEmfMmPHSbfjw4Yp8ap2bjNSpU4def/11+v333ykmJoZiY2PNNkupXLkyzZ492/R6y5Ytposez58/pwYNGlD37t0VeRNR17O7IJC2denSRZGmiP6ybt26ZhdOlixZQjVr1iQiosTERKpcuTINGjRIkaYs467WfXvhwoVp7969Jj8Gg4G2bNliOr5nzx4qWrSoIo/p0eoiXfrvGy1btqTmzZubLnAnJyfTO++8Q2+//bYib1rXI4PBQBEREdS9e3ezzWg0UqtWrUyvlSCijcvSfkT4zMj58+dp1KhRFBoaSvb29tSoUSNatGiRxX9vMBjo77//ptWrV1Pz5s3J3t6efH19aejQoXTmzBlVnkScq4joh4lSbxgsW7aMiMzP+UaOHEn9+/dXpFWsWDHTha+4uDgyGo3022+/mY5v2bKFAgMDFWmKaD9pdOrUierWrUuHDx8mNzc32rJlCy1ZsoRKlSpF69evV6Tl5ORkGhfKly9PP//8s9nx9evXK24/aaT9wCntxzxJSUnUunVrKlOmjOqL80uXLiVvb286cuQI9evXj4oUKULnz59XpSUDWp9LimiPIs6hRbQfEeflWvu0t7enJk2amN2oGz16NBmNRvrggw9U3bwTca4i8vzngw8+oDJlytDKlSvJxcWFvv/+e/r888/J39/fbGxXQq1atah58+aUmJho2peYmEgtWrSg2rVrW6wj4vuGiHqphISEBPL19RWmrzf4xgujChcXF9OXMaLUL2fpfxF+8eJF8vLyUqSZ/kv98+fP6aeffqLGjRuTnZ0dFSlShD799FO6ePGiKr/u7u6mX0Cn/xJ++PBhyp8/v1V9ptcrXry42cUFotSnNooVK6bIo7OzM507dy7b4+fOnSNnZ2dFmhlz7uDgYJbzK1eukKurqyLNggUL0okTJ0yvU1JSqG/fvhQQEEBxcXE5vvFSuHBh2r9/v9nxU6dOUYECBVTpaVUvfXx86MiRI0SUWgYZL5ReunSJXFxcFGlOmjSJgoODM/2q2N7enk6fPq1IKw1PT09TbMnJyWRvb2+6+UBEdPLkSSpUqJDV9NI0L126ZLZv6dKl5ObmRuvWrVNVh7y9vTOdrE2aNIm8vb3p0KFDqutl2hMJ2W1KNZ2dnV96kfDs2bOK2rmbm5vZL1YdHBzMfq199uxZ8vHxUeRRRBt3cXGh+Ph4s3329vb0999/ExHRwYMHVY0/RYoUyfbXjUWKFFHkU+vcZMTV1VXRBeLscHZ2NivLlJQUcnBwMD0BsWvXLsVfukXUdaPRSFWrVs10QSBtS/uVuKWI6C9dXFxM3y2IUvs4BwcH+vfff4ko9QJdkSJFFGvKMO5q3be7urqaTjaJUuNO/8vDy5cvK/7RTEa0uEiX/vtBsWLFTL8OT+PYsWNUuHBhRZpa16Ply5eTv78/ff/992b7c1LXRbRxWdqPCJ8vY//+/VS5cmXFN5bT6iUR0T///EMTJ06k0NBQMhqNVLt2bcW/3hZxriKiHyYyv1jl6+tr+o594cIFxed8r6pD8fHxiuuQiPaThp+fHx08eJCIiDw8PEx92po1axT/cCb9OVShQoXM+nSi1PJUeq6Snq1bt5KHhwetWbOGWrRoQWXLljW1I7V8++235OTkRP7+/qqvGWRFSkpKlheS1fLs2TO6du0aXb161WxTgtbnkiLao4hzaBHtR8R5udY+9+zZQyVKlKBRo0aZ3bTKSX5EnKuIPP8pVqwYbd++nYhS+7e0urN48WJq2rSpKk1nZ2ezPj2NkydPKvIp4vuGiHrJWA9e44VRhaurKx4/fmx67evrC3d3d7P35GTxPQcHB7Rv3x6bNm3C5cuX0bt3byxduhSlSpVSpffaa6+ZzVluMBiQkpKCL774Am+88YbVfRoMBgCp81UWLlzY7FjRokUVz4cZFBSEDRs2ZHt8w4YNCAwMVKTp5+dnmg/+4sWLSE5ONpsf/vTp0yhYsKAizf/++w/29vam1waDAbNnz0bz5s0RERGhep7rhw8f4sGDB3B2doaTk5PZMWdnZzx58kSVrlb5btq0KWbPng0AiIiIwMqVK82O//zzzwgJCVGk+fHHH+Onn35Cv379EBUVhaSkJEV/nx1pddNoNMLZ2Rn58uUzHfPw8MD9+/etqufk5IR79+6Z7evUqRMWLFiADh06YPXq1Yr00nj69KnZ648//hiffvop3nzzTezbt0+xXuHChbFq1SqkpKRkuR07dkyxpp+fHw4dOpTt8UOHDqFQoUIW6zk4OJitZ+Pk5GTWrzs5OSlewFFEGw8KCsKRI0dMr48dOwaj0WiKNX/+/Irrf2BgIL766ivEx8dnub2sP80KrXOTkbJly2Zaz0gNRYsWxfnz502v4+LikJKSAh8fHwCAv78/Hj16pEhTRF0PCQlBZGQktm/fnuU2f/58RXoi+suCBQuarTty48YNvHjxAp6engCA0NBQJCYmKtKUadzVsm8PDQ3F+vXrAQAbN26Es7MztmzZYjq+efNmBAcHq/KZRqdOnTB+/HjUrVsX69atw86dO1GyZElFGgaDwSzu9DEDgJeXl2luf0vRuh6988472L17N7777ju0bdtWsZ+sENHGZWk/InxmxaFDhzB48GC0bt0aFy5cQLt27Sz+27Q6mUbhwoXxySef4MKFC9i6dStKlCiBQYMGKfak9bmKqO+tfn5+phwEBATgwIEDAID4+HjFa5IEBARg//79AIDDhw/DYDCYje0HDx5E0aJFFWmKaD9pPH782FSnvb29TTmpUKGCYt3WrVtjwoQJSE5ORsuWLTFr1iyz8vv6669RuXJl1V7r16+PxYsXo23btoiPj8fOnTsVfS8aMmRIpu3SpUvw9fVF1apVMWvWLNN+tSxevBgVKlSAi4sLXFxcULFiRSxZskS13oULF/Daa6/BxcUFgYGBCA4ORnBwMIKCghSPaVqfS4pqj2lodQ4tov2IOC/X2mfdunVx9OhRXLhwAXXq1EFcXJyiv88KEecqIs9/EhMTTes5enp6mvr58PBw7Nq1S5VmyZIlcePGjUz7b968qSjnIr5viKiXaSQnJ2Pq1KmoUaMG/Pz8Mq3xwmiP/avfwjCZKV26NE6cOIEyZcoAQKYFHM+dO4egoCBNPisgIABjxozB6NGj8eeff6rS+OKLL9CgQQMcOXIEz58/x/Dhw3H69GkkJiZi7969VvfZoEED2Nvb48GDBzh//jzKly9vOnb16lXTRTBLGTduHDp16oQdO3agYcOGpgHuxo0b2Lp1KzZt2oRly5Yp0uzcuTO6deuGli1bYuvWrRg+fDiioqJw584dGAwGTJgwAf/73/8UaZYuXRpHjhwx1aM0vvnmGwBAixYtFOmlkXbxhIhw5MgRVKlSxXTs9OnTKFKkiCrd9OQk31OmTEHdunURERGBsLAwREdHY8eOHShTpgzOnz+PAwcOqLphUL16dRw9ehT9+/dHWFgYli5dmukEXAlBQUG4ePEiSpQoAQDYv38/AgICTMcTEhIynXznph4AVK5cGdu3b0e1atXM9r/zzjsgIrz77ruK9ACgfPny2LdvHypWrGi2PyoqCikpKejYsaNizWrVquHo0aNo2bJllscNBoPiCwJRUVHo06cPjh49igYNGmRq5/Pnz8fUqVMt1gsJCcG5c+dMJ0F///03PDw8TMfj4uLg7++vyKOINt6/f3+89957OHz4MJydnbFgwQJ07doVdnZ2AFIvhCi9gJqWn/bt22d5XGl+tM5NRqZMmYLhw4dj4sSJqFChAhwcHMyOp10EfBXdunXDe++9hxEjRsDJyQnTpk1DixYt4OjoCACIjY1VfDFARF0PCwvD0aNH0aVLF800te4vW7Vqhb59++LLL7+Ek5MTPv/8c0RERMDFxQUAcP78ecUX6GQZd7Xu24cNG4Z3330X06dPx7Vr1/Djjz/iww8/xMGDB2E0GrFq1SpMmzZNkcfsLr6lv0iXhqXaRISSJUvCYDDg0aNHOHHihNm4cenSJfj5+SnyKaIeBQUFYdeuXRg7diwqVaqE+fPn56iui2jjsrQfET7TuHDhApYuXYrly5cjPj4e9evXx5QpU9CmTZtMP257GS8r+3r16qFevXqqFiLW+lwF0L4fBlIv6K9duxZVqlRBjx49EBkZiZUrV+LIkSNo06aNIq2+ffuie/fuWLBgAY4ePYqpU6fi008/xblz52A0GjF79mwMHTpUkaaI9pNGqVKlcP78eQQFBaFSpUqYO3cugoKCMGfOHMXfrydOnIiGDRuidOnSqF27Nn755Rf88ccfKFmyJC5duoTExERs3rzZYr3syt7X1xdeXl7o06ePad+qVateqRcTE5Pl/pCQEDx48MB0XG19mjZtGkaOHIkBAwagbt26AIA9e/agb9++uH37NiIjIxVr9ujRA/b29li/fj0KFy6co7ou4lxSRHvMipycQ4toPyLKUoTPfPnyYfny5Vi4cCHCw8MxduzYHOVHxLmKyPOf4sWLIz4+HgEBAShdujR+/vln1KhRA+vWrYOXl5cqzUmTJmHQoEEYM2YMatWqBQA4cOAAxo0bhylTppiNlS87txLxfUPU9SIAGDt2LBYsWIChQ4fis88+w4gRI3DlyhX89ttvGDVqlCpN5hVY4zEbRn727NlDMTEx2R7/9ttv6euvv1akGRQURLdv386hs+y5d+8ejR8/ntq1a0dNmzalESNGmC0oayla+8y4sF7GRe+joqLonXfeUay7d+9e6tChAwUEBJCjoyM5OjpSQEAAdejQgfbt26dYLzk5mSZMmEBvv/02TZw4kVJSUmj58uVUrFgx8vHxoe7du9OjR48UaU6cOPGlj4b269ePDAaDIs0dO3aYbRmnDpk+fTp98cUXFuuJqpd3796ljz76iMqWLUvOzs7k6OhIgYGB1KlTpxwtup3G8uXLqVChQmQ0GlU/gjx79uyXzgn9ySefUK9evaymR5Q6Z+rgwYOzPb506VKqV6+eIs358+dTly5dsj0+efJkCgoKUqS5a9cu07ozWfHo0SPasWOHIk0iohUrVlDNmjXJ3t7e9Oi6vb091axZk3766SdFWqtWraKdO3dme3zSpEn02WefKdIU0caJiGbNmkV16tShatWq0aeffkr//fef6diFCxcUT8N1+vTpl7a758+fm019ZAla5iYj6acpSL8pnbogKSmJhg8fTkWKFCEfHx/q1KkT3bp1y3T84MGDL60TWSGirl+/fl1x+StBi/7y4cOH1L59e1O+69SpYzZ13+bNmzPNkf8qZBl3RfTte/bsoalTp5rWejl9+jR17dqV2rZtSz/88IMiLSLKdpq6jJuSOewzLkaacWrTcePGKV6MWEQ9Ss/u3bspODg4R3VdRBuXpf2IzI/BYKAaNWrQ9OnTczTlUvfu3enBgweq/z4rRJ2rpEeLfpgoNe9p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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "names, importances = pipe2.features.importances()\n", "\n", "plt.subplots(figsize=(20, 10))\n", "\n", "plt.bar(names, importances)\n", "\n", "plt.title(\"feature importances\")\n", "plt.grid(True)\n", "plt.xlabel(\"features\")\n", "plt.ylabel(\"importances\")\n", "plt.xticks(rotation='vertical')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we can see from these figures we need many features to get a good result. No single feature is very correlated with the target and the feature importance is not concentrated on a small number of features (as is often the case with other data sets).\n", "\n", "This implies that the many columns in the data set are actually needed. The reason we emphasize that is that we sometimes see data sets with many columns, but after analyzing them we find and only a handful of these columns are actually needed. This is not one of these times.\n", "\n", "The most important features look like this:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/markdown": [ "```sql\n", "DROP TABLE IF EXISTS \"FEATURE_1_7\";\n", "\n", "CREATE TABLE \"FEATURE_1_7\" AS\n", "SELECT SUM( \n", " CASE\n", " WHEN ( t1.\"trigl\" > 447.000000 ) AND ( t1.\"age\" > 57.000000 ) THEN COALESCE( t1.\"koureni\" - 3.392245777122775, 0.0 ) * 36.71734233772222 + COALESCE( t1.\"dobakour\" - 6.958281373993878, 0.0 ) * -36.03237447465777 + COALESCE( t1.\"byvkurak\" - 1.664097041151797, 0.0 ) * -4.140363438871325 + COALESCE( t1.\"pivomn\" - 1.800816233987076, 0.0 ) * 2.866334536889667 + COALESCE( t1.\"vinomn\" - 4.290329894569776, 0.0 ) * -3.474866798512964 + COALESCE( t1.\"lihmn\" - 6.945697766693119, 0.0 ) * 42.97484465396469 + COALESCE( t1.\"kava\" - 1.912708309715452, 0.0 ) * 37.67135620384678 + COALESCE( t1.\"caj\" - 4.734043759210974, 0.0 ) * 41.49696018116632 + COALESCE( t1.\"cukr\" - 4.523523410044213, 0.0 ) * 1.728682170938833 + COALESCE( t1.\"vyska\" - 174.5359936515134, 0.0 ) * 2.532893582104208 + COALESCE( t1.\"vaha\" - 79.88028568189547, 0.0 ) * -0.6526932998438458 + COALESCE( t1.\"syst1\" - 132.0999886634168, 0.0 ) * 2.189892170970478 + COALESCE( t1.\"diast1\" - 83.57759891168801, 0.0 ) * 0.3401612628322462 + COALESCE( t1.\"syst2\" - 129.4103843101689, 0.0 ) * -1.979165210528913 + COALESCE( t1.\"diast2\" - 83.1808185013037, 0.0 ) * 1.57192359403996 + COALESCE( t1.\"tric\" - 9.403355628613536, 0.0 ) * -6.18176175433044 + COALESCE( t1.\"subsc\" - 18.14816914182066, 0.0 ) * 12.22343448214527 + COALESCE( t1.\"chlst\" - 232.3951932887428, 0.0 ) * 0.2971207012537834 + COALESCE( t1.\"trigl\" - 134.7867588708763, 0.0 ) * -0.09941197254629983 + COALESCE( t1.\"age\" - 58.58485432490647, 0.0 ) * 10.85819048719916 + COALESCE( t1.\"participation\" - -1887.385670558893, 0.0 ) * 81.75340957666666 + COALESCE( t1.\"reference_date\" - 615908174.0392246, 0.0 ) * -2.926904989988034e-06 + COALESCE( t1.\"entry_date\" - 230998436.6398368, 0.0 ) * 1.154718952316122e-06 + COALESCE( t2.\"hmot\" - 81.23347313760735, 0.0 ) * 0.1333271764688622 + COALESCE( t2.\"hdlmg\" - 35.52386658677851, 0.0 ) * -0.2306312557846993 + COALESCE( t2.\"chlst\" - 5.894816257239805, 0.0 ) * -0.490138288302913 + COALESCE( t2.\"hdl\" - 0.916622728180551, 0.0 ) * 9.056133763122926 + COALESCE( t2.\"ldl\" - 2.466835430397438, 0.0 ) * -0.01190990485510771 + COALESCE( t2.\"control_date\" - 533547919.9520671, 0.0 ) * -1.626971839941278e-08 + 4.4320403142502030e+01\n", " WHEN ( t1.\"trigl\" > 447.000000 ) AND ( t1.\"age\" <= 57.000000 OR t1.\"age\" IS NULL ) THEN COALESCE( t1.\"koureni\" - 3.392245777122775, 0.0 ) * 68.9362363063014 + COALESCE( t1.\"dobakour\" - 6.958281373993878, 0.0 ) * -49.72699167016215 + COALESCE( t1.\"byvkurak\" - 1.664097041151797, 0.0 ) * -16.57345552532797 + COALESCE( t1.\"pivomn\" - 1.800816233987076, 0.0 ) * 93.14809820598344 + COALESCE( t1.\"vinomn\" - 4.290329894569776, 0.0 ) * 66.54704537730123 + COALESCE( t1.\"lihmn\" - 6.945697766693119, 0.0 ) * 6.98997936976407 + COALESCE( t1.\"kava\" - 1.912708309715452, 0.0 ) * -25.37270111467802 + COALESCE( t1.\"caj\" - 4.734043759210974, 0.0 ) * 44.97434463952945 + COALESCE( t1.\"cukr\" - 4.523523410044213, 0.0 ) * -11.97758628053244 + COALESCE( t1.\"vyska\" - 174.5359936515134, 0.0 ) * -14.41189734039584 + COALESCE( t1.\"vaha\" - 79.88028568189547, 0.0 ) * 9.201053407268812 + COALESCE( t1.\"syst1\" - 132.0999886634168, 0.0 ) * 6.60642275226787 + COALESCE( t1.\"diast1\" - 83.57759891168801, 0.0 ) * 0.2798793062603677 + COALESCE( t1.\"syst2\" - 129.4103843101689, 0.0 ) * -8.618828438293468 + COALESCE( t1.\"diast2\" - 83.1808185013037, 0.0 ) * 2.610294450622261 + COALESCE( t1.\"tric\" - 9.403355628613536, 0.0 ) * 0.05980697404869816 + COALESCE( t1.\"subsc\" - 18.14816914182066, 0.0 ) * -22.03705030242565 + COALESCE( t1.\"chlst\" - 232.3951932887428, 0.0 ) * 0.08847429025390953 + COALESCE( t1.\"trigl\" - 134.7867588708763, 0.0 ) * -0.01251193674433636 + COALESCE( t1.\"age\" - 58.58485432490647, 0.0 ) * 4.86187301570697 + COALESCE( t1.\"participation\" - -1887.385670558893, 0.0 ) * -137.3954135916799 + COALESCE( t1.\"reference_date\" - 615908174.0392246, 0.0 ) * 4.20106983933724e-06 + COALESCE( t1.\"entry_date\" - 230998436.6398368, 0.0 ) * -8.388379539806533e-06 + COALESCE( t2.\"hmot\" - 81.23347313760735, 0.0 ) * 0.1237910720450438 + COALESCE( t2.\"hdlmg\" - 35.52386658677851, 0.0 ) * 3.651474792793678 + COALESCE( t2.\"chlst\" - 5.894816257239805, 0.0 ) * -0.3361774904051968 + COALESCE( t2.\"hdl\" - 0.916622728180551, 0.0 ) * -141.5557739425682 + COALESCE( t2.\"ldl\" - 2.466835430397438, 0.0 ) * -0.7515251196140998 + COALESCE( t2.\"control_date\" - 533547919.9520671, 0.0 ) * 6.744845044264805e-09 + 8.4141958089744847e+01\n", " WHEN ( t1.\"trigl\" <= 447.000000 OR t1.\"trigl\" IS NULL ) AND ( t2.\"ldl\" > 6.589412 ) THEN COALESCE( t1.\"koureni\" - 3.392245777122775, 0.0 ) * 4.324545000639816 + COALESCE( t1.\"dobakour\" - 6.958281373993878, 0.0 ) * 6.394011893899877 + COALESCE( t1.\"byvkurak\" - 1.664097041151797, 0.0 ) * -0.00772340630819322 + COALESCE( t1.\"pivomn\" - 1.800816233987076, 0.0 ) * 13.07564436701492 + COALESCE( t1.\"vinomn\" - 4.290329894569776, 0.0 ) * 14.71174562700868 + COALESCE( t1.\"lihmn\" - 6.945697766693119, 0.0 ) * -13.02469603877145 + COALESCE( t1.\"kava\" - 1.912708309715452, 0.0 ) * -20.75690206999771 + COALESCE( t1.\"caj\" - 4.734043759210974, 0.0 ) * -42.59571735654135 + COALESCE( t1.\"cukr\" - 4.523523410044213, 0.0 ) * 4.547061088931812 + COALESCE( t1.\"vyska\" - 174.5359936515134, 0.0 ) * 1.552658882464771 + COALESCE( t1.\"vaha\" - 79.88028568189547, 0.0 ) * 1.317608177040875 + COALESCE( t1.\"syst1\" - 132.0999886634168, 0.0 ) * 1.785126658763984 + COALESCE( t1.\"diast1\" - 83.57759891168801, 0.0 ) * -2.546946347046458 + COALESCE( t1.\"syst2\" - 129.4103843101689, 0.0 ) * -0.470414693564651 + COALESCE( t1.\"diast2\" - 83.1808185013037, 0.0 ) * 1.623116203255628 + COALESCE( t1.\"tric\" - 9.403355628613536, 0.0 ) * -6.40858643038764 + COALESCE( t1.\"subsc\" - 18.14816914182066, 0.0 ) * 4.130064218077451 + COALESCE( t1.\"chlst\" - 232.3951932887428, 0.0 ) * -0.1989132193311207 + COALESCE( t1.\"trigl\" - 134.7867588708763, 0.0 ) * 0.2263022952597863 + COALESCE( t1.\"age\" - 58.58485432490647, 0.0 ) * 1.197285989581476 + COALESCE( t1.\"participation\" - -1887.385670558893, 0.0 ) * 19.06271270018097 + COALESCE( t1.\"reference_date\" - 615908174.0392246, 0.0 ) * -6.382150275518887e-07 + COALESCE( t1.\"entry_date\" - 230998436.6398368, 0.0 ) * 2.775023256741417e-07 + COALESCE( t2.\"hmot\" - 81.23347313760735, 0.0 ) * -1.286757301370443 + COALESCE( t2.\"hdlmg\" - 35.52386658677851, 0.0 ) * -16.40518752403113 + COALESCE( t2.\"chlst\" - 5.894816257239805, 0.0 ) * 2.904438249194144 + COALESCE( t2.\"hdl\" - 0.916622728180551, 0.0 ) * 641.5020896438801 + COALESCE( t2.\"ldl\" - 2.466835430397438, 0.0 ) * 0.1447675001171414 + COALESCE( t2.\"control_date\" - 533547919.9520671, 0.0 ) * -7.562988930726452e-09 + -9.0812299642137955e+00\n", " WHEN ( t1.\"trigl\" <= 447.000000 OR t1.\"trigl\" IS NULL ) AND ( t2.\"ldl\" <= 6.589412 OR t2.\"ldl\" IS NULL ) THEN COALESCE( t1.\"koureni\" - 3.392245777122775, 0.0 ) * 6.861948102582569e-05 + COALESCE( t1.\"dobakour\" - 6.958281373993878, 0.0 ) * 0.01745941706076835 + COALESCE( t1.\"byvkurak\" - 1.664097041151797, 0.0 ) * -0.006563506280726456 + COALESCE( t1.\"pivomn\" - 1.800816233987076, 0.0 ) * 0.002370132374868186 + COALESCE( t1.\"vinomn\" - 4.290329894569776, 0.0 ) * -0.01446308909963534 + COALESCE( t1.\"lihmn\" - 6.945697766693119, 0.0 ) * -0.01721180426547575 + COALESCE( t1.\"kava\" - 1.912708309715452, 0.0 ) * 0.0202459283752464 + COALESCE( t1.\"caj\" - 4.734043759210974, 0.0 ) * 0.009776762328480083 + COALESCE( t1.\"cukr\" - 4.523523410044213, 0.0 ) * 0.001186532318472517 + COALESCE( t1.\"vyska\" - 174.5359936515134, 0.0 ) * 0.001436166322912831 + COALESCE( t1.\"vaha\" - 79.88028568189547, 0.0 ) * -0.00414449771250642 + COALESCE( t1.\"syst1\" - 132.0999886634168, 0.0 ) * -0.001658868199165182 + COALESCE( t1.\"diast1\" - 83.57759891168801, 0.0 ) * 0.002557569464948623 + COALESCE( t1.\"syst2\" - 129.4103843101689, 0.0 ) * 0.002437793550397995 + COALESCE( t1.\"diast2\" - 83.1808185013037, 0.0 ) * -6.174045506422857e-05 + COALESCE( t1.\"tric\" - 9.403355628613536, 0.0 ) * -0.007499631525141079 + COALESCE( t1.\"subsc\" - 18.14816914182066, 0.0 ) * 0.002113558511703661 + COALESCE( t1.\"chlst\" - 232.3951932887428, 0.0 ) * 0.0001341535907906942 + COALESCE( t1.\"trigl\" - 134.7867588708763, 0.0 ) * -1.630868859521257e-05 + COALESCE( t1.\"age\" - 58.58485432490647, 0.0 ) * 0.002356506859856778 + COALESCE( t1.\"participation\" - -1887.385670558893, 0.0 ) * -0.02444683750177154 + COALESCE( t1.\"reference_date\" - 615908174.0392246, 0.0 ) * 2.117099967782411e-09 + COALESCE( t1.\"entry_date\" - 230998436.6398368, 0.0 ) * -2.945219991878199e-10 + COALESCE( t2.\"hmot\" - 81.23347313760735, 0.0 ) * 0.003574474413349186 + COALESCE( t2.\"hdlmg\" - 35.52386658677851, 0.0 ) * -0.003244489062109498 + COALESCE( t2.\"chlst\" - 5.894816257239805, 0.0 ) * -0.03710669507874064 + COALESCE( t2.\"hdl\" - 0.916622728180551, 0.0 ) * 0.088384351075893 + COALESCE( t2.\"ldl\" - 2.466835430397438, 0.0 ) * -0.00342765294998646 + COALESCE( t2.\"control_date\" - 533547919.9520671, 0.0 ) * -2.444170025832969e-09 + -2.5882564116851187e-01\n", " ELSE NULL\n", " END\n", ") AS \"feature_1_7\",\n", " t1.rowid AS rownum\n", "FROM \"POPULATION__STAGING_TABLE_1\" t1\n", "INNER JOIN \"CONTR__STAGING_TABLE_2\" t2\n", "ON t1.\"ico\" = t2.\"ico\"\n", "WHERE t2.\"control_date\" <= t1.\"reference_date\"\n", "GROUP BY t1.rowid;\n", "```" ], "text/plain": [ "'DROP TABLE IF EXISTS \"FEATURE_1_7\";\\n\\nCREATE TABLE \"FEATURE_1_7\" AS\\nSELECT SUM( \\n CASE\\n WHEN ( t1.\"trigl\" > 447.000000 ) AND ( t1.\"age\" > 57.000000 ) THEN COALESCE( t1.\"koureni\" - 3.392245777122775, 0.0 ) * 36.71734233772222 + COALESCE( t1.\"dobakour\" - 6.958281373993878, 0.0 ) * -36.03237447465777 + COALESCE( t1.\"byvkurak\" - 1.664097041151797, 0.0 ) * -4.140363438871325 + COALESCE( t1.\"pivomn\" - 1.800816233987076, 0.0 ) * 2.866334536889667 + COALESCE( t1.\"vinomn\" - 4.290329894569776, 0.0 ) * -3.474866798512964 + COALESCE( t1.\"lihmn\" - 6.945697766693119, 0.0 ) * 42.97484465396469 + COALESCE( t1.\"kava\" - 1.912708309715452, 0.0 ) * 37.67135620384678 + COALESCE( t1.\"caj\" - 4.734043759210974, 0.0 ) * 41.49696018116632 + COALESCE( t1.\"cukr\" - 4.523523410044213, 0.0 ) * 1.728682170938833 + COALESCE( t1.\"vyska\" - 174.5359936515134, 0.0 ) * 2.532893582104208 + COALESCE( t1.\"vaha\" - 79.88028568189547, 0.0 ) * -0.6526932998438458 + COALESCE( t1.\"syst1\" - 132.0999886634168, 0.0 ) * 2.189892170970478 + COALESCE( t1.\"diast1\" - 83.57759891168801, 0.0 ) * 0.3401612628322462 + COALESCE( t1.\"syst2\" - 129.4103843101689, 0.0 ) * -1.979165210528913 + COALESCE( t1.\"diast2\" - 83.1808185013037, 0.0 ) * 1.57192359403996 + COALESCE( t1.\"tric\" - 9.403355628613536, 0.0 ) * -6.18176175433044 + COALESCE( t1.\"subsc\" - 18.14816914182066, 0.0 ) * 12.22343448214527 + COALESCE( t1.\"chlst\" - 232.3951932887428, 0.0 ) * 0.2971207012537834 + COALESCE( t1.\"trigl\" - 134.7867588708763, 0.0 ) * -0.09941197254629983 + COALESCE( t1.\"age\" - 58.58485432490647, 0.0 ) * 10.85819048719916 + COALESCE( t1.\"participation\" - -1887.385670558893, 0.0 ) * 81.75340957666666 + COALESCE( t1.\"reference_date\" - 615908174.0392246, 0.0 ) * -2.926904989988034e-06 + COALESCE( t1.\"entry_date\" - 230998436.6398368, 0.0 ) * 1.154718952316122e-06 + COALESCE( t2.\"hmot\" - 81.23347313760735, 0.0 ) * 0.1333271764688622 + COALESCE( t2.\"hdlmg\" - 35.52386658677851, 0.0 ) * -0.2306312557846993 + COALESCE( t2.\"chlst\" - 5.894816257239805, 0.0 ) * -0.490138288302913 + COALESCE( t2.\"hdl\" - 0.916622728180551, 0.0 ) * 9.056133763122926 + COALESCE( t2.\"ldl\" - 2.466835430397438, 0.0 ) * -0.01190990485510771 + COALESCE( t2.\"control_date\" - 533547919.9520671, 0.0 ) * -1.626971839941278e-08 + 4.4320403142502030e+01\\n WHEN ( t1.\"trigl\" > 447.000000 ) AND ( t1.\"age\" <= 57.000000 OR t1.\"age\" IS NULL ) THEN COALESCE( t1.\"koureni\" - 3.392245777122775, 0.0 ) * 68.9362363063014 + COALESCE( t1.\"dobakour\" - 6.958281373993878, 0.0 ) * -49.72699167016215 + COALESCE( t1.\"byvkurak\" - 1.664097041151797, 0.0 ) * -16.57345552532797 + COALESCE( t1.\"pivomn\" - 1.800816233987076, 0.0 ) * 93.14809820598344 + COALESCE( t1.\"vinomn\" - 4.290329894569776, 0.0 ) * 66.54704537730123 + COALESCE( t1.\"lihmn\" - 6.945697766693119, 0.0 ) * 6.98997936976407 + COALESCE( t1.\"kava\" - 1.912708309715452, 0.0 ) * -25.37270111467802 + COALESCE( t1.\"caj\" - 4.734043759210974, 0.0 ) * 44.97434463952945 + COALESCE( t1.\"cukr\" - 4.523523410044213, 0.0 ) * -11.97758628053244 + COALESCE( t1.\"vyska\" - 174.5359936515134, 0.0 ) * -14.41189734039584 + COALESCE( t1.\"vaha\" - 79.88028568189547, 0.0 ) * 9.201053407268812 + COALESCE( t1.\"syst1\" - 132.0999886634168, 0.0 ) * 6.60642275226787 + COALESCE( t1.\"diast1\" - 83.57759891168801, 0.0 ) * 0.2798793062603677 + COALESCE( t1.\"syst2\" - 129.4103843101689, 0.0 ) * -8.618828438293468 + COALESCE( t1.\"diast2\" - 83.1808185013037, 0.0 ) * 2.610294450622261 + COALESCE( t1.\"tric\" - 9.403355628613536, 0.0 ) * 0.05980697404869816 + COALESCE( t1.\"subsc\" - 18.14816914182066, 0.0 ) * -22.03705030242565 + COALESCE( t1.\"chlst\" - 232.3951932887428, 0.0 ) * 0.08847429025390953 + COALESCE( t1.\"trigl\" - 134.7867588708763, 0.0 ) * -0.01251193674433636 + COALESCE( t1.\"age\" - 58.58485432490647, 0.0 ) * 4.86187301570697 + COALESCE( t1.\"participation\" - -1887.385670558893, 0.0 ) * -137.3954135916799 + COALESCE( t1.\"reference_date\" - 615908174.0392246, 0.0 ) * 4.20106983933724e-06 + COALESCE( t1.\"entry_date\" - 230998436.6398368, 0.0 ) * -8.388379539806533e-06 + COALESCE( t2.\"hmot\" - 81.23347313760735, 0.0 ) * 0.1237910720450438 + COALESCE( t2.\"hdlmg\" - 35.52386658677851, 0.0 ) * 3.651474792793678 + COALESCE( t2.\"chlst\" - 5.894816257239805, 0.0 ) * -0.3361774904051968 + COALESCE( t2.\"hdl\" - 0.916622728180551, 0.0 ) * -141.5557739425682 + COALESCE( t2.\"ldl\" - 2.466835430397438, 0.0 ) * -0.7515251196140998 + COALESCE( t2.\"control_date\" - 533547919.9520671, 0.0 ) * 6.744845044264805e-09 + 8.4141958089744847e+01\\n WHEN ( t1.\"trigl\" <= 447.000000 OR t1.\"trigl\" IS NULL ) AND ( t2.\"ldl\" > 6.589412 ) THEN COALESCE( t1.\"koureni\" - 3.392245777122775, 0.0 ) * 4.324545000639816 + COALESCE( t1.\"dobakour\" - 6.958281373993878, 0.0 ) * 6.394011893899877 + COALESCE( t1.\"byvkurak\" - 1.664097041151797, 0.0 ) * -0.00772340630819322 + COALESCE( t1.\"pivomn\" - 1.800816233987076, 0.0 ) * 13.07564436701492 + COALESCE( t1.\"vinomn\" - 4.290329894569776, 0.0 ) * 14.71174562700868 + COALESCE( t1.\"lihmn\" - 6.945697766693119, 0.0 ) * -13.02469603877145 + COALESCE( t1.\"kava\" - 1.912708309715452, 0.0 ) * -20.75690206999771 + COALESCE( t1.\"caj\" - 4.734043759210974, 0.0 ) * -42.59571735654135 + COALESCE( t1.\"cukr\" - 4.523523410044213, 0.0 ) * 4.547061088931812 + COALESCE( t1.\"vyska\" - 174.5359936515134, 0.0 ) * 1.552658882464771 + COALESCE( t1.\"vaha\" - 79.88028568189547, 0.0 ) * 1.317608177040875 + COALESCE( t1.\"syst1\" - 132.0999886634168, 0.0 ) * 1.785126658763984 + COALESCE( t1.\"diast1\" - 83.57759891168801, 0.0 ) * -2.546946347046458 + COALESCE( t1.\"syst2\" - 129.4103843101689, 0.0 ) * -0.470414693564651 + COALESCE( t1.\"diast2\" - 83.1808185013037, 0.0 ) * 1.623116203255628 + COALESCE( t1.\"tric\" - 9.403355628613536, 0.0 ) * -6.40858643038764 + COALESCE( t1.\"subsc\" - 18.14816914182066, 0.0 ) * 4.130064218077451 + COALESCE( t1.\"chlst\" - 232.3951932887428, 0.0 ) * -0.1989132193311207 + COALESCE( t1.\"trigl\" - 134.7867588708763, 0.0 ) * 0.2263022952597863 + COALESCE( t1.\"age\" - 58.58485432490647, 0.0 ) * 1.197285989581476 + COALESCE( t1.\"participation\" - -1887.385670558893, 0.0 ) * 19.06271270018097 + COALESCE( t1.\"reference_date\" - 615908174.0392246, 0.0 ) * -6.382150275518887e-07 + COALESCE( t1.\"entry_date\" - 230998436.6398368, 0.0 ) * 2.775023256741417e-07 + COALESCE( t2.\"hmot\" - 81.23347313760735, 0.0 ) * -1.286757301370443 + COALESCE( t2.\"hdlmg\" - 35.52386658677851, 0.0 ) * -16.40518752403113 + COALESCE( t2.\"chlst\" - 5.894816257239805, 0.0 ) * 2.904438249194144 + COALESCE( t2.\"hdl\" - 0.916622728180551, 0.0 ) * 641.5020896438801 + COALESCE( t2.\"ldl\" - 2.466835430397438, 0.0 ) * 0.1447675001171414 + COALESCE( t2.\"control_date\" - 533547919.9520671, 0.0 ) * -7.562988930726452e-09 + -9.0812299642137955e+00\\n WHEN ( t1.\"trigl\" <= 447.000000 OR t1.\"trigl\" IS NULL ) AND ( t2.\"ldl\" <= 6.589412 OR t2.\"ldl\" IS NULL ) THEN COALESCE( t1.\"koureni\" - 3.392245777122775, 0.0 ) * 6.861948102582569e-05 + COALESCE( t1.\"dobakour\" - 6.958281373993878, 0.0 ) * 0.01745941706076835 + COALESCE( t1.\"byvkurak\" - 1.664097041151797, 0.0 ) * -0.006563506280726456 + COALESCE( t1.\"pivomn\" - 1.800816233987076, 0.0 ) * 0.002370132374868186 + COALESCE( t1.\"vinomn\" - 4.290329894569776, 0.0 ) * -0.01446308909963534 + COALESCE( t1.\"lihmn\" - 6.945697766693119, 0.0 ) * -0.01721180426547575 + COALESCE( t1.\"kava\" - 1.912708309715452, 0.0 ) * 0.0202459283752464 + COALESCE( t1.\"caj\" - 4.734043759210974, 0.0 ) * 0.009776762328480083 + COALESCE( t1.\"cukr\" - 4.523523410044213, 0.0 ) * 0.001186532318472517 + COALESCE( t1.\"vyska\" - 174.5359936515134, 0.0 ) * 0.001436166322912831 + COALESCE( t1.\"vaha\" - 79.88028568189547, 0.0 ) * -0.00414449771250642 + COALESCE( t1.\"syst1\" - 132.0999886634168, 0.0 ) * -0.001658868199165182 + COALESCE( t1.\"diast1\" - 83.57759891168801, 0.0 ) * 0.002557569464948623 + COALESCE( t1.\"syst2\" - 129.4103843101689, 0.0 ) * 0.002437793550397995 + COALESCE( t1.\"diast2\" - 83.1808185013037, 0.0 ) * -6.174045506422857e-05 + COALESCE( t1.\"tric\" - 9.403355628613536, 0.0 ) * -0.007499631525141079 + COALESCE( t1.\"subsc\" - 18.14816914182066, 0.0 ) * 0.002113558511703661 + COALESCE( t1.\"chlst\" - 232.3951932887428, 0.0 ) * 0.0001341535907906942 + COALESCE( t1.\"trigl\" - 134.7867588708763, 0.0 ) * -1.630868859521257e-05 + COALESCE( t1.\"age\" - 58.58485432490647, 0.0 ) * 0.002356506859856778 + COALESCE( t1.\"participation\" - -1887.385670558893, 0.0 ) * -0.02444683750177154 + COALESCE( t1.\"reference_date\" - 615908174.0392246, 0.0 ) * 2.117099967782411e-09 + COALESCE( t1.\"entry_date\" - 230998436.6398368, 0.0 ) * -2.945219991878199e-10 + COALESCE( t2.\"hmot\" - 81.23347313760735, 0.0 ) * 0.003574474413349186 + COALESCE( t2.\"hdlmg\" - 35.52386658677851, 0.0 ) * -0.003244489062109498 + COALESCE( t2.\"chlst\" - 5.894816257239805, 0.0 ) * -0.03710669507874064 + COALESCE( t2.\"hdl\" - 0.916622728180551, 0.0 ) * 0.088384351075893 + COALESCE( t2.\"ldl\" - 2.466835430397438, 0.0 ) * -0.00342765294998646 + COALESCE( t2.\"control_date\" - 533547919.9520671, 0.0 ) * -2.444170025832969e-09 + -2.5882564116851187e-01\\n ELSE NULL\\n END\\n) AS \"feature_1_7\",\\n t1.rowid AS rownum\\nFROM \"POPULATION__STAGING_TABLE_1\" t1\\nINNER JOIN \"CONTR__STAGING_TABLE_2\" t2\\nON t1.\"ico\" = t2.\"ico\"\\nWHERE t2.\"control_date\" <= t1.\"reference_date\"\\nGROUP BY t1.rowid;'" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pipe1.features.to_sql()[pipe1.features.sort(by=\"importances\")[0].name]" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/markdown": [ "```sql\n", "DROP TABLE IF EXISTS \"FEATURE_1_37\";\n", "\n", "CREATE TABLE \"FEATURE_1_37\" AS\n", "SELECT AVG( \n", " CASE\n", " WHEN ( t1.\"reference_date\" - t2.\"control_date\" > 352382400.000000 ) AND ( t1.\"entry_date\" > 231194988.679245 ) THEN 1.67596291761292\n", " WHEN ( t1.\"reference_date\" - t2.\"control_date\" > 352382400.000000 ) AND ( t1.\"entry_date\" <= 231194988.679245 OR t1.\"entry_date\" IS NULL ) THEN -0.1053239490875762\n", " WHEN ( t1.\"reference_date\" - t2.\"control_date\" <= 352382400.000000 OR t1.\"reference_date\" IS NULL OR t2.\"control_date\" IS NULL ) AND ( t2.\"poccig\" IN ( '20' ) ) THEN 0.7547001150541075\n", " WHEN ( t1.\"reference_date\" - t2.\"control_date\" <= 352382400.000000 OR t1.\"reference_date\" IS NULL OR t2.\"control_date\" IS NULL ) AND ( t2.\"poccig\" NOT IN ( '20' ) OR t2.\"poccig\" IS NULL ) THEN -0.4272755600104092\n", " ELSE NULL\n", " END\n", ") AS \"feature_1_37\",\n", " t1.rowid AS rownum\n", "FROM \"POPULATION__STAGING_TABLE_1\" t1\n", "INNER JOIN \"CONTR__STAGING_TABLE_2\" t2\n", "ON t1.\"ico\" = t2.\"ico\"\n", "WHERE t2.\"control_date\" <= t1.\"reference_date\"\n", "GROUP BY t1.rowid;\n", "```" ], "text/plain": [ "'DROP TABLE IF EXISTS \"FEATURE_1_37\";\\n\\nCREATE TABLE \"FEATURE_1_37\" AS\\nSELECT AVG( \\n CASE\\n WHEN ( t1.\"reference_date\" - t2.\"control_date\" > 352382400.000000 ) AND ( t1.\"entry_date\" > 231194988.679245 ) THEN 1.67596291761292\\n WHEN ( t1.\"reference_date\" - t2.\"control_date\" > 352382400.000000 ) AND ( t1.\"entry_date\" <= 231194988.679245 OR t1.\"entry_date\" IS NULL ) THEN -0.1053239490875762\\n WHEN ( t1.\"reference_date\" - t2.\"control_date\" <= 352382400.000000 OR t1.\"reference_date\" IS NULL OR t2.\"control_date\" IS NULL ) AND ( t2.\"poccig\" IN ( \\'20\\' ) ) THEN 0.7547001150541075\\n WHEN ( t1.\"reference_date\" - t2.\"control_date\" <= 352382400.000000 OR t1.\"reference_date\" IS NULL OR t2.\"control_date\" IS NULL ) AND ( t2.\"poccig\" NOT IN ( \\'20\\' ) OR t2.\"poccig\" IS NULL ) THEN -0.4272755600104092\\n ELSE NULL\\n END\\n) AS \"feature_1_37\",\\n t1.rowid AS rownum\\nFROM \"POPULATION__STAGING_TABLE_1\" t1\\nINNER JOIN \"CONTR__STAGING_TABLE_2\" t2\\nON t1.\"ico\" = t2.\"ico\"\\nWHERE t2.\"control_date\" <= t1.\"reference_date\"\\nGROUP BY t1.rowid;'" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pipe2.features.to_sql()[pipe2.features.sort(by=\"importances\")[1].name]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 2.4 Productionization\n", "\n", "It is possible to productionize the pipeline by transpiling the features into production-ready SQL code. Please also refer to getML's `sqlite3` and `spark` modules." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "# Creates a folder named atherosclerosis_pipeline containing\n", "# the SQL code.\n", "pipe2.features.to_sql().save(\"atherosclerosis_pipeline\", remove=True)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "pipe2.features.to_sql(dialect=getml.pipeline.dialect.spark_sql).save(\"atherosclerosis_pipeline_spark\", remove=True)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "getml.engine.shutdown()" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "### 3. Conclusion\n", "\n", "The runtime benchmark between RelMT & Relboost on the same dataset demonstrates the problem of computational complexity in practice. We find that RelMT takes four times as long as Relboost to learn fewer features.\n", "\n", "The purpose of this notebook has been to illustrate the problem of the curse of dimensionality when engineering features from datasets with many columns.\n", "\n", "The most important thing to remember is that this problem exists regardless of whether you engineer your features manually or using algorithms. Whether you like it or not: If you write your features in the traditional way, your search space grows quadratically with the number of columns." ] } ], "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.11.4" }, "toc": { "base_numbering": 1 }, "vscode": { "interpreter": { "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" } } }, "nbformat": 4, "nbformat_minor": 4 }