{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# MovieLens - Predicting a user's gender based on the movies they have watched\n", "\n", "In this notebook, we will apply getML to a dataset that is often used for benchmarking in the relational learning literature: The MovieLens dataset.\n", "\n", "Summary:\n", "\n", "- Prediction type: __Classification model__\n", "- Domain: __Entertainment__\n", "- Prediction target: __The gender of a user__ \n", "- Population size: __6039__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Background\n", "\n", "The MovieLens dataset is often used in the relational learning literature has a benchmark for newly developed algorithms. Following the tradition, we benchmark getML's own algorithms on this dataset as well. The task is to predict a user's gender based on the movies they have watched.\n", "\n", "\n", "It has been downloaded from the [CTU Prague relational learning repository](https://relational.fit.cvut.cz/dataset/MovieLens) (Motl and Schulte, 2015) (Now residing at [relational-data.org](https://relational-data.org/dataset/MovieLens).)." ] }, { "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 'MovieLens'\n" ] } ], "source": [ "import copy\n", "import os\n", "os.environ[\"PYARROW_IGNORE_TIMEZONE\"] = \"1\"\n", "from pathlib import Path\n", "\n", "from urllib import request\n", "\n", "import numpy as np\n", "import pandas as pd\n", "from IPython.display import Image\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\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('MovieLens')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Loading data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1.1 Download from source\n", "\n", "We begin by downloading the data from the source file:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Connection(dbname='imdb_MovieLens',\n", " dialect='mysql',\n", " host='db.relational-data.org',\n", " port=3306)" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "conn = getml.database.connect_mysql(\n", " host=\"db.relational-data.org\",\n", " dbname=\"imdb_MovieLens\",\n", " port=3306,\n", " user=\"guest\",\n", " password=\"relational\"\n", ")\n", "\n", "conn" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def load_if_needed(name):\n", " \"\"\"\n", " Loads the data from the relational learning\n", " repository, if the data frame has not already\n", " been loaded.\n", " \"\"\"\n", " if not getml.data.exists(name):\n", " data_frame = getml.data.DataFrame.from_db(\n", " name=name,\n", " table_name=name,\n", " conn=conn\n", " )\n", " data_frame.save()\n", " else:\n", " data_frame = getml.data.load_data_frame(name)\n", " return data_frame" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "users = load_if_needed(\"users\")\n", "u2base = load_if_needed(\"u2base\")\n", "movies = load_if_needed(\"movies\")\n", "movies2directors = load_if_needed(\"movies2directors\")\n", "directors = load_if_needed(\"directors\")\n", "movies2actors = load_if_needed(\"movies2actors\")\n", "actors = load_if_needed(\"actors\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1.2 Prepare data for getML" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "getML requires that we define *roles* for each of the columns." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "users[\"target\"] = (users.u_gender == 'F')" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
name useridtargetoccupation ageu_gender
rolejoin_keytargetcategoricalnumericalunused_string
01\n", " 1 \n", " 2\n", " 1 \n", " F
151\n", " 1 \n", " 2\n", " 1 \n", " F
275\n", " 1 \n", " 2\n", " 1 \n", " F
386\n", " 1 \n", " 2\n", " 1 \n", " F
499\n", " 1 \n", " 2\n", " 1 \n", " F
...\n", " ... \n", " ...\n", " ... \n", " ...
60345658\n", " 0 \n", " 5\n", " 56 \n", " M
60355669\n", " 0 \n", " 5\n", " 56 \n", " M
60365703\n", " 0 \n", " 5\n", " 56 \n", " M
60375948\n", " 0 \n", " 5\n", " 56 \n", " M
60385980\n", " 0 \n", " 5\n", " 56 \n", " M
\n", "\n", "

\n", " 6039 rows x 5 columns
\n", " memory usage: 0.21 MB
\n", " name: users
\n", " type: getml.DataFrame
\n", " \n", "

\n" ], "text/plain": [ "name userid target occupation age u_gender \n", "role join_key target categorical numerical unused_string\n", " 0 1 1 2 1 F \n", " 1 51 1 2 1 F \n", " 2 75 1 2 1 F \n", " 3 86 1 2 1 F \n", " 4 99 1 2 1 F \n", " ... ... ... ... ... \n", "6034 5658 0 5 56 M \n", "6035 5669 0 5 56 M \n", "6036 5703 0 5 56 M \n", "6037 5948 0 5 56 M \n", "6038 5980 0 5 56 M \n", "\n", "\n", "6039 rows x 5 columns\n", "memory usage: 0.21 MB\n", "type: getml.DataFrame" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "users.set_role(\"userid\", getml.data.roles.join_key)\n", "users.set_role(\"age\", getml.data.roles.numerical)\n", "users.set_role(\"occupation\", getml.data.roles.categorical)\n", "users.set_role(\"target\", getml.data.roles.target)\n", "\n", "users.save()" ] }, { "cell_type": "code", "execution_count": 7, "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", "
name userid movieid rating
rolejoin_keyjoin_keynumerical
021964242\n", " 1 \n", "
122219779\n", " 1 \n", "
231856939\n", " 1 \n", "
342273044\n", " 1 \n", "
451681655\n", " 1 \n", "
......\n", " ... \n", "
99615460402560616\n", " 5 \n", "
99615560402564194\n", " 5 \n", "
99615660402581228\n", " 5 \n", "
99615760402581428\n", " 5 \n", "
99615860402593112\n", " 5 \n", "
\n", "\n", "

\n", " 996159 rows x 3 columns
\n", " memory usage: 15.94 MB
\n", " name: u2base
\n", " type: getml.DataFrame
\n", " \n", "

\n" ], "text/plain": [ " name userid movieid rating\n", " role join_key join_key numerical\n", " 0 2 1964242 1\n", " 1 2 2219779 1\n", " 2 3 1856939 1\n", " 3 4 2273044 1\n", " 4 5 1681655 1\n", " ... ... ...\n", "996154 6040 2560616 5\n", "996155 6040 2564194 5\n", "996156 6040 2581228 5\n", "996157 6040 2581428 5\n", "996158 6040 2593112 5\n", "\n", "\n", "996159 rows x 3 columns\n", "memory usage: 15.94 MB\n", "type: getml.DataFrame" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "u2base.set_role([\"userid\", \"movieid\"], getml.data.roles.join_key)\n", "u2base.set_role(\"rating\", getml.data.roles.numerical)\n", "\n", "u2base.save()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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 movieidisEnglish country yearrunningtime
rolejoin_keycategoricalcategoricalnumerical numerical
01672052Tother\n", " 3 \n", " \n", " 2 \n", "
11672111Tother\n", " 4 \n", " \n", " 2 \n", "
21672580TUSA\n", " 4 \n", " \n", " 3 \n", "
31672716TUSA\n", " 4 \n", " \n", " 2 \n", "
41672946TUSA\n", " 4 \n", " \n", " 0 \n", "
.........\n", " ... \n", " \n", " ... \n", "
38272591814Tother\n", " 4 \n", " \n", " 2 \n", "
38282592334TUSA\n", " 4 \n", " \n", " 2 \n", "
38292592963FFrance\n", " 2 \n", " \n", " 2 \n", "
38302593112TUSA\n", " 4 \n", " \n", " 1 \n", "
38312593313Fother\n", " 4 \n", " \n", " 3 \n", "
\n", "\n", "

\n", " 3832 rows x 5 columns
\n", " memory usage: 0.11 MB
\n", " name: movies
\n", " type: getml.DataFrame
\n", " \n", "

\n" ], "text/plain": [ "name movieid isEnglish country year runningtime\n", "role join_key categorical categorical numerical numerical\n", " 0 1672052 T other 3 2\n", " 1 1672111 T other 4 2\n", " 2 1672580 T USA 4 3\n", " 3 1672716 T USA 4 2\n", " 4 1672946 T USA 4 0\n", " ... ... ... ... ...\n", "3827 2591814 T other 4 2\n", "3828 2592334 T USA 4 2\n", "3829 2592963 F France 2 2\n", "3830 2593112 T USA 4 1\n", "3831 2593313 F other 4 3\n", "\n", "\n", "3832 rows x 5 columns\n", "memory usage: 0.11 MB\n", "type: getml.DataFrame" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "movies.set_role(\"movieid\", getml.data.roles.join_key)\n", "movies.set_role([\"year\", \"runningtime\"], getml.data.roles.numerical)\n", "movies.set_role([\"isEnglish\", \"country\"], getml.data.roles.categorical)\n", "\n", "movies.save()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
name movieiddirectoridgenre
rolejoin_key join_keycategorical
0167211154934Action
11672946188940Action
21679461179783Action
31691387291700Action
4169330514663Action
.........
41362570825265215Other
41372572478149311Other
41382577062304827Other
41392590181270707Other
4140259181457348Other
\n", "\n", "

\n", " 4141 rows x 3 columns
\n", " memory usage: 0.05 MB
\n", " name: movies2directors
\n", " type: getml.DataFrame
\n", " \n", "

\n" ], "text/plain": [ "name movieid directorid genre \n", "role join_key join_key categorical\n", " 0 1672111 54934 Action \n", " 1 1672946 188940 Action \n", " 2 1679461 179783 Action \n", " 3 1691387 291700 Action \n", " 4 1693305 14663 Action \n", " ... ... ... \n", "4136 2570825 265215 Other \n", "4137 2572478 149311 Other \n", "4138 2577062 304827 Other \n", "4139 2590181 270707 Other \n", "4140 2591814 57348 Other \n", "\n", "\n", "4141 rows x 3 columns\n", "memory usage: 0.05 MB\n", "type: getml.DataFrame" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "movies2directors.set_role([\"movieid\", \"directorid\"], getml.data.roles.join_key)\n", "movies2directors.set_role( \"genre\", getml.data.roles.categorical)\n", "\n", "movies2directors.save()" ] }, { "cell_type": "code", "execution_count": 10, "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", "
namedirectoridd_qualityavg_revenue
role join_keynumerical numerical
067\n", " 4 \n", " \n", " 1 \n", "
192\n", " 2 \n", " \n", " 3 \n", "
2284\n", " 4 \n", " \n", " 0 \n", "
3708\n", " 4 \n", " \n", " 1 \n", "
4746\n", " 4 \n", " \n", " 4 \n", "
...\n", " ... \n", " \n", " ... \n", "
2196305962\n", " 4 \n", " \n", " 4 \n", "
2197305978\n", " 4 \n", " \n", " 2 \n", "
2198306168\n", " 3 \n", " \n", " 2 \n", "
2199306343\n", " 4 \n", " \n", " 1 \n", "
2200306351\n", " 4 \n", " \n", " 1 \n", "
\n", "\n", "

\n", " 2201 rows x 3 columns
\n", " memory usage: 0.04 MB
\n", " name: directors
\n", " type: getml.DataFrame
\n", " \n", "

\n" ], "text/plain": [ "name directorid d_quality avg_revenue\n", "role join_key numerical numerical\n", " 0 67 4 1\n", " 1 92 2 3\n", " 2 284 4 0\n", " 3 708 4 1\n", " 4 746 4 4\n", " ... ... ...\n", "2196 305962 4 4\n", "2197 305978 4 2\n", "2198 306168 3 2\n", "2199 306343 4 1\n", "2200 306351 4 1\n", "\n", "\n", "2201 rows x 3 columns\n", "memory usage: 0.04 MB\n", "type: getml.DataFrame" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "directors.set_role(\"directorid\", getml.data.roles.join_key)\n", "directors.set_role([\"d_quality\", \"avg_revenue\"], getml.data.roles.numerical)\n", "\n", "directors.save()" ] }, { "cell_type": "code", "execution_count": 11, "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", "
name movieid actorid cast_num
rolejoin_keyjoin_keynumerical
01672580981535\n", " 0 \n", "
116729461094968\n", " 0 \n", "
21673647149985\n", " 0 \n", "
31673647261595\n", " 0 \n", "
41673647781357\n", " 0 \n", "
......\n", " ... \n", "
1383442593313947005\n", " 3 \n", "
13834525933131090590\n", " 3 \n", "
13834625933131347419\n", " 3 \n", "
13834725933132099917\n", " 3 \n", "
13834825933132633550\n", " 3 \n", "
\n", "\n", "

\n", " 138349 rows x 3 columns
\n", " memory usage: 2.21 MB
\n", " name: movies2actors
\n", " type: getml.DataFrame
\n", " \n", "

\n" ], "text/plain": [ " name movieid actorid cast_num\n", " role join_key join_key numerical\n", " 0 1672580 981535 0\n", " 1 1672946 1094968 0\n", " 2 1673647 149985 0\n", " 3 1673647 261595 0\n", " 4 1673647 781357 0\n", " ... ... ...\n", "138344 2593313 947005 3\n", "138345 2593313 1090590 3\n", "138346 2593313 1347419 3\n", "138347 2593313 2099917 3\n", "138348 2593313 2633550 3\n", "\n", "\n", "138349 rows x 3 columns\n", "memory usage: 2.21 MB\n", "type: getml.DataFrame" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "movies2actors.set_role([\"movieid\", \"actorid\"], getml.data.roles.join_key)\n", "movies2actors.set_role( \"cast_num\", getml.data.roles.numerical)\n", "\n", "movies2actors.save()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We need to separate our data set into a training, testing and validation set:" ] }, { "cell_type": "code", "execution_count": 12, "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", "
name actorida_gender a_quality
rolejoin_keycategoricalnumerical
04M\n", " 4 \n", "
116M\n", " 0 \n", "
228M\n", " 4 \n", "
3566M\n", " 4 \n", "
4580M\n", " 4 \n", "
......\n", " ... \n", "
986852749162F\n", " 3 \n", "
986862749168F\n", " 3 \n", "
986872749204F\n", " 3 \n", "
986882749377F\n", " 4 \n", "
986892749386F\n", " 4 \n", "
\n", "\n", "

\n", " 98690 rows x 3 columns
\n", " memory usage: 1.58 MB
\n", " name: actors
\n", " type: getml.DataFrame
\n", " \n", "

\n" ], "text/plain": [ " name actorid a_gender a_quality\n", " role join_key categorical numerical\n", " 0 4 M 4\n", " 1 16 M 0\n", " 2 28 M 4\n", " 3 566 M 4\n", " 4 580 M 4\n", " ... ... ...\n", "98685 2749162 F 3\n", "98686 2749168 F 3\n", "98687 2749204 F 3\n", "98688 2749377 F 4\n", "98689 2749386 F 4\n", "\n", "\n", "98690 rows x 3 columns\n", "memory usage: 1.58 MB\n", "type: getml.DataFrame" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "actors.set_role(\"actorid\", getml.data.roles.join_key)\n", "actors.set_role(\"a_quality\", getml.data.roles.numerical)\n", "actors.set_role(\"a_gender\", getml.data.roles.categorical)\n", "\n", "actors.save()" ] }, { "cell_type": "code", "execution_count": 13, "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", "
0train
1train
2train
3test
4test
...
\n", "\n", "

\n", " infinite number of rows
\n", " \n", " type: StringColumnView
\n", " \n", "

\n" ], "text/plain": [ " \n", " 0 train\n", " 1 train\n", " 2 train\n", " 3 test \n", " 4 test \n", " ... \n", "\n", "\n", "infinite number of rows\n", "type: StringColumnView" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "split = getml.data.split.random(train=0.75, test=0.25)\n", "split" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\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
0testusers1511View
1trainusers4528View
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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
0u2base996159DataFrame
1movies3832DataFrame
2movies2directors4141DataFrame
3directors2201DataFrame
4movies2actors138349DataFrame
5actors98690DataFrame
\n", "
\n", "
" ], "text/plain": [ "population\n", " subset name rows type\n", "0 test users 1511 View\n", "1 train users 4528 View\n", "\n", "peripheral\n", " name rows type \n", "0 u2base 996159 DataFrame\n", "1 movies 3832 DataFrame\n", "2 movies2directors 4141 DataFrame\n", "3 directors 2201 DataFrame\n", "4 movies2actors 138349 DataFrame\n", "5 actors 98690 DataFrame" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "container = getml.data.Container(population=users, split=split)\n", "\n", "container.add(\n", " u2base=u2base,\n", " movies=movies,\n", " movies2directors=movies2directors,\n", " directors=directors,\n", " movies2actors=movies2actors,\n", " actors=actors,\n", ")\n", "\n", "container" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Predictive modeling\n", "\n", "We loaded the data and defined the roles and units. Next, we create a getML pipeline for relational learning." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.1 Define relational model\n", "\n", "To get started with relational learning, we need to specify the data model." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "
diagram
\n", "
directorsmovies2directorsactorsmovies2actorsmoviesu2baseusersdirectorid = directoridRelationship: many-to-oneactorid = actoridRelationship: many-to-onemovieid = movieidRelationship: propositionalizationmovieid = movieidRelationship: propositionalizationmovieid = movieidRelationship: many-to-oneuserid = userid
\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", " \n", " \n", " \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 frames staging table
0usersUSERS__STAGING_TABLE_1
1movies2actors, actorsMOVIES2ACTORS__STAGING_TABLE_2
2movies2directors, directorsMOVIES2DIRECTORS__STAGING_TABLE_3
3u2base, moviesU2BASE__STAGING_TABLE_4
\n", "
\n", " " ], "text/plain": [ "users:\n", " columns:\n", " - occupation: categorical\n", " - userid: join_key\n", " - age: numerical\n", " - target: target\n", " - u_gender: unused_string\n", "\n", " joins:\n", " - right: 'u2base'\n", " on: (users.userid, u2base.userid)\n", " relationship: 'many-to-many'\n", " lagged_targets: False\n", "\n", "u2base:\n", " columns:\n", " - userid: join_key\n", " - movieid: join_key\n", " - rating: numerical\n", "\n", " joins:\n", " - right: 'movies'\n", " on: (u2base.movieid, movies.movieid)\n", " relationship: 'many-to-one'\n", " lagged_targets: False\n", "\n", "movies:\n", " columns:\n", " - isEnglish: categorical\n", " - country: categorical\n", " - movieid: join_key\n", " - year: numerical\n", " - runningtime: numerical\n", "\n", " joins:\n", " - right: 'movies2directors'\n", " on: (movies.movieid, movies2directors.movieid)\n", " relationship: 'propositionalization'\n", " lagged_targets: False\n", " - right: 'movies2actors'\n", " on: (movies.movieid, movies2actors.movieid)\n", " relationship: 'propositionalization'\n", " lagged_targets: False\n", "\n", "movies2directors:\n", " columns:\n", " - genre: categorical\n", " - movieid: join_key\n", " - directorid: join_key\n", "\n", " joins:\n", " - right: 'directors'\n", " on: (movies2directors.directorid, directors.directorid)\n", " relationship: 'many-to-one'\n", " lagged_targets: False\n", "\n", "directors:\n", " columns:\n", " - directorid: join_key\n", " - d_quality: numerical\n", " - avg_revenue: numerical\n", "\n", "movies2actors:\n", " columns:\n", " - movieid: join_key\n", " - actorid: join_key\n", " - cast_num: numerical\n", "\n", " joins:\n", " - right: 'actors'\n", " on: (movies2actors.actorid, actors.actorid)\n", " relationship: 'many-to-one'\n", " lagged_targets: False\n", "\n", "actors:\n", " columns:\n", " - a_gender: categorical\n", " - actorid: join_key\n", " - a_quality: numerical" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dm = getml.data.DataModel(users.to_placeholder())\n", "\n", "dm.add(getml.data.to_placeholder(\n", " u2base=u2base,\n", " movies=movies,\n", " movies2directors=movies2directors,\n", " directors=directors,\n", " movies2actors=movies2actors,\n", " actors=actors,\n", "))\n", "\n", "dm.population.join(\n", " dm.u2base,\n", " on='userid'\n", ")\n", "\n", "dm.u2base.join(\n", " dm.movies,\n", " on='movieid',\n", " relationship=getml.data.relationship.many_to_one\n", ")\n", "\n", "dm.movies.join(\n", " dm.movies2directors,\n", " on='movieid',\n", " relationship=getml.data.relationship.propositionalization\n", ")\n", "\n", "dm.movies2directors.join(\n", " dm.directors,\n", " on='directorid',\n", " relationship=getml.data.relationship.many_to_one\n", ")\n", "\n", "dm.movies.join(\n", " dm.movies2actors,\n", " on='movieid',\n", " relationship=getml.data.relationship.propositionalization\n", ")\n", "\n", "dm.movies2actors.join(\n", " dm.actors,\n", " on='actorid',\n", " relationship=getml.data.relationship.many_to_one\n", ")\n", "\n", "dm" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.2 getML pipeline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "__Set-up the feature learner & predictor__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will set up two pipelines. One of them uses `FastProp`, the other one uses `Relboost`. Note that we have marked some of the joins in the data model with the `propositionalization` tag. This means that `FastProp` will be used for these relationships, even for the second pipeline. This can significantly speed up the training process." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "mapping = getml.preprocessors.Mapping()\n", "\n", "fast_prop = getml.feature_learning.FastProp(\n", " loss_function=getml.feature_learning.loss_functions.CrossEntropyLoss,\n", " num_threads=1,\n", ")\n", "\n", "relboost = getml.feature_learning.Relboost(\n", " loss_function=getml.feature_learning.loss_functions.CrossEntropyLoss,\n", " num_subfeatures=50,\n", " num_threads=1\n", ")\n", "\n", "predictor = getml.predictors.XGBoostClassifier(\n", " max_depth=5,\n", " n_jobs=1,\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Build the pipeline__" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Pipeline(data_model='users',\n",
       "         feature_learners=['FastProp'],\n",
       "         feature_selectors=[],\n",
       "         include_categorical=False,\n",
       "         loss_function='CrossEntropyLoss',\n",
       "         peripheral=['actors', 'directors', 'movies', 'movies2actors', 'movies2directors',\n",
       "                     'u2base'],\n",
       "         predictors=['XGBoostClassifier'],\n",
       "         preprocessors=['Mapping'],\n",
       "         share_selected_features=0.5,\n",
       "         tags=['fast_prop'])
" ], "text/plain": [ "Pipeline(data_model='users',\n", " feature_learners=['FastProp'],\n", " feature_selectors=[],\n", " include_categorical=False,\n", " loss_function='CrossEntropyLoss',\n", " peripheral=['actors', 'directors', 'movies', 'movies2actors', 'movies2directors',\n", " 'u2base'],\n", " predictors=['XGBoostClassifier'],\n", " preprocessors=['Mapping'],\n", " share_selected_features=0.5,\n", " tags=['fast_prop'])" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pipe1 = getml.pipeline.Pipeline(\n", " tags=['fast_prop'],\n", " data_model=dm,\n", " preprocessors=[mapping],\n", " feature_learners=[fast_prop],\n", " predictors=[predictor]\n", ")\n", "\n", "pipe1" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Pipeline(data_model='users',\n",
       "         feature_learners=['Relboost'],\n",
       "         feature_selectors=[],\n",
       "         include_categorical=False,\n",
       "         loss_function='CrossEntropyLoss',\n",
       "         peripheral=['actors', 'directors', 'movies', 'movies2actors', 'movies2directors',\n",
       "                     'u2base'],\n",
       "         predictors=['XGBoostClassifier'],\n",
       "         preprocessors=['Mapping'],\n",
       "         share_selected_features=0.5,\n",
       "         tags=['relboost'])
" ], "text/plain": [ "Pipeline(data_model='users',\n", " feature_learners=['Relboost'],\n", " feature_selectors=[],\n", " include_categorical=False,\n", " loss_function='CrossEntropyLoss',\n", " peripheral=['actors', 'directors', 'movies', 'movies2actors', 'movies2directors',\n", " 'u2base'],\n", " predictors=['XGBoostClassifier'],\n", " preprocessors=['Mapping'],\n", " share_selected_features=0.5,\n", " tags=['relboost'])" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pipe2 = getml.pipeline.Pipeline(\n", " tags=['relboost'],\n", " data_model=dm,\n", " preprocessors=[mapping],\n", " feature_learners=[relboost],\n", " predictors=[predictor]\n", ")\n", "\n", "pipe2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.3 Model training" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Checking data model...\n", "Staging... 100% |██████████| [elapsed: 00:00, remaining: 00:00] \n", "Preprocessing... 100% |██████████| [elapsed: 00:08, remaining: 00:00] \n", "Checking... 100% |██████████| [elapsed: 00:00, remaining: 00:00] \n", "\n", "The pipeline check generated 2 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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
typelabel message
0INFOFOREIGN KEYS NOT FOUNDWhen joining U2BASE__STAGING_TABLE_4 and MOVIES2DIRECTORS__STAGING_TABLE_3 over 'movieid' and 'movieid', there are no corresponding entries for 0.159513% of entries in 'movieid' in 'U2BASE__STAGING_TABLE_4'. You might want to double-check your join keys.
1INFOFOREIGN KEYS NOT FOUNDWhen joining U2BASE__STAGING_TABLE_4 and MOVIES2ACTORS__STAGING_TABLE_2 over 'movieid' and 'movieid', there are no corresponding entries for 0.340408% of entries in 'movieid' in 'U2BASE__STAGING_TABLE_4'. You might want to double-check your join keys.
" ], "text/plain": [ " type label message \n", "0 INFO FOREIGN KEYS NOT FOUND When joining U2BASE__STAGING_TAB...\n", "1 INFO FOREIGN KEYS NOT FOUND When joining U2BASE__STAGING_TAB..." ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pipe1.check(container.train)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Checking data model...\n", "Staging... 100% |██████████| [elapsed: 00:00, remaining: 00:00] \n", "Preprocessing... 100% |██████████| [elapsed: 00:00, remaining: 00:00] \n", "\n", "The pipeline check generated 2 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", "Preprocessing... 100% |██████████| [elapsed: 00:00, remaining: 00:00] \n", "FastProp: Trying 941 features... 100% |██████████| [elapsed: 00:43, remaining: 00:00] \n", "FastProp: Building subfeatures... 100% |██████████| [elapsed: 00:23, remaining: 00:00] \n", "FastProp: Building features... 100% |██████████| [elapsed: 00:03, remaining: 00:00] \n", "XGBoost: Training as predictor... 100% |██████████| [elapsed: 00:05, remaining: 00:00] \n", "\n", "Trained pipeline.\n", "Time taken: 0h:1m:13.926562\n", "\n" ] }, { "data": { "text/html": [ "
Pipeline(data_model='users',\n",
       "         feature_learners=['FastProp'],\n",
       "         feature_selectors=[],\n",
       "         include_categorical=False,\n",
       "         loss_function='CrossEntropyLoss',\n",
       "         peripheral=['actors', 'directors', 'movies', 'movies2actors', 'movies2directors',\n",
       "                     'u2base'],\n",
       "         predictors=['XGBoostClassifier'],\n",
       "         preprocessors=['Mapping'],\n",
       "         share_selected_features=0.5,\n",
       "         tags=['fast_prop', 'container-fr4Ui8'])
" ], "text/plain": [ "Pipeline(data_model='users',\n", " feature_learners=['FastProp'],\n", " feature_selectors=[],\n", " include_categorical=False,\n", " loss_function='CrossEntropyLoss',\n", " peripheral=['actors', 'directors', 'movies', 'movies2actors', 'movies2directors',\n", " 'u2base'],\n", " predictors=['XGBoostClassifier'],\n", " preprocessors=['Mapping'],\n", " share_selected_features=0.5,\n", " tags=['fast_prop', 'container-fr4Ui8'])" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pipe1.fit(container.train)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Checking data model...\n", "Staging... 100% |██████████| [elapsed: 00:00, remaining: 00:00] \n", "Preprocessing... 100% |██████████| [elapsed: 00:00, remaining: 00:00] \n", "Checking... 100% |██████████| [elapsed: 00:00, remaining: 00:00] \n", "\n", "The pipeline check generated 2 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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
typelabel message
0INFOFOREIGN KEYS NOT FOUNDWhen joining U2BASE__STAGING_TABLE_4 and MOVIES2DIRECTORS__STAGING_TABLE_3 over 'movieid' and 'movieid', there are no corresponding entries for 0.159513% of entries in 'movieid' in 'U2BASE__STAGING_TABLE_4'. You might want to double-check your join keys.
1INFOFOREIGN KEYS NOT FOUNDWhen joining U2BASE__STAGING_TABLE_4 and MOVIES2ACTORS__STAGING_TABLE_2 over 'movieid' and 'movieid', there are no corresponding entries for 0.340408% of entries in 'movieid' in 'U2BASE__STAGING_TABLE_4'. You might want to double-check your join keys.
" ], "text/plain": [ " type label message \n", "0 INFO FOREIGN KEYS NOT FOUND When joining U2BASE__STAGING_TAB...\n", "1 INFO FOREIGN KEYS NOT FOUND When joining U2BASE__STAGING_TAB..." ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pipe2.check(container.train)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Checking data model...\n", "Staging... 100% |██████████| [elapsed: 00:00, remaining: 00:00] \n", "Preprocessing... 100% |██████████| [elapsed: 00:00, remaining: 00:00] \n", "\n", "The pipeline check generated 2 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", "Preprocessing... 100% |██████████| [elapsed: 00:00, remaining: 00:00] \n", "FastProp: Building subfeatures... 100% |██████████| [elapsed: 00:05, remaining: 00:00] \n", "Relboost: Training features... 100% |██████████| [elapsed: 08:55, remaining: 00:00] \n", "FastProp: Building subfeatures... 100% |██████████| [elapsed: 00:05, remaining: 00:00] \n", "Relboost: Building features... 100% |██████████| [elapsed: 01:49, remaining: 00:00] \n", "XGBoost: Training as predictor... 100% |██████████| [elapsed: 00:04, remaining: 00:00] \n", "\n", "Trained pipeline.\n", "Time taken: 0h:10m:58.115767\n", "\n" ] }, { "data": { "text/html": [ "
Pipeline(data_model='users',\n",
       "         feature_learners=['Relboost'],\n",
       "         feature_selectors=[],\n",
       "         include_categorical=False,\n",
       "         loss_function='CrossEntropyLoss',\n",
       "         peripheral=['actors', 'directors', 'movies', 'movies2actors', 'movies2directors',\n",
       "                     'u2base'],\n",
       "         predictors=['XGBoostClassifier'],\n",
       "         preprocessors=['Mapping'],\n",
       "         share_selected_features=0.5,\n",
       "         tags=['relboost', 'container-fr4Ui8'])
" ], "text/plain": [ "Pipeline(data_model='users',\n", " feature_learners=['Relboost'],\n", " feature_selectors=[],\n", " include_categorical=False,\n", " loss_function='CrossEntropyLoss',\n", " peripheral=['actors', 'directors', 'movies', 'movies2actors', 'movies2directors',\n", " 'u2base'],\n", " predictors=['XGBoostClassifier'],\n", " preprocessors=['Mapping'],\n", " share_selected_features=0.5,\n", " tags=['relboost', 'container-fr4Ui8'])" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pipe2.fit(container.train)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.4 Model evaluation" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "lines_to_next_cell": 0 }, "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", "FastProp: Building subfeatures... 100% |██████████| [elapsed: 00:21, remaining: 00:00] \n", "FastProp: 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 15:03:15traintarget0.91140.96580.2847
12024-02-21 15:14:36testtarget0.77760.78960.4757
" ], "text/plain": [ " date time set used target accuracy auc cross entropy\n", "0 2024-02-21 15:03:15 train target 0.9114 0.9658 0.2847\n", "1 2024-02-21 15:14:36 test target 0.7776 0.7896 0.4757" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fastprop_score = pipe1.score(container.test)\n", "fastprop_score" ] }, { "cell_type": "code", "execution_count": 24, "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", "FastProp: Building subfeatures... 100% |██████████| [elapsed: 00:05, remaining: 00:00] \n", "Relboost: Building features... 100% |██████████| [elapsed: 00:37, 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 15:14:14traintarget0.9660.99430.1609
12024-02-21 15:15:18testtarget0.81010.84090.4384
" ], "text/plain": [ " date time set used target accuracy auc cross entropy\n", "0 2024-02-21 15:14:14 train target 0.966 0.9943 0.1609\n", "1 2024-02-21 15:15:18 test target 0.8101 0.8409 0.4384" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "relboost_score = pipe2.score(container.test)\n", "relboost_score" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.6 Studying features" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Column importances__\n", "\n", "Because getML uses relational learning, we can apply the principles we used to calculate the feature importances to individual columns as well.\n", "\n", "As we can see, most of the predictive accuracy is drawn from the roles played by the actors. This suggests that the text fields contained in this relational database have a higher impact on predictive accuracy than for most other data sets." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABl4AAARaCAYAAAAtuQ8oAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8WgzjOAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzde5yXdZ3//+cMygAqA4oOB1kBMQ8h0kKylEZrk+Cahw4G1m9B8lCamU3qSiVotiJqLqYmq6WpHaTccr+li9kklUWyaawdzFUXwtMMYsEoJiTz+f3RzWlnAZXhrR9H7vfb7botc33e1/V5XcN1s62H1+dTU6lUKgEAAAAAAGCr1VZ7AAAAAAAAgNcL4QUAAAAAAKAQ4QUAAAAAAKAQ4QUAAAAAAKAQ4QUAAAAAAKAQ4QUAAAAAAKAQ4QUAAAAAAKAQ4QUAAAAAAKAQ4QUAAAAAAKAQ4QUAAOjk7W9/e97+9rdXe4xXzLBhw3LcccdVewwAAOB1SngBAIBu7uGHH86HP/zhjBgxIr169Urfvn3z1re+NZdddln+9Kc/VXs8Crvtttty7rnnVnsMAABgM7ar9gAAAEDX3XrrrTnmmGNSV1eXadOmZdSoUVm/fn3uuuuunHnmmfnNb36Tq6++utpjvqY88MADqa3tvv8O2m233ZYrr7xSfAEAgNco4QUAALqpZcuWZerUqdljjz3ywx/+MIMGDep47aMf/Wgeeuih3HrrrVWc8LWprq6u2iN0ydq1a7PDDjtUewwAAOAldN9/zQsAALZxF110UZ555pl8+ctf7hRdXjBy5Mh8/OMf7/j5+eefz/nnn58999wzdXV1GTZsWD71qU9l3bp1L/o+X/nKV1JTU5Ply5d32r9o0aLU1NRk0aJFHfve/va3Z9SoUbnvvvsyceLE9OnTJyNHjszNN9+cJPnRj36U8ePHp3fv3tl7773zgx/8oNM5zz333NTU1OShhx7Kcccdl379+qW+vj4zZszIs88+22ntHXfckYMOOij9+vXLjjvumL333juf+tSnXvL39n+/4+WF67vrrrty2mmnZdddd02/fv3y4Q9/OOvXr8/q1aszbdq09O/fP/37989ZZ52VSqXScfzy5ctTU1OTSy65JP/yL/+SPfbYI717987EiRPz61//eqP3/+EPf5iDDz44O+ywQ/r165ejjjoq999//yZ/D7/97W/zgQ98IP37989BBx2U4447LldeeWWSpKampmN7wSWXXJK3vOUt2WWXXdK7d++MHTu243f/v9XU1OTUU0/NLbfcklGjRqWuri5vfOMbs3Dhwo3WPvbYYzn++OMzePDg1NXVZfjw4Tn55JOzfv36jjWrV6/O6aefnqFDh6auri4jR47M3Llz097e3ulcN910U8aOHZuddtopffv2zf7775/LLrvsJf7GAACge/HECwAAdFPf/e53M2LEiLzlLW95WetPOOGEXH/99Xnf+96XT37yk7n77rszZ86c3H///fnOd75TbK4//vGPede73pWpU6fmmGOOyVVXXZWpU6fma1/7Wk4//fR85CMfyQc+8IFcfPHFed/73pdHHnkkO+20U6dzvP/978/w4cMzZ86c3HvvvfnSl76U3XbbLXPnzk2S/OY3v8m73vWujB49Op/97GdTV1eXhx56KD/96U+7PPfHPvaxDBw4MOedd15+/vOf5+qrr06/fv3ys5/9LH/zN3+TCy64ILfddlsuvvjijBo1KtOmTet0/A033JCnn346H/3oR/Pcc8/lsssuyyGHHJJf/epXaWhoSJL84Ac/yGGHHZYRI0bk3HPPzZ/+9Kdcfvnleetb35p77703w4YN63TOY445JnvttVcuuOCCVCqVvOlNb8rjjz+eO+64IzfeeONG13DZZZflyCOPzAc/+MGsX78+N910U4455ph873vfy+GHH95p7V133ZVvf/vbOeWUU7LTTjvlC1/4Qt773vdmxYoV2WWXXZIkjz/+eA488MCsXr06J510UvbZZ5889thjufnmm/Pss8+mZ8+eefbZZzNx4sQ89thj+fCHP5y/+Zu/yc9+9rPMnDkzTzzxRObNm5fkL6Hs2GOPzTve8Y6Ov8f7778/P/3pTzsFQgAA6PYqAABAt7NmzZpKkspRRx31stYvXbq0kqRywgkndNp/xhlnVJJUfvjDH3bsmzhxYmXixIkdP1933XWVJJVly5Z1OvbOO++sJKnceeednY5NUvn617/ese93v/tdJUmltra28vOf/7xj/+23315JUrnuuus69s2ePbuSpPKhD32o03u9+93vruyyyy4dP//Lv/xLJUnlySeffFnX/7/tsccelenTp290fZMmTaq0t7d37J8wYUKlpqam8pGPfKRj3/PPP1/ZfffdO/1+li1bVklS6d27d+XRRx/t2H/33XdXklQ+8YlPdOwbM2ZMZbfddqs89dRTHfv+67/+q1JbW1uZNm3aRr+HY489dqP5P/rRj1Y291/lnn322U4/r1+/vjJq1KjKIYcc0ml/kkrPnj0rDz30UKc5klQuv/zyjn3Tpk2r1NbWVv7zP/9zo/d64Xd1/vnnV3bYYYfKf//3f3d6/eyzz6706NGjsmLFikqlUql8/OMfr/Tt27fy/PPPb3J2AAB4vfBRYwAA0A21tbUlyUZPimzObbfdliRpamrqtP+Tn/xkkhT9Lpgdd9wxU6dO7fh57733Tr9+/bLvvvtm/PjxHftf+PP//M//bHSOj3zkI51+Pvjgg/PUU091XHe/fv2SJP/+7/++0cdZddXxxx/f6WO7xo8fn0qlkuOPP75jX48ePTJu3LhNznz00UdnyJAhHT8feOCBGT9+fMfv/oknnsjSpUtz3HHHZeedd+5YN3r06Lzzne/sWPe//d/fw0vp3bt3x5//+Mc/Zs2aNTn44INz7733brS2sbExe+65Z6c5+vbt23Ft7e3tueWWW3LEEUdk3LhxGx3/wu/qW9/6Vg4++OD0798/q1at6tgaGxuzYcOG/PjHP07yl7+ztWvX5o477tiiawIAgO5GeAEAgG6ob9++SZKnn376Za3//e9/n9ra2owcObLT/oEDB6Zfv375/e9/X2y23XffvVPASJL6+voMHTp0o33JXwLB//U3f/M3nX7u379/p7VTpkzJW9/61pxwwglpaGjI1KlT881vfnOrIsz/fc8X5tvU3Juaea+99tpo3xve8IaO78Z54Xe89957b7Ru3333zapVq7J27dpO+4cPH/7yLyDJ9773vfzd3/1devXqlZ133jm77rprrrrqqqxZs2ajtf/3epO//J5fuLYnn3wybW1tGTVq1Iu+54MPPpiFCxdm11137bQ1NjYmSVauXJkkOeWUU/KGN7whhx12WHbfffd86EMf2uR3ygAAQHfnO14AAKAb6tu3bwYPHrzJL29/Mf83iGzNMRs2bNjk/h49emzR/sr/+qL6l7u2d+/e+fGPf5w777wzt956axYuXJgFCxbkkEMOyfe///3NHv9itmTuTc38SvjfT7C8lJ/85Cc58sgj87a3vS1f/OIXM2jQoGy//fa57rrr8vWvf32j9Vvy9/Fi2tvb8853vjNnnXXWJl9/wxvekCTZbbfdsnTp0tx+++35j//4j/zHf/xHrrvuukybNi3XX3/9Fr0nAAC8lgkvAADQTb3rXe/K1VdfncWLF2fChAkvunaPPfZIe3t7Hnzwwey7774d+1tbW7N69erssccemz32hadNVq9e3Wl/yadkuqK2tjbveMc78o53vCOXXnppLrjggnz605/OnXfe2fG0xavpwQcf3Gjff//3f2fYsGFJ0vE7fuCBBzZa97vf/S4DBgzIDjvs8JLvs7kQ9m//9m/p1atXbr/99tTV1XXsv+66617O+BvZdddd07dv35eMe3vuuWeeeeaZl/U779mzZ4444ogcccQRaW9vzymnnJJ//dd/zTnnnLPR01gAANBd+agxAADops4666zssMMOOeGEE9La2rrR6w8//HAuu+yyJMk//MM/JEnmzZvXac2ll16aJDn88MM3+z4vfA/IC9/VkfzlaZerr756q+bfGn/4wx822jdmzJgkybp1617laf7illtuyWOPPdbx85IlS3L33XfnsMMOS5IMGjQoY8aMyfXXX98pYv3617/O97///Y6/o5fyQpz5vyGsR48eqamp6fQk0vLly3PLLbd06Xpqa2tz9NFH57vf/W5+8YtfbPT6C0/GvP/978/ixYtz++23b7Rm9erVef7555MkTz311EbnHz16dJLq/Z0BAMArwRMvAADQTe255575+te/nilTpmTffffNtGnTMmrUqKxfvz4/+9nP8q1vfSvHHXdckuSAAw7I9OnTc/XVV2f16tWZOHFilixZkuuvvz5HH310/v7v/36z7/PGN74xf/d3f5eZM2fmD3/4Q3beeefcdNNNHf+DejV89rOfzY9//OMcfvjh2WOPPbJy5cp88YtfzO67756DDjqoKjONHDkyBx10UE4++eSsW7cu8+bNyy677NLpI7guvvjiHHbYYZkwYUKOP/74/OlPf8rll1+e+vr6nHvuuS/rfcaOHZskOe200zJp0qT06NEjU6dOzeGHH55LL700kydPzgc+8IGsXLkyV155ZUaOHJn77ruvS9d0wQUX5Pvf/34mTpyYk046Kfvuu2+eeOKJfOtb38pdd92Vfv365cwzz8z/+3//L+9617ty3HHHZezYsVm7dm1+9atf5eabb87y5cszYMCAnHDCCfnDH/6QQw45JLvvvnt+//vf5/LLL8+YMWM6PYUFAADdnfACAADd2JFHHpn77rsvF198cf793/89V111Verq6jJ69Oh8/vOfz4knntix9ktf+lJGjBiRr3zlK/nOd76TgQMHZubMmZk9e/ZLvs/Xvva1fPjDH86FF16Yfv365fjjj8/f//3f553vfOcreXmbdeSRR2b58uW59tprs2rVqgwYMCATJ07Meeedl/r6+qrMNG3atNTW1mbevHlZuXJlDjzwwFxxxRUZNGhQx5rGxsYsXLgws2fPzqxZs7L99ttn4sSJmTt3boYPH/6y3uc973lPPvaxj+Wmm27KV7/61VQqlUydOjWHHHJIvvzlL+fCCy/M6aefnuHDh2fu3LlZvnx5l8PLkCFDcvfdd+ecc87J1772tbS1tWXIkCE57LDD0qdPnyRJnz598qMf/SgXXHBBvvWtb+WGG25I375984Y3vKHT38f/9//9f7n66qvzxS9+MatXr87AgQMzZcqUnHvuuamt9WEMAAC8ftRUXq1vhQQAAHgdWr58eYYPH56LL744Z5xxRrXHAQAAqsy/VgQAAAAAAFCI8AIAAAAAAFCI8AIAAAAAAFCI73gBAAAAAAAoxBMvAAAAAAAAhQgvAAAAAAAAhWxX7QFei9rb2/P4449np512Sk1NTbXHAQAAAAAAqqhSqeTpp5/O4MGDU1v74s+0CC+b8Pjjj2fo0KHVHgMAAAAAAHgNeeSRR7L77ru/6JrXRHi58sorc/HFF6elpSUHHHBALr/88hx44IEvedxNN92UY489NkcddVRuueWWjv2VSiWzZ8/ONddck9WrV+etb31rrrrqquy1114va56ddtopyV9+gX379u3SNQEAAAAAAK8PbW1tGTp0aEc/eDFVDy8LFixIU1NT5s+fn/Hjx2fevHmZNGlSHnjggey2226bPW758uU544wzcvDBB2/02kUXXZQvfOELuf766zN8+PCcc845mTRpUn7729+mV69eLznTCx8v1rdvX+EFAAAAAABIkpf19SQv/kFkr4JLL700J554YmbMmJH99tsv8+fPT58+fXLttddu9pgNGzbkgx/8YM4777yMGDGi02uVSiXz5s3LZz7zmRx11FEZPXp0brjhhjz++OOdnooBAAAAAAAorarhZf369bnnnnvS2NjYsa+2tjaNjY1ZvHjxZo/77Gc/m9122y3HH3/8Rq8tW7YsLS0tnc5Z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778/SbLffvvlqKOOynbbdfmUAAAAAAAA3VqXKslvfvObHHnkkWlpacnee++dJJk7d2523XXXfPe7382oUaOKDgkAAAAAANAddOk7Xk444YS88Y1vzKOPPpp777039957bx555JGMHj06J510UukZAQAAAAAAuoUuPfGydOnS/OIXv0j//v079vXv3z///M//nDe/+c3FhgMAAAAAAOhOuvTEyxve8Ia0trZutH/lypUZOXLkVg8FAAAAAADQHXUpvMyZMyennXZabr755jz66KN59NFHc/PNN+f000/P3Llz09bW1rEBAAAAAABsK7r0UWPvete7kiTvf//7U1NTkySpVCpJkiOOOKLj55qammzYsKHEnAAAAAAAAK95XQovd955Z+k5AAAAAAAAur0uhZeJEyeWngMAAAAAAKDb61J4SZLnnnsu9913X1auXJn29vZOrx155JFbPRgAAAAAAEB306XwsnDhwkybNi2rVq3a6DXf6wIAAAAAAGyrarty0Mc+9rEcc8wxeeKJJ9Le3t5pE10AAAAAAIBtVZfCS2tra5qamtLQ0FB6HgAAAAAAgG6rS+Hlfe97XxYtWlR4FAAAAAAAgO6tS9/xcsUVV+SYY47JT37yk+y///7ZfvvtO71+2mmnFRkOAAAAAACgO+lSePnGN76R73//++nVq1cWLVqUmpqajtdqamqEFwAAAAAAYJvUpfDy6U9/Ouedd17OPvvs1NZ26dPKAAAAAAAAXne6VE3Wr1+fKVOmiC4AAAAAAAD/S5fKyfTp07NgwYLSswAAAAAAAHRrXfqosQ0bNuSiiy7K7bffntGjR2f77bfv9Pqll15aZDgAAAAAAIDupEvh5Ve/+lXe9KY3JUl+/etfFx0IAAAAAACgu+pSeLnzzjtLzwEAAAAAANDtbVF4ec973vOSa2pqavJv//ZvXR4IAAAAAACgu9qi8FJfX/9KzQEAAAAAANDtbVF4ue66616pOQAAAAAAALq92moPAAAAAAAA8HohvAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABQivAAAAAAAABRS9fBy5ZVXZtiwYenVq1fGjx+fJUuWbHbtb37zm7z3ve/NsGHDUlNTk3nz5m205txzz01NTU2nbZ999nkFrwAAAAAAAOAvqhpeFixYkKampsyePTv33ntvDjjggEyaNCkrV67c5Ppnn302I0aMyIUXXpiBAwdu9rxvfOMb88QTT3Rsd9111yt1CQAAAAAAAB2qGl4uvfTSnHjiiZkxY0b222+/zJ8/P3369Mm11167yfVvfvObc/HFF2fq1Kmpq6vb7Hm32267DBw4sGMbMGDAK3UJAAAAAAAAHaoWXtavX5977rknjY2Nfx2mtjaNjY1ZvHjxVp37wQcfzODBgzNixIh88IMfzIoVK150/bp169LW1tZpAwAAAAAA2FJVCy+rVq3Khg0b0tDQ0Gl/Q0NDWlpaunze8ePH5ytf+UoWLlyYq666KsuWLcvBBx+cp59+erPHzJkzJ/X19R3b0KFDu/z+AAAAAADAtquqHzX2SjjssMNyzDHHZPTo0Zk0aVJuu+22rF69Ot/85jc3e8zMmTOzZs2aju2RRx55FScGAAAAAABeL7ar1hsPGDAgPXr0SGtra6f9ra2tGThwYLH36devX97whjfkoYce2uyaurq6F/3OGAAAAAAAgJejak+89OzZM2PHjk1zc3PHvvb29jQ3N2fChAnF3ueZZ57Jww8/nEGDBhU7JwAAAAAAwKZU7YmXJGlqasr06dMzbty4HHjggZk3b17Wrl2bGTNmJEmmTZuWIUOGZM6cOUmS9evX57e//W3Hnx977LEsXbo0O+64Y0aOHJkkOeOMM3LEEUdkjz32yOOP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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "names, importances = pipe1.columns.importances()\n", "\n", "plt.subplots(figsize=(20, 10))\n", "\n", "plt.bar(names, importances)\n", "\n", "plt.title('Columns importances')\n", "plt.xlabel('Columns')\n", "plt.ylabel('Importances')\n", "plt.xticks(rotation='vertical')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABl4AAARaCAYAAAAtuQ8oAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8WgzjOAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzde5yWdZ3/8fcMygAqA4oMoKwDYh5CpIUkS6O1SXDJw1YG1m9R8lCalU3qSiVoluAhF1OT1dLUDrq15W7pYjZJZSFsEmsHbbWV8DSDWDCKCRtz//7o4dQEqIxfvR14Ph+P+xFz3d/ruj/XXD1KfXndV02lUqkEAAAAAACAl6y22gMAAAAAAABsLYQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAACgi7e85S15y1veUu0xXjaNjY05/vjjqz0GAACwlRJeAACgh/vNb36T97///Rk5cmT69OmT/v37501velMuu+yy/OEPf6j2eBR222235dxzz632GAAAwGZsV+0BAACA7rv11ltzzDHHpK6uLtOnT8/o0aOzfv363HXXXTnzzDPzy1/+MldffXW1x3xV+fWvf53a2p7776DddtttufLKK8UXAAB4lRJeAACgh3rooYcybdq07LHHHvn+97+foUOHdr73wQ9+MA8++GBuvfXWKk746lRXV1ftEbpl7dq12WGHHao9BgAA8AJ67r/mBQAA27iLLrooTz/9dL74xS92iS7PGTVqVD7ykY90/vzHP/4x559/fvbcc8/U1dWlsbExH//4x7Nu3brn/ZwvfelLqampyfLly7tsX7hwYWpqarJw4cLObW95y1syevTo3HvvvZk4cWL69euXUaNG5Rvf+EaS5Ac/+EEmTJiQvn37Zu+99873vve9Lsc899xzU1NTkwcffDDHH398BgwYkPr6+syYMSPPPPNMl7V33HFHDj744AwYMCA77rhj9t5773z84x9/wd/bXz/j5bnzu+uuu/LhD384u+66awYMGJD3v//9Wb9+fVavXp3p06dn4MCBGThwYM4666xUKpXO/ZcvX56amppccskl+ed//ufsscce6du3byZOnJhf/OIXG33+97///RxyyCHZYYcdMmDAgBx11FG57777Nvl7+NWvfpX3vOc9GThwYA4++OAcf/zxufLKK5MkNTU1na/nXHLJJXnjG9+YXXbZJX379s24ceM6f/d/qaamJqeddlpuueWWjB49OnV1dXnta1+bBQsWbLT20UcfzQknnJBhw4alrq4uI0aMyCmnnJL169d3rlm9enVOP/30DB8+PHV1dRk1alQuvPDCdHR0dDnWTTfdlHHjxmWnnXZK//79s//+++eyyy57gSsGAAA9izteAACgh/r2t7+dkSNH5o1vfOOLWn/iiSfm+uuvz7ve9a587GMfy+LFizNnzpzcd999+da3vlVsrt///vd5+9vfnmnTpuWYY47JVVddlWnTpuUrX/lKTj/99HzgAx/Ie97znlx88cV517velYcffjg77bRTl2O8+93vzogRIzJnzpwsXbo0X/jCFzJ48OBceOGFSZJf/vKXefvb354xY8bkU5/6VOrq6vLggw/mxz/+cbfn/tCHPpQhQ4bkvPPOy913352rr746AwYMyE9+8pP8zd/8TS644ILcdtttufjiizN69OhMnz69y/433HBDnnrqqXzwgx/Ms88+m8suuyyHHnpofv7zn6ehoSFJ8r3vfS+HH354Ro4cmXPPPTd/+MMfcvnll+dNb3pTli5dmsbGxi7HPOaYY7LXXnvlggsuSKVSyete97o89thjueOOO3LjjTdudA6XXXZZjjzyyLz3ve/N+vXrc9NNN+WYY47Jd77znUyZMqXL2rvuuivf/OY3c+qpp2annXbK5z73ubzzne/MihUrsssuuyRJHnvssRx44IFZvXp1Tj755Oyzzz559NFH841vfCPPPPNMevfunWeeeSYTJ07Mo48+mve///35m7/5m/zkJz/JzJkz8/jjj2fevHlJ/hTKjj322Lz1rW/tvI733XdffvzjH3cJhAAA0ONVAACAHmfNmjWVJJWjjjrqRa1ftmxZJUnlxBNP7LL9jDPOqCSpfP/73+/cNnHixMrEiRM7f77uuusqSSoPPfRQl33vvPPOSpLKnXfe2WXfJJWvfvWrndvuv//+SpJKbW1t5e677+7cfvvtt1eSVK677rrObbNnz64kqbzvfe/r8ln/8A//UNlll106f/7nf/7nSpLKE0888aLO/y/tscceleOOO26j85s0aVKlo6Ojc/tBBx1UqampqXzgAx/o3PbHP/6xsvvuu3f5/Tz00EOVJJW+fftWHnnkkc7tixcvriSpfPSjH+3cNnbs2MrgwYMrTz75ZOe2//7v/67U1tZWpk+fvtHv4dhjj91o/g9+8IOVzf2t3DPPPNPl5/Xr11dGjx5dOfTQQ7tsT1Lp3bt35cEHH+wyR5LK5Zdf3rlt+vTpldra2sp//dd/bfRZz/2uzj///MoOO+xQ+Z//+Z8u75999tmVXr16VVasWFGpVCqVj3zkI5X+/ftX/vjHP25ydgAA2Fr4qjEAAOiB2tvbk2SjO0U257bbbkuSNDc3d9n+sY99LEmKPgtmxx13zLRp0zp/3nvvvTNgwIDsu+++mTBhQuf25/78v//7vxsd4wMf+ECXnw855JA8+eSTnec9YMCAJMm///u/b/R1Vt11wgkndPnargkTJqRSqeSEE07o3NarV6+MHz9+kzMfffTR2W233Tp/PvDAAzNhwoTO3/3jjz+eZcuW5fjjj8/OO+/cuW7MmDF529ve1rnuL/317+GF9O3bt/PPv//977NmzZoccsghWbp06UZrm5qasueee3aZo3///p3n1tHRkVtuuSVHHHFExo8fv9H+z/2uvv71r+eQQw7JwIEDs2rVqs5XU1NTNmzYkB/+8IdJ/nTN1q5dmzvuuGOLzgkAAHoa4QUAAHqg/v37J0meeuqpF7X+t7/9bWprazNq1Kgu24cMGZIBAwbkt7/9bbHZdt999y4BI0nq6+szfPjwjbYlfwoEf+1v/uZvuvw8cODALmunTp2aN73pTTnxxBPT0NCQadOm5V//9V9fUoT56898br5Nzb2pmffaa6+Ntr3mNa/pfDbOc7/jvffee6N1++67b1atWpW1a9d22T5ixIgXfwJJvvOd7+QNb3hD+vTpk5133jm77rprrrrqqqxZs2ajtX99vsmffs/PndsTTzyR9vb2jB49+nk/84EHHsiCBQuy6667dnk1NTUlSVauXJkkOfXUU/Oa17wmhx9+eHbfffe8733v2+QzZQAAoKfzjBcAAOiB+vfvn2HDhm3y4e3P56+DyEvZZ8OGDZvc3qtXry3aXvmLB9W/2LV9+/bND3/4w9x555259dZbs2DBgtx888059NBD893vfnez+z+fLZl7UzO/HP7yDpYX8qMf/ShHHnlk3vzmN+fzn/98hg4dmu233z7XXXddvvrVr260fkuux/Pp6OjI2972tpx11lmbfP81r3lNkmTw4MFZtmxZbr/99vznf/5n/vM//zPXXXddpk+fnuuvv36LPhMAAF7NhBcAAOih3v72t+fqq6/OokWLctBBBz3v2j322CMdHR154IEHsu+++3Zub2try+rVq7PHHntsdt/n7jZZvXp1l+0l75Lpjtra2rz1rW/NW9/61lx66aW54IIL8olPfCJ33nln590Wr6QHHnhgo23/8z//k8bGxiTp/B3/+te/3mjd/fffn0GDBmWHHXZ4wc/ZXAj7t3/7t/Tp0ye333576urqOrdfd911L2b8jey6667p37//C8a9PffcM08//fSL+p337t07RxxxRI444oh0dHTk1FNPzb/8y7/knHPO2ehuLAAA6Kl81RgAAPRQZ511VnbYYYeceOKJaWtr2+j93/zmN7nsssuSJH//93+fJJk3b16XNZdeemmSZMqUKZv9nOeeA/LcszqSP93tcvXVV7+k+V+K3/3udxttGzt2bJJk3bp1r/A0f3LLLbfk0Ucf7fx5yZIlWbx4cQ4//PAkydChQzN27Nhcf/31XSLWL37xi3z3u9/tvEYv5Lk489chrFevXqmpqelyJ9Ly5ctzyy23dOt8amtrc/TRR+fb3/52fvrTn270/nN3xrz73e/OokWLcvvtt2+0ZvXq1fnjH/+YJHnyySc3Ov6YMWOSVO+aAQDAy8EdLwAA0EPtueee+epXv5qpU6dm3333zfTp0zN69OisX78+P/nJT/L1r389xx9/fJLkgAMOyHHHHZerr746q1evzsSJE7NkyZJcf/31Ofroo/N3f/d3m/2c1772tXnDG96QmTNn5ne/+1123nnn3HTTTZ3/QL0aPvWpT+WHP/xhpkyZkj322CMrV67M5z//+ey+++45+OCDqzLTqFGjcvDBB+eUU07JunXrMm/evOyyyy5dvoLr4osvzuGHH56DDjooJ5xwQv7whz/k8ssvT319fc4999wX9Tnjxo1Lknz4wx/OpEmT0qtXr0ybNi1TpkzJpZdemsmTJ+c973lPVq5cmSuvvDKjRo3Kvffe261zuuCCC/Ld7343EydOzMknn5x99903jz/+eL7+9a/nrrvuyoABA3LmmWfmP/7jP/L2t789xx9/fMaNG5e1a9fm5z//eb7xjW9k+fLlGTRoUE488cT87ne/y6GHHprdd989v/3tb3P55Zdn7NixXe7CAgCAnk54AQCAHuzII4/Mvffem4svvjj//u//nquuuip1dXUZM2ZMPvvZz+akk07qXPuFL3whI0eOzJe+9KV861vfypAhQzJz5szMnj37BT/nK1/5St7//vdn7ty5GTBgQE444YT83d/9Xd72tre9nKe3WUceeWSWL1+ea6+9NqtWrcqgQYMyceLEnHfeeamvr6/KTNOnT09tbW3mzZuXlStX5sADD8wVV1yRoUOHdq5pamrKggULMnv27MyaNSvbb799Jk6cmAsvvDAjRox4UZ/zjne8Ix/60Idy00035ctf/nIqlUqmTZuWQw89NF/84hczd+7cnH766RkxYkQuvPDCLF++vNvhZbfddsvixYtzzjnn5Ctf+Ura29uz22675fDDD0+/fv2SJP369csPfvCDXHDBBfn617+eG264If37989rXvOaLtfj//2//5err746n//857N69eoMGTIkU6dOzbnnnpvaWl/GAADA1qOm8ko9FRIAAGArtHz58owYMSIXX3xxzjjjjGqPAwAAVJl/rQgAAAAAAKAQ4QUAAAAAAKAQ4QUAAAAAAKAQz3gBAAAAAAAoxB0vAAAAAAAAhQgvAAAAAAAAhWxX7QFejTo6OvLYY49lp512Sk1NTbXHAQAAAAAAqqhSqeSpp57KsGHDUlv7/Pe0CC+b8Nhjj2X48OHVHgMAAAAAAHgVefjhh7P77rs/7xrhZRN22mmnJH/6Bfbv37/K0wAAAAAAANXU3t6e4cOHd/aD5yO8bMJzXy/Wv39/4QUAAAAAAEiSF/V4kuf/IjIAAAAAAABeNOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACgEOEFAAAAAACg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H+Twww/Phg0bNnmMOXPmpL6+vvM1fPjw7p8UAAAAAACwzdqu2gO8FHPnzs1NN92UhQsXpk+fPp3bp02b1vnn/fffP2PGjMmee+6ZhQsX5q1vfetGx5k5c2aam5s7f25vbxdfAAAAAACALVbVO14GDRqUXr16pa2trcv2tra2DBky5Hn3veSSSzJ37tx897vfzZgxY5537ciRIzNo0KA8+OCDm3y/rq4u/fv37/ICAAAAAADYUlUNL7179864cePS0tLSua2joyMtLS056KCDNrvfRRddlPPPPz8LFizI+PHjX/BzHnnkkTz55JMZOnRokbkBAAAAAAA2parhJUmam5tzzTXX5Prrr899992XU045JWvXrs2MGTOSJNOnT8/MmTM711944YU555xzcu2116axsTGtra1pbW3N008/nSR5+umnc+aZZ+buu+/O8uXL09LSkqOOOiqjRo3KpEmTqnKOAAAAAADAtqHqz3iZOnVqnnjiicyaNSutra0ZO3ZsFixYkIaGhiTJihUrUlv75z501VVXZf369XnXu97V5TizZ8/Oueeem169euXee+/N9ddfn9WrV2fYsGE57LDDcv7556euru4VPTcAAAAAAGDbUlOpVCrVHuLVpr29PfX19VmzZo3nvfyVxrNvrfYIW73lc6dUewQAAAAAAP7ClnSDqn/VGAAAAAAAwNZCeAEAAAAAAChEeAEAAAAAAChEeAEAAAAAAChEeAEAAAAAAChEeAEAAAAAAChEeAEAAAAAAChEeAEAAAAAAChEeAEAAAAAAChEeAEAAAAAAChEeAEAAAAAAChEeAEAAAAAAChEeAEAAAAAAChEeAEAAAAAACikWHhZvXp1qUMBAAAAAAD0SN0KLxdeeGFuvvnmzp/f/e53Z5dddsluu+2W//7v/y42HAAAAAAAQE/SrfAyf/78DB8+PElyxx135I477sh//ud/5vDDD8+ZZ55ZdEAAAAAAAICeYrvu7NTa2toZXr7zne/k3e9+dw477LA0NjZmwoQJRQcEAAAAAADoKbp1x8vAgQPz8MMPJ0kWLFiQpqamJEmlUsmGDRvKTQcAAAAAANCDdOuOl3e84x15z3vek7322itPPvlkDj/88CTJz372s4waNarogAAAAAAAAD1Ft8LLP//zP6exsTEPP/xwLrroouy4445Jkscffzynnnpq0QEB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Rx75oo4xaNCg9OrVK21tbV22t7W1ZciQIc+77yWXXJK5c+fme9/7XsaMGdO5/bn92traMnTo0C7HHDt27CaPVVdXl7q6uhc1MwAAAAAAwOZ0K7wsWLAg06dPz6pVqzZ674We6/KXevfunXHjxqWlpSVHH310kqSjoyMtLS057bTTNrvfRRddlM985jO5/fbbM378+C7vjRgxIkOGDElLS0tnaGlvb8/ixYtzyimnvLgTBAAAAAAA6Iba7uz0oQ99KMccc0wef/zxdHR0dHm92OjynObm5lxzzTW5/vrrc9999+WUU07J2rVrM2PGjCTJ9OnTM3PmzM71F154Yc4555xce+21aWxsTGtra1pbW/P0008n+VP4Of300/PpT386//Ef/5Gf//znmT59eoYNG9YZdwAAAAAAAF4O3brjpa2tLc3NzRs9wL47pk6dmieeeCKzZs1Ka2trxo4dmwULFnQee8WKFamt/XMfuuqqq7J+/fq8613v6nKc2bNn59xzz02SnHXWWVm7dm1OPvnkrF69OgcffHAWLFjwkp4DAwAAAAAA8EJqKpVKZUt3et/73pc3velNOeGEE16Omaquvb099fX1WbNmTfr371/tcV5VGs++tdojbPWWz51S7REAAAAAAPgLW9INunXHyxVXXJFjjjkmP/rRj7L//vtn++237/L+hz/84e4cFgAAAAAAoEfrVnj52te+lu9+97vp06dPFi5cmJqams73ampqhBcAAAAAAGCb1K3w8olPfCLnnXdezj777C7PXwEAAAAAANiWdauarF+/PlOnThVdAAAAAAAA/kK3yslxxx2Xm2++ufQsAAAAAAAAPVq3vmpsw4YNueiii3L77bdnzJgx2X777bu8f+mllxYZDgAAAAAAoCfpVnj5+c9/nte97nVJkl/84hdFBwIAAAAAAOipuhVe7rzzztJzAAAAAAAA9HhbFF7e8Y53vOCampqa/Nu//Vu3BwIAAAAAAOiptii81NfXv1xzAAAAAAAA9HhbFF6uu+66l2sOAAAAAACAHq+22gMAAAAAAABsLYQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQoQXAAAAAACAQrar9gDAK6Px7FurPcJWbfncKdUeAQAAAAB4Faj6HS9XXnllGhsb06dPn0yYMCFLlizZ7Npf/vKXeec735nGxsbU1NRk3rx5G60599xzU1NT0+W1zz77vIxnAAAAAAAA8CdVDS8333xzmpubM3v27CxdujQHHHBAJk2alJUrV25y/TPPPJORI0dm7ty5GTJkyGaP+9rXvjaPP/545+uuu+56uU4BAAAAAACgU1XDy6WXXpqTTjopM2bMyH777Zf58+enX79+ufbaaze5/vWvf30uvvjiTJs2LXV1dZs97nbbbZchQ4Z0vgYNGvRynQIAAAAAAECnqoWX9evX55577klTU9Ofh6mtTVNTUxYtWvSSjv3AAw9k2LBhGTlyZN773vdmxYoVz7t+3bp1aW9v7/ICAAAAAADYUlULL6tWrcqGDRvS0NDQZXtDQ0NaW1u7fdwJEybkS1/6UhYsWJCrrroqDz30UA455JA89dRTm91nzpw5qa+v73wNHz68258PAAAAAABsu6r6VWMvh8MPPzzHHHNMxowZk0mTJuW2227L6tWr86//+q+b3WfmzJlZs2ZN5+vhhx9+BScGAAAAAAC2FttV64MHDRqUXr16pa2trcv2tra2DBkypNjnDBgwIK95zWvy4IMPbnZNXV3d8z4zBgAAAAAA4MWo2h0vvXv3zrhx49LS0tK5raOjIy0tLTnooIOKfc7TTz+d3/zmNxk6dGixYwIAAAAAAGxK1e54SZLm5uYcd9xxGT9+fA488MDMmzcva9euzYwZM5Ik06dPz2677ZY5c+YkSdavX59f/epXnX9+9NFHs2zZsuy4444ZNWpUkuSMM87IEUcckT322COPPfZYZs+enV69euXYY4+tzkkCAAAAAADbjKqGl6lTp+aJJ57IrFmz0tramrFjx2bBggVpaGhIkqxYsSK1tX++Keexxx7L6173us6fL7nkklxyySWZOHFiFi5cmCR55JFHcuyxx+bJJ5/MrrvumoMPPjh33313dt1111f03AAAAAAAgG1PVcNLkpx22mk57bTTNvneczHlOY2NjalUKs97vJtuuqnUaABV13j2rdUeYau2fO6Uao8AAAAAwFamas94AQAAAAAA2NoILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUILwAAAAAAAIUI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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "names, importances = pipe2.columns.importances()\n", "\n", "plt.subplots(figsize=(20, 10))\n", "\n", "plt.bar(names, importances)\n", "\n", "plt.title('Columns importances')\n", "plt.xlabel('Columns')\n", "plt.ylabel('Importances')\n", "plt.xticks(rotation='vertical')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.7 Features\n", "\n", "The most important features look as follows:" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/markdown": [ "```sql\n", "DROP TABLE IF EXISTS \"FEATURE_1_138\";\n", "\n", "CREATE TABLE \"FEATURE_1_138\" AS\n", "SELECT MEDIAN( COALESCE( f_1_1_69.\"feature_1_1_69\", 0.0 ) ) AS \"feature_1_138\",\n", " t1.rowid AS rownum\n", "FROM \"USERS__STAGING_TABLE_1\" t1\n", "INNER JOIN \"U2BASE__STAGING_TABLE_4\" t2\n", "ON t1.\"userid\" = t2.\"userid\"\n", "LEFT JOIN \"FEATURE_1_1_69\" f_1_1_69\n", "ON t2.rowid = f_1_1_69.rownum\n", "GROUP BY t1.rowid;\n", "```" ], "text/plain": [ "'DROP TABLE IF EXISTS \"FEATURE_1_138\";\\n\\nCREATE TABLE \"FEATURE_1_138\" AS\\nSELECT MEDIAN( COALESCE( f_1_1_69.\"feature_1_1_69\", 0.0 ) ) AS \"feature_1_138\",\\n t1.rowid AS rownum\\nFROM \"USERS__STAGING_TABLE_1\" t1\\nINNER JOIN \"U2BASE__STAGING_TABLE_4\" t2\\nON t1.\"userid\" = t2.\"userid\"\\nLEFT JOIN \"FEATURE_1_1_69\" f_1_1_69\\nON t2.rowid = f_1_1_69.rownum\\nGROUP BY t1.rowid;'" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pipe1.features.to_sql()[pipe1.features.sort(by=\"importances\")[0].name]" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/markdown": [ "```sql\n", "DROP TABLE IF EXISTS \"FEATURE_1_1\";\n", "\n", "CREATE TABLE \"FEATURE_1_1\" AS\n", "SELECT AVG( \n", " CASE\n", " WHEN ( p_1_1.\"feature_1_1_69\" > 0.242159 ) AND ( p_1_1.\"feature_1_1_21\" > 0.232813 ) AND ( t2.\"t3__year__mapping_1_target_1_avg\" > 0.282119 ) THEN 20.46317569156853\n", " WHEN ( p_1_1.\"feature_1_1_69\" > 0.242159 ) AND ( p_1_1.\"feature_1_1_21\" > 0.232813 ) AND ( t2.\"t3__year__mapping_1_target_1_avg\" <= 0.282119 OR t2.\"t3__year__mapping_1_target_1_avg\" IS NULL ) THEN 7.321538279840953\n", " WHEN ( p_1_1.\"feature_1_1_69\" > 0.242159 ) AND ( p_1_1.\"feature_1_1_21\" <= 0.232813 OR p_1_1.\"feature_1_1_21\" IS NULL ) AND ( p_1_1.\"feature_1_1_69\" > 0.243429 ) THEN 5.046599618766721\n", " WHEN ( p_1_1.\"feature_1_1_69\" > 0.242159 ) AND ( p_1_1.\"feature_1_1_21\" <= 0.232813 OR p_1_1.\"feature_1_1_21\" IS NULL ) AND ( p_1_1.\"feature_1_1_69\" <= 0.243429 OR p_1_1.\"feature_1_1_69\" IS NULL ) THEN -8.250725468943104\n", " WHEN ( p_1_1.\"feature_1_1_69\" <= 0.242159 OR p_1_1.\"feature_1_1_69\" IS NULL ) AND ( p_1_1.\"feature_1_1_21\" > 0.273123 ) AND ( p_1_1.\"feature_1_1_76\" > 0.008673 ) THEN -3.885674068832839\n", " WHEN ( p_1_1.\"feature_1_1_69\" <= 0.242159 OR p_1_1.\"feature_1_1_69\" IS NULL ) AND ( p_1_1.\"feature_1_1_21\" > 0.273123 ) AND ( p_1_1.\"feature_1_1_76\" <= 0.008673 OR p_1_1.\"feature_1_1_76\" IS NULL ) THEN -12.86974979841147\n", " WHEN ( p_1_1.\"feature_1_1_69\" <= 0.242159 OR p_1_1.\"feature_1_1_69\" IS NULL ) AND ( p_1_1.\"feature_1_1_21\" <= 0.273123 OR p_1_1.\"feature_1_1_21\" IS NULL ) AND ( p_1_1.\"feature_1_1_85\" > 0.003477 ) THEN 26.50336909269918\n", " WHEN ( p_1_1.\"feature_1_1_69\" <= 0.242159 OR p_1_1.\"feature_1_1_69\" IS NULL ) AND ( p_1_1.\"feature_1_1_21\" <= 0.273123 OR p_1_1.\"feature_1_1_21\" IS NULL ) AND ( p_1_1.\"feature_1_1_85\" <= 0.003477 OR p_1_1.\"feature_1_1_85\" IS NULL ) THEN -2.663699179011978\n", " ELSE NULL\n", " END\n", ") AS \"feature_1_1\",\n", " t1.rowid AS rownum\n", "FROM \"USERS__STAGING_TABLE_1\" t1\n", "INNER JOIN \"U2BASE__STAGING_TABLE_4\" t2\n", "ON t1.\"userid\" = t2.\"userid\"\n", "LEFT JOIN \"FEATURES_1_1_PROPOSITIONALIZATION\" p_1_1\n", "ON t2.rowid = p_1_1.\"rownum\"\n", "GROUP BY t1.rowid;\n", "```" ], "text/plain": [ "'DROP TABLE IF EXISTS \"FEATURE_1_1\";\\n\\nCREATE TABLE \"FEATURE_1_1\" AS\\nSELECT AVG( \\n CASE\\n WHEN ( p_1_1.\"feature_1_1_69\" > 0.242159 ) AND ( p_1_1.\"feature_1_1_21\" > 0.232813 ) AND ( t2.\"t3__year__mapping_1_target_1_avg\" > 0.282119 ) THEN 20.46317569156853\\n WHEN ( p_1_1.\"feature_1_1_69\" > 0.242159 ) AND ( p_1_1.\"feature_1_1_21\" > 0.232813 ) AND ( t2.\"t3__year__mapping_1_target_1_avg\" <= 0.282119 OR t2.\"t3__year__mapping_1_target_1_avg\" IS NULL ) THEN 7.321538279840953\\n WHEN ( p_1_1.\"feature_1_1_69\" > 0.242159 ) AND ( p_1_1.\"feature_1_1_21\" <= 0.232813 OR p_1_1.\"feature_1_1_21\" IS NULL ) AND ( p_1_1.\"feature_1_1_69\" > 0.243429 ) THEN 5.046599618766721\\n WHEN ( p_1_1.\"feature_1_1_69\" > 0.242159 ) AND ( p_1_1.\"feature_1_1_21\" <= 0.232813 OR p_1_1.\"feature_1_1_21\" IS NULL ) AND ( p_1_1.\"feature_1_1_69\" <= 0.243429 OR p_1_1.\"feature_1_1_69\" IS NULL ) THEN -8.250725468943104\\n WHEN ( p_1_1.\"feature_1_1_69\" <= 0.242159 OR p_1_1.\"feature_1_1_69\" IS NULL ) AND ( p_1_1.\"feature_1_1_21\" > 0.273123 ) AND ( p_1_1.\"feature_1_1_76\" > 0.008673 ) THEN -3.885674068832839\\n WHEN ( p_1_1.\"feature_1_1_69\" <= 0.242159 OR p_1_1.\"feature_1_1_69\" IS NULL ) AND ( p_1_1.\"feature_1_1_21\" > 0.273123 ) AND ( p_1_1.\"feature_1_1_76\" <= 0.008673 OR p_1_1.\"feature_1_1_76\" IS NULL ) THEN -12.86974979841147\\n WHEN ( p_1_1.\"feature_1_1_69\" <= 0.242159 OR p_1_1.\"feature_1_1_69\" IS NULL ) AND ( p_1_1.\"feature_1_1_21\" <= 0.273123 OR p_1_1.\"feature_1_1_21\" IS NULL ) AND ( p_1_1.\"feature_1_1_85\" > 0.003477 ) THEN 26.50336909269918\\n WHEN ( p_1_1.\"feature_1_1_69\" <= 0.242159 OR p_1_1.\"feature_1_1_69\" IS NULL ) AND ( p_1_1.\"feature_1_1_21\" <= 0.273123 OR p_1_1.\"feature_1_1_21\" IS NULL ) AND ( p_1_1.\"feature_1_1_85\" <= 0.003477 OR p_1_1.\"feature_1_1_85\" IS NULL ) THEN -2.663699179011978\\n ELSE NULL\\n END\\n) AS \"feature_1_1\",\\n t1.rowid AS rownum\\nFROM \"USERS__STAGING_TABLE_1\" t1\\nINNER JOIN \"U2BASE__STAGING_TABLE_4\" t2\\nON t1.\"userid\" = t2.\"userid\"\\nLEFT JOIN \"FEATURES_1_1_PROPOSITIONALIZATION\" p_1_1\\nON t2.rowid = p_1_1.\"rownum\"\\nGROUP BY t1.rowid;'" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pipe2.features.to_sql()[pipe2.features.sort(by=\"importances\")[0].name]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.8 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": 29, "metadata": {}, "outputs": [], "source": [ "# Creates a folder named movie_lens_pipeline containing\n", "# the SQL code.\n", "pipe2.features.to_sql().save(\"movie_lens_pipeline\")" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "pipe2.features.to_sql(dialect=getml.pipeline.dialect.spark_sql).save(\"movie_lens_spark\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.9 Benchmarks" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "State-of-the-art approaches on this dataset perform as follows:\n", "\n", "\n", "| Approach | Study | Accuracy | AUC |\n", "| :------------------------------ | :------------------------- | -----------: | ------: |\n", "| Probabalistic Relational Model | Ghanem (2009) | -- | 69.2% |\n", "| Multi-Relational Bayesian Network | Schulte and Khosravi (2012) | 69% | -- |\n", "| Multi-Relational Bayesian Network | Schulte et al (2013) | 66% | -- |\n", "\n", "\n", "By contrast, getML's algorithms, as used in this notebook, perform as follows:" ] }, { "cell_type": "code", "execution_count": 31, "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", "
ApproachAccuracyAUC
0FastProp77.8%79.0%
1Relboost81.0%84.1%
\n", "
" ], "text/plain": [ " Approach Accuracy AUC\n", "0 FastProp 77.8% 79.0%\n", "1 Relboost 81.0% 84.1%" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scores = [fastprop_score, relboost_score]\n", "pd.DataFrame(data={\n", " 'Approach': ['FastProp', 'Relboost'],\n", " 'Accuracy': [f'{score.accuracy:.1%}' for score in scores],\n", " 'AUC': [f'{score.auc:,.1%}' for score in scores]\n", "})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. Conclusion\n", "\n", "In this notebook we have demonstrated how getML can be applied to the MovieLens dataset. We have demonstrated the our approach outperforms state-of-the-art relational learning algorithms." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Citations\n", "\n", "Motl, Jan, and Oliver Schulte. \"The CTU prague relational learning repository.\" arXiv preprint arXiv:1511.03086 (2015).\n", "\n", "Ghanem, Amal S. \"Probabilistic models for mining imbalanced relational data.\" Doctoral dissertation, Curtin University (2009).\n", "\n", "Schulte, Oliver, and Hassan Khosravi. \"Learning graphical models for relational data via lattice search.\" Machine Learning 88.3 (2012): 331-368.\n", "\n", "Schulte, Oliver, et al. \"A hierarchy of independence assumptions for multi-relational Bayes net classifiers.\" 2013 IEEE Symposium on Computational Intelligence and Data Mining (CIDM). IEEE, 2013.\n" ] } ], "metadata": { "jupytext": { "encoding": "# -*- coding: utf-8 -*-", "formats": "ipynb,py:percent,md" }, "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, "nav_menu": {}, "number_sections": false, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": true } }, "nbformat": 4, "nbformat_minor": 4 }