{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Disease lethality prediction\n", "\n", "### Feature engineering and the curse of dimensionality\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": [ "#### __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.ALOKOHOL 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 chose 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 something out 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": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "getML engine is already running.\n", "\n", "Connected to project 'atherosclerosis'\n" ] } ], "source": [ "import os\n", "from pathlib import Path\n", "import numpy as np\n", "import pandas as pd\n", "from IPython.display import Image, Markdown\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline \n", "\n", "import getml\n", "\n", "getml.engine.launch(home_directory=Path.home(), 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": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Loading population...\n", " 100% |██████████| [elapsed: 00:00, remaining: 00:00] \n", "\n", "Loading contr...\n", " 100% |██████████| [elapsed: 00:00, remaining: 00:00] \n" ] } ], "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": 3, "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", "
nameREFERENCE_DATEENTRY_DATE ICOTARGETKONSKUP STAV VZDELANI ZODPOV TELAKTZA AKTPOZAM DOPRAVA DOPRATRV ALKOHOL BOLHR BOLDK DUSNOST RARISK OBEZRISK KOURRISK HTRISK CHOLRISK MOC AGEPARTICIPATION VYSKA VAHA SYST1 DIAST1 SYST2 DIAST2 TRIC SUBSC CHLST TRIGL KOURENI DOBAKOUR BYVKURAK PIVOMN VINOMN LIHMN KAVA CAJ CUKR ROKNAR ROKVSTUP MESVSTUP IM HT ICT DIABET HYPLIP DUMMY YEARPIVO7 PIVO10 PIVO12 VINO LIHOV IML HTD HTL ICTL DIABD DIABL HYPLD HYPLL IMTRV HTTRV ICTTRV DIABTRV HYPLTRV DENUMR MESUMR ROKUMR PRICUMR DEATH_DATE
role time_stamptime_stampjoin_keytargetcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalnumerical numericalnumericalnumericalnumericalnumericalnumericalnumericalnumericalnumericalnumericalnumericalnumericalnumericalnumericalnumericalnumericalnumericalnumericalnumericalnumericalunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_floatunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_string
unit time stamptime stamp
01977-01-011976-10-0110001\n", " 0 \n", " 413112362111001001\n", " 48 \n", " \n", " -1899 \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", " 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", " 29 \n", " \n", " 1976 \n", " \n", " 10 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 1 \n", " \n", " 1977 \n", " NULLNULLNULLNULL12.0NULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULL
11978-01-011976-10-0110001\n", " 0 \n", " 413112362111001001\n", " 49 \n", " \n", " -1898 \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", " 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", " 29 \n", " \n", " 1976 \n", " \n", " 10 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 1 \n", " \n", " 1978 \n", " NULLNULLNULLNULL12.0NULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULL
21979-01-011976-10-0110001\n", " 0 \n", " 413112362111001001\n", " 50 \n", " \n", " -1897 \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", " 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", " 29 \n", " \n", " 1976 \n", " \n", " 10 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 1 \n", " \n", " 1979 \n", " NULLNULLNULLNULL12.0NULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULL
31980-01-011976-10-0110001\n", " 0 \n", " 413112362111001001\n", " 51 \n", " \n", " -1896 \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", " 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", " 29 \n", " \n", " 1976 \n", " \n", " 10 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 1 \n", " \n", " 1980 \n", " NULLNULLNULLNULL12.0NULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULL
41981-01-011976-10-0110001\n", " 0 \n", " 413112362111001001\n", " 52 \n", " \n", " -1895 \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", " 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", " 29 \n", " \n", " 1976 \n", " \n", " 10 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 1 \n", " \n", " 1981 \n", " NULLNULLNULLNULL12.0NULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULL
.........\n", " ... \n", " ......................................................\n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \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", " 522312152322001001\n", " 67 \n", " \n", " -1882 \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", " 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", " 28 \n", " \n", " 1977 \n", " \n", " 3 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 1 \n", " \n", " 1995 \n", " NULL9.0NULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULL
284291996-01-011977-03-0130065\n", " 0 \n", " 522312152322001001\n", " 68 \n", " \n", " -1881 \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", " 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", " 28 \n", " \n", " 1977 \n", " \n", " 3 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 1 \n", " \n", " 1996 \n", " NULL9.0NULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULL
284301997-01-011977-03-0130065\n", " 0 \n", " 522312152322001001\n", " 69 \n", " \n", " -1880 \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", " 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", " 28 \n", " \n", " 1977 \n", " \n", " 3 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 1 \n", " \n", " 1997 \n", " NULL9.0NULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULL
284311998-01-011977-03-0130065\n", " 0 \n", " 522312152322001001\n", " 70 \n", " \n", " -1879 \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", " 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", " 28 \n", " \n", " 1977 \n", " \n", " 3 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 1 \n", " \n", " 1998 \n", " NULL9.0NULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULL
284321999-01-011977-03-0130065\n", " 0 \n", " 522312152322001001\n", " 71 \n", " \n", " -1878 \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", " 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", " 28 \n", " \n", " 1977 \n", " \n", " 3 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 2 \n", " \n", " 1 \n", " \n", " 1999 \n", " NULL9.0NULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULL
\n", "\n", "

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

\n" ], "text/plain": [ " name REFERENCE_DATE ENTRY_DATE ICO TARGET ... DENUMR MESUMR ROKUMR PRICUMR \n", " role time_stamp time_stamp join_key target ... unused_string unused_string unused_string unused_string\n", " unit time stamp time stamp ... \n", " 0 1977-01-01 1976-10-01 10001 0 ... NULL NULL NULL NULL \n", " 1 1978-01-01 1976-10-01 10001 0 ... NULL NULL NULL NULL \n", " 2 1979-01-01 1976-10-01 10001 0 ... NULL NULL NULL NULL \n", " 3 1980-01-01 1976-10-01 10001 0 ... NULL NULL NULL NULL \n", " 4 1981-01-01 1976-10-01 10001 0 ... NULL NULL NULL NULL \n", " ... ... ... ... ... ... ... ... \n", "28428 1995-01-01 1977-03-01 30065 0 ... NULL NULL NULL NULL \n", "28429 1996-01-01 1977-03-01 30065 0 ... NULL NULL NULL NULL \n", "28430 1997-01-01 1977-03-01 30065 0 ... NULL NULL NULL NULL \n", "28431 1998-01-01 1977-03-01 30065 0 ... NULL NULL NULL NULL \n", "28432 1999-01-01 1977-03-01 30065 0 ... NULL NULL 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: 16.09 MB\n", "type: getml.DataFrame" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "population" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Contr:__ peripheral table\n", "\n" ] }, { "cell_type": "code", "execution_count": 4, "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", "
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 MOCLEKCHOL 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 GLYKEMIE KYSMOC
role time_stampjoin_keycategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalcategoricalnumericalnumericalnumericalnumericalnumericalunused_floatunused_floatunused_floatunused_floatunused_floatunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_stringunused_string
unit time stamp
01977-09-0110001321220.012.011122.02.02.0\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", " 1 \n", " NULLNULLNULLNULLNULL0.00.0NULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULL130.090.04.012.02.02.0217.01.22108.0NULLNULL
11979-01-0110001111210.0212122.02.02.0\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", " 3 \n", " NULLNULLNULLNULLNULL0.00.0NULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULL140.090.04.011.02.02.0232.04.4389.0NULLNULL
21980-04-0110001211210.0221122.02.02.0\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", " 1 \n", " NULLNULLNULLNULLNULL0.00.0NULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULL130.090.05.022.02.02.0241.01.51134.0NULLNULL
31982-01-0110001211210.012.011122.02.02.0\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", " 1 \n", " NULLNULLNULLNULLNULL0.00.0NULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULL150.0100.09.018.02.02.0201.01.42126.0NULLNULL
41983-02-0110001221210.0212122.02.02.0\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", " 1 \n", " NULLNULLNULLNULLNULL0.00.0NULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULL165.0105.07.015.02.02.0235.00.9988.0NULLNULL
...................................................\n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " \n", " ... \n", " ........................................................................................................................
105671987-10-0120358221210.0241132.02.02.0\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", " 1 \n", " NULLNULLNULLNULLNULL0.00.0NULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULL120.080.0NULLNULL2.02.0189.01.74154.0NULLNULL
105681987-11-01203592212114.0211132.02.02.0\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", " 1 \n", " NULLNULLNULLNULLNULL0.00.0NULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULL100.070.0NULLNULL2.02.0174.00.7970.0NULLNULL
105691987-10-0120360225210.0221232.02.02.0\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", " 1 \n", " NULLNULLNULLNULLNULL0.00.0NULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULL120.080.0NULLNULL2.02.0213.01.18104.0NULLNULL
105701987-10-0120362121210.0264132.02.02.0\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", " 1 \n", " NULLNULLNULLNULLNULL0.00.0NULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULL140.085.0NULLNULL2.02.0189.00.8273.0NULLNULL
105711978-09-01300372112315.0241242.02.01.0\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", " 1 \n", " NULLNULLNULLNULLNULL0.00.0NULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULLNULL125.090.09.017.02.02.0217.0NULLNULLNULLNULL
\n", "\n", "

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

\n" ], "text/plain": [ " name CONTROL_DATE ICO ZMTELAKT AKTPOZAM ... CHLSTMG TRIGL TRIGLMG \n", " role time_stamp join_key categorical categorical ... unused_string unused_string unused_string\n", " unit time stamp ... \n", " 0 1977-09-01 10001 3 2 ... 217.0 1.22 108.0 \n", " 1 1979-01-01 10001 1 1 ... 232.0 4.4 389.0 \n", " 2 1980-04-01 10001 2 1 ... 241.0 1.51 134.0 \n", " 3 1982-01-01 10001 2 1 ... 201.0 1.42 126.0 \n", " 4 1983-02-01 10001 2 2 ... 235.0 0.99 88.0 \n", " ... ... ... ... ... ... ... \n", "10567 1987-10-01 20358 2 2 ... 189.0 1.74 154.0 \n", "10568 1987-11-01 20359 2 2 ... 174.0 0.79 70.0 \n", "10569 1987-10-01 20360 2 2 ... 213.0 1.18 104.0 \n", "10570 1987-10-01 20362 1 2 ... 189.0 0.82 73.0 \n", "10571 1978-09-01 30037 2 1 ... 217.0 NULL NULL \n", "\n", " name GLYKEMIE KYSMOC \n", " role unused_string unused_string\n", " unit \n", " 0 NULL NULL \n", " 1 NULL NULL \n", " 2 NULL NULL \n", " 3 NULL NULL \n", " 4 NULL NULL \n", " ... ... \n", "10567 NULL NULL \n", "10568 NULL NULL \n", "10569 NULL NULL \n", "10570 NULL NULL \n", "10571 NULL NULL \n", "\n", "\n", "10572 rows x 67 columns\n", "memory usage: 5.82 MB\n", "type: getml.DataFrame" ] }, "execution_count": 4, "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": 5, "metadata": {}, "outputs": [], "source": [ "split = getml.data.split.random(train=0.7, test=0.3)" ] }, { "cell_type": "code", "execution_count": 6, "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": 6, "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": 7, "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": 8, "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": 8, "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": 9, "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": 9, "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": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Checking data model...\n", "Staging... 100% |██████████| [elapsed: 00:00, remaining: 00:00] \n", "Checking... 100% |██████████| [elapsed: 00:00, remaining: 00:00] \n", "\n", "The pipeline check generated 1 issues labeled INFO and 0 issues labeled WARNING.\n" ] }, { "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": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pipe1.check(star_schema.train)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Checking data model...\n", "Staging... 100% |██████████| [elapsed: 00:00, remaining: 00:00] \n", "\n", "The pipeline check generated 1 issues labeled INFO and 0 issues labeled WARNING.\n", "To see the issues in full, run .check() on the pipeline.\n", "\n", "Staging... 100% |██████████| [elapsed: 00:00, remaining: 00:00] \n", "RelMT: Training features... 100% |██████████| [elapsed: 04:39, remaining: 00:00] \n", "RelMT: Building features... 100% |██████████| [elapsed: 00:01, remaining: 00:00] \n", "XGBoost: Training as feature selector... 100% |██████████| [elapsed: 00:03, remaining: 00:00] \n", "XGBoost: Training as predictor... 100% |██████████| [elapsed: 00:04, remaining: 00:00] \n", "\n", "Trained pipeline.\n", "Time taken: 0h:4m:47.297086\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-9DTKIA'])
" ], "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-9DTKIA'])" ] }, "execution_count": 11, "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": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Checking data model...\n", "Staging... 100% |██████████| [elapsed: 00:00, remaining: 00:00] \n", "Checking... 100% |██████████| [elapsed: 00:00, remaining: 00:00] \n", "\n", "The pipeline check generated 1 issues labeled INFO and 0 issues labeled WARNING.\n", "To see the issues in full, run .check() on the pipeline.\n", "\n", "Staging... 100% |██████████| [elapsed: 00:00, remaining: 00:00] \n", "Relboost: Training features... 100% |██████████| [elapsed: 00:19, remaining: 00:00] \n", "Relboost: Building features... 100% |██████████| [elapsed: 00:02, remaining: 00:00] \n", "XGBoost: Training as feature selector... 100% |██████████| [elapsed: 00:02, remaining: 00:00] \n", "XGBoost: Training as predictor... 100% |██████████| [elapsed: 00:03, remaining: 00:00] \n", "\n", "Trained pipeline.\n", "Time taken: 0h:0m:25.559479\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-9DTKIA'])
" ], "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-9DTKIA'])" ] }, "execution_count": 12, "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": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Staging... 100% |██████████| [elapsed: 00:00, remaining: 00:00] \n", "Preprocessing... 100% |██████████| [elapsed: 00:00, remaining: 00:00] \n", "RelMT: Building features... 100% |██████████| [elapsed: 00:01, remaining: 00:00] \n", "\n" ] }, { "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-02-21 14:59:13trainTARGET0.98870.87680.05199
12024-02-21 14:59:39testTARGET0.98670.70680.06838
" ], "text/plain": [ " date time set used target accuracy auc cross entropy\n", "0 2024-02-21 14:59:13 train TARGET 0.9887 0.8768 0.05199\n", "1 2024-02-21 14:59:39 test TARGET 0.9867 0.7068 0.06838" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pipe1.score(star_schema.test)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Staging... 100% |██████████| [elapsed: 00:00, remaining: 00:00] \n", "Preprocessing... 100% |██████████| [elapsed: 00:00, remaining: 00:00] \n", "Relboost: Building features... 100% |██████████| [elapsed: 00:01, remaining: 00:00] \n", "\n" ] }, { "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-02-21 14:59:38trainTARGET0.98780.88810.05407
12024-02-21 14:59:40testTARGET0.98670.71290.06743
" ], "text/plain": [ " date time set used target accuracy auc cross entropy\n", "0 2024-02-21 14:59:38 train TARGET 0.9878 0.8881 0.05407\n", "1 2024-02-21 14:59:40 test TARGET 0.9867 0.7129 0.06743" ] }, "execution_count": 14, "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": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABl4AAAOkCAYAAADHhknPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8WgzjOAAAACXBIWXMAAA9hAAAPYQGoP6dpAACeyUlEQVR4nOzde5yWdZ0//tfMMAyConkABNFR1zyhUiouaGKmorIVtuGpVUKzg5EaHhYPyKiVSGmapmStdthYTds1C4SI1N3ULPOUpdaaqGXg6asYyDjN3L8/+jHbCAwwfGCc4fl8PHzQfV2f6zXv+2JmGHj1ue+qSqVSCQAAAAAAAGuturMHAAAAAAAA6C4ULwAAAAAAAIUoXgAAAAAAAApRvAAAAAAAABSieAEAAAAAAChE8QIAAAAAAFCI4gUAAAAAAKAQxQsAAAAAAEAhihcAAAAAAIBCFC8AANDN/fKXv8yIESPSp0+fVFVV5eGHH+7skViJhoaGVFVVFc286667UlVVlbvuuqtoLgAAsGI9OnsAAABg3WlqasrYsWPTq1evfPnLX07v3r2z3XbbFf84zz//fK6//vqMGTMmQ4cOLZ7Pql177bXp3bt3PvrRj3b2KAAAsEFTvAAAQDf21FNP5ZlnnsnXv/71fOxjH1tnH+f555/PRRddlPr6esVLJ7n22muz5ZZbLle8HHjggXnjjTfSs2fPzhkMAAA2MF5qDAAAurEXXnghSbLZZpt17iAdtHTp0rS0tHT2GO1qaWnJ0qVLV3hu8eLF63ma5VVXV6dXr16prvbXPwAAWB/85A0AAN3URz/60YwcOTJJMnbs2FRVVeWggw5qPf/EE0/kwx/+cDbffPP06tUr++yzT26//fY2Ga+88krOOuus7LHHHtl4443Tt2/fHHHEEXnkkUda19x1113Zd999kyTjx49PVVVVqqqq8s1vfjNJUl9fv8KXvzrooIPazLPsvUhuuummXHDBBRk0aFB69+6dRYsWJUnuv//+HH744dl0003Tu3fvjBw5Mvfcc89q3YulS5emoaEh73znO9OrV69svfXW+dCHPpSnnnqqdc3ixYtz5plnZvDgwamrq8vOO++cL33pS6lUKm2yqqqqMmHChHz3u9/N7rvvnrq6usyePTvf/OY3U1VVlbvvvjunnnpq+vXrl2222ab1ujvuuCPvec970qdPn2yyySYZPXp0fvOb36xy9htvvDEHH3xw+vXrl7q6uuy222657rrr2qypr6/Pb37zm9x9992t93/ZvV3Ze7zccsst2XvvvbPRRhtlyy23zL/8y7/kT3/6U5s1H/3oR7PxxhvnT3/6U8aMGZONN944W221Vc4666w0Nze3WXvTTTdl7733ziabbJK+fftmjz32yFVXXbXK5wcAAN2NlxoDAIBu6hOf+EQGDRqUL3zhCznttNOy7777pn///kmS3/zmN9l///0zaNCgTJo0KX369Mn3vve9jBkzJt///vdz1FFHJUn+8Ic/5LbbbsvYsWOz/fbbZ+HChfna176WkSNH5re//W0GDhyYXXfdNRdffHEuvPDCfPzjH8973vOeJMmIESM6NPcll1ySnj175qyzzkpjY2N69uyZn/70pzniiCOy9957Z8qUKamurm4tJP7nf/4nw4YNW2lec3Nz/umf/inz5s3Lsccem9NPPz2vv/565s6dm8ceeyw77rhjKpVKPvCBD+TOO+/MySefnKFDh2bOnDk5++yz86c//Slf/vKX22T+9Kc/zfe+971MmDAhW265Zerr6/Pwww8nSU499dRstdVWufDCC1t3vHznO9/JuHHjMmrUqFx22WVZsmRJrrvuuhxwwAF56KGHUl9fv9L5r7vuuuy+++75wAc+kB49euSHP/xhTj311LS0tOTTn/50kuTKK6/MZz7zmWy88cY5//zzk6T193pFvvnNb2b8+PHZd999c+mll2bhwoW56qqrcs899+Shhx5qs0Oqubk5o0aNyn777ZcvfelL+clPfpLLL788O+64Yz71qU8lSebOnZvjjjsu73vf+3LZZZclSR5//PHcc889Of3001c6BwAAdEsVAACg27rzzjsrSSq33HJLm+Pve9/7KnvssUdl6dKlrcdaWloqI0aMqOy0006tx5YuXVppbm5uc+3TTz9dqaurq1x88cWtx375y19WklRuvPHG5WbYbrvtKuPGjVvu+MiRIysjR45cbtYddtihsmTJkjZz7bTTTpVRo0ZVWlpaWo8vWbKksv3221cOPfTQdu/BDTfcUElSueKKK5Y7tyzvtttuqySpfO5zn2tz/sMf/nClqqqq8r//+7+tx5JUqqurK7/5zW/arL3xxhsrSSoHHHBA5a9//Wvr8ddff72y2WabVU455ZQ26xcsWFDZdNNN2xyfMmVK5a1/Tfv7e7HMqFGjKjvssEObY7vvvnub+7nMsvt65513ViqVSuXNN9+s9OvXrzJkyJDKG2+80bruRz/6USVJ5cILL2w9Nm7cuEqSNr/XlUql8q53vauy9957tz4+/fTTK3379m3zvAEAYEPlpcYAAGAD88orr+SnP/1pjj766Lz++ut56aWX8tJLL+Xll1/OqFGj8vvf/771Jafq6upa3xukubk5L7/8cjbeeOPsvPPOefDBB9fJfOPGjctGG23U+vjhhx/O73//+xx//PF5+eWXW+ddvHhx3ve+9+W///u/230fmO9///vZcsst85nPfGa5c1VVVUmSWbNmpaamJqeddlqb82eeeWYqlUruuOOONsdHjhyZ3XbbbYUf75RTTklNTU3r47lz5+bVV1/Ncccd1zr7Sy+9lJqamuy333658847270ff38vXnvttbz00ksZOXJk/vCHP+S1115r99oVeeCBB/LCCy/k1FNPTa9evVqPjx49Orvssktmzpy53DWf/OQn2zx+z3vekz/84Q+tjzfbbLMsXrw4c+fOXeN5AACgu/FSYwAAsIH53//931QqlUyePDmTJ09e4ZoXXnghgwYNSktLS6666qpce+21efrpp9u8r8cWW2yxTubbfvvt2zz+/e9/n+RvhczKvPbaa3nHO96xwnNPPfVUdt555/TosfK//jzzzDMZOHBgNtlkkzbHd91119bz7c24OvMffPDBK1zft2/flWYlyT333JMpU6bkvvvuy5IlS9qce+2117Lpppu2e/1bLXsuO++883Lndtlll/zsZz9rc6xXr17Zaqut2hx7xzvekf/3//5f6+NTTz013/ve93LEEUdk0KBBOeyww3L00Ufn8MMPX6PZAACgO1C8AADABmbZ7pCzzjoro0aNWuGaf/iHf0iSfOELX8jkyZNz0kkn5ZJLLsnmm2+e6urqnHHGGe3uMvl7y3aVvFVzc3ObnSHL/P0Oj7+f94tf/GKGDh26wqyNN954tWYp5a0ztndu2fzf+c53MmDAgOXWt1cIPfXUU3nf+96XXXbZJVdccUUGDx6cnj17ZtasWfnyl7+82r8Ha2NFv0dv1a9fvzz88MOZM2dO7rjjjtxxxx258cYbc+KJJ+Zb3/rWOp8RAADeThQvAACwgdlhhx2SJLW1tTnkkEPaXXvrrbfmve99b/7t3/6tzfFXX301W265ZevjlZUryd92R7z66qvLHX/mmWdaZ2nPjjvumORvO0NWNe/Krr///vvT1NSU2traFa7Zbrvt8pOf/CSvv/56m10vTzzxROv5jlo2f79+/dZ4/h/+8IdpbGzM7bffnm233bb1+Ipenqy934O/t+y5PPnkk8vtwnnyySc7/Fx79uyZ97///Xn/+9+flpaWnHrqqfna176WyZMntxZ5AACwIfAeLwAAsIHp169fDjrooHzta1/Ln//85+XOv/jii63/u6amJpVKpc35W265pfU9YJbp06dPkqywYNlxxx3z85//PG+++WbrsR/96Ed57rnnVmvevffeOzvuuGO+9KUv5S9/+Uu7867IP//zP+ell17KNddcs9y5Zc/tyCOPTHNz83JrvvzlL6eqqipHHHHEas26IqNGjUrfvn3zhS98IU1NTWs0/7LdJn//e/Daa6/lxhtvXG5tnz59Vnj/32qfffZJv379Mn369DQ2NrYev+OOO/L4449n9OjRq8x4q5dffrnN4+rq6uy5555J0uZjAADAhsCOFwAA2AB99atfzQEHHJA99tgjp5xySnbYYYcsXLgw9913X/74xz/mkUceSZL80z/9Uy6++OKMHz8+I0aMyK9//et897vfXW6nyo477pjNNtss06dPzyabbJI+ffpkv/32y/bbb5+PfexjufXWW3P44Yfn6KOPzlNPPZV///d/b90JsirV1dX5xje+kSOOOCK77757xo8fn0GDBuVPf/pT7rzzzvTt2zc//OEPV3r9iSeemG9/+9uZOHFifvGLX+Q973lPFi9enJ/85Cc59dRT88EPfjDvf//78973vjfnn39+5s+fn7322is//vGP84Mf/CBnnHHGas+6In379s11112XE044Ie9+97tz7LHHZquttsqzzz6bmTNnZv/9919hKZQkhx12WOtOkk984hP5y1/+kq9//evp16/fcqXZ3nvvneuuuy6f+9zn8g//8A/p16/fCt9Xpra2NpdddlnGjx+fkSNH5rjjjsvChQtz1VVXpb6+Pp/97GfX+Dl+7GMfyyuvvJKDDz4422yzTZ555plcffXVGTp0aOv75AAAwIZC8QIAABug3XbbLQ888EAuuuiifPOb38zLL7+cfv365V3velcuvPDC1nXnnXdeFi9enBkzZuTmm2/Ou9/97sycOTOTJk1qk1dbW5tvfetbOffcc/PJT34yf/3rX3PjjTdm++23z6hRo3L55ZfniiuuyBlnnJF99tknP/rRj3LmmWeu9rwHHXRQ7rvvvlxyySW55ppr8pe//CUDBgzIfvvtl0984hPtXltTU5NZs2bl85//fGbMmJHvf//72WKLLVqLp+Rv5c7tt9+eCy+8MDfffHNuvPHG1NfX54tf/OIazbkyxx9/fAYOHJipU6fmi1/8YhobGzNo0KC85z3vyfjx41d63c4775xbb701F1xwQc4666wMGDAgn/rUp7LVVlvlpJNOarP2wgsvzDPPPJNp06bl9ddfz8iRI1dYvCTJRz/60fTu3TtTp07Nv/7rv6ZPnz456qijctlll2WzzTZb4+f3L//yL7n++utz7bXX5tVXX82AAQNyzDHHpKGhIdXVXmgBAIANS1Xlra8bAAAAAAAAQIf4vx4BAAAAAAAUongBAAAAAAAoRPECAAAAAABQiOIFAAAAAACgEMULAAAAAABAIYoXAAAAAACAQnp09gBvRy0tLXn++eezySabpKqqqrPHAQAAAAAAOlGlUsnrr7+egQMHprq6/T0tipcVeP755zN48ODOHgMAAAAAAHgbee6557LNNtu0u0bxsgKbbLJJkr/dwL59+3byNF1PU1NTfvzjH+ewww5LbW2tfPny5cvfAPK78uzy5cuXL1++fPnyu1Z+V55dvnz58rtzfne3aNGiDB48uLU/aI/iZQWWvbxY3759FS8d0NTUlN69e6dv377r7BuEfPny5ct/e+V35dnly5cvX758+fLld638rjy7fPny5Xfn/A3F6rw9SfsvRAYAAAAAAMBqU7wAAAAAAAAUongBAAAAAAAoRPECAAAAAABQiOIFAAAAAACgEMULAAAAAABAIYoXAAAAAACAQhQvAAAAAAAAhSheAAAAAAAAClG8AAAAAAAAFKJ4AQAAAAAAKETxAgAAAAAAUIjiBQAAAAAAoBDFCwAAAAAAQCGKFwAAAAAAgEIULwAAAAAAAIUoXgAAAAAAAApRvAAAAAAAABSieAEAAAAAAChE8QIAAAAAAFCI4gUAAAAAAKAQxQsAAAAAAEAhihcAAAAAAIBCFC8AAAAAAACFKF4AAAAAAAAKUbwAAAAAAAAUongBAAAAAAAoRPECAAAAAABQiOIFAAAAAACgEMULAAAAAABAIYoXAAAAAACAQhQvAAAAAAAAhfTo7AHoWuonzVzlmrqaSqYNS4Y0zEljc1W7a+dPHV1qNAAAAAAA6HR2vAAAAAAAABSieAEAAAAAAChE8QIAAAAAAFCI4gUAAAAAAKAQxQsAAAAAAEAhihcAAAAAAIBCFC8AAAAAAACFKF4AAAAAAAAKUbwAAAAAAAAUongBAAAAAAAoRPECAAAAAABQiOIFAAAAAACgEMULAAAAAABAIYoXAAAAAACAQhQvAAAAAAAAhSheAAAAAAAAClG8AAAAAAAAFKJ4AQAAAAAAKETxAgAAAAAAUIjiBQAAAAAAoBDFCwAAAAAAQCGKFwAAAAAAgEIULwAAAAAAAIUoXgAAAAAAAApRvAAAAAAAABSieAEAAAAAAChE8QIAAAAAAFCI4gUAAAAAAKAQxQsAAAAAAEAhihcAAAAAAIBCFC8AAAAAAACFKF4AAAAAAAAKUbwAAAAAAAAUongBAAAAAAAoRPECAAAAAABQiOIFAAAAAACgEMULAAAAAABAIYoXAAAAAACAQhQvAAAAAAAAhSheAAAAAAAAClG8AAAAAAAAFKJ4AQAAAAAAKETxAgAAAAAAUIjiBQAAAAAAoBDFCwAAAAAAQCGdXrx89atfTX19fXr16pX99tsvv/jFL9pdf8stt2SXXXZJr169sscee2TWrFltzv/lL3/JhAkTss0222SjjTbKbrvtlunTp6/LpwAAAAAAAJCkk4uXm2++ORMnTsyUKVPy4IMPZq+99sqoUaPywgsvrHD9vffem+OOOy4nn3xyHnrooYwZMyZjxozJY4891rpm4sSJmT17dv793/89jz/+eM4444xMmDAht99++/p6WgAAAAAAwAaqU4uXK664IqecckrGjx/fujOld+/eueGGG1a4/qqrrsrhhx+es88+O7vuumsuueSSvPvd784111zTuubee+/NuHHjctBBB6W+vj4f//jHs9dee61yJw0AAAAAAMDa6tFZH/jNN9/Mr371q5x77rmtx6qrq3PIIYfkvvvuW+E19913XyZOnNjm2KhRo3Lbbbe1Ph4xYkRuv/32nHTSSRk4cGDuuuuu/O53v8uXv/zllc7S2NiYxsbG1seLFi1KkjQ1NaWpqakjT6/bqquprHpNdaXNr+3pyP1dds26+r2RL1++fPlvr2z58uXLly9fvnz58tdXtnz58uXLZ2XW5L5VVSqVVf/r+Drw/PPPZ9CgQbn33nszfPjw1uPnnHNO7r777tx///3LXdOzZ89861vfynHHHdd67Nprr81FF12UhQsXJvlbifLxj3883/72t9OjR49UV1fn61//ek488cSVztLQ0JCLLrpoueMzZsxI79691+ZpAgAAAAAAXdySJUty/PHH57XXXkvfvn3bXdtpO17Wlauvvjo///nPc/vtt2e77bbLf//3f+fTn/50Bg4cmEMOOWSF15x77rltdtIsWrQogwcPzmGHHbbKG7ihGdIwZ5Vr6qoruWSflkx+oDqNLVXtrn2sYdQaz9DU1JS5c+fm0EMPTW1t7RpfL1++fPnyy+d35dnly5cvX758+fLld638rjy7fPny5Xfn/O5u2StlrY5OK1623HLL1NTUtO5UWWbhwoUZMGDACq8ZMGBAu+vfeOONnHfeefmv//qvjB49Okmy55575uGHH86XvvSllRYvdXV1qaurW+54bW2tT8C3aGxuv0hps7alapXr1+b+ruvfH/ny5cuX//bKli9fvnz58uXLly9/fWXLly9fvnzeak3uWfU6nKNdPXv2zN5775158+a1Hmtpacm8efPavPTY3xs+fHib9Ukyd+7c1vVNTX97T5bq6rZPq6amJi0tLYWfAQAAAAAAQFud+lJjEydOzLhx47LPPvtk2LBhufLKK7N48eKMHz8+SXLiiSdm0KBBufTSS5Mkp59+ekaOHJnLL788o0ePzk033ZQHHngg119/fZKkb9++GTlyZM4+++xstNFG2W677XL33Xfn29/+dq644opOe54AAAAAAMCGoVOLl2OOOSYvvvhiLrzwwixYsCBDhw7N7Nmz079//yTJs88+22b3yogRIzJjxoxccMEFOe+887LTTjvltttuy5AhQ1rX3HTTTTn33HPzkY98JK+88kq22267fP7zn88nP/nJ9f78AAAAAACADUunFi9JMmHChEyYMGGF5+66667ljo0dOzZjx45dad6AAQNy4403lhoPAAAAAABgtXXae7wAAAAAAAB0N4oXAAAAAACAQhQvAAAAAAAAhSheAAAAAAAAClG8AAAAAAAAFKJ4AQAAAAAAKETxAgAAAAAAUIjiBQAAAAAAoBDFCwAAAAAAQCGKFwAAAAAAgEIULwAAAAAAAIUoXgAAAAAAAApRvAAAAAAAABSieAEAAAAAAChE8QIAAAAAAFCI4gUAAAAAAKAQxQsAAAAAAEAhihcAAAAAAIBCFC8AAAAAAACFKF4AAAAAAAAKUbwAAAAAAAAUongBAAAAAAAoRPECAAAAAABQiOIFAAAAAACgEMULAAAAAABAIYoXAAAAAACAQhQvAAAAAAAAhSheAAAAAAAAClG8AAAAAAAAFKJ4AQAAAAAAKETxAgAAAAAAUIjiBQAAAAAAoBDFCwAAAAAAQCGKFwAAAAAAgEIULwAAAAAAAIUoXgAAAAAAAApRvAAAAAAAABSieAEAAAAAACikR2cPAH+vftLMVa6pq6lk2rBkSMOcNDZXtbt2/tTRpUYDAAAAAIBVsuMFAAAAAACgEMULAAAAAABAIYoXAAAAAACAQhQvAAAAAAAAhSheAAAAAAAAClG8AAAAAAAAFKJ4AQAAAAAAKETxAgAAAAAAUIjiBQAAAAAAoBDFCwAAAAAAQCGKFwAAAAAAgEIULwAAAAAAAIUoXgAAAAAAAApRvAAAAAAAABSieAEAAAAAAChE8QIAAAAAAFCI4gUAAAAAAKAQxQsAAAAAAEAhihcAAAAAAIBCFC8AAAAAAACFKF4AAAAAAAAKUbwAAAAAAAAUongBAAAAAAAoRPECAAAAAABQiOIFAAAAAACgEMULAAAAAABAIYoXAAAAAACAQhQvAAAAAAAAhSheAAAAAAAAClG8AAAAAAAAFKJ4AQAAAAAAKETxAgAAAAAAUIjiBQAAAAAAoBDFCwAAAAAAQCGKFwAAAAAAgEIULwAAAAAAAIUoXgAAAAAAAApRvAAAAAAAABSieAEAAAAAACikR2cPAOtT/aSZq1xTV1PJtGHJkIY5aWyuanft/KmjS40GAAAAAEA3YMcLAAAAAABAIYoXAAAAAACAQhQvAAAAAAAAhSheAAAAAAAAClG8AAAAAAAAFKJ4AQAAAAAAKETxAgAAAAAAUIjiBQAAAAAAoBDFCwAAAAAAQCGKFwAAAAAAgEIULwAAAAAAAIUoXgAAAAAAAApRvAAAAAAAABSieAEAAAAAAChE8QIAAAAAAFCI4gUAAAAAAKAQxQsAAAAAAEAhihcAAAAAAIBCFC8AAAAAAACFKF4AAAAAAAAKUbwAAAAAAAAUongBAAAAAAAoRPECAAAAAABQSI/OHgC6k/pJM1e5pq6mkmnDkiENc9LYXNXu2vlTR5caDQAAAACA9cCOFwAAAAAAgEIULwAAAAAAAIUoXgAAAAAAAApRvAAAAAAAABSieAEAAAAAAChE8QIAAAAAAFCI4gUAAAAAAKAQxQsAAAAAAEAhihcAAAAAAIBCFC8AAAAAAACFKF4AAAAAAAAKUbwAAAAAAAAU0qOzBwBWX/2kmatcU1dTybRhyZCGOWlsrmp37fypo0uNBgAAAABA7HgBAAAAAAAoRvECAAAAAABQiOIFAAAAAACgEMULAAAAAABAIYoXAAAAAACAQhQvAAAAAAAAhSheAAAAAAAAClG8AAAAAAAAFKJ4AQAAAAAAKETxAgAAAAAAUIjiBQAAAAAAoBDFCwAAAAAAQCGKFwAAAAAAgEIULwAAAAAAAIV0evHy1a9+NfX19enVq1f222+//OIXv2h3/S233JJddtklvXr1yh577JFZs2Ytt+bxxx/PBz7wgWy66abp06dP9t133zz77LPr6ikAAAAAAAAk6eTi5eabb87EiRMzZcqUPPjgg9lrr70yatSovPDCCytcf++99+a4447LySefnIceeihjxozJmDFj8thjj7Wueeqpp3LAAQdkl112yV133ZVHH300kydPTq9evdbX0wIAAAAAADZQPTrzg19xxRU55ZRTMn78+CTJ9OnTM3PmzNxwww2ZNGnScuuvuuqqHH744Tn77LOTJJdccknmzp2ba665JtOnT0+SnH/++TnyyCMzbdq01ut23HHHdudobGxMY2Nj6+NFixYlSZqamtLU1LR2T7KbqauprHpNdaXNr+156/2V37n5q2PZNevqa0O+fPldM78rzy5fvnz58uXLly+/a+V35dnly5cvvzvnd3drct+qKpXKqv91dh14880307t379x6660ZM2ZM6/Fx48bl1VdfzQ9+8IPlrtl2220zceLEnHHGGa3HpkyZkttuuy2PPPJIWlpasummm+acc87Jz372szz00EPZfvvtc+6557b5GG/V0NCQiy66aLnjM2bMSO/evdfmaQIAAAAAAF3ckiVLcvzxx+e1115L3759213baTteXnrppTQ3N6d///5tjvfv3z9PPPHECq9ZsGDBCtcvWLAgSfLCCy/kL3/5S6ZOnZrPfe5zueyyyzJ79ux86EMfyp133pmRI0euMPfcc8/NxIkTWx8vWrQogwcPzmGHHbbKG7ihGdIwZ5Vr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p556aj7/+c+vdtYVV1yRU045JePHj0+STJ8+PTNnzswNN9yQSZMmLbf+qquuyuGHH56zzz47SXLJJZdk7ty5ueaaazJ9+vTWdX/605/ymc98JnPmzMno0aPbnaGxsTGNjY2tjxctWpQkaWpqSlNT02o/lw1BXU1l1WuqK21+bc9b76/87pO/oq8d+fLld9/8tfneszqWXbOu/lyWL1++fPny5cuX33Xyu/Ls8uXLl9+d87u7NblvVZVKZdX/QvIWvXr1yqOPPpp3vvOdbY4/+eSTGTp0aN54443VynnzzTfTu3fv3HrrrRkzZkzr8XHjxuXVV1/ND37wg+Wu2XbbbTNx4sScccYZrcemTJmS2267LY888kiSv70U2iGHHJIPfvCDOf3001NfX58zzjijzTV/r6GhIRdddNFyx2fMmJHevXuv1nMBAAAAAAC6pyVLluT444/Pa6+9lr59+7a7tkM7Xvbaa69cc801+cpXvtLm+DXXXJO99tprtXNeeumlNDc3p3///m2O9+/fP0888cQKr1mwYMEK1y9YsKD18WWXXZYePXrktNNOW605zj333EycOLH18aJFizJ48OAcdthhq7yBG5ohDXNWuaauupJL9mnJ5Aeq09hS1e7axxpGye+m+W/Nli9ffvfOX5vvPaujqakpc+fOzaGHHpra2to1vl6+fPny5cuXL19+98nvyrPLly9ffnfO7+6WvVLW6uhQ8TJt2rSMHj06P/nJTzJ8+PAkyX333Zfnnnuu3Te6Xx9+9atf5aqrrsqDDz6Yqqr2/+Fnmbq6utTV1S13vLa21ifgWzQ2r949TZLGlqpVrn/r/ZXfffJX9LUjX7787p/fke89a2Jd/9ksX758+fLly5cvv+vkd+XZ5cuXL78753dXa3LPqjvyAUaOHJnf/e53Oeqoo/Lqq6/m1VdfzYc+9KE8+eSTec973rPaOVtuuWVqamqycOHCNscXLlyYAQMGrPCaAQMGtLv+f/7nf/LCCy9k2223TY8ePdKjR48888wzOfPMM1NfX79mTxQAAAAAAGANdGjHS5IMHDgwn//859fqg/fs2TN777135s2b1/oeLy0tLZk3b14mTJiwwmuGDx+eefPmtXm/lrlz57buvDnhhBNyyCGHtLlm1KhROeGEEzJ+/Pi1mhcAAAAAAKA9q128PProoxkyZEiqq6vz6KOPtrt2zz33XO0BJk6cmHHjxmWfffbJsGHDcuWVV2bx4sWtJcmJJ56YQYMG5dJLL02SnH766Rk5cmQuv/zyjB49OjfddFMeeOCBXH/99UmSLbbYIltssUWbj1FbW5sBAwZk5513Xu25AAAAAAAA1tRqFy9Dhw7NggUL0q9fvwwdOjRVVVWpVCrLrauqqkpzc/NqD3DMMcfkxRdfzIUXXpgFCxZk6NChmT17dvr3758kefbZZ1Nd/X+viDZixIjMmDEjF1xwQc4777zstNNOue222zJkyJDV/pgAAAAAAADrwmoXL08//XS22mqr1v9d0oQJE1b60mJ33XXXcsfGjh2bsWPHrnb+/PnzOzgZAAAAAADA6lvt4mW77bZr/d/PPPNMRowYkR492l7+17/+Nffee2+btQAAAAAAABuK6lUvWd573/vevPLKK8sdf+211/Le9753rYcCAAAAAADoijpUvFQqlVRVVS13/OWXX06fPn3WeigAAAAAAICuaLVfaixJPvShDyVJqqqq8tGPfjR1dXWt55qbm/Poo49mxIgRZScEAAAAAADoItaoeNl0002T/G3HyyabbJKNNtqo9VzPnj3zj//4jznllFPKTggAAAAAANBFrFHxcuONNyZJ6uvrc9ZZZ3lZMQCgiPpJM9s9X1dTybRhyZCGOWlsXv7lTv/e/KmjS44GAAAAsEbWqHhZZsqUKaXnAAAAAAAA6PI6VLwkya233prvfe97efbZZ/Pmm2+2Offggw+u9WAAAAAAAABdTXVHLvrKV76S8ePHp3///nnooYcybNiwbLHFFvnDH/6QI444ovSMAAAAAAAAXUKHipdrr702119/fa6++ur07Nkz55xzTubOnZvTTjstr732WukZAQAAAAAAuoQOFS/PPvtsRowYkSTZaKON8vrrrydJTjjhhPzHf/xHuekAAAAAAAC6kA4VLwMGDMgrr7ySJNl2223z85//PEny9NNPp1KplJsOAAAAAACgC+lQ8XLwwQfn9ttvT5KMHz8+n/3sZ3PooYfmmGOOyVFHHVV0QAAAAAAAgK6iR0cuuv7669PS0pIk+fSnP50tttgi9957bz7wgQ/kE5/4RNEBAQAAAAAAuooOFS/V1dWprv6/zTLHHntsjj322GJDAQCUVD9pZrvn62oqmTYsGdIwJ43NVe2unT91dMnRAAAAgG5mtYuX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Ob+7W5P7VlWpVFb90+468vzzz2fQoEG59957M3z48Nbj55xzTu6+++7cf//9y13Ts2fPfOtb38pxxx3Xeuzaa6/NRRddlIULFy63funSpdl///2zyy675Lvf/e4K52hoaMhFF1203PEZM2akd+/eHXlqAAAAAABAN7FkyZIcf/zxee2119K3b99213bqjpd1rampKUcffXQqlUquu+66la4799xz2+yiWbRoUQYPHpzDDjtslTdwQzOkYc4q19RVV3LJPi2Z/EB1GltW/gaYSfJYwyj53TT/rdny5cvv3vlr871Hvnz58leW35V+9pH/9vvZc3U0NTVl7ty5OfTQQ1NbW9uhDPny5a///K48u3z58uV35/zubtkrZa2OTi1ettxyy9TU1Cy3U2XhwoUZMGDACq8ZMGDAaq1fVro888wz+elPf9pugVJXV5e6urrljtfW1voEfIvG5vb/MtVmbUvVKte/9f7K7z75K/rakS9ffvfP78j3Hvny5ctfWX5X+tlH/tvvZ881sa7/7idfvvx1k9+VZ5cvX7787pzfXa3JPateh3OsUs+ePbP33ntn3rx5rcdaWloyb968Ni899veGDx/eZn2SzJ07t836ZaXL73//+/zkJz/JFltssW6eAAAAAAAAwN/p9JcamzhxYsaNG5d99tknw4YNy5VXXpnFixdn/PjxSZITTzwxgwYNyqWXXpokOf300zNy5MhcfvnlGT16dG666aY88MADuf7665P8rXT58Ic/nAcffDA/+tGP0tzcnAULFiRJNt988/Ts2bNznigAAAAAANDtdXrxcswxx+TFF1/MhRdemAULFmTo0KGZPXt2+vfvnyR59tlnU139fxtzRowYkRkzZuSCCy7Ieeedl5122im33XZbhgwZkiT505/+lNtvvz1JMnTo0DYf684778xBBx20Xp4XAAAAAACw4en04iVJJkyYkAkTJqzw3F133bXcsbFjx2bs2LErXF9fX59KpVJyPAAAAAAAgNXSqe/xAgAAAAAA0J28LXa8AAAAQEn1k2auck1dTSXThiVDGuaksblqpevmTx1dcjQAALo5O14AAAAAAAAKUbwAAAAAAAAUongBAAAAAAAoRPECAAAAAABQiOIFAAAAAACgkB6dPQAAAAB0NfWTZq5yTV1NJdOGJUMa5qSxuWql6+ZPHV1yNAAAOpniBQAAAN5mFDsAAF2XlxoDAAAAAAAoRPECAAAAAABQiOIFAAAAAACgEMULAAAAAABAIYoXAAAAAACAQhQvAAAAAAAAhSheAAAAAAAAClG8AAAAAAAAFKJ4AQAAAAAAKKRHZw8AAAAArF/1k2auck1dTSXThiVDGuaksblqpevmTx1dcjQAgC7PjhcAAAAAAIBCFC8AAAAAAACFeKkxAAAAoCgvZQYAbMjseAEAAAAAAChE8QIAAAAAAFCI4gUAAAAAAKAQxQsAAAAAAEAhihcAAAAAAIBCenT2AAAAAABron7SzFWuqaupZNqwZEjDnDQ2V6103fypo0uOBgBgxwsAAAAAAEApihcAAAAAAIBCFC8AAAAAAACFeI8XAAAAgL/jPWQAgLVhxwsAAAAAAEAhihcAAAAAAIBCFC8AAAAAAACFKF4AAAAAAAAKUbwAAAAAAAAUongBAAAAAAAoRPECAAAAAABQiOIFAAAAAACgEMULAAAAAABAIYoXAAAAAACAQhQvAAAAAAAAhSheAAAAAAAACunR2QMAAAAAbEjqJ81c5Zq6mkqmDUuGNMxJY3PVStfNnzq65GgAQAF2vAAAAAAAABSieAEAAAAAAChE8QIAAAAAAFCI4gUAAAAAAKAQxQsAAAAAAEAhihcAAAAAAIBCFC8AAAAAAACFKF4AAAAAAAAKUbwAAAAAAAAUongBAAAAAAAopEdnDwAAAABA11E/aeYq19TVVDJtWDKkYU4am6tWum7+1NElRwOAtwU7XgAAAAAAAAqx4wUAAACAt41V7ahZ3d00iR01AHQOO14AAAAAAAAKUbwAAAAAAAAUongBAAAAAAAoRPECAAAAAABQiOIFAAAAAACgEMULAAAAAABAIYoXAAAAAACAQhQvAAAAAAAAhSheAAAAAAAAClG8AAAAAAAAFNKjswcAAAAAgO6iftLMds/X1VQybVgypGFOGpur2l07f+rokqMBsJ7Y8QIAAAAAAFCI4gUAAAAAAKAQxQsAAAAAAEAhihcAAAAAAIBCFC8AAAAAAACFKF4AAAAAAAAK6dHZAwAAAAAAq6d+0sx2z9fVVDJtWDKkYU4am6vaXTt/6uiSowHw/7PjBQAAAAAAoBDFCwAAAAAAQCGKFwAAAAAAgEIULwAAAAAAAIUoXgAAAAAAAApRvAAAAAAAABSieAEAAAAAACikR2cPAAAAAABsGOonzWz3fF1NJdOGJUMa5qSxuardtfOnji45GkAxdrwAAAAAAAAUongBAAAAAAAoRPECAAAAAABQiOIFAAAAAACgEMULAAAAAABAIYoXAAAAAACAQhQvAAAAAAAAhSheAAAAAAAAClG8AAAAAAAAFKJ4AQAAAAAAKETxAgAAAAAAUIjiBQAAAAAAoBDFCwAAAAAAQCGKFwAAAAAAgEIULwAAAAAAAIUoXgAAAAAAAApRvAAAAAAAABTSo7MHAAAAAAAgqZ80s93zdTWVTBuWDGmYk8bmqnbXzp86uuRowBqw4wUAAAAAAKAQxQsAAAAAAEAhihcAAAAAAIBCFC8AAAAAAACFKF4AAAAAAAAKUbwAAAAAAAAUongBAAAAAAAoRPECAAAAAABQiOIFAAAAAACgEMULAAAAAABAIYoXAAAAAACAQhQvAAAAAAAAhSheAAAAAAAAClG8AAAAAAAAFKJ4AQAAAAAAKETxAgAAAAAAUIjiBQAAAAAAoBDFCwAAAAAAQCE9OnsAAAAAAABYlfpJM9s9X1dTybRhyZCGOWlsrmp37fypo9coe23z2bDY8QIAAAAAAFCI4gUAAAAAAKAQxQsAAAAAAEAhihcAAAAAAIBCenT2AAAAAAAA0J3VT5q5yjV1NZVMG5YMaZiTxuaqdtfOnzq61GisA3a8AAAAAAAAFKJ4AQAAAAAAKETxAgAAAAAAUIjiBQAAAAAAoJAenT1Aknz1q1/NF7/4xSxYsCB77bVXrr766gwbNmyl62+55ZZMnjw58+fPz0477ZTLLrssRx55ZOv5SqWSKVOm5Otf/3peffXV7L///rnuuuuy0047rY+nAwAAAAAA6039pJmrXFNXU8m0YcmQhjlpbK5qd+38qaNLjbZB6vQdLzfffHMmTpyYKVOm5MEHH8xee+2VUaNG5YUXXljh+nvvvTfHHXdcTj755Dz00EMZM2ZMxowZk8cee6x1zbRp0/KVr3wl06dPz/33358+ffpk1KhRWbp06fp6WgAAAAAAwAao04uXK664IqecckrGjx+f3XbbLdOnT0/v3r1zww03rHD9VVddlcMPPzxnn312dt1111xyySV597vfnWuuuSbJ33a7XHnllbngggvywQ9+MHvuuWe+/e1v5/nnn89tt922Hp8ZAAAAAACwoenUlxp7880386tf/Srnnntu67Hq6uoccsghue+++1Z4zX333ZeJEye2OTZq1KjWUuXpp5/OggULcsghh7Se33TTTbPffvvlvvvuy7HHHrtcZmNjYxobG1sfL1q0KEnS1NSUpqamDj+/7qiuprLqNdWVNr+25633V373yV/R1458+fK7b/7afO+RL1++/JXld6WffeT72VO+/LdT/upYdl1Hru/s+7O2f3at7jUdvbdd+c/e1fF2vz+re826+jc/92fd5vvZs/PyWbN7UlWpVFZ9l9eR559/PoMGDcq9996b4cOHtx4/55xzcvfdd+f+++9f7pqePXvmW9/6Vo477rjWY9dee20uuuiiLFy4MPfee2/233//PP/889l6661b1xx99NGpqqrKzTffvFxmQ0NDLrroouWOz5gxI717917bpwkAAAAAAHRhS5YsyfHHH5/XXnstffv2bXdtp+54ebs499xz2+yiWbRoUQYPHpzDDjtslTeQ5TU1NWXu3Lk59NBDU1tbK1++fPnyN4D8rjy7fPny5cuXL19+d8sf0jBnlWvqqiu5ZJ+WTH6gOo0tK3+D5ccaRq3Rx17m7fyz56ruz+rem6Rj9+ft/LmTdP37s67nd3/+T3e8P/Jpz7JXylodnVq8bLnllqmpqcnChQvbHF+4cGEGDBiwwmsGDBjQ7vplvy5cuLDNjpeFCxdm6NChK8ysq6tLXV3dcsdra2t9Aq6FdX3/5MuXL1/+2y+/K88uX758+fLly5ffXfIbm9v/x8w2a1uq2l2/ts/t7fiz5+ren1Xdm2UzdNTb8XMn6fr3Z13P7/60nWF956+ut+vX14aS312tyT2rXodzrFLPnj2z9957Z968ea3HWlpaMm/evDYvPfb3hg8f3mZ9ksydO7d1/fbbb58BAwa0WbNo0aLcf//9K80EAAAAAAAoodNfamzixIkZN25c9tlnnwwbNixXXnllFi9enPHjxydJTjzxxAwaNCiXXnppkuT000/PyJEjc/nll2f06NG56aab8sADD+T6669PklRVVeWMM87I5z73uey0007ZfvvtM3ny5AwcODBjxozprKcJAAAAAABsADq9eDnmmGPy4osv5sILL8yCBQsydOjQzJ49O/3790+SPPvss6mu/r+NOSNGjMiMGTNywQUX5LzzzstOO+2U2267LUOGDGldc84552Tx4sX5+Mc/nldffTUHHHBAZs+enV69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3Ae6OsUL69Tjjz+eHXbYYa1zXn755RxyyCF55zvfmSOPPDJ//vOfkyQnn3xyzjzzzLXOT5Lnn38+U6ZMyUc+8pGcddZZeeKJJ9Yq75vf/Gbuu+++JMnSpUtz8sknp0+fPnnnO9+ZjTfeOJ/85CeLFjCLFy/OjTfemPPPPz/XXHNNXn755WLZy7z55pv54x//mGeffbbNfx3xwgsvtHn88MMPZ9y4cdl///3z4Q9/OHfddddaz/vGG2/kZz/7WX77298ud27p0qX59re/vdYfY2WeeuqpHHzwwWuV8cgjj+Rzn/tcrr322rz00kttzi1atCgnnXTSWuW357nnnlvr/Mcffzw33nhj69fSE088kU996lM56aST8tOf/rTEmK3Wxef/Sy+9lGnTpuWoo47K8OHDM3z48Bx11FH54he/WOQfETvz87PE7++K7Lzzzvn9739fPHeZurq6PP744+ssf5l1dX9K5e+xxx655JJL8txzzxWcatUOO+ywzJ8/v0jWn//85/z7v/97Zs2alTfffLPNucWLF+fiiy9eq/x1+f3nM5/5TP7nf/5nrTJWZe7cuZkyZUrrrP/93/+dI444IgcffHBuvPHGtcp+//vfn+985zvrtESbOXNmDjzwwPTp0ycDBw7MgAEDstlmm+WEE07o8M8Nf++aa67JiSeemJtuuilJ8p3vfCe77bZbdtlll5x33nlr9Q/16zL7rUr/2fXKK6/kwx/+cLbddtt86lOfSnNzcz72sY9l6623zqBBgzJixIjWn6FLKvW9efbs2fn1r3+dJGlpackll1ySQYMGpa6uLttss02mTp261v8I941vfCPjxo1r/Tq6+eabs+uuu2aHHXbIlClT1ip78803b/157R3veEc233zzlf637bbb5ogjjsijjz66Rh+jK/9s9eCDD+bpp59uffyd73wn+++/fwYPHpwDDjig9WuutJI/O/z5z3/OhRdemIMPPji77rprdt9997z//e/Pv/3bv6W5uXmtshsbG3PWWWflwAMPzGWXXZYk+dznPpeNN944m2yySY4//vgsWrTobTv/uv6zcX382dueEj8bPvLIIznxxBOzww47ZKONNkqfPn2yxx57ZPLkyWv9e5us+79brMvPn5Up+fXb1f9u99vf/jannnpq3vWud2XrrbfO1ltvnXe961059dRTV/gx19S6/PmnO3z9rsvPn3X5tdVZf/bydyqwDj388MOV6urqtc454YQTKqNGjao899xzlY033rjy1FNPVSqVSmX27NmV3XbbrUOZG220UeWFF16oVCqVym9+85vKpptuWvmHf/iHytixYyu77LJLpXfv3pVHHnmkwzNvv/32lZ///OeVSqVSOeussyr19fWV//zP/6w8/vjjldtuu63yzne+s3L22Wd3OH/XXXetvPzyy5VKpVJ59tlnK/X19ZVNN920su+++1Y233zzSr9+/Sp/+MMfOpz/9373u99VDjjggEp1dXWb/6qqqjr8+1tdXV1ZuHBhpVKpVO65555KbW1tZeTIkZWzzz67cuihh1Z69OhRufvuuzs885NPPlnZbrvtWmc88MADK88//3zr+QULFhT53FyZtf3cnzNnTqVnz56V3XffvbLttttWtthii8pPf/rT1vNv9/nvuOOOSs+ePSubb755pVevXpU77rijstVWW1UOOeSQysEHH1ypqampzJs3r8P56/rz/xe/+EXlHe94R2XQoEGVcePGVc4555zKOeecUxk3blxlm222qWy++eaVX/7ylx3O7+qfn0cdddQK/6uurq4ccsghrY876rOf/ewK/6uurq6ceOKJrY//v/beOzyKen3/v2dTl3RCAgESEgi9SADpEAsIfhQUOEcQEUOxIijCwYoEDk0FEVQiRVGQIiJKUbCCSEeSQEQQCFE4iBQhVGnJ8/vDX/bLGrJJdvY9sxPu13Xtddyd8Nrn3PPMM7OZ7IwqPLXvUuXXNE0iIyPFx8dHOnXqJEuWLJErV654rL6kpKTrPjRNk7p16zqeu8vWrVslPDxcQkNDxW63S2Jiovz000+O5Xr7X/X8Kdhua9asKRMnTpQjR4647boe8+bNE19fX2nSpIkEBwfLnDlzJDw8XAYOHCj9+/cXf39/+fjjj932a5omvr6+EhYWJo899pj8+OOPHqxeZO7cuRISEiLDhg2TF198USpVqiTPPfecpKWlSXJyslSoUEH27t3rtv+///2vhISESI8ePaRSpUoyceJEiYyMlLFjx8r48eMlKipKXn75Za9zi6jfd/Xv318aNGggb775piQnJ8s999wjjRo1kvXr18vGjRvl5ptvlr59+7rtVz2ba9euLevWrRMRkfHjx0tkZKS8/vrrsmrVKnnjjTekYsWKMnHiRLf9U6ZMkaCgIOnevbvExMTI2LFjHet39OjREhoaKjNmzHDb//7778vFixcd/+3qMWPGDLnnnnukSZMmJfZb/diqUaNG8vXXX4uIyKxZs8Rut8uQIUMkLS1Nnn76aQkODpZ3333Xbb/q/ty2bZuEhYVJ06ZNpW3btuLj4yMPPvig9OzZU8LDw6V169Zy5swZXfVXrlxZhg0bJnXr1pUnnnhC4uLi5MMPP5QFCxZIYmKiDB482GvrV71vVO0vDr3HbqtXrxa73S49evSQPn36SLly5eTJJ5+UZ599VhITE6VGjRq6/j+p/mxhRP+r3H6t/tnuiy++EH9/f2nZsqWMGjVKpk+fLtOnT5dRo0ZJ69atJSAgQFavXu22X/Xxj9W3X5X9o3rbUr3vJcXDEy9EF0XtIAseffr08cgvrypWrCiZmZkiIk4nXrKzsyUoKMgtp6Zpjl/833PPPdKlSxfHL67y8vKkV69ecvfdd7tdc0BAgPz2228iIlKrVi1ZtWqV0/Lvv/9e4uLi3PZfW/8DDzwgrVu3ltzcXBEROXv2rHTo0EHuv/9+t/3X0rp1a2nfvr188cUXkpGRIZmZmU4PvfV37NhR+vfv77T8qaeekttuu83tmu+9916566675Pjx47Jv3z656667JCEhwbFO9B78TJ061eVjxIgRuvytWrWSF154QURE8vPz5ZVXXpHg4GBHH+mtf9myZS4fU6ZM0V3/iy++KCIiCxculIiICMf/HxGR5557Tjp27Oi2X3X/t2jRQh555BHJz88vtCw/P18eeeQRadmypdt+1f2pev1qmibJycmSkpLi9LDZbHLvvfc6nuvxN27cWG655Ranh6ZpcvPNN8stt9wit956q9t+1fkYkf/hw4fl008/lS5duoivr69ERUXJsGHD5Oeff3bbW4Cvr6907txZUlNTHY9Ro0aJzWaTJ554wvGau3To0EH69esneXl5cubMGXn88cclMjJS0tPTRUR//xsxf7755ht56qmnpEKFCuLn5yddu3aVFStWSF5entveAho3bixTp04VEZFvvvlG7Ha7vP76647lkyZNkjZt2uiqf9euXTJlyhRp2LCh2Gw2uemmm+TNN9+UkydP6q6/Tp06smjRIsfzbdu2SdWqVR3ztGfPnrpOzNaoUUM++eQTEfn7g7SPj498+OGHjuVLly6VxMREr3OLqN93xcTE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SXR0tHTu3Fn8/f3lX//6l9StW1cqVqxY6FsBJUXTNAkPD5eIiAjx8/OTefPmOS3/6quvJD4+3u2aL126JF27dpWIiAjp2LGjBAYGSrly5aRmzZoSFBQkcXFxhf7it7T1N2zYUJKSkiQ4OFiWLFnitPz777/XdTmJa/n222+lVatWsmbNGjlx4oScPn3a6eEOBX91UPCXCf/8yuOyZct0fZ315ptvlrlz51532aBBgyQ8PFzXXz306NFDRowYUeRyvb3fsWNHee211667bMGCBeLn56er/i5durj8urLe+hs1auR0eb2srCyne1CsW7dOEhIS3Par7v+33npLAgICZMiQIbJs2TLZvHmzbN68WZYtWyZDhgwRu90ub7/9ttt+1f2pev0WkJeXJy+//LLExsbK6tWrxc/PzyN/lVbA2bNnpW/fvtKoUSPJysrymF91Pqr9//zGwvVwdzb/k/fee08qVaokM2bM8Fj+7dq1c7rcxrW88sorEhAQoPtyDKrnj6v88/PzC/2leGlo1qyZ0+VlTp8+7XRpg6+//lpq1arltr8k/aPn+OStt96SsLAwGTFihLz88stSuXJlGTBggGP5hx9+qOseQS+99JJERUXJwIEDJSEhQZ577jmJi4uTtLQ0eeeddyQ2Ntbt68CrdIuo33d9+OGH4uPjI4mJiRIQECAff/yxVK5cWe677z7p1auX+Pv7y1tvveW2vwBVszk3N1eaNWsmiYmJ8uCDD0pgYKBUq1ZNOnbsKAkJCRIWFua4f6I7tGnTxukyeP9kxYoV0qBBA7f91zJy5EiJiYmRSZMmSWBgoPz3v/+VAQMGSGRkpONSgqXF6sdWhw8flvj4eGnfvr0888wzYrfbpW3btvLwww9L+/btxd/fXz7//HO3/QWo6s+nnnpKGjRoIKtWrZLvvvtObr31Vrnlllscy1evXi01atRw2z9lyhQJDAyUDh06SEREhEybNk0qVaokI0aMkOeee07CwsJkzJgxXlu/6n2jar/qY7fRo0dL1apVJS0tTd577z1p0KCB02U3ly5dqutyP6o/W6junwJUbb9W/2y3ePFi8fX1lS5dusjUqVNl0aJFsmjRIpk6dap07dpV/P39C83s0mDE8Y+Vt1+V/aN62zJq30uKhideiC6OHDnidEkDleTm5srYsWPl3//+t9x5553y4osvOt2wrLT8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/fTTb4zbCD8pGu+/iC3xarp37w4A0DQNKSkpCAgIcCzLy8vDzp070bp1a7PKKxEZGRlOz69cuYKMjAy8/vrrGDdunNteo7JRVf/y5ctx5513ws/PD8uXL3f5s127di213+r5qPaXhW0LsG7+9NPvCb8qVM8Hzmf6rbD/UpkPs3cN8zEXq+ZPP/30008//fQb7zbCT1wghOggJSVFUlJSRNM06dmzp+N5SkqKPPLIIzJ+/Hg5fvy42WW6xcqVKyU5Odntf292Nnrr1zRNjh496vjvoh42m80tv9XzUe03Ox/VeHv+9NOv0q8X1fPB7Plj9fV7o/vLcv8we9cwH3Px9vzpp59++umnn37vcRvhJyI88UI8Qmpqqpw7d87sMjzKvn37pFy5cro9ZmXjqfpVU1bzsXr/qMYq+dNPvzejej5wPtOvh7LYP8zeNczHXKySP/30008//fTTb77bCD8R4aXGiEcYNWqU2SW4zT+v4ywiOHLkCFJTU1GzZk3dftXZqK4fAObOnYuePXs6XZIBAC5fvoxFixahb9++brutno/V+0c1Vs+ffvq9GdXzgfOZfj1YuX+YvWuYj7lYPX/66aeffvrpp984txF+UjQ88UI8xpIlS7B48WIcPHgQly9fdlqWnp5uUlXFEx4eXugmUyKC2NhYLFq0yCPvoTIbI+rv168fOnfujOjoaKfXz549i379+uk68QJYOx+r949qrJ4//fR7O6rnA+cz/Xqwav8we9cwH3Oxev70008//fTTT79xbiP8pGh44oV4hGnTpuHFF19ESkoKli1bhn79+iE7Oxvbtm3DoEGDzC7PJWvWrHF6brPZEBUVhcTERPj66t9EVGejun7g74H8zyENAP/73/8QFhamy231fKzeP6qxev700+/NqJ4PnM/068HK/cPsXcN8zMXq+dNPP/30008//ca5jfATF5TwkmSEuKR27dqyYMECEREJDg6W7OxsEREZOXKkDBo0yMzSiuX777+XK1euFHr9ypUr8v333+v2q85GZf2NGzeWpKQksdls0rBhQ0lKSnI8GjVqJCEhIfLvf/9b13tYOR8j/FbetkSsnz/99HszqucD5zP9erBy/zB71zAfc7F6/vTTTz/99NNPv3FuI/ykaHjihXgEu90uv/76q4iIREVFSWZmpoiI7N27V8qXL29macVis9nk6NGjhV4/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008//fSXndpJyeGJF3JDUr58edm8ebOIiGiaJseOHTO5otJhdP233HJLiR633nqr0jpKiup8rN4/qrF6/vTTT9Rh9fVLv7morJ/Zu4b5mIvV86effvrpp59++o1zG+EnJcPX7HvMEGIGPXr0QHJyMmJiYqBpGpo1awYfH5/r/uyBAwcMrq54jK5/zZo1uh1Gojofq/ePaqyeP/306/ET11h9/dJvLirrZ/auYT7mYvX86aeffvrpp5/+slM7KTk88UJuSGbOnInu3btj//79GDJkCB5++GGEhISYXVaJsXr9qlGdD/N3jdXzp59+og6rr1/6zUVl/czeNczHXKyeP/30008//fTTb5zbCD8pIWZ/5YYQs0lJSZEzZ86YXYbbWL1+1ajOh/m7xur5008/UYfV1y/95qKyfmbvGuZjLlbPn3766aeffvrpN85thJ8UjSYiYvbJH0IIIYQQQgghhBBCCCGEkLKAzewCCCGEEEIIIYQQQgghhBBCygo88UIIIYQQQgghhBBCCCGEEOIheOKFEEIIIYQQQgghhBBCCCHEQ/DECyGEEEIIIYQQQgghhBBCiIfgiRdCCCGEEEKI5RARPPLIIyhfvjw0TUNmZqbZJRFCCCGEEEIIAEATETG7CEIIIYQQQggpDatWrcI999yDtWvXonr16qhQoQJ8fX11OVNSUpCbm4vPPvvMM0USQgghhBBCbkj0fTIhhBBCCCGEEBPIzs5GTEwMWrdubXYphcjLy4OmabDZeIEBQgghhBBCbkT4SYAQQgghhBBiKVJSUjB48GAcPHgQmqYhPj4e+fn5mDBhAhISEmC323HTTTdhyZIljn+Tl5eHAQMGOJbXrl0bU6dOdSxPTU3FBx98gGXLlkHTNGiahrVr12Lt2rXQNA25ubmOn83MzISmafj1118BAO+//z7Cw8OxfPly1KtXDwEBATh48CAuXbqE4cOHo0qVKggKCkKLFi2wdu1ah+e3335Dly5dEBERgaCgINSvXx9ffPGF6vgIIYQQQgghiuE3XgghhBBCCCGWYurUqahRowZmzpyJbdu2wcfHBxMmTMCHH36Id955BzVr1sS6devQp08fREVFITk5Gfn5+ahatSo+/vhjREZGYuPGjXjkkUcQExOD++67D8OHD8fu3btx5swZzJkzBwBQvnx5bNy4sUQ1XbhwAa+88gpmz56NyMhIREdH48knn8TPP/+MRYsWoXLlyvj000/RuXNnZGVloWbNmhg0aBAuX76MdevWISgoCD///DOCg4NVRkcIIYQQQggxAJ54IYQQQgghhFiKsLAwhISEwMfHB5UqVcKlS5cwfvx4fPPNN2jVqhUAoHr16li/fj1mzJiB5ORk+Pn5YfTo0Q5HQkICNm3ahMWLF+O+++5DcHAw7HY7Ll26hEqVKpW6pitXrmD69Om46aabAAAHDx7EnDlzcPDgQVSuXBkAMHz4cKxevRpz5szB+PHjcfDgQfTo0QMNGzZ01EwIIYQQQgixPjzxQgghhBBCCLE0+/fvx4ULF9CxY0en1y9fvoykpCTH87fffhvvvfceDh48iL/++guXL19G48aNPVKDv78/GjVq5HielZWFvLw81KpVy+nnLl26hMjISADAkCFD8Pjjj+Orr75Chw4d0KNHDycHIYQQQgghxJrwxAshhBBCCCHE0pw7dw4A8Pnnn6NKlSpOywICAgAAixYtwvDhwzF58mS0atUKISEheO2117BlyxaXbpvt79tiiojjtStXrhT6ObvdDk3TnGry8fHB9u3b4ePj4/SzBZcTGzhwIDp16oTPP/8cX331FSZMmIDJkydj8ODBJf2/TgghhBBCCPFCeOKFEEIIIYQQYmmuvaF9cnLydX9mw4YNaN26NZ544gnHa9nZ2U4/4+/vj7y8PKfXoqKiAABHjhxBREQEACAzM7PYmpKSkpCXl4djx46hXbt2Rf5cbGwsHnvsMTz22GN4/vnnMWvWLJ54IYQQQgghxOLwxAshhBBCCCHE0oSEhGD48OEYOnQo8vPz0bZtW5w+fRobNmxAaGgoHnroIdSsWRNz587Fl19+iYSEBMybNw/btm1DQkKCwxMfH48vv/wSv/zyCyIjIxEWFobExETExsYiNTUV48aNw969ezF58uRia6pVqxYeeOAB9O3bF5MnT0ZSUhKOHz+Ob7/9Fo0aNcJdd92Fp59+GnfeeSdq1aqFU6dOYc2aNahbt67KqAghhBBCCCEGYDO7AEIIIYQQQgjRy3//+1+MHDkSEyZMQN26ddG5c2d8/vnnjhMrjz76KLp3746ePXuiRYsW+PPPP52+/QIADz/8MGrXro1mzZohKioKGzZsgJ+fHxYuXIg9e/agUaNGeOWVVzB27NgS1TRnzhz07dsXw4YNQ+3atXHvvfdi27ZtiIuLAwDk5eVh0KBBjnpr1aqF6dOnezYYQgghhBBCiOFocu3FigkhhBBCCCGEEEIIIYQQQojb8BsvhBBCCCGEEEIIIYQQQgghHoInXgghhBBCCCGEEEIIIYQQQjwET7wQQgghhBBCCCGEEEIIIYR4CJ54IYQQQgghhBBCCCGEEEII8RA88UIIIYQQQgghhBBCCCGEEOIheOKFEEIIIYQQQgghhBBCCCHEQ/DECyGEEEIIIYQQQgghhBBCiIfgiRdCCCGEEEIIIYQQQgghhBAPwRMvhBBCCCGEEEIIIYQQQgghHoInXgghhBBCCCGEEEIIIYQQQjwET7wQQgghhBBCCCGEEEIIIYR4iP8PLCiQG4njN7oAAAAASUVORK5CYII=", "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": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABl4AAAOkCAYAAADHhknPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8WgzjOAAAACXBIWXMAAA9hAAAPYQGoP6dpAADJ7UlEQVR4nOz9fZiVZb03/n/WDDAIiPiQIsQWFHwclMQg0MQHFAwz3IWKlYhpZTc+hOIXTGEQUzalQRuUbflUyda0bnY7vCVCMRPCEDUtdauBmigqJCjoMM6s3x/+mO3IMM4M53K4WK/XcaxDua5zfea9rrVQ4925rlw+n88HAAAAAAAA26ykpQMAAAAAAADsKBQvAAAAAAAAiSheAAAAAAAAElG8AAAAAAAAJKJ4AQAAAAAASETxAgAAAAAAkIjiBQAAAAAAIBHFCwAAAAAAQCKKFwAAAAAAgEQULwAAsIP685//HAMHDoz27dtHLpeLxx9/vKUjfaJWrlwZuVwubrvttpaOAgAAFJFWLR0AAABIr6qqKkaMGBFt27aNH/3oR9GuXbvYZ599kv+cVatWxU033RTDhw+PPn36JJ9f7G644YZo165dnH322S0dBQAAaKRcPp/Pt3QIAAAgrWeeeSYOOuig+MlPfhLnnntuwX7OsmXL4rOf/Wzceuut2105kM/no7KyMlq3bh2lpaUtHadZysvLY4899ohFixa1dBQAAKCRfNUYAADsgF5//fWIiOjUqVPLBmmm9957L2pqarZpRi6Xi7Zt22aydNm4cWNLRwAAAJpJ8QIAADuYs88+OwYNGhQRESNGjIhcLhfHHHNM7flnnnkmvvKVr8Ruu+0Wbdu2jSOOOCJ+85vf1Jmxdu3auPTSS6N3797RoUOH6NixY5x00knxxBNP1K5ZtGhRfPazn42IiNGjR0cul6tzT5Xu3bvXuwvmmGOOqZNn0aJFkcvl4s4774wrrrgiunbtGu3atYv169dHRMTSpUtj6NChscsuu0S7du1i0KBB8fDDD3/sdajvHi9nn312dOjQIV566aU4+eSTo0OHDtG1a9eYNWtWREQ8+eSTcdxxx0X79u1jn332iTlz5tSZedttt0Uul4s//OEP8a1vfSt233336NixY5x11lnxz3/+c4sMN9xwQxxyyCFRVlYWXbp0if/zf/5PvPXWW1tcj/Ly8nj00Ufj6KOPjnbt2sXll18e3bt3j7/+9a/x4IMP1l7bzdetMe/Ph6/tL3/5y/j+978fn/70p6Nt27Zx/PHHx/PPP79F3qVLl8YXvvCF2HXXXaN9+/Zx6KGHxowZM+qsacznp6qqKiZPnhy9evWKtm3bxu677x5HHXVULFiwoMH3DAAAdgTu8QIAADuYb33rW9G1a9e45ppr4sILL4zPfvazsddee0VExF//+tc48sgjo2vXrjF+/Pho3759/PKXv4zhw4fHr371qzj11FMjIuLvf/97zJ07N0aMGBE9evSI1atXx3/8x3/EoEGD4m9/+1t06dIlDjrooLjqqqti4sSJ8c1vfjM+//nPR0TEwIEDm5V7ypQp0aZNm7j00kujsrIy2rRpE/fff3+cdNJJ0bdv35g0aVKUlJTErbfeGscdd1w89NBD0a9fvyb/nOrq6jjppJPi6KOPjmnTpsUdd9wRY8aMifbt28f3vve9+OpXvxr/+q//GrNnz46zzjorBgwYED169KgzY8yYMdGpU6eoqKiIZ599Nm688cZ48cUXa4uOiIiKioqYPHlyDB48OM4///zadX/+85/j4YcfjtatW9fOW7NmTZx00klxxhlnxNe+9rXYa6+94phjjokLLrggOnToEN/73vciImrfx8a8Px82derUKCkpiUsvvTTWrVsX06ZNi69+9auxdOnS2jULFiyIk08+Ofbee++46KKLonPnzvH000/Hb3/727jooosiovGfn4qKirj22mvj3HPPjX79+sX69etj2bJlsXz58jjhhBOa/J4BAECm5AEAgB3OAw88kI+I/N13313n+PHHH5/v3bt3/r333qs9VlNTkx84cGC+V69etcfee++9fHV1dZ3nrlixIl9WVpa/6qqrao/9+c9/zkdE/tZbb90iwz777JMfNWrUFscHDRqUHzRo0BZZ99133/zGjRvr5OrVq1d+yJAh+ZqamtrjGzduzPfo0SN/wgknNHgNVqxYsUW2UaNG5SMif80119Qe++c//5nfaaed8rlcLn/nnXfWHn/mmWfyEZGfNGlS7bFbb701HxH5vn375jdt2lR7fNq0afmIyP/Xf/1XPp/P519//fV8mzZt8ieeeGKd6zhz5sx8RORvueWWOtcjIvKzZ8/e4jUccsghda7VZo19fzZf24MOOihfWVlZe3zGjBn5iMg/+eST+Xw+n3///ffzPXr0yO+zzz75f/7zn3XmfvjaN/bzc9hhh+WHDRu2RW4AACgGvmoMAACKxNq1a+P++++P0047Ld5+++148803480334w1a9bEkCFD4rnnnotXXnklIiLKysqipOSD/7lQXV0da9asiQ4dOsQBBxwQy5cvL0i+UaNGxU477VT768cffzyee+65OPPMM2PNmjW1eTds2BDHH398/OEPf2j2fWDOPffc2r/v1KlTHHDAAdG+ffs47bTTao8fcMAB0alTp/j73/++xfO/+c1v1tmxcv7550erVq3i3nvvjYiI3//+97Fp06a4+OKLa69jRMR5550XHTt2jHnz5tWZV1ZWFqNHj250/qa+P6NHj442bdrU/nrz7qTNr+2xxx6LFStWxMUXX7zFfYE27+BpyuenU6dO8de//jWee+65Rr8mAADYUfiqMQAAKBLPP/985PP5uPLKK+PKK6+sd83rr78eXbt2jZqampgxY0bccMMNsWLFiqiurq5ds/vuuxck30e/zmvzH9qPGjVqq89Zt25d7Lrrrk36OW3bto1PfepTdY7tsssu8elPf7q2ZPjw8fru3dKrV686v+7QoUPsvffesXLlyoiIePHFFyPig/Lmw9q0aRP77rtv7fnNunbtWqcY+ThNfX/+5V/+pc6vN1+zza/thRdeiIiI8vLyrf7Mpnx+rrrqqvjSl74U+++/f5SXl8fQoUPj61//ehx66KGNfo0AAJBVihcAACgSm3eHXHrppTFkyJB61/Ts2TMiIq655pq48sor45xzzokpU6bEbrvtFiUlJXHxxRc3epfJR0uMzaqrq6O0tHSL4x/e7fLhvD/4wQ+iT58+9c7q0KFDo7J8WH0/u6Hj+Xy+yT+jqT762j9OU9+fFK+tKZ+fo48+Ol544YX4r//6r/jd734XP/3pT+NHP/pRzJ49u85uIwAA2BEpXgAAoEjsu+++ERHRunXrGDx4cINr77nnnjj22GPj5ptvrnP8rbfeij322KP211srVyI+2FXx1ltvbXH8xRdfrM3SkP322y8iIjp27PixeT9pzz33XBx77LG1v37nnXfi1VdfjS984QsREbHPPvtERMSzzz5b57Vu2rQpVqxY0ejXs7Xr29j3p7E2X+unnnpqq9ma8vmJiNhtt91i9OjRMXr06HjnnXfi6KOPjoqKCsULAAA7PPd4AQCAIrHnnnvGMcccE//xH/8Rr7766hbn33jjjdq/Ly0t3WI3xN133117D4/N2rdvHxFRb8Gy3377xZ/+9KfYtGlT7bHf/va38fLLLzcqb9++fWO//faLH/7wh/HOO+80mPeTdtNNN0VVVVXtr2+88cZ4//3346STToqIiMGDB0ebNm3ixz/+cZ3rePPNN8e6deti2LBhjfo57du3r/faNvb9aazDDz88evToEdOnT9/i523+OU35/KxZs6bOuQ4dOkTPnj2jsrKyWfkAACBL7HgBAIAiMmvWrDjqqKOid+/ecd5558W+++4bq1evjiVLlsQ//vGPeOKJJyIi4uSTT46rrroqRo8eHQMHDownn3wy7rjjji12quy3337RqVOnmD17duy8887Rvn376N+/f/To0SPOPffcuOeee2Lo0KFx2mmnxQsvvBC/+MUvandXfJySkpL46U9/GieddFIccsghMXr06OjatWu88sor8cADD0THjh3jv//7v5Nfo8bYtGlTHH/88XHaaafFs88+GzfccEMcddRRccopp0RExKc+9amYMGFCTJ48OYYOHRqnnHJK7brPfvaz8bWvfa1RP6dv375x4403xtVXXx09e/aMPffcM4477rhGvz+NVVJSEjfeeGN88YtfjD59+sTo0aNj7733jmeeeSb++te/xvz58yOi8Z+fgw8+OI455pjo27dv7LbbbrFs2bK45557YsyYMc3KBwAAWaJ4AQCAInLwwQfHsmXLYvLkyXHbbbfFmjVrYs8994zPfOYzMXHixNp1l19+eWzYsCHmzJkTd911Vxx++OExb968GD9+fJ15rVu3jttvvz0mTJgQ3/72t+P999+PW2+9NXr06BFDhgyJ6667Lq6//vq4+OKL44gjjojf/va3cckllzQ67zHHHBNLliyJKVOmxMyZM+Odd96Jzp07R//+/eNb3/pWsuvSVDNnzow77rgjJk6cGFVVVTFy5Mj48Y9/XOerwSoqKuJTn/pUzJw5M7773e/GbrvtFt/85jfjmmuuidatWzfq50ycODFefPHFmDZtWrz99tsxaNCgOO644xr9/jTFkCFD4oEHHojJkyfHddddFzU1NbHffvvFeeedV7umsZ+fCy+8MH7zm9/E7373u6isrIx99tknrr766hg3blyz8wEAQFbk8p/EnSIBAAB2ALfddluMHj06/vzn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AAAAAFnRrB0vnTp1ipkzZ25xfPLkydscCAAAAAAAIKuateMlIuKhhx6Kr33tazFw4MB45ZVXIiLi5z//efzxj39MFg4AAAAAACBLmlW8/OpXv4ohQ4bETjvtFMuXL4/KysqIiFi3bl1cc801SQMCAAAAAABkRbOKl6uvvjpmz54dP/nJT6J169a1x4888shYvnx5snAAAAAAAABZ0qzi5dlnn42jjz56i+O77LJLvPXWW9uaCQAAAAAAIJOaVbx07tw5nn/++S2O//GPf4x99913m0MBAAAAAABkUbOKl/POOy8uuuiiWLp0aeRyuVi1alXccccdcemll8b555+fOiMAAAAAAEAmtGrOk8aPHx81NTVx/PHHx8aNG+Poo4+OsrKyuPTSS+OCCy5InREAAAAAACATmlW85HK5+N73vhfjxo2L559/Pt555504+OCDo0OHDqnzAQAAAAAAZEazipd169ZFdXV17LbbbnHwwQfXHl+7dm20atUqOnbsmCwgAAAAAABAVjTrHi9nnHFG3HnnnVsc/+UvfxlnnHHGNocCAAAAAADIomYVL0uXLo1jjz12i+PHHHNMLF26dJtDAQAAAAAAZFGzipfKysp4//33tzheVVUV77777jaHAgAAAAAAyKJmFS/9+vWLm266aYvjs2fPjr59+25zKAAAAAAAgCxq1ZwnXX311TF48OB44okn4vjjj4+IiIULF8af//zn+N3vfpc0INCyuo+ft9VzZaX5mNYvorxiflRW57a6buXUYYWIBgAAAACw3WnWjpcjjzwylixZEt26dYtf/vKX8d///d/Rs2fP+Mtf/hKf//znU2cEAAAAAADIhGbteImI6NOnT9xxxx0pswAAAAAAAGRas4uXmpqaeP755+P111+PmpqaOueOPvrobQ4GAAAAAACQNc0qXv70pz/FmWeeGS+++GLk8/k653K5XFRXVycJBwAAAAAAkCXNKl6+/e1vxxFHHBHz5s2LvffeO3K5rd9UGwAAAAAAoFg0q3h57rnn4p577omePXumzgMAAAAAAJBZJc15Uv/+/eP5559PnQUAAAAAACDTmrXj5YILLohLLrkkXnvttejdu3e0bt26zvlDDz00STgAAAAAAIAsaVbx8uUvfzkiIs4555zaY7lcLvL5fORyuaiurk6TDgAAAAAAIEOaVbysWLEidQ4AAAAA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uVxcfPHFcfXVV0evXr2iR48eceWVV0aXLl1i+PDhLfUyAQAAAACAItDixcvpp58eb7zxRkycODFee+216NOnT9x3332x1157RUTESy+9FCUl/7sxZ+DAgTFnzpy44oor4vLLL49evXrF3Llzo7y8vHbNZZddFhs2bIhvfvOb8dZbb8VRRx0V9913X7Rt2/YTf33FpqysLCZNmrTFV7dtTzOzkDErM7OQsZhnZiFjMc/MQsaszMxCxmKemYWMxTwzCxmzMjMLGYt5ZhYyZmVmFjIW88wsZCzmmVnImJWZWchYzDOzkDErM7OQkfrl8vl8vqVDAAAAAAAA7Aha9B4vAAAAAAAAOxLFCwAAAAAAQCKKFwAAAAAAgEQULwAAAAAAAIkoXgAAAAAAABJRvLDdev7552P+/Pnx7rvvRkREPp9v4URQWKtXr47XXnutpWMABeLfY9uuuro6Vq9eHW+88UZLR2EH4Pdk8VmxYkW8//77yedu75+lQrzm7V1lZWW88MILUVlZ2dJRmmx7/zxtiz/84Q/1fh7ff//9+MMf/tACiT7ejvx+UL9FixbV/jnUjuzqq6+OFStWtHQMGsk/i7JJ8UKzPf3003HrrbfGM888ExERzzzzTJx//vlxzjnnxP3339/suWvWrInBgwfH/vvvH1/4whfi1VdfjYiIb3zjG3HJJZc0ed5Pf/rTGDVqVNx6660REXHXXXfFQQcdFPvuu29MmjSpWRn/9re/xXe+8534zGc+E3vvvXfsvffe8ZnPfCa+853vxN/+9rcmz0t9LV9//fU6v3788cdj1KhRceSRR8ZXvvKVWLRoUZNnftSGDRvi1ltvje9973sxc+bMWLNmzTbP/KiXX345zjnnnCY954ILLoiHHnooaY533303/vjHP9b73r733nvxs5/9rEnz1q5dG1/5ylfiX/7lX+L888+P6urqOPfcc2PvvfeOrl27xsCBA2s/982V6v1J/dob0pz3e/ny5XX+Y/HnP/95HHnkkdGtW7c46qij4s4772xyjkJ8huqzadOm+Mc//hEvvfRSnUcqTz/9dOy7775Nes4TTzwRZ511Vuy7776x0047Rfv27aN3795x5ZVXxvr165uV44knnoirr746brjhhnjzzTfrnFu/fn2T3/OIiDfffDOmTZsWp556agwYMCAGDBgQp556avzgBz9o9h/Iz5w5M84666zaz8zPf/7zOPjgg+PAAw+Myy+/PMkfWpWVlcXTTz/d7OcvWLAgJk2aVPvvhT/84Q9x0kknxXHHHVf777imevXVV2PixIlx3HHHxUEHHRSHHHJIfPGLX4ybb745qqurm511a1544YU47rjjmvy8efPmxdFHHx3t27ePLl26ROfOnaNTp07x9a9/vVm/bwrxugvxz8tC/LdWIV57oX7//Od//udWz40bN65ZMz9sW39PFvqfG6tWrYpJkybFV7/61bj00ktrPwepNOffu717944pU6bEyy+/nDTLhxXyvzEPOOCAeO6555r13MrKyrj00kvj6KOPjn/7t3+LiA/+0KpDhw6x8847x5lnntnsf1fWpznvz3333RdPPvlkRETU1NTElClTomvXrlFWVhaf/vSnY+rUqcn/4KY5OSM++GfRL37xi7j33ntj06ZNdc5t2LAhrrrqqkbPuu2222LJkiUR8cE/b7/xjW9E+/btY//9948OHTrEt7/97W0qYO6555447bTT4nOf+1wcfvjhdR7N9YMf/KDe49XV1XHmmWc2asaPf/zjRj+aqlD/fXDsscfG2rVrtzi+bt26OPbYY5s8r2fPnlFRURH/8z//0+xMH2db/13RkOb+/vmwjRs3xjPPPBN/+ctf6jyaq7q6Ou65556YMmVKTJkyJe655//X3nmHR1F9//+9m94TUgghhAQSQg1VajD0IhApAtI7Spf6URAIiiBCUJAuioD0ooBURXovSegtlERFqaELKef3B7/sN0sg7EzmZvey5/U88zzZO5v3nnPvuWfuzJ25s1rV8UzEeF2E5sto0KABrl69mmsdLY5nzZo1w+LFi4VMBK1atQqhoaGoXr36S8/VlCDqHFrL8bUIG0Vcj3gVanNRvnz5DG3r5eWFfPnyvXILCgpC48aNc5VDmBcghlHB5s2byd7envLly0eOjo60efNm8vX1pXr16lGdOnXIxsaGtm/frkq7U6dO1LBhQ0pOTiZXV1dKTEwkIqItW7ZQyZIlFWl9/fXX5OLiQi1btqQCBQrQ+PHjydvbm8aPH0/jxo0jd3d3mjt3riLNTZs2kb29PVWtWpXGjh1Ls2bNolmzZtHYsWOpevXq5ODgQFu2bDFZT0Rd6vV6+vfff4mIaN++fWRnZ0dRUVE0fPhwql+/Ptna2tKuXbsUaZYoUYJu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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": 17, "metadata": {}, "outputs": [ { "data": { "text/markdown": [ "```sql\n", "DROP TABLE IF EXISTS \"FEATURE_1_2\";\n", "\n", "CREATE TABLE \"FEATURE_1_2\" AS\n", "SELECT SUM( \n", " CASE\n", " WHEN ( t2.\"zmkour\" IN ( '7' ) ) AND ( t1.\"reference_date\" > 852038400.000000 ) THEN COALESCE( t1.\"age\" - 58.55541532813217, 0.0 ) * 0.6992075915192288 + COALESCE( t1.\"participation\" - -1887.414410279945, 0.0 ) * -0.3722162052975991 + COALESCE( t1.\"vyska\" - 174.626548875631, 0.0 ) * 0.002072665325539906 + COALESCE( t1.\"vaha\" - 80.15500229463056, 0.0 ) * 0.7135789936249097 + COALESCE( t1.\"syst1\" - 132.0390087195962, 0.0 ) * 0.6204509957556447 + COALESCE( t1.\"diast1\" - 83.58329508949059, 0.0 ) * -0.2852251406284317 + COALESCE( t1.\"syst2\" - 129.4263423588802, 0.0 ) * 0.5416045970884422 + COALESCE( t1.\"diast2\" - 83.2121385956861, 0.0 ) * -0.7691376230609942 + COALESCE( t1.\"tric\" - 9.410853602569986, 0.0 ) * -0.4921979178739925 + COALESCE( t1.\"subsc\" - 18.22670949977054, 0.0 ) * 0.2235547808836321 + COALESCE( t1.\"chlst\" - 232.7238412115649, 0.0 ) * -0.2305456390285043 + COALESCE( t1.\"trigl\" - 134.5320100963745, 0.0 ) * -0.08732404144815611 + COALESCE( t1.\"koureni\" - 3.382973841211565, 0.0 ) * 3.578257813757872 + COALESCE( t1.\"dobakour\" - 6.960188159706287, 0.0 ) * 3.420605423460954 + COALESCE( t1.\"byvkurak\" - 1.689421753097751, 0.0 ) * 1.468999926745384 + COALESCE( t1.\"pivomn\" - 1.800826067003213, 0.0 ) * 2.006077827378471 + COALESCE( t1.\"vinomn\" - 4.298990362551629, 0.0 ) * 1.509295328270136 + COALESCE( t1.\"lihmn\" - 6.948141349242772, 0.0 ) * 1.689453613870151 + COALESCE( t1.\"kava\" - 1.919343735658559, 0.0 ) * 15.33082510657582 + COALESCE( t1.\"caj\" - 4.731642955484167, 0.0 ) * 10.97404738286759 + COALESCE( t1.\"cukr\" - 4.495869664983938, 0.0 ) * 1.130351262906143 + COALESCE( t1.\"reference_date\" - 614493572.4644332, 0.0 ) * -1.551420482850177e-08 + COALESCE( t1.\"entry_date\" - 230484053.9697109, 0.0 ) * -2.196562174142811e-07 + COALESCE( t2.\"hmot\" - 81.27387640449439, 0.0 ) * 0.2535134048176608 + COALESCE( t2.\"hdlmg\" - 35.46147672552167, 0.0 ) * -0.04134495275193414 + COALESCE( t2.\"chlst\" - 5.892755818619529, 0.0 ) * -10.72183117055155 + COALESCE( t2.\"hdl\" - 0.9149819422150931, 0.0 ) * -1.580592374193315 + COALESCE( t2.\"ldl\" - 2.463498194221503, 0.0 ) * -1.709624186115308 + COALESCE( t2.\"control_date\" - 533301113.6436597, 0.0 ) * -6.539468045584373e-08 + 6.5967578763439345e+00\n", " WHEN ( t2.\"zmkour\" IN ( '7' ) ) AND ( t1.\"reference_date\" <= 852038400.000000 OR t1.\"reference_date\" IS NULL ) THEN COALESCE( t1.\"age\" - 58.55541532813217, 0.0 ) * 7.009110879137228 + COALESCE( t1.\"participation\" - -1887.414410279945, 0.0 ) * 13.11693059229238 + COALESCE( t1.\"vyska\" - 174.626548875631, 0.0 ) * 1.269893142479568 + COALESCE( t1.\"vaha\" - 80.15500229463056, 0.0 ) * -3.162664037823355 + COALESCE( t1.\"syst1\" - 132.0390087195962, 0.0 ) * 0.3787421899628546 + COALESCE( t1.\"diast1\" - 83.58329508949059, 0.0 ) * 1.971210134455975 + COALESCE( t1.\"syst2\" - 129.4263423588802, 0.0 ) * 0.6635424419434129 + COALESCE( t1.\"diast2\" - 83.2121385956861, 0.0 ) * -2.939270936123821 + COALESCE( t1.\"tric\" - 9.410853602569986, 0.0 ) * 2.383223854209837 + COALESCE( t1.\"subsc\" - 18.22670949977054, 0.0 ) * 1.498266105418248 + COALESCE( t1.\"chlst\" - 232.7238412115649, 0.0 ) * -0.0517718309107393 + COALESCE( t1.\"trigl\" - 134.5320100963745, 0.0 ) * 0.2276783275568421 + COALESCE( t1.\"koureni\" - 3.382973841211565, 0.0 ) * -4.23254041935678 + COALESCE( t1.\"dobakour\" - 6.960188159706287, 0.0 ) * 5.719150573247517 + COALESCE( t1.\"byvkurak\" - 1.689421753097751, 0.0 ) * 2.70196864001066 + COALESCE( t1.\"pivomn\" - 1.800826067003213, 0.0 ) * 18.79720042999637 + COALESCE( t1.\"vinomn\" - 4.298990362551629, 0.0 ) * -10.93785280575887 + COALESCE( t1.\"lihmn\" - 6.948141349242772, 0.0 ) * -13.52764654128384 + COALESCE( t1.\"kava\" - 1.919343735658559, 0.0 ) * 15.62103938182056 + COALESCE( t1.\"caj\" - 4.731642955484167, 0.0 ) * -8.797933019568511 + COALESCE( t1.\"cukr\" - 4.495869664983938, 0.0 ) * -3.757872625493459 + COALESCE( t1.\"reference_date\" - 614493572.4644332, 0.0 ) * -6.356934996127425e-07 + COALESCE( t1.\"entry_date\" - 230484053.9697109, 0.0 ) * 5.640187513549882e-07 + COALESCE( t2.\"hmot\" - 81.27387640449439, 0.0 ) * 3.023356785615304 + COALESCE( t2.\"hdlmg\" - 35.46147672552167, 0.0 ) * -0.7240192100118329 + COALESCE( t2.\"chlst\" - 5.892755818619529, 0.0 ) * -4.024059582855235 + COALESCE( t2.\"hdl\" - 0.9149819422150931, 0.0 ) * -29.58919968380793 + COALESCE( t2.\"ldl\" - 2.463498194221503, 0.0 ) * 1.778411316422035 + COALESCE( t2.\"control_date\" - 533301113.6436597, 0.0 ) * 2.163236433930246e-07 + -7.9015375976371462e+00\n", " WHEN ( t2.\"zmkour\" NOT IN ( '7' ) OR t2.\"zmkour\" IS NULL ) AND ( t1.\"htrisk\" IN ( '6' ) ) THEN COALESCE( t1.\"age\" - 58.55541532813217, 0.0 ) * -3.397114537185319 + COALESCE( t1.\"participation\" - -1887.414410279945, 0.0 ) * -8.217148782839798 + COALESCE( t1.\"vyska\" - 174.626548875631, 0.0 ) * 0.8989975149085871 + COALESCE( t1.\"vaha\" - 80.15500229463056, 0.0 ) * -1.237315019051493 + COALESCE( t1.\"syst1\" - 132.0390087195962, 0.0 ) * -0.9928276153180301 + COALESCE( t1.\"diast1\" - 83.58329508949059, 0.0 ) * -2.788494436812396 + COALESCE( t1.\"syst2\" - 129.4263423588802, 0.0 ) * -0.4818397334334769 + COALESCE( t1.\"diast2\" - 83.2121385956861, 0.0 ) * 6.971936650721264 + COALESCE( t1.\"tric\" - 9.410853602569986, 0.0 ) * -3.694055970730235 + COALESCE( t1.\"subsc\" - 18.22670949977054, 0.0 ) * -5.857003884016523 + COALESCE( t1.\"chlst\" - 232.7238412115649, 0.0 ) * 2.110663998001987 + COALESCE( t1.\"trigl\" - 134.5320100963745, 0.0 ) * 0.1191325417763164 + COALESCE( t1.\"koureni\" - 3.382973841211565, 0.0 ) * -19.83587241194438 + COALESCE( t1.\"dobakour\" - 6.960188159706287, 0.0 ) * -0.6739075204128018 + COALESCE( t1.\"byvkurak\" - 1.689421753097751, 0.0 ) * -2.401197249091638e-07 + COALESCE( t1.\"pivomn\" - 1.800826067003213, 0.0 ) * 43.42691366138832 + COALESCE( t1.\"vinomn\" - 4.298990362551629, 0.0 ) * -188.452548812023 + COALESCE( t1.\"lihmn\" - 6.948141349242772, 0.0 ) * 149.8317616555433 + COALESCE( t1.\"kava\" - 1.919343735658559, 0.0 ) * -7.92533116285952 + COALESCE( t1.\"caj\" - 4.731642955484167, 0.0 ) * 7.371945970513856 + COALESCE( t1.\"cukr\" - 4.495869664983938, 0.0 ) * -6.522018830745494 + COALESCE( t1.\"reference_date\" - 614493572.4644332, 0.0 ) * 3.705953810711698e-07 + COALESCE( t1.\"entry_date\" - 230484053.9697109, 0.0 ) * -1.783593808548376e-06 + COALESCE( t2.\"hmot\" - 81.27387640449439, 0.0 ) * -0.03696650252475624 + COALESCE( t2.\"hdlmg\" - 35.46147672552167, 0.0 ) * -0.8978599033836492 + COALESCE( t2.\"chlst\" - 5.892755818619529, 0.0 ) * -2.613193795898457 + COALESCE( t2.\"hdl\" - 0.9149819422150931, 0.0 ) * 33.10188686443065 + COALESCE( t2.\"ldl\" - 2.463498194221503, 0.0 ) * 2.062126624888299 + COALESCE( t2.\"control_date\" - 533301113.6436597, 0.0 ) * -5.886932876564901e-10 + -1.0081350693584685e+02\n", " WHEN ( t2.\"zmkour\" NOT IN ( '7' ) OR t2.\"zmkour\" IS NULL ) AND ( t1.\"htrisk\" NOT IN ( '6' ) OR t1.\"htrisk\" IS NULL ) THEN COALESCE( t1.\"age\" - 58.55541532813217, 0.0 ) * 0.002419801161207402 + COALESCE( t1.\"participation\" - -1887.414410279945, 0.0 ) * -0.06277853150672247 + COALESCE( t1.\"vyska\" - 174.626548875631, 0.0 ) * 0.002571038648386481 + COALESCE( t1.\"vaha\" - 80.15500229463056, 0.0 ) * -0.005578860882900542 + COALESCE( t1.\"syst1\" - 132.0390087195962, 0.0 ) * -0.001057898151656378 + COALESCE( t1.\"diast1\" - 83.58329508949059, 0.0 ) * 0.004014557721064409 + COALESCE( t1.\"syst2\" - 129.4263423588802, 0.0 ) * 0.001873173639385572 + COALESCE( t1.\"diast2\" - 83.2121385956861, 0.0 ) * 0.0002124825706128939 + COALESCE( t1.\"tric\" - 9.410853602569986, 0.0 ) * -0.002640732624754488 + COALESCE( t1.\"subsc\" - 18.22670949977054, 0.0 ) * 0.0001474535382830381 + COALESCE( t1.\"chlst\" - 232.7238412115649, 0.0 ) * -0.0001256948379644612 + COALESCE( t1.\"trigl\" - 134.5320100963745, 0.0 ) * -3.474245058868025e-05 + COALESCE( t1.\"koureni\" - 3.382973841211565, 0.0 ) * 0.0132708577852937 + COALESCE( t1.\"dobakour\" - 6.960188159706287, 0.0 ) * 0.002454283595539609 + COALESCE( t1.\"byvkurak\" - 1.689421753097751, 0.0 ) * -0.0003505117806351746 + COALESCE( t1.\"pivomn\" - 1.800826067003213, 0.0 ) * 0.02562835710639392 + COALESCE( t1.\"vinomn\" - 4.298990362551629, 0.0 ) * -0.005171308330700418 + COALESCE( t1.\"lihmn\" - 6.948141349242772, 0.0 ) * -0.004672335054095883 + COALESCE( t1.\"kava\" - 1.919343735658559, 0.0 ) * 0.02581134186668081 + COALESCE( t1.\"caj\" - 4.731642955484167, 0.0 ) * -0.01154259733921239 + COALESCE( t1.\"cukr\" - 4.495869664983938, 0.0 ) * 0.002194525846818011 + COALESCE( t1.\"reference_date\" - 614493572.4644332, 0.0 ) * 3.411798694161753e-09 + COALESCE( t1.\"entry_date\" - 230484053.9697109, 0.0 ) * -2.075596685480708e-09 + COALESCE( t2.\"hmot\" - 81.27387640449439, 0.0 ) * 0.004478272836447239 + COALESCE( t2.\"hdlmg\" - 35.46147672552167, 0.0 ) * -0.002438061446690539 + COALESCE( t2.\"chlst\" - 5.892755818619529, 0.0 ) * -0.02099226608599071 + COALESCE( t2.\"hdl\" - 0.9149819422150931, 0.0 ) * 0.03134631902567388 + COALESCE( t2.\"ldl\" - 2.463498194221503, 0.0 ) * 0.02487247493931399 + COALESCE( t2.\"control_date\" - 533301113.6436597, 0.0 ) * -2.655718509874403e-09 + -2.7439158467228797e-01\n", " ELSE NULL\n", " END\n", ") AS \"feature_1_2\",\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_2\";\\n\\nCREATE TABLE \"FEATURE_1_2\" AS\\nSELECT SUM( \\n CASE\\n WHEN ( t2.\"zmkour\" IN ( \\'7\\' ) ) AND ( t1.\"reference_date\" > 852038400.000000 ) THEN COALESCE( t1.\"age\" - 58.55541532813217, 0.0 ) * 0.6992075915192288 + COALESCE( t1.\"participation\" - -1887.414410279945, 0.0 ) * -0.3722162052975991 + COALESCE( t1.\"vyska\" - 174.626548875631, 0.0 ) * 0.002072665325539906 + COALESCE( t1.\"vaha\" - 80.15500229463056, 0.0 ) * 0.7135789936249097 + COALESCE( t1.\"syst1\" - 132.0390087195962, 0.0 ) * 0.6204509957556447 + COALESCE( t1.\"diast1\" - 83.58329508949059, 0.0 ) * -0.2852251406284317 + COALESCE( t1.\"syst2\" - 129.4263423588802, 0.0 ) * 0.5416045970884422 + COALESCE( t1.\"diast2\" - 83.2121385956861, 0.0 ) * -0.7691376230609942 + COALESCE( t1.\"tric\" - 9.410853602569986, 0.0 ) * -0.4921979178739925 + COALESCE( t1.\"subsc\" - 18.22670949977054, 0.0 ) * 0.2235547808836321 + COALESCE( t1.\"chlst\" - 232.7238412115649, 0.0 ) * -0.2305456390285043 + COALESCE( t1.\"trigl\" - 134.5320100963745, 0.0 ) * -0.08732404144815611 + COALESCE( t1.\"koureni\" - 3.382973841211565, 0.0 ) * 3.578257813757872 + COALESCE( t1.\"dobakour\" - 6.960188159706287, 0.0 ) * 3.420605423460954 + COALESCE( t1.\"byvkurak\" - 1.689421753097751, 0.0 ) * 1.468999926745384 + COALESCE( t1.\"pivomn\" - 1.800826067003213, 0.0 ) * 2.006077827378471 + COALESCE( t1.\"vinomn\" - 4.298990362551629, 0.0 ) * 1.509295328270136 + COALESCE( t1.\"lihmn\" - 6.948141349242772, 0.0 ) * 1.689453613870151 + COALESCE( t1.\"kava\" - 1.919343735658559, 0.0 ) * 15.33082510657582 + COALESCE( t1.\"caj\" - 4.731642955484167, 0.0 ) * 10.97404738286759 + COALESCE( t1.\"cukr\" - 4.495869664983938, 0.0 ) * 1.130351262906143 + COALESCE( t1.\"reference_date\" - 614493572.4644332, 0.0 ) * -1.551420482850177e-08 + COALESCE( t1.\"entry_date\" - 230484053.9697109, 0.0 ) * -2.196562174142811e-07 + COALESCE( t2.\"hmot\" - 81.27387640449439, 0.0 ) * 0.2535134048176608 + COALESCE( t2.\"hdlmg\" - 35.46147672552167, 0.0 ) * -0.04134495275193414 + COALESCE( t2.\"chlst\" - 5.892755818619529, 0.0 ) * -10.72183117055155 + COALESCE( t2.\"hdl\" - 0.9149819422150931, 0.0 ) * -1.580592374193315 + COALESCE( t2.\"ldl\" - 2.463498194221503, 0.0 ) * -1.709624186115308 + COALESCE( t2.\"control_date\" - 533301113.6436597, 0.0 ) * -6.539468045584373e-08 + 6.5967578763439345e+00\\n WHEN ( t2.\"zmkour\" IN ( \\'7\\' ) ) AND ( t1.\"reference_date\" <= 852038400.000000 OR t1.\"reference_date\" IS NULL ) THEN COALESCE( t1.\"age\" - 58.55541532813217, 0.0 ) * 7.009110879137228 + COALESCE( t1.\"participation\" - -1887.414410279945, 0.0 ) * 13.11693059229238 + COALESCE( t1.\"vyska\" - 174.626548875631, 0.0 ) * 1.269893142479568 + COALESCE( t1.\"vaha\" - 80.15500229463056, 0.0 ) * -3.162664037823355 + COALESCE( t1.\"syst1\" - 132.0390087195962, 0.0 ) * 0.3787421899628546 + COALESCE( t1.\"diast1\" - 83.58329508949059, 0.0 ) * 1.971210134455975 + COALESCE( t1.\"syst2\" - 129.4263423588802, 0.0 ) * 0.6635424419434129 + COALESCE( t1.\"diast2\" - 83.2121385956861, 0.0 ) * -2.939270936123821 + COALESCE( t1.\"tric\" - 9.410853602569986, 0.0 ) * 2.383223854209837 + COALESCE( t1.\"subsc\" - 18.22670949977054, 0.0 ) * 1.498266105418248 + COALESCE( t1.\"chlst\" - 232.7238412115649, 0.0 ) * -0.0517718309107393 + COALESCE( t1.\"trigl\" - 134.5320100963745, 0.0 ) * 0.2276783275568421 + COALESCE( t1.\"koureni\" - 3.382973841211565, 0.0 ) * -4.23254041935678 + COALESCE( t1.\"dobakour\" - 6.960188159706287, 0.0 ) * 5.719150573247517 + COALESCE( t1.\"byvkurak\" - 1.689421753097751, 0.0 ) * 2.70196864001066 + COALESCE( t1.\"pivomn\" - 1.800826067003213, 0.0 ) * 18.79720042999637 + COALESCE( t1.\"vinomn\" - 4.298990362551629, 0.0 ) * -10.93785280575887 + COALESCE( t1.\"lihmn\" - 6.948141349242772, 0.0 ) * -13.52764654128384 + COALESCE( t1.\"kava\" - 1.919343735658559, 0.0 ) * 15.62103938182056 + COALESCE( t1.\"caj\" - 4.731642955484167, 0.0 ) * -8.797933019568511 + COALESCE( t1.\"cukr\" - 4.495869664983938, 0.0 ) * -3.757872625493459 + COALESCE( t1.\"reference_date\" - 614493572.4644332, 0.0 ) * -6.356934996127425e-07 + COALESCE( t1.\"entry_date\" - 230484053.9697109, 0.0 ) * 5.640187513549882e-07 + COALESCE( t2.\"hmot\" - 81.27387640449439, 0.0 ) * 3.023356785615304 + COALESCE( t2.\"hdlmg\" - 35.46147672552167, 0.0 ) * -0.7240192100118329 + COALESCE( t2.\"chlst\" - 5.892755818619529, 0.0 ) * -4.024059582855235 + COALESCE( t2.\"hdl\" - 0.9149819422150931, 0.0 ) * -29.58919968380793 + COALESCE( t2.\"ldl\" - 2.463498194221503, 0.0 ) * 1.778411316422035 + COALESCE( t2.\"control_date\" - 533301113.6436597, 0.0 ) * 2.163236433930246e-07 + -7.9015375976371462e+00\\n WHEN ( t2.\"zmkour\" NOT IN ( \\'7\\' ) OR t2.\"zmkour\" IS NULL ) AND ( t1.\"htrisk\" IN ( \\'6\\' ) ) THEN COALESCE( t1.\"age\" - 58.55541532813217, 0.0 ) * -3.397114537185319 + COALESCE( t1.\"participation\" - -1887.414410279945, 0.0 ) * -8.217148782839798 + COALESCE( t1.\"vyska\" - 174.626548875631, 0.0 ) * 0.8989975149085871 + COALESCE( t1.\"vaha\" - 80.15500229463056, 0.0 ) * -1.237315019051493 + COALESCE( t1.\"syst1\" - 132.0390087195962, 0.0 ) * -0.9928276153180301 + COALESCE( t1.\"diast1\" - 83.58329508949059, 0.0 ) * -2.788494436812396 + COALESCE( t1.\"syst2\" - 129.4263423588802, 0.0 ) * -0.4818397334334769 + COALESCE( t1.\"diast2\" - 83.2121385956861, 0.0 ) * 6.971936650721264 + COALESCE( t1.\"tric\" - 9.410853602569986, 0.0 ) * -3.694055970730235 + COALESCE( t1.\"subsc\" - 18.22670949977054, 0.0 ) * -5.857003884016523 + COALESCE( t1.\"chlst\" - 232.7238412115649, 0.0 ) * 2.110663998001987 + COALESCE( t1.\"trigl\" - 134.5320100963745, 0.0 ) * 0.1191325417763164 + COALESCE( t1.\"koureni\" - 3.382973841211565, 0.0 ) * -19.83587241194438 + COALESCE( t1.\"dobakour\" - 6.960188159706287, 0.0 ) * -0.6739075204128018 + COALESCE( t1.\"byvkurak\" - 1.689421753097751, 0.0 ) * -2.401197249091638e-07 + COALESCE( t1.\"pivomn\" - 1.800826067003213, 0.0 ) * 43.42691366138832 + COALESCE( t1.\"vinomn\" - 4.298990362551629, 0.0 ) * -188.452548812023 + COALESCE( t1.\"lihmn\" - 6.948141349242772, 0.0 ) * 149.8317616555433 + COALESCE( t1.\"kava\" - 1.919343735658559, 0.0 ) * -7.92533116285952 + COALESCE( t1.\"caj\" - 4.731642955484167, 0.0 ) * 7.371945970513856 + COALESCE( t1.\"cukr\" - 4.495869664983938, 0.0 ) * -6.522018830745494 + COALESCE( t1.\"reference_date\" - 614493572.4644332, 0.0 ) * 3.705953810711698e-07 + COALESCE( t1.\"entry_date\" - 230484053.9697109, 0.0 ) * -1.783593808548376e-06 + COALESCE( t2.\"hmot\" - 81.27387640449439, 0.0 ) * -0.03696650252475624 + COALESCE( t2.\"hdlmg\" - 35.46147672552167, 0.0 ) * -0.8978599033836492 + COALESCE( t2.\"chlst\" - 5.892755818619529, 0.0 ) * -2.613193795898457 + COALESCE( t2.\"hdl\" - 0.9149819422150931, 0.0 ) * 33.10188686443065 + COALESCE( t2.\"ldl\" - 2.463498194221503, 0.0 ) * 2.062126624888299 + COALESCE( t2.\"control_date\" - 533301113.6436597, 0.0 ) * -5.886932876564901e-10 + -1.0081350693584685e+02\\n WHEN ( t2.\"zmkour\" NOT IN ( \\'7\\' ) OR t2.\"zmkour\" IS NULL ) AND ( t1.\"htrisk\" NOT IN ( \\'6\\' ) OR t1.\"htrisk\" IS NULL ) THEN COALESCE( t1.\"age\" - 58.55541532813217, 0.0 ) * 0.002419801161207402 + COALESCE( t1.\"participation\" - -1887.414410279945, 0.0 ) * -0.06277853150672247 + COALESCE( t1.\"vyska\" - 174.626548875631, 0.0 ) * 0.002571038648386481 + COALESCE( t1.\"vaha\" - 80.15500229463056, 0.0 ) * -0.005578860882900542 + COALESCE( t1.\"syst1\" - 132.0390087195962, 0.0 ) * -0.001057898151656378 + COALESCE( t1.\"diast1\" - 83.58329508949059, 0.0 ) * 0.004014557721064409 + COALESCE( t1.\"syst2\" - 129.4263423588802, 0.0 ) * 0.001873173639385572 + COALESCE( t1.\"diast2\" - 83.2121385956861, 0.0 ) * 0.0002124825706128939 + COALESCE( t1.\"tric\" - 9.410853602569986, 0.0 ) * -0.002640732624754488 + COALESCE( t1.\"subsc\" - 18.22670949977054, 0.0 ) * 0.0001474535382830381 + COALESCE( t1.\"chlst\" - 232.7238412115649, 0.0 ) * -0.0001256948379644612 + COALESCE( t1.\"trigl\" - 134.5320100963745, 0.0 ) * -3.474245058868025e-05 + COALESCE( t1.\"koureni\" - 3.382973841211565, 0.0 ) * 0.0132708577852937 + COALESCE( t1.\"dobakour\" - 6.960188159706287, 0.0 ) * 0.002454283595539609 + COALESCE( t1.\"byvkurak\" - 1.689421753097751, 0.0 ) * -0.0003505117806351746 + COALESCE( t1.\"pivomn\" - 1.800826067003213, 0.0 ) * 0.02562835710639392 + COALESCE( t1.\"vinomn\" - 4.298990362551629, 0.0 ) * -0.005171308330700418 + COALESCE( t1.\"lihmn\" - 6.948141349242772, 0.0 ) * -0.004672335054095883 + COALESCE( t1.\"kava\" - 1.919343735658559, 0.0 ) * 0.02581134186668081 + COALESCE( t1.\"caj\" - 4.731642955484167, 0.0 ) * -0.01154259733921239 + COALESCE( t1.\"cukr\" - 4.495869664983938, 0.0 ) * 0.002194525846818011 + COALESCE( t1.\"reference_date\" - 614493572.4644332, 0.0 ) * 3.411798694161753e-09 + COALESCE( t1.\"entry_date\" - 230484053.9697109, 0.0 ) * -2.075596685480708e-09 + COALESCE( t2.\"hmot\" - 81.27387640449439, 0.0 ) * 0.004478272836447239 + COALESCE( t2.\"hdlmg\" - 35.46147672552167, 0.0 ) * -0.002438061446690539 + COALESCE( t2.\"chlst\" - 5.892755818619529, 0.0 ) * -0.02099226608599071 + COALESCE( t2.\"hdl\" - 0.9149819422150931, 0.0 ) * 0.03134631902567388 + COALESCE( t2.\"ldl\" - 2.463498194221503, 0.0 ) * 0.02487247493931399 + COALESCE( t2.\"control_date\" - 533301113.6436597, 0.0 ) * -2.655718509874403e-09 + -2.7439158467228797e-01\\n ELSE NULL\\n END\\n) AS \"feature_1_2\",\\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": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pipe1.features.to_sql()[pipe1.features.sort(by=\"importances\")[0].name]" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/markdown": [ "```sql\n", "\n", "```" ], "text/plain": [ "''" ] }, "execution_count": 18, "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": 19, "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": 20, "metadata": {}, "outputs": [], "source": [ "pipe2.features.to_sql(dialect=getml.pipeline.dialect.spark_sql).save(\"atherosclerosis_pipeline_spark\", remove=True)" ] }, { "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.8.18" }, "toc": { "base_numbering": 1 }, "vscode": { "interpreter": { "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" } } }, "nbformat": 4, "nbformat_minor": 4 }