Repository: adaa-polsl/RuleKit-python (language: python)

Issue:
Feat/score function
Add score functions to classification, regression and survival to ensure compatibility with the sklearn interface


Discussion / hints:

Fix patch:
diff --git a/.gitignore b/.gitignore
index 7cd61ab..a5dcded 100644
--- a/.gitignore
+++ b/.gitignore
@@ -275,3 +275,11 @@ static
 .idea/
 .vscode/
 doc/env
+doc/build/doctrees/
+doc/build/html.zip
+
+tests/resources
+
+*.pickle
+doc/build/html/.buildinfo
+doc/build/html/.buildinfo
diff --git a/README.md b/README.md
index 14dbe60..92c642d 100644
--- a/README.md
+++ b/README.md
@@ -21,6 +21,11 @@ Second command will fetch latest RuleKit library jar file from its github releas
 
 ## Running tests
 
+If you're running tests first time (or you want to update existing tests resources) you need to download tests resources from RuleKit repository. You can do it by by running:
+```
+python tests/resources.py download
+```
+Runing tests:    
 In directory where `setup.py` file exists.
 ```
 python -m unittest discover ./tests
diff --git a/doc/build/doctrees/environment.pickle b/doc/build/doctrees/environment.pickle
deleted file mode 100644
index c84571f..0000000
Binary files a/doc/build/doctrees/environment.pickle and /dev/null differ
diff --git a/doc/build/doctrees/index.doctree b/doc/build/doctrees/index.doctree
deleted file mode 100644
index ce99e52..0000000
Binary files a/doc/build/doctrees/index.doctree and /dev/null differ
diff --git a/doc/build/doctrees/nbsphinx/rst/tutorials/classification.ipynb b/doc/build/doctrees/nbsphinx/rst/tutorials/classification.ipynb
deleted file mode 100644
index 49f4148..0000000
--- a/doc/build/doctrees/nbsphinx/rst/tutorials/classification.ipynb
+++ /dev/null
@@ -1,2129 +0,0 @@
-{
- "cells": [
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "# Classification"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "This notebook presents example usage of package for solving classification problem on `seismic-bumps` dataset. You can download dataset [here](https://raw.githubusercontent.com/adaa-polsl/RuleKit/master/data/seismic-bumps/seismic-bumps.arff).\n",
-    "\n",
-    "This tutorial will cover topics such as:\n",
-    "* training model\n",
-    "* changing model hyperparameters\n",
-    "* hyperparameters tuning\n",
-    "* calculating metrics for model\n",
-    "* getting RuleKit inbuil"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "### Summary of the dataset."
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 28,
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "<div>\n",
-       "<style scoped>\n",
-       "    .dataframe tbody tr th:only-of-type {\n",
-       "        vertical-align: middle;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe tbody tr th {\n",
-       "        vertical-align: top;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe thead th {\n",
-       "        text-align: right;\n",
-       "    }\n",
-       "</style>\n",
-       "<table border=\"1\" class=\"dataframe\">\n",
-       "  <thead>\n",
-       "    <tr style=\"text-align: right;\">\n",
-       "      <th></th>\n",
-       "      <th>genergy</th>\n",
-       "      <th>gimpuls</th>\n",
-       "      <th>goenergy</th>\n",
-       "      <th>goimpuls</th>\n",
-       "      <th>nbumps</th>\n",
-       "      <th>nbumps2</th>\n",
-       "      <th>nbumps3</th>\n",
-       "      <th>nbumps4</th>\n",
-       "      <th>nbumps5</th>\n",
-       "      <th>nbumps6</th>\n",
-       "      <th>nbumps7</th>\n",
-       "      <th>nbumps89</th>\n",
-       "      <th>senergy</th>\n",
-       "      <th>maxenergy</th>\n",
-       "      <th>class</th>\n",
-       "    </tr>\n",
-       "  </thead>\n",
-       "  <tbody>\n",
-       "    <tr>\n",
-       "      <th>count</th>\n",
-       "      <td>2.584000e+03</td>\n",
-       "      <td>2584.000000</td>\n",
-       "      <td>2584.000000</td>\n",
-       "      <td>2584.000000</td>\n",
-       "      <td>2584.000000</td>\n",
-       "      <td>2584.000000</td>\n",
-       "      <td>2584.000000</td>\n",
-       "      <td>2584.000000</td>\n",
-       "      <td>2584.000000</td>\n",
-       "      <td>2584.0</td>\n",
-       "      <td>2584.0</td>\n",
-       "      <td>2584.0</td>\n",
-       "      <td>2584.000000</td>\n",
-       "      <td>2584.000000</td>\n",
-       "      <td>2584.000000</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>mean</th>\n",
-       "      <td>9.024252e+04</td>\n",
-       "      <td>538.579334</td>\n",
-       "      <td>12.375774</td>\n",
-       "      <td>4.508901</td>\n",
-       "      <td>0.859520</td>\n",
-       "      <td>0.393576</td>\n",
-       "      <td>0.392802</td>\n",
-       "      <td>0.067724</td>\n",
-       "      <td>0.004644</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>4975.270898</td>\n",
-       "      <td>4278.850619</td>\n",
-       "      <td>0.065789</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>std</th>\n",
-       "      <td>2.292005e+05</td>\n",
-       "      <td>562.652536</td>\n",
-       "      <td>80.319051</td>\n",
-       "      <td>63.166556</td>\n",
-       "      <td>1.364616</td>\n",
-       "      <td>0.783772</td>\n",
-       "      <td>0.769710</td>\n",
-       "      <td>0.279059</td>\n",
-       "      <td>0.068001</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>20450.833222</td>\n",
-       "      <td>19357.454882</td>\n",
-       "      <td>0.247962</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>min</th>\n",
-       "      <td>1.000000e+02</td>\n",
-       "      <td>2.000000</td>\n",
-       "      <td>-96.000000</td>\n",
-       "      <td>-96.000000</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>0.000000</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>25%</th>\n",
-       "      <td>1.166000e+04</td>\n",
-       "      <td>190.000000</td>\n",
-       "      <td>-37.000000</td>\n",
-       "      <td>-36.000000</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>0.000000</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>50%</th>\n",
-       "      <td>2.548500e+04</td>\n",
-       "      <td>379.000000</td>\n",
-       "      <td>-6.000000</td>\n",
-       "      <td>-6.000000</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>0.000000</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>75%</th>\n",
-       "      <td>5.283250e+04</td>\n",
-       "      <td>669.000000</td>\n",
-       "      <td>38.000000</td>\n",
-       "      <td>30.250000</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>0.000000</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>2600.000000</td>\n",
-       "      <td>2000.000000</td>\n",
-       "      <td>0.000000</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>max</th>\n",
-       "      <td>2.595650e+06</td>\n",
-       "      <td>4518.000000</td>\n",
-       "      <td>1245.000000</td>\n",
-       "      <td>838.000000</td>\n",
-       "      <td>9.000000</td>\n",
-       "      <td>8.000000</td>\n",
-       "      <td>7.000000</td>\n",
-       "      <td>3.000000</td>\n",
-       "      <td>1.000000</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>0.0</td>\n",
-       "      <td>402000.000000</td>\n",
-       "      <td>400000.000000</td>\n",
-       "      <td>1.000000</td>\n",
-       "    </tr>\n",
-       "  </tbody>\n",
-       "</table>\n",
-       "</div>"
-      ],
-      "text/plain": [
-       "            genergy      gimpuls     goenergy     goimpuls       nbumps  \\\n",
-       "count  2.584000e+03  2584.000000  2584.000000  2584.000000  2584.000000   \n",
-       "mean   9.024252e+04   538.579334    12.375774     4.508901     0.859520   \n",
-       "std    2.292005e+05   562.652536    80.319051    63.166556     1.364616   \n",
-       "min    1.000000e+02     2.000000   -96.000000   -96.000000     0.000000   \n",
-       "25%    1.166000e+04   190.000000   -37.000000   -36.000000     0.000000   \n",
-       "50%    2.548500e+04   379.000000    -6.000000    -6.000000     0.000000   \n",
-       "75%    5.283250e+04   669.000000    38.000000    30.250000     1.000000   \n",
-       "max    2.595650e+06  4518.000000  1245.000000   838.000000     9.000000   \n",
-       "\n",
-       "           nbumps2      nbumps3      nbumps4      nbumps5  nbumps6  nbumps7  \\\n",
-       "count  2584.000000  2584.000000  2584.000000  2584.000000   2584.0   2584.0   \n",
-       "mean      0.393576     0.392802     0.067724     0.004644      0.0      0.0   \n",
-       "std       0.783772     0.769710     0.279059     0.068001      0.0      0.0   \n",
-       "min       0.000000     0.000000     0.000000     0.000000      0.0      0.0   \n",
-       "25%       0.000000     0.000000     0.000000     0.000000      0.0      0.0   \n",
-       "50%       0.000000     0.000000     0.000000     0.000000      0.0      0.0   \n",
-       "75%       1.000000     1.000000     0.000000     0.000000      0.0      0.0   \n",
-       "max       8.000000     7.000000     3.000000     1.000000      0.0      0.0   \n",
-       "\n",
-       "       nbumps89        senergy      maxenergy        class  \n",
-       "count    2584.0    2584.000000    2584.000000  2584.000000  \n",
-       "mean        0.0    4975.270898    4278.850619     0.065789  \n",
-       "std         0.0   20450.833222   19357.454882     0.247962  \n",
-       "min         0.0       0.000000       0.000000     0.000000  \n",
-       "25%         0.0       0.000000       0.000000     0.000000  \n",
-       "50%         0.0       0.000000       0.000000     0.000000  \n",
-       "75%         0.0    2600.000000    2000.000000     0.000000  \n",
-       "max         0.0  402000.000000  400000.000000     1.000000  "
-      ]
-     },
-     "execution_count": 28,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "from scipy.io import arff\n",
-    "import pandas as pd\n",
-    "\n",
-    "df_full = pd.DataFrame(arff.loadarff('../../../../../data/seismic-bumps/seismic-bumps.arff')[0])\n",
-    "df_full['class'] = df_full['class'].astype(int)\n",
-    "df_full.describe()"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "### Decision class distribution"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 10,
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAV0AAADsCAYAAADXaXXTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAkh0lEQVR4nO3dd5hU5aE/8O85U/fMsI0FdqmDMFJFIOBEUQSNiC7GgiUWTCxJNPHGn0luMk+SJ5eb3Jtwfz9vFKwxxhhNgiUa2yT2ggWHIl2BQVjKLm37Ti/n/P44A4iCzOzOzDtn5vt5nnk2kS3fbd995z3v+x5J0zQQEVFhyKIDEBGVE5YuEVEBsXSJiAqIpUtEVEAsXSKiAmLpEhEVEEuX6BgkSXpEkqQDkiRtFJ2FSgtLl+jYHgUwV3QIKj0sXaJj0DRtGYB20Tmo9LB0iYgKiKVLRFRALF0iogJi6RIRFRBLl+gYJElaCmA5gDGSJO2RJOkm0ZmoNEg82pGIqHA40iUiKiCWLhFRAbF0iYgKyCw6ANEhLq+vFkA9gEHHeFkD/efVDMB8qfzunrusDwwDkASQ+MzLVgAtAJo/87IZC7u4u4yKAkuXCsrl9ZkBjAUwOf04FcAY6MVqzfT9mFLRdem3zczCqij0Ej5UxJsBrAGwBgu7dmX8foj6iKVLeePy+qwAPACm4EjBTgBg6+v7TkaCg1GR1ZvYAZyUfhxtYVUbgLUAVgB4H8ByjowpX1i6lFMur+8kABcAmKtp2mxJkhz5+DiSbIrn8N31B3Bu+gEAGhZWbYFewP8C8C8s7Arn8ONRGWPpUp+4vL4KALOhl+xcSZLch/5NkiRxwfpGgj4FMhbATQAiWFj1CoBnAbyIhV2dArORwbF0KWvpor0EwLWapp0rSZIdMHTJnsihz/cSAAksrHoLegE/h4Vd+wXmIgNi6VLGXF7fTE3TvgloV0iS3A8o6aI9HguAOenH/VhY9QGApwE8joVdHUKTkSGwdOlLuby+/gC+panqLZIsj9ZLtuyK9nhkAGemH7/FwqqlAO7Dwq41YmNRMWPp0jG5vL5TNVX9KSRpviRJVknmPpoTUKDP/96EhVXLr4//9M5l6qnPNy1qTIkORsWFpUtHGfGTF6dqavI3kskyR5JlDml7IaaZBy1TJ/0dwC6X13cXgIebFjWGROei4sDSJQDAiJ+8OF1LJRbJFts5kpzxHgU6hnvDc4IwSRKAEQDuBvAfLq9vCYA7mxY1BoWGI+F4tGOZG/GTFz1aKvE/ssV2tugs2bg0+kLzXdVPDBGd4/N6EnJiWvz3UszkONaAZj+A/4A+8uW0Q5niRF2ZGvGTF04Z/qNn35Vk+UOjFW4xey50SstxChfQtzo/CGC9y+ubV8BYVEQ4vVBmht/xtFNLJZfIFc5vyhYb/+jmUFKFdq95Qf8MXnU8gBddXt9bAH7ctKjxozxHoyLCX7oyMvT7f74Bsmm3Sam8QeJyhJx7Lzh4737zYGcWbzIbwCqX1/e4y+sbmq9cVFz4i1cGht32lzHDbl+60tyv7hHZYqsWnadULcbVvXnmKAG4DsBGl9d3Q44jURHi9EIJc3l91mSw/f+alKrvS7KJ3+s82hJytq+xfmVgH95FFYBHXF7fpQC+07SocV+OolGR4Ui3RA359oNnqLHwDrOz9nYWbv49mGjM1SlkF0Ef9V6Zo/dHRYalW2IUt0duuGHJ/zPXDH5HtimDRecpB60xc+Q527xcLl/rD+BJl9f3ZHobNpUQlm4JqZv3w4aac769wjZo1I85ui2cv0a+ul+TTPnYvXcl9FEvl5eVEJZuiRh01a/mVYz2bLLUNHxFdJZyEk1JqYct19Tn8UPUQ19e9muX18dt2SWApWtwittjavjmXYvtIyY/Z7I7a0TnKTcv94xu6TFV2wvwoX4B4BmX15eXO3FQ4bB0Daz2a98dVHPOt1fYGk7+gSSbTKLzlBtVAxabFmSzLrevLgXwgcvrcxXwY1KOsXQNqvZr3/E4xp651lLTMFV0lnK1Olh3YIdldKGfXUwCsNLl9c0s8MelHGHpGozi9ki1c2693jnx3NdMztp8ziXSCdyrzlcFfeg6AK+7vL7vCPr41AcsXQNR3B6TcvIZv3Cect5Dst3ZT3SecrYrbO9+x3a2yD96FgC/d3l9S1xeH3+PDYTfLINQ3B67MvasxY7xs34pW2w20XnK3R9j53aKzpD2bwD+7PL6OKdvECxdA1DcHqdjwuxHHOPOvlUymbn+VrDuuBxfarusmDaeXAfgCZfXZxEdhE6MpVvkFLen2jlpzlJlzJnfkGSeDFYMnglP3huXK4rtj9/lAP7h8vr4LKjI8Ze4iCluzwBl3MzHK0Z75klleK/zYpRQod1nXlAnOsdxNEJfy8v7LRUxlm6RUtyegRUnTXvIMXbmhezb4vFOz7CWVvOgYt6g0AjgKU41FC+WbhFS3J4a27CJv3NOmjOPUwrFZTGuMcLT94sBLHV5fcU2BUJg6RYdxe1xWuvdv62cOu9yXjQrLpuClW0bbKcW69TC580HcK/oEPRFLN0iorg9dkv/4b+snH7JAslsNcKIqqw8kLwoIjpDlr7r8vpuFx2CjsbSLRKK22MxV9X/uPKrl98iWysU0XnoaAei5vBLtrlFd8v3DPyvy+u7QHQIOoKlWwQUt8ck2ZSbq06/4g4Td5oVpcejMw4iP2fm5psJ+hreCaKDkI6lK5ji9kgArqycdskPTY6aWtF5jKYzquHyp8IYe28Q4+4LYvnu5Bde5+2mJCY/GMSE+4M4+9EQAOBgSMWZj4Qw8f4gntucOPy6Fz8RRkvP0UcqRJJS8hHL1UY+56ISwEsur2+A6CDEG1MWg7OVcTNvs9WPHi06iBHd/nIUc0eb8fcrrYinNIQTR/97Z1TD93xRvHydguFVMg6E9EJdujGBW6ZZcNk4Cy78axiXjLXgxS0JTKmXMbjf0WORl4JjWkL2yuGF+pzyxAV988S5TYsaY6LDlDOOdAVS3J6RloEjb3eMPes00VmMqCuqYdnOJG6aoi9JtZokVNuPngH424YELhtnxvAq/Ud9oEN/aZElhBNALAmYZCCparjbH8dPZhx9/VLVgCWmBVUF+HQKYQaAP4gOUe5YuoIobk8/2eb4YdX0S2fxfma9s6NTxQBFwg3PRzHl90Hc/EIEobh21OtsbVPREdEw69EQvvJQEI+tiwMArjnFgue3JHHe4yH87Ewb7l8Zx4JJFiiWo0vb3zNw327LyFIpXQBY4PL6bhIdopyxdAVQ3B4ZwI1Vp185T7Y7q0XnMaqkCny0V8Wt0yxY810nHBYJi96Lfe51NKzeq8J3jYJXrlPw62VxbG1LocouwXeNglXfcWJqgwkvbk3i8vEWfPuFCC5/Knx4bniJdoWITy3f7nZ5fSeJDlGuWLpizHVOmnOdpf8wl+ggRja0UsLQSgmeofoThcvHm/HRPvVzryPj/FEmOKwS6hQZM4ebsO5zr/PrZTH8/Cwblm5I4MzhJvz5kgosfCeG7eGKruW2GUa+gHY8TgCP8RxeMfhFLzDF7RlrrXd/v2L0abzNTh/VO2UMq5KxpTUFAHhjRxLj647+kb54jBnv7U4hqWoIJzT4m1MYN+DI6wTaUtjTrWKWy4xwQoMsAZIERBLAw/E5XQX9hAprBoCfig5Rjli6BaS4PTWQTbf1m9p4miTxTIVcuOcCO659NoJJDwSxdp+Kn51lw4Or4nhwlT53O26ACXNHmTHpgRBO+0MIN0+1YOLAI+d9//zNGP77HP3i2dWnWPDAqgSm/yGEG6faE09ZLzXiZohs/KfL65ssOkS5kTRNO/FrUZ+l53Hv6DflwisqTprmEZ3H6C6NvtB8V/UTeSvFhzqn7/yN/Y4R+Xr/RWQTgGlNixqjooOUC462Cme6ubp+ht015Suig9CXi6tQH7QsKJeNBBMA/FZ0iHLC0i0Axe2pBHB95bRLpnB5WPF7o8fV0m6qK6fzL253eX1niA5RLli6hTFfGTNjvLlqoEt0EDqxxdK15VS4ACABuMvl9RnxbAnDYenmmeL2jJXt/eYo3HVmCOuD1a2brRPK8QyM0wBcKzpEOWDp5pHi9tgA3Fg5/ZJTZLO13EZPhnRf8uJyPpfgty6vjz+necbSza+51nr3OMsAF4/VM4C9UUvoZdt5pb5M7MsMBfBj0SFKHUs3TxS3ZwiAi52nfG0CbyxpDH+OnN0qSWX/K/ETl9c3WHSIUlb2P2H5cOiMXPvwSXXmygEjReehEwslpMSjtitZNoADwG9EhyhlLN38GA3gVMf4WdzqaxAvhCa0RGUnb1uuu97l9XE9eZ6wdHPs0Ci3YtT0OpOjupznBw0jpUK7x7SgRnSOIiKBo928Yenm3gQAbuXkM6aIDkKZ+SBYv6/FMqxSdI4iM8fl9fGZWh6wdHMoPcq93D5yapVJqeL8oEEs0a7i78GxeUUHKEX8Ycut8QBcjjEzOB9mEIGQo3OlzTNIdI4iNd/l9fHefTnG0s2R9Cj3MtvQ8Q6To2aY6DyUmYcSc3tEZyhiMoAfiQ5Rali6uTMGwKiK0R636CCUmfaYKfqs7SJe7Pxy17u8Pl5kzCGWbu7Mle3OhKVmMHefGcTSyGn7U5KVvwNfTgFws+gQpYQ/cDmguD11ACY5xs0cwqMbjSGWgvqQ+bqBonMYxG0ur8904lejTLB0c8MDQLM2jOESG4N4LTiqpctcUyE6h0EMBzBPdIhSwdLtI8XtMQOYYxs6wWqq6Mer4AagasDd0nUO0TkMhsc+5ghLt+/GAqisGDWNc7kGsTZYe2CbdQwvDmWn0eX1OUWHKAUs3b47V7I5kpbaIRNFB6HM3Je6NCU6gwEpAL4uOkQpYOn2geL21AI41THmzAZJNvOwFAPYE7H1vG6b3SA6h0F9Q3SAUsDS7ZvTAGjWQSeNER2EMvOn2Ox2npnba+dzzW7f8aevl9I70OZIFnuXyVnrEp2HTiyYkBN/sV7BzRC9ZwVwmegQRsfS7b0hAKorRk6t59pcY3g2dEpLTK7g96pvOMXQRyzd3hsLANb60SeLDkInllSh3Wde0F90jhIw2+X1cVNJH7B0e+90AF3m6nqetWAA7waH7N1vHswlT31nAnC+6BBGxtLtBcXtqQQw0jp4TIVssfPwawNYjKu5uiR3zhYdwMhYur3jBgD7kPEc5RrA5pCzfa116gDROUrITNEBjIyl2zvTAMQs/YdxPtcAHkw0hkVnKDFul9fHtc69xNLNUvqshSmyzRGUlSouPypyrTFz5HnbPH6fco9TDL3E0s2eC4DF2nBynSRJkugw9OX+Ejl9vyaZ+H3KPZZuL7F0szcagGSpHcqnV0UukpRSf7RcXS86R4nivG4vsXSzNxZA0Fw5gHf7LXIvh9wtPaZqu+gcJWq8y+vjxcleYOlmIb31dxSAoMlRzZFuEVM1YLG8oJ/oHCXuLNEBjIilm51qAA7J5oBkc3B3UxFbFazb32QZVS06R4k7RXQAI2LpZqcBgGqrH13Pi2jF7V71clV0hjLAJZO9wNLNzhAAMi+iFbedYXv3MttMfo/yj6XbCyzd7IwDEDJVDeQvdBH7Y/xrnaIzlAmWbi+wdDOUvog2GkCPqaKSV22LVFdcji+1zudmiMKodHl9XJKXJZZu5ioBOAHEZWtFteAsdBzPhCfvTcg2k+gcZYSj3SyxdDNXB0CVLHazZLYqosPQFyVUaPebF9SJzlFmWLpZYulmrgqAZK5uqBIdhI7t7Z7hLa3mQQ7ROcoM7w+YJZZu5moASObKOpZukVosXWMTnaEM8XjTLLF0M1cPIC5XVPLuA0VoU7CybaN1EqcWCo+37skSSzdz9QBiss3Bp69F6P7k1yOiM5Qp7szMEks3czUA4rJN4Ui3yOyPWsI+2/lcJiZGregARsPSzVwVgLhkreBIt8g8HjnzIHhmrig1Lq+PX/sssHQzoLg9JuhrdBOSycKLNUUknJSSj1i/wR2C4pgA8DS3LLB0M+MAoAGAJEn8mhUBTVNNAOALjm0Jm/pZRecpc1y3ngUWSGasSJcuwNPFikFKVStUDVhsur5adBYCp9yywNLNjIxDpcuRblFQVc36Yc/AfXssIypFZyGWbjZYIJk5MrrlObpFQZVMySXalfxeFIcK0QGMxCw6gEF85o8TR7rFYL11stxsdQ0SnYMAAEnRAYyEBZIZjnSLTLPVxae0xYMbU7LA0s3M4a+TxJEu0eexdLPAAskMR7pEx8fSzQJLNzOHv06apqZEBiEqQizdLLB0M3N4dKslYmGRQYiKEEs3CyzdzBwe3WpJli7RZ6hNixrjokMYCUs3M4eLVo1HWLpER3CUmyWWbmZCSH+ttHgkJDgLUTHhICRLLN3MxKBvA5bUWJg/ZERHNIsOYDQs3QyEA34NQA8AixoNsnSJjmgSHcBoWLqZ6wZgUaM9LF2iI3aIDmA0LN3MdQGwpkKdnNMlOoKlmyWWbuY6AViSPQeDmqaqosMQFYkm0QGMhqWbuQ4AFqSSqhoLtYoOQ1QkONLNEks3cweg3w8Karj7gOAsRMWiSXQAo2HpZu4AABUAUsF2li4R0Nq0qDEoOoTRsHQzdwDpMxiSXftZukTAdtEBjIilm7kuAHEA5kTbbpYuEbBKdAAjYulmKL1BYhcAR6Jtd4eWSvKQDyp3H4oOYEQs3ex8ivSdT9VY8KDgLESiLRcdwIhYutnZifTNPFPhLk4xUNnSNO1g06LGbaJzGBFLNzuHVzAkO/fxoA8qW5IkcWqhl1i62Tm8VjfWvJmLwqmcsXR7iaWbhXDAHwJwEICSaN3ZriaiPaIzEQnC+dxeYulmbw2AagBIdbdytEtlR9O0FIAVonMYFUs3e58gPcWQaNvF0qWyI0nSuqZFjTxtr5dYutnbgfTOtMjO9ds0TRMch6jgXhIdwMhYulkKB/xdAPYBcKS6DwTVaM8+0ZmICuxF0QGMjKXbOyuQntdNdrRwrSKVDU3TmgGsFp3DyFi6vfMx0l+7WMuWrYKzEBWMJEkvNS1q5JxaH7B0e2cHgCQAU3Tnut1qPNIlOhBRgfxddACjY+n2QjjgTwDYAKAWAOIHm9aLTUSUf5qmtQJ4S3QOo2Pp9t77ACoAIPLpynWCsxDlnSRJzzQtakyJzmF0LN3e+xj6+bqWxMGmtlSoY4/oQER59pToAKWApdtL4YA/BuBdAAMAILY3sFZoIKI80jR1F4C3RecoBSzdvvkQgAUAwls/2KSpqaTgPER5IUnyvU2LGlXROUoBS7dvdgBoBeBQI93RZNf+LaIDEeWapqkxAH8UnaNUsHT7IBzwqwBeR3oVQ3T3Rl5Qo9KjaX9rWtTYLjpGqWDp9t1q6GcxSJFtK7ap8Uin4DxEOSXJprtFZyglLN0+Cgf8rQC2AqiBpmrR3RvfF52JKFe0VHJ506JGrkPPIZZubrwGoB8AhDa+sUZNxIKC8xDlhGQy3yU6Q6lh6ebGOgBtAJxaMp6KNX/CU/XJ8DQ1tQ/AP0TnKDUs3RwIB/xJAM8C6A8AwY1vrNKSiYjYVER9JEl3Ny1q5DLIHGPp5s4qAN0AFC0Wisf2bvWLDkTUW1oq2SpJ8hLROUoRSzdHwgF/HMBzSO9QC2583a+lknGhoYh6SUslFzYtauSztTxg6ebWcgARAHY13BWN7/90pehARNlSE7HdstX+oOgcpYqlm0PhgD8K4AUAAwEguPH15VoqGRObiihLmvbvPE0sf1i6ufcu9NPHrKmetlB014a3xcYhypwaj27c9bv5T4rOUcpYujkWDvhD0O+WWg8APWv/uSIV7TkgNhVRhmT5B6IjlDqWbn68AaALQD+oKTW06e1/ig5EdCJqPPLurjsv5Z0h8oylmwfhgD8C4DEAdQAQbVqzM9HevFFsKqLj01Q1JcnmW0XnKAcs3fxZC/0+aoMAoOejl17lEjIqVmqk656dd16ySXSOcsDSzZNwwK8B+BsAGwBzsmt/T3T3xncExyL6glQ0uEeNR/9ddI5yIWkab2GfT4rbMx9AI4BdMJnlurk/uFW2O+tE58qX7lXPI7juFUADnKeej8rpF6Nz2eMIb/MDkgSTUo3+F/4fmPv1P+bbq7EwWh6+FcrJX0XtebdCSyZw4NlfI9XTin5TGtFvaiMAoO3le+CcfAFs9aML+emVHE1V1UT77lktD3/vXdFZygVHuvn3TwA9AJxIJdXghtdf0Er0L138YBOC615B/fW/Q8ON9yDy6QokOlpQ6ZmPwTfei8E33IOKUdPR9cHS476Pzncfh23YxMP/P7LjI9iGjkfDjfciuOlN/eMc2A5NVVm4OZDsPvAoC7ewWLp59pmLagMAILpr/e5Yy+aS/CFPtO2BtWEMZIsdkmyCbdhEhLd+ANmmHH4dLRGFfub7F8X2bUMq1ImKkVMO/zdJNkFLxIBUCkj/qep89y+oPuu6fH4qZUGNBlvUaJAXzwqMpVsYH0G/sDYYALpXPPtOKtzZLDRRHljrRiC2ZxNSkW6oiSgi21ch1d0KAOhY9hj23P8thD5++5iFqWkqOt58GDWzbzrqv9tHTkGy6wD2Pv4jVE67COGAH9ZBo447PUGZ0TRVTQbbrt376O28uFtgnNMtEMXtqQHwX9DPZgha6kbUVp917S2SbLYIjpZTPeteRXCND5LFDkvdcEgmC2q/9p3D/961/CloyQSqz7r2qLfrXv0itGQMVZ7LEdzwOuL7Aqg97+hBmJZKYv9Tv8TAy36Bzvf+ilT3QTgmngvF7SnI51ZKEp37/tz84E3fEp2jHHGkWyDhgL8DwEPQz2WQE60728NbP3xJcKyc63fqHDR8azHqr/0fyHYnLLVDjvp3x4RZCG/94h2NYi2b0bPahz0P3IiOtx5BcOOb6Hj70aNep2eND86J5yDWsgWyzYG6i3+K7pU8YztbqVDn9lSw/duic5Qrs+gAZWY99LsHzwKwK7TpzfWW/sNGWAeMmCo2Vu6kQp0wOaqR7D6A8NblaFhwJxLtzYfLNxzww1I79AtvN+CiIyuWDo10a2Z968j7jQYR2bYSA6/6FSLbVgCSBEgSNJ4nlBU1Ho3E9gW+fuDphQnRWcoVS7eAwgG/prg9TwMYA/3C2sGu5U/8q/a87w0xVfQbJDheThx87jdQIz2AbELtebdAtjvR9q8lSLTvASQZ5soBqD3/+wCA2N4Agmv/hf4XnHi7f9f7S1F1xpWQJBkVI6ei5yMf9v7xNjinXJDvT6lkaKqqRXdvvOPA0wu5CUIgzukKoLg9QwAsBNAOIGKpG1FbPeOamyWzpUJsMiplsZbNj3ctf+qb6Y07JAjndAUIB/zNAB4B0ID0/G7P2n8+oakqzzClvIi37lrdtfypm1m44rF0xfkQ+mlkwwEgunPdrtDmZc/ymQflWrKntSW06c156VtKkWAsXUE+czbDBgBDASD8ybKPozvXvio0GJUUNRYKhrd+cGnX8qf3ic5COpauQOGAPwHgQQB7ceg0stUvLo/t28Y7CVOfqfFIJPTJspvaX/v9CtFZ6AiWrmDpO03cBSAKoD8AdH2w9JVEx95PhAYjQ1MT0Whw3Ss/j3y68mnRWehoLN0iEA742wH8LwArgH7QNK3z3ceeTYU6dguORgakJmOxnjX/vDO6a/0SXjgrPizdIhEO+PdAH/HWArBriViyY9njS1PhrhbB0chAtGQ8Hlz78pLY7o2/Cgf8XA1ThFi6RSQc8G8G8HvoB+NY1HBnpOOtRx5LBtt3CY5GBqClEsme9a8+EN257hfp6wVUhLg5oggpbs/5AK4FsAdAXLLYzTWzbrjKXDmAB8jSMWmpZCq4/tWHIttX3REO+Lk3uohxpFucXgXwJwBDANi1RDTZ8ebDTyQ6Wj4WnIuKkJZKJIIbXn80sn3Vj1i4xY8j3SKmuD2nA7gFwH4AYUiyVD3z+q9b64ZPFpuMioUaD4e6V734p/jeLd70ShgqcizdIqe4PVMB/BuANgBBAKg689oLbINGnSY0GAmXCnW0dS1/6tFk1/6F4YA/KDoPZYalawCK2zMBwB0AutMPVJ522Uzb0AmzJenYt76h0pZo37On64Mnl6ix0H3hgD8sOg9ljqVrEIrb4wbwY+ibKDoAoML9Vbdz/OzLJLPFLjQcFVS0+ZPN3f5n/gua+mQ44E+KzkPZYekaiOL2uAD8CIAFwD4AsPQfVlPpmX+VqaKyJM7jpePTNE0LB5avDG14/WcA3uTGB2Ni6RqM4vb0B3ArgNEAdgFQJYvdXD3j6oss/YdNEpuO8kVNxCLB9a8uizat+Wk44F8nOg/1HkvXgBS3xwrgKgDnAWiBPuUA5+QLp1ecNHWuJMlcClhCEp17d3X7n3k1FWz/73DA3yQ6D/UNS9egFLdHAnA6gJsAhKDfhQL24ZOGOSfPvUK22PuJzEd9p6mpZGTbitXBDa+9AuCecMDfKjoT9R1L1+AUt2cEgB8AqATQDAAmZ61SOf3SCy21QyYIDUe9lop0t3av+McHidadfwXwHA8gLx0s3RKguD2V0Ee8k6FvHU4AgDL2rHHKmBmNstnqEBiPsqBpGuItWzZ1r3ruHS0Zvy8c8HMXYolh6ZYIxe0xATgfwOUAIgAOAodHvRdYaodMFJmPTkyNR7qD619bGd259jkAj4UD/m7RmSj3WLolRnF7hkEf9Y7EZ0a9FaNOG+UYN7NRtik1IvPRF2mqmoo1f7yuZ41vvZaI/QnAe+GAXxWdi/KDpVuCFLfHAmAOgPnQVzYcAADJYjdXTvv62daGk8/gCofikOw+uKN79Qtrk+3N6wE8FA74eX5yiWPpljDF7RkCYAGAcdA3U0QAwFI7tNox6bxZltqhkyTuIxZCjYbaQp+8syqyfdVOAE8CWMbdZeWBpVviFLdHhr607FoANug3wUwCgHXQqAGOCefMNlfXj2P3FoaWjEciO9asCG58fRfU1HsAng4H/B2ic1HhsHTLhOL2VAG4APqGChV6+aoAYBsyrsExfta55soBowRGLGlqIhaMNX/yUXDjG81aLLQNwF/DAf8W0bmo8Fi6ZUZxewYAmAdgJoA49GkHDQDsrikjHGNmnGNy1g4XGLGkqLFwe3TX+hXBTW/tRyrRBWApgJW8f1n5YumWKcXtGQzgYgAe6HO9B/CZ8q0YOXWaubphnCTLJoExDSsV7tob2b56ZXjr++3QtAiAlwC8FQ74I6KzkVgs3TKX3tE2H8AkAGHo63s1ADD16+9wjJ051Vo/+iuytaJKYEzDSHa3bg8HPlgTbVobhL41+3kA/nDAHxUcjYoES5cOneMwGsCFAE6FXroHkT5IB5IkKe6vuu3DT51uqhwwiisejqZGQ63xgzs2hAMf7k52tGjQ10c/B2AtVyTQ57F06SjpOd/Toa/zdQDoQfowHUBfblZx8ulTLf2HjTXZnQMExRROTcSCibbdG6M7Pvo41rI5Bf2M460AXgDwCTc30PGwdOmY0sdHToS+tfhk6MvMDiC9ww0ALHUjau0jTh1jqRs+1uSoGVbqI2AtlYwnO/duju7euDGyfXU3NNUO/dnA++lHEw8WpxNh6dIJpTdZnAVgNvQRXRL6jTIP3+7b5KxV7K6pbuugkWPNlQNGSbLZIiZt7miqmkqFO/ckO/buiO/ftiO6e1MIatIBfandRwDeA7CZJ4BRNli6lLH06HcU9NPMTgfghD7/24H0nYoBQLLYzPZhE4dZ6kYMM1cOHGZy1Aw1wn3cNE3T1HBXS7Jr3474/u07ors3tmiJqAP6NIsEYAuAtwBs4t13qbdYutQr6Z1uw6BPQcwAUJ/+pxCALqR3vR1iGXhSnXWAq8FcNajB5KxtMCmV9ZJJXBFraiqpRoMHU+Gu/ametv3Jzr0HYs2f7FVjITuAftD/mCQBfAxgDfSibROVl0oHS5f6LL36oQ76GQ9TAYwBYIU+OkxAvxgXQnop2iEmZ3/FXDWwyuTsX2VSqqrkin6Vst1ZJVsrqiRrRZVktjl7M0+spZJxLZWIaKlEVEsmIloyHlFjoe5UqLMt1XOwLdGxtz3Z0dwFTbNAH8U602+qQr8Y9hGATwHs4eoDyjWWLuVcehQ8EPpI+GToJTwk/c8S9PKNQp8TjkHfGffFH0TZJMt2p1UyWUxHHmYT0i8lk9kE2WxCKp5MRUNRNdIVSYW7IkglP79ywAZAAVABwAy9XGXofwh2AtgIYBuAXZyfpXxj6VJBpI+bHASgAfpUxCDoxTwAQBWOLl0ZejFq6Yd6nJcy9BI1AzB95t8OkdKPTug38NwNfQ3tAQD7AfRwtQEVGkuXhFPcHjP0edSqzzwU6CsljvUwp18moM8fd6cfEegj6Mhn/ndPOOCPgahIsHQppyRJmgtgMfSR58Oapi0SHImoqLB0KWckSTJBvxB1HvSn8SsBXK1pGm+uSJTGW7ZQLp0GYJumads1TYsDeAL6SWZElMbSpVwaAv1i1SF7cGTVAhGBpUtEVFAsXcqlZuhrcw8Zmv5vRJTG0qVcWgnALUnSSEmSrAC+Af2oQyJKM4sOQKVD07SkJEm3AXgF+pKxRzRN2yQ4FlFR4ZIxIqIC4vQCEVEBsXSJiAqIpUtEVEAsXSKiAmLpEhEVEEuXiKiAWLpERAXE0iUiKqD/Dw13tVN4Tzd8AAAAAElFTkSuQmCC\n",
-      "image/svg+xml": [
-       "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n",
-       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n",
-       "  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n",
-       "<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n",
-       "<svg height=\"236.173697pt\" version=\"1.1\" viewBox=\"0 0 349.2 236.173697\" width=\"349.2pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n",
-       " <metadata>\r\n",
-       "  <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\r\n",
-       "   <cc:Work>\r\n",
-       "    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\r\n",
-       "    <dc:date>2021-03-25T09:37:19.290051</dc:date>\r\n",
-       "    <dc:format>image/svg+xml</dc:format>\r\n",
-       "    <dc:creator>\r\n",
-       "     <cc:Agent>\r\n",
-       "      <dc:title>Matplotlib v3.3.4, https://matplotlib.org/</dc:title>\r\n",
-       "     </cc:Agent>\r\n",
-       "    </dc:creator>\r\n",
-       "   </cc:Work>\r\n",
-       "  </rdf:RDF>\r\n",
-       " </metadata>\r\n",
-       " <defs>\r\n",
-       "  <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\r\n",
-       " </defs>\r\n",
-       " <g id=\"figure_1\">\r\n",
-       "  <g id=\"patch_1\">\r\n",
-       "   <path d=\"M 0 236.173697 \r\n",
-       "L 349.2 236.173697 \r\n",
-       "L 349.2 0 \r\n",
-       "L 0 0 \r\n",
-       "z\r\n",
-       "\" style=\"fill:none;\"/>\r\n",
-       "  </g>\r\n",
-       "  <g id=\"axes_1\">\r\n",
-       "   <g id=\"patch_2\">\r\n",
-       "    <path d=\"M 172.726649 21.553377 \r\n",
-       "C 160.647186 21.553377 148.670118 23.775329 137.39446 28.108106 \r\n",
-       "C 126.118801 32.440883 115.735716 38.811028 106.764496 46.899949 \r\n",
-       "C 97.793276 54.98887 90.386018 64.65943 84.913182 75.427973 \r\n",
-       "C 79.440346 86.196515 75.994718 97.880472 74.748624 109.895491 \r\n",
-       "C 73.502531 121.91051 74.477099 134.052892 77.623586 145.715355 \r\n",
-       "C 80.770073 157.377818 86.035135 168.362641 93.155448 178.120436 \r\n",
-       "C 100.275762 187.878232 109.130611 196.243568 119.277136 202.798067 \r\n",
-       "C 129.423661 209.352567 140.68984 213.985106 152.512214 216.463997 \r\n",
-       "C 164.334589 218.942888 176.512725 219.226103 188.437554 217.299479 \r\n",
-       "C 200.362383 215.372855 211.831735 211.269055 222.27199 205.193323 \r\n",
-       "C 232.712244 199.117591 241.9464 191.172934 249.512626 181.75669 \r\n",
-       "C 257.078853 172.340446 262.848874 161.612255 266.534112 150.108671 \r\n",
-       "C 270.219351 138.605087 271.757327 126.521137 271.071123 114.461181 \r\n",
-       "C 270.384919 102.401224 267.486168 90.569721 262.519846 79.558405 \r\n",
-       "C 257.553524 68.547089 250.603829 58.542643 242.018338 50.045422 \r\n",
-       "C 233.432846 41.5482 223.357115 34.702264 212.295064 29.849999 \r\n",
-       "L 172.726649 120.05692 \r\n",
-       "L 172.726649 21.553377 \r\n",
-       "z\r\n",
-       "\" style=\"fill:#092436;opacity:0.5;stroke:#092436;stroke-linejoin:miter;\"/>\r\n",
-       "   </g>\r\n",
-       "   <g id=\"patch_3\">\r\n",
-       "    <path d=\"M 212.295064 29.849999 \r\n",
-       "C 206.074771 27.121526 199.588909 25.043744 192.941079 23.649841 \r\n",
-       "C 186.293248 22.255938 179.519034 21.553376 172.72664 21.553377 \r\n",
-       "L 172.726649 120.05692 \r\n",
-       "L 212.295064 29.849999 \r\n",
-       "z\r\n",
-       "\" style=\"fill:#4c2604;opacity:0.5;stroke:#4c2604;stroke-linejoin:miter;\"/>\r\n",
-       "   </g>\r\n",
-       "   <g id=\"patch_4\">\r\n",
-       "    <path d=\"M 174.69672 19.583306 \r\n",
-       "C 162.617256 19.583306 150.640189 21.805258 139.364531 26.138035 \r\n",
-       "C 128.088872 30.470812 117.705787 36.840957 108.734567 44.929878 \r\n",
-       "C 99.763347 53.0188 92.356088 62.68936 86.883253 73.457902 \r\n",
-       "C 81.410417 84.226444 77.964788 95.910401 76.718695 107.92542 \r\n",
-       "C 75.472602 119.940439 76.447169 132.082821 79.593656 143.745284 \r\n",
-       "C 82.740144 155.407748 88.005205 166.39257 95.125519 176.150366 \r\n",
-       "C 102.245833 185.908161 111.100682 194.273497 121.247207 200.827997 \r\n",
-       "C 131.393732 207.382496 142.659911 212.015036 154.482285 214.493926 \r\n",
-       "C 166.30466 216.972817 178.482796 217.256033 190.407625 215.329408 \r\n",
-       "C 202.332454 213.402784 213.801806 209.298984 224.242061 203.223252 \r\n",
-       "C 234.682315 197.14752 243.916471 189.202863 251.482697 179.786619 \r\n",
-       "C 259.048924 170.370375 264.818945 159.642185 268.504183 148.1386 \r\n",
-       "C 272.189421 136.635016 273.727398 124.551066 273.041194 112.49111 \r\n",
-       "C 272.35499 100.431153 269.456239 88.59965 264.489917 77.588334 \r\n",
-       "C 259.523595 66.577019 252.5739 56.572572 243.988408 48.075351 \r\n",
-       "C 235.402917 39.57813 225.327186 32.732193 214.265135 27.879929 \r\n",
-       "L 174.69672 118.086849 \r\n",
-       "L 174.69672 19.583306 \r\n",
-       "z\r\n",
-       "\" style=\"fill:#1f77b4;\"/>\r\n",
-       "   </g>\r\n",
-       "   <g id=\"patch_5\">\r\n",
-       "    <path d=\"M 214.265135 27.879929 \r\n",
-       "C 208.044842 25.151455 201.55898 23.073673 194.91115 21.67977 \r\n",
-       "C 188.263319 20.285867 181.489104 19.583305 174.696711 19.583306 \r\n",
-       "L 174.69672 118.086849 \r\n",
-       "L 214.265135 27.879929 \r\n",
-       "z\r\n",
-       "\" style=\"fill:#ff7f0e;\"/>\r\n",
-       "   </g>\r\n",
-       "   <g id=\"matplotlib.axis_1\"/>\r\n",
-       "   <g id=\"matplotlib.axis_2\"/>\r\n",
-       "   <g id=\"text_1\">\r\n",
-       "    <!-- 0 -->\r\n",
-       "    <g transform=\"translate(146.098342 226.894009)scale(0.1 -0.1)\">\r\n",
-       "     <defs>\r\n",
-       "      <path d=\"M 31.78125 66.40625 \r\n",
-       "Q 24.171875 66.40625 20.328125 58.90625 \r\n",
-       "Q 16.5 51.421875 16.5 36.375 \r\n",
-       "Q 16.5 21.390625 20.328125 13.890625 \r\n",
-       "Q 24.171875 6.390625 31.78125 6.390625 \r\n",
-       "Q 39.453125 6.390625 43.28125 13.890625 \r\n",
-       "Q 47.125 21.390625 47.125 36.375 \r\n",
-       "Q 47.125 51.421875 43.28125 58.90625 \r\n",
-       "Q 39.453125 66.40625 31.78125 66.40625 \r\n",
-       "z\r\n",
-       "M 31.78125 74.21875 \r\n",
-       "Q 44.046875 74.21875 50.515625 64.515625 \r\n",
-       "Q 56.984375 54.828125 56.984375 36.375 \r\n",
-       "Q 56.984375 17.96875 50.515625 8.265625 \r\n",
-       "Q 44.046875 -1.421875 31.78125 -1.421875 \r\n",
-       "Q 19.53125 -1.421875 13.0625 8.265625 \r\n",
-       "Q 6.59375 17.96875 6.59375 36.375 \r\n",
-       "Q 6.59375 54.828125 13.0625 64.515625 \r\n",
-       "Q 19.53125 74.21875 31.78125 74.21875 \r\n",
-       "z\r\n",
-       "\" id=\"DejaVuSans-48\"/>\r\n",
-       "     </defs>\r\n",
-       "     <use xlink:href=\"#DejaVuSans-48\"/>\r\n",
-       "    </g>\r\n",
-       "   </g>\r\n",
-       "   <g id=\"text_2\">\r\n",
-       "    <!-- 93.4% -->\r\n",
-       "    <g transform=\"translate(146.684465 178.69047)scale(0.1 -0.1)\">\r\n",
-       "     <defs>\r\n",
-       "      <path d=\"M 10.984375 1.515625 \r\n",
-       "L 10.984375 10.5 \r\n",
-       "Q 14.703125 8.734375 18.5 7.8125 \r\n",
-       "Q 22.3125 6.890625 25.984375 6.890625 \r\n",
-       "Q 35.75 6.890625 40.890625 13.453125 \r\n",
-       "Q 46.046875 20.015625 46.78125 33.40625 \r\n",
-       "Q 43.953125 29.203125 39.59375 26.953125 \r\n",
-       "Q 35.25 24.703125 29.984375 24.703125 \r\n",
-       "Q 19.046875 24.703125 12.671875 31.3125 \r\n",
-       "Q 6.296875 37.9375 6.296875 49.421875 \r\n",
-       "Q 6.296875 60.640625 12.9375 67.421875 \r\n",
-       "Q 19.578125 74.21875 30.609375 74.21875 \r\n",
-       "Q 43.265625 74.21875 49.921875 64.515625 \r\n",
-       "Q 56.59375 54.828125 56.59375 36.375 \r\n",
-       "Q 56.59375 19.140625 48.40625 8.859375 \r\n",
-       "Q 40.234375 -1.421875 26.421875 -1.421875 \r\n",
-       "Q 22.703125 -1.421875 18.890625 -0.6875 \r\n",
-       "Q 15.09375 0.046875 10.984375 1.515625 \r\n",
-       "z\r\n",
-       "M 30.609375 32.421875 \r\n",
-       "Q 37.25 32.421875 41.125 36.953125 \r\n",
-       "Q 45.015625 41.5 45.015625 49.421875 \r\n",
-       "Q 45.015625 57.28125 41.125 61.84375 \r\n",
-       "Q 37.25 66.40625 30.609375 66.40625 \r\n",
-       "Q 23.96875 66.40625 20.09375 61.84375 \r\n",
-       "Q 16.21875 57.28125 16.21875 49.421875 \r\n",
-       "Q 16.21875 41.5 20.09375 36.953125 \r\n",
-       "Q 23.96875 32.421875 30.609375 32.421875 \r\n",
-       "z\r\n",
-       "\" id=\"DejaVuSans-57\"/>\r\n",
-       "      <path d=\"M 40.578125 39.3125 \r\n",
-       "Q 47.65625 37.796875 51.625 33 \r\n",
-       "Q 55.609375 28.21875 55.609375 21.1875 \r\n",
-       "Q 55.609375 10.40625 48.1875 4.484375 \r\n",
-       "Q 40.765625 -1.421875 27.09375 -1.421875 \r\n",
-       "Q 22.515625 -1.421875 17.65625 -0.515625 \r\n",
-       "Q 12.796875 0.390625 7.625 2.203125 \r\n",
-       "L 7.625 11.71875 \r\n",
-       "Q 11.71875 9.328125 16.59375 8.109375 \r\n",
-       "Q 21.484375 6.890625 26.8125 6.890625 \r\n",
-       "Q 36.078125 6.890625 40.9375 10.546875 \r\n",
-       "Q 45.796875 14.203125 45.796875 21.1875 \r\n",
-       "Q 45.796875 27.640625 41.28125 31.265625 \r\n",
-       "Q 36.765625 34.90625 28.71875 34.90625 \r\n",
-       "L 20.21875 34.90625 \r\n",
-       "L 20.21875 43.015625 \r\n",
-       "L 29.109375 43.015625 \r\n",
-       "Q 36.375 43.015625 40.234375 45.921875 \r\n",
-       "Q 44.09375 48.828125 44.09375 54.296875 \r\n",
-       "Q 44.09375 59.90625 40.109375 62.90625 \r\n",
-       "Q 36.140625 65.921875 28.71875 65.921875 \r\n",
-       "Q 24.65625 65.921875 20.015625 65.03125 \r\n",
-       "Q 15.375 64.15625 9.8125 62.3125 \r\n",
-       "L 9.8125 71.09375 \r\n",
-       "Q 15.4375 72.65625 20.34375 73.4375 \r\n",
-       "Q 25.25 74.21875 29.59375 74.21875 \r\n",
-       "Q 40.828125 74.21875 47.359375 69.109375 \r\n",
-       "Q 53.90625 64.015625 53.90625 55.328125 \r\n",
-       "Q 53.90625 49.265625 50.4375 45.09375 \r\n",
-       "Q 46.96875 40.921875 40.578125 39.3125 \r\n",
-       "z\r\n",
-       "\" id=\"DejaVuSans-51\"/>\r\n",
-       "      <path d=\"M 10.6875 12.40625 \r\n",
-       "L 21 12.40625 \r\n",
-       "L 21 0 \r\n",
-       "L 10.6875 0 \r\n",
-       "z\r\n",
-       "\" id=\"DejaVuSans-46\"/>\r\n",
-       "      <path d=\"M 37.796875 64.3125 \r\n",
-       "L 12.890625 25.390625 \r\n",
-       "L 37.796875 25.390625 \r\n",
-       "z\r\n",
-       "M 35.203125 72.90625 \r\n",
-       "L 47.609375 72.90625 \r\n",
-       "L 47.609375 25.390625 \r\n",
-       "L 58.015625 25.390625 \r\n",
-       "L 58.015625 17.1875 \r\n",
-       "L 47.609375 17.1875 \r\n",
-       "L 47.609375 0 \r\n",
-       "L 37.796875 0 \r\n",
-       "L 37.796875 17.1875 \r\n",
-       "L 4.890625 17.1875 \r\n",
-       "L 4.890625 26.703125 \r\n",
-       "z\r\n",
-       "\" id=\"DejaVuSans-52\"/>\r\n",
-       "      <path d=\"M 72.703125 32.078125 \r\n",
-       "Q 68.453125 32.078125 66.03125 28.46875 \r\n",
-       "Q 63.625 24.859375 63.625 18.40625 \r\n",
-       "Q 63.625 12.0625 66.03125 8.421875 \r\n",
-       "Q 68.453125 4.78125 72.703125 4.78125 \r\n",
-       "Q 76.859375 4.78125 79.265625 8.421875 \r\n",
-       "Q 81.6875 12.0625 81.6875 18.40625 \r\n",
-       "Q 81.6875 24.8125 79.265625 28.4375 \r\n",
-       "Q 76.859375 32.078125 72.703125 32.078125 \r\n",
-       "z\r\n",
-       "M 72.703125 38.28125 \r\n",
-       "Q 80.421875 38.28125 84.953125 32.90625 \r\n",
-       "Q 89.5 27.546875 89.5 18.40625 \r\n",
-       "Q 89.5 9.28125 84.9375 3.921875 \r\n",
-       "Q 80.375 -1.421875 72.703125 -1.421875 \r\n",
-       "Q 64.890625 -1.421875 60.34375 3.921875 \r\n",
-       "Q 55.8125 9.28125 55.8125 18.40625 \r\n",
-       "Q 55.8125 27.59375 60.375 32.9375 \r\n",
-       "Q 64.9375 38.28125 72.703125 38.28125 \r\n",
-       "z\r\n",
-       "M 22.3125 68.015625 \r\n",
-       "Q 18.109375 68.015625 15.6875 64.375 \r\n",
-       "Q 13.28125 60.75 13.28125 54.390625 \r\n",
-       "Q 13.28125 47.953125 15.671875 44.328125 \r\n",
-       "Q 18.0625 40.71875 22.3125 40.71875 \r\n",
-       "Q 26.5625 40.71875 28.96875 44.328125 \r\n",
-       "Q 31.390625 47.953125 31.390625 54.390625 \r\n",
-       "Q 31.390625 60.6875 28.953125 64.34375 \r\n",
-       "Q 26.515625 68.015625 22.3125 68.015625 \r\n",
-       "z\r\n",
-       "M 66.40625 74.21875 \r\n",
-       "L 74.21875 74.21875 \r\n",
-       "L 28.609375 -1.421875 \r\n",
-       "L 20.796875 -1.421875 \r\n",
-       "z\r\n",
-       "M 22.3125 74.21875 \r\n",
-       "Q 30.03125 74.21875 34.609375 68.875 \r\n",
-       "Q 39.203125 63.53125 39.203125 54.390625 \r\n",
-       "Q 39.203125 45.171875 34.640625 39.84375 \r\n",
-       "Q 30.078125 34.515625 22.3125 34.515625 \r\n",
-       "Q 14.546875 34.515625 10.03125 39.859375 \r\n",
-       "Q 5.515625 45.21875 5.515625 54.390625 \r\n",
-       "Q 5.515625 63.484375 10.046875 68.84375 \r\n",
-       "Q 14.59375 74.21875 22.3125 74.21875 \r\n",
-       "z\r\n",
-       "\" id=\"DejaVuSans-37\"/>\r\n",
-       "     </defs>\r\n",
-       "     <use xlink:href=\"#DejaVuSans-57\"/>\r\n",
-       "     <use x=\"63.623047\" xlink:href=\"#DejaVuSans-51\"/>\r\n",
-       "     <use x=\"127.246094\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
-       "     <use x=\"159.033203\" xlink:href=\"#DejaVuSans-52\"/>\r\n",
-       "     <use x=\"222.65625\" xlink:href=\"#DejaVuSans-37\"/>\r\n",
-       "    </g>\r\n",
-       "   </g>\r\n",
-       "   <g id=\"text_3\">\r\n",
-       "    <!-- 1 -->\r\n",
-       "    <g transform=\"translate(196.932593 14.798438)scale(0.1 -0.1)\">\r\n",
-       "     <defs>\r\n",
-       "      <path d=\"M 12.40625 8.296875 \r\n",
-       "L 28.515625 8.296875 \r\n",
-       "L 28.515625 63.921875 \r\n",
-       "L 10.984375 60.40625 \r\n",
-       "L 10.984375 69.390625 \r\n",
-       "L 28.421875 72.90625 \r\n",
-       "L 38.28125 72.90625 \r\n",
-       "L 38.28125 8.296875 \r\n",
-       "L 54.390625 8.296875 \r\n",
-       "L 54.390625 0 \r\n",
-       "L 12.40625 0 \r\n",
-       "z\r\n",
-       "\" id=\"DejaVuSans-49\"/>\r\n",
-       "     </defs>\r\n",
-       "     <use xlink:href=\"#DejaVuSans-49\"/>\r\n",
-       "    </g>\r\n",
-       "   </g>\r\n",
-       "   <g id=\"text_4\">\r\n",
-       "    <!-- 6.6% -->\r\n",
-       "    <g transform=\"translate(174.123034 63.001977)scale(0.1 -0.1)\">\r\n",
-       "     <defs>\r\n",
-       "      <path d=\"M 33.015625 40.375 \r\n",
-       "Q 26.375 40.375 22.484375 35.828125 \r\n",
-       "Q 18.609375 31.296875 18.609375 23.390625 \r\n",
-       "Q 18.609375 15.53125 22.484375 10.953125 \r\n",
-       "Q 26.375 6.390625 33.015625 6.390625 \r\n",
-       "Q 39.65625 6.390625 43.53125 10.953125 \r\n",
-       "Q 47.40625 15.53125 47.40625 23.390625 \r\n",
-       "Q 47.40625 31.296875 43.53125 35.828125 \r\n",
-       "Q 39.65625 40.375 33.015625 40.375 \r\n",
-       "z\r\n",
-       "M 52.59375 71.296875 \r\n",
-       "L 52.59375 62.3125 \r\n",
-       "Q 48.875 64.0625 45.09375 64.984375 \r\n",
-       "Q 41.3125 65.921875 37.59375 65.921875 \r\n",
-       "Q 27.828125 65.921875 22.671875 59.328125 \r\n",
-       "Q 17.53125 52.734375 16.796875 39.40625 \r\n",
-       "Q 19.671875 43.65625 24.015625 45.921875 \r\n",
-       "Q 28.375 48.1875 33.59375 48.1875 \r\n",
-       "Q 44.578125 48.1875 50.953125 41.515625 \r\n",
-       "Q 57.328125 34.859375 57.328125 23.390625 \r\n",
-       "Q 57.328125 12.15625 50.6875 5.359375 \r\n",
-       "Q 44.046875 -1.421875 33.015625 -1.421875 \r\n",
-       "Q 20.359375 -1.421875 13.671875 8.265625 \r\n",
-       "Q 6.984375 17.96875 6.984375 36.375 \r\n",
-       "Q 6.984375 53.65625 15.1875 63.9375 \r\n",
-       "Q 23.390625 74.21875 37.203125 74.21875 \r\n",
-       "Q 40.921875 74.21875 44.703125 73.484375 \r\n",
-       "Q 48.484375 72.75 52.59375 71.296875 \r\n",
-       "z\r\n",
-       "\" id=\"DejaVuSans-54\"/>\r\n",
-       "     </defs>\r\n",
-       "     <use xlink:href=\"#DejaVuSans-54\"/>\r\n",
-       "     <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
-       "     <use x=\"95.410156\" xlink:href=\"#DejaVuSans-54\"/>\r\n",
-       "     <use x=\"159.033203\" xlink:href=\"#DejaVuSans-37\"/>\r\n",
-       "    </g>\r\n",
-       "   </g>\r\n",
-       "  </g>\r\n",
-       " </g>\r\n",
-       "</svg>\r\n"
-      ],
-      "text/plain": [
-       "<Figure size 432x288 with 1 Axes>"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
-   "source": [
-    "import matplotlib.pyplot as plt\n",
-    "\n",
-    "groups = df_full['class'].value_counts()\n",
-    "sizes = [groups[0], groups[1]]\n",
-    "labels = list(map(lambda e: str(e), groups.index))\n",
-    "\n",
-    "fig1, ax1 = plt.subplots()\n",
-    "ax1.pie(sizes, labels=labels, autopct='%1.1f%%', shadow=True, startangle=90)\n",
-    "ax1.axis('equal')\n",
-    "\n",
-    "plt.show()"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "### Helper function for calculating metrics"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 30,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "from rulekit import RuleKit\n",
-    "from rulekit.classification import RuleClassifier\n",
-    "import sklearn.tree as scikit\n",
-    "from sklearn.datasets import load_iris\n",
-    "import math\n",
-    "from sklearn.preprocessing import MultiLabelBinarizer\n",
-    "from sklearn import metrics\n",
-    "import pandas as pd\n",
-    "import numpy as np\n",
-    "from typing import Tuple\n",
-    "\n",
-    "\n",
-    "RuleKit.init()\n",
-    "\n",
-    "x = df_full.drop(['class'], axis=1)\n",
-    "y = df_full['class']\n",
-    "\n",
-    "def get_prediction_metrics(measure: str, y_pred, y_true, classification_metrics: dict) -> Tuple[pd.DataFrame, np.ndarray]:\n",
-    "    confusion_matrix = metrics.confusion_matrix(y_true, y_pred)\n",
-    "    tn, fp, fn, tp = confusion_matrix.ravel()\n",
-    "    sensitivity = tp  / (tp + fn)\n",
-    "    specificity = tn  / (tn + fp)\n",
-    "    npv = tn  / (tn + fn)\n",
-    "    ppv = tp  / (tp + fp)\n",
-    "\n",
-    "    dictionary = {\n",
-    "        'Measure': measure,\n",
-    "        'Accuracy': metrics.accuracy_score(y_true, y_pred),\n",
-    "        'MAE': metrics.mean_absolute_error(y_true, y_pred),\n",
-    "        'Kappa': metrics.cohen_kappa_score(y_true, y_pred),\n",
-    "        'Balanced accuracy': metrics.balanced_accuracy_score(y_true, y_pred),\n",
-    "        'Logistic loss': metrics.log_loss(y_true, y_pred),\n",
-    "        'Precision': metrics.log_loss(y_true, y_pred),\n",
-    "        'Sensitivity': sensitivity,\n",
-    "        'Specificity': specificity,\n",
-    "        'NPV': npv,\n",
-    "        'PPV': ppv,\n",
-    "        'psep': ppv + npv - 1,\n",
-    "        'Fall-out': fp  / (fp + tn),\n",
-    "        \"Youden's J statistic\": sensitivity + specificity - 1,\n",
-    "        'Lift': (tp / (tp + fp)) / ((tp + fn) / (tp + tn + fp + fn)),\n",
-    "        'F-measure': 2 * tp / (2 * tp + fp + fn),\n",
-    "        'Fowlkes-Mallows index': metrics.fowlkes_mallows_score(y_true, y_pred),\n",
-    "        'False positive': fp,\n",
-    "        'False negative': fn,\n",
-    "        'True positive': tp,\n",
-    "        'True negative': tn,\n",
-    "        'Rules per example': classification_metrics['rules_per_example'],\n",
-    "        'Voting conflicts': classification_metrics['voting_conflicts'],\n",
-    "        'Negative voting conflicts': classification_metrics['negative_voting_conflicts'],\n",
-    "        'Geometric mean': math.sqrt(specificity * sensitivity),\n",
-    "        'Geometric mean': math.sqrt(specificity * sensitivity),\n",
-    "    }\n",
-    "    return pd.DataFrame.from_records([dictionary], index='Measure'), confusion_matrix\n",
-    "\n",
-    "def get_ruleset_stats(measure: str, model) -> pd.DataFrame:\n",
-    "    return pd.DataFrame.from_records([{'Measure': measure, **model.stats.__dict__}], index='Measure')\n",
-    "    "
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "### Rule induction on full dataset"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 18,
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "<div>\n",
-       "<style scoped>\n",
-       "    .dataframe tbody tr th:only-of-type {\n",
-       "        vertical-align: middle;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe tbody tr th {\n",
-       "        vertical-align: top;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe thead th {\n",
-       "        text-align: right;\n",
-       "    }\n",
-       "</style>\n",
-       "<table border=\"1\" class=\"dataframe\">\n",
-       "  <thead>\n",
-       "    <tr style=\"text-align: right;\">\n",
-       "      <th></th>\n",
-       "      <th>time_total_s</th>\n",
-       "      <th>time_growing_s</th>\n",
-       "      <th>time_pruning_s</th>\n",
-       "      <th>rules_count</th>\n",
-       "      <th>conditions_per_rule</th>\n",
-       "      <th>induced_conditions_per_rule</th>\n",
-       "      <th>avg_rule_coverage</th>\n",
-       "      <th>avg_rule_precision</th>\n",
-       "      <th>avg_rule_quality</th>\n",
-       "      <th>pvalue</th>\n",
-       "      <th>FDR_pvalue</th>\n",
-       "      <th>FWER_pvalue</th>\n",
-       "      <th>fraction_significant</th>\n",
-       "      <th>fraction_FDR_significant</th>\n",
-       "      <th>fraction_FWER_significant</th>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Measure</th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "    </tr>\n",
-       "  </thead>\n",
-       "  <tbody>\n",
-       "    <tr>\n",
-       "      <th>C2</th>\n",
-       "      <td>2.878110</td>\n",
-       "      <td>4.122812</td>\n",
-       "      <td>0.673479</td>\n",
-       "      <td>178</td>\n",
-       "      <td>5.005618</td>\n",
-       "      <td>14.387640</td>\n",
-       "      <td>0.141539</td>\n",
-       "      <td>0.916631</td>\n",
-       "      <td>0.479177</td>\n",
-       "      <td>0.058208</td>\n",
-       "      <td>0.063738</td>\n",
-       "      <td>0.884413</td>\n",
-       "      <td>0.769663</td>\n",
-       "      <td>0.752809</td>\n",
-       "      <td>0.561798</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Correlation</th>\n",
-       "      <td>3.684995</td>\n",
-       "      <td>6.220216</td>\n",
-       "      <td>0.909509</td>\n",
-       "      <td>58</td>\n",
-       "      <td>6.000000</td>\n",
-       "      <td>54.517241</td>\n",
-       "      <td>0.396505</td>\n",
-       "      <td>0.692544</td>\n",
-       "      <td>0.188542</td>\n",
-       "      <td>0.031233</td>\n",
-       "      <td>0.032530</td>\n",
-       "      <td>0.101139</td>\n",
-       "      <td>0.879310</td>\n",
-       "      <td>0.879310</td>\n",
-       "      <td>0.862069</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>RSS</th>\n",
-       "      <td>3.444098</td>\n",
-       "      <td>5.140447</td>\n",
-       "      <td>0.778426</td>\n",
-       "      <td>60</td>\n",
-       "      <td>4.233333</td>\n",
-       "      <td>46.266667</td>\n",
-       "      <td>0.585900</td>\n",
-       "      <td>0.852020</td>\n",
-       "      <td>0.328324</td>\n",
-       "      <td>0.011781</td>\n",
-       "      <td>0.012022</td>\n",
-       "      <td>0.025579</td>\n",
-       "      <td>0.950000</td>\n",
-       "      <td>0.933333</td>\n",
-       "      <td>0.900000</td>\n",
-       "    </tr>\n",
-       "  </tbody>\n",
-       "</table>\n",
-       "</div>"
-      ],
-      "text/plain": [
-       "             time_total_s  time_growing_s  time_pruning_s  rules_count  \\\n",
-       "Measure                                                                  \n",
-       "C2               2.878110        4.122812        0.673479          178   \n",
-       "Correlation      3.684995        6.220216        0.909509           58   \n",
-       "RSS              3.444098        5.140447        0.778426           60   \n",
-       "\n",
-       "             conditions_per_rule  induced_conditions_per_rule  \\\n",
-       "Measure                                                         \n",
-       "C2                      5.005618                    14.387640   \n",
-       "Correlation             6.000000                    54.517241   \n",
-       "RSS                     4.233333                    46.266667   \n",
-       "\n",
-       "             avg_rule_coverage  avg_rule_precision  avg_rule_quality  \\\n",
-       "Measure                                                                \n",
-       "C2                    0.141539            0.916631          0.479177   \n",
-       "Correlation           0.396505            0.692544          0.188542   \n",
-       "RSS                   0.585900            0.852020          0.328324   \n",
-       "\n",
-       "               pvalue  FDR_pvalue  FWER_pvalue  fraction_significant  \\\n",
-       "Measure                                                                \n",
-       "C2           0.058208    0.063738     0.884413              0.769663   \n",
-       "Correlation  0.031233    0.032530     0.101139              0.879310   \n",
-       "RSS          0.011781    0.012022     0.025579              0.950000   \n",
-       "\n",
-       "             fraction_FDR_significant  fraction_FWER_significant  \n",
-       "Measure                                                           \n",
-       "C2                           0.752809                   0.561798  \n",
-       "Correlation                  0.879310                   0.862069  \n",
-       "RSS                          0.933333                   0.900000  "
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    },
-    {
-     "data": {
-      "text/html": [
-       "<div>\n",
-       "<style scoped>\n",
-       "    .dataframe tbody tr th:only-of-type {\n",
-       "        vertical-align: middle;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe tbody tr th {\n",
-       "        vertical-align: top;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe thead th {\n",
-       "        text-align: right;\n",
-       "    }\n",
-       "</style>\n",
-       "<table border=\"1\" class=\"dataframe\">\n",
-       "  <thead>\n",
-       "    <tr style=\"text-align: right;\">\n",
-       "      <th></th>\n",
-       "      <th>Accuracy</th>\n",
-       "      <th>MAE</th>\n",
-       "      <th>Kappa</th>\n",
-       "      <th>Balanced accuracy</th>\n",
-       "      <th>Logistic loss</th>\n",
-       "      <th>Precision</th>\n",
-       "      <th>Sensitivity</th>\n",
-       "      <th>Specificity</th>\n",
-       "      <th>NPV</th>\n",
-       "      <th>PPV</th>\n",
-       "      <th>...</th>\n",
-       "      <th>F-measure</th>\n",
-       "      <th>Fowlkes-Mallows index</th>\n",
-       "      <th>False positive</th>\n",
-       "      <th>False negative</th>\n",
-       "      <th>True positive</th>\n",
-       "      <th>True negative</th>\n",
-       "      <th>Rules per example</th>\n",
-       "      <th>Voting conflicts</th>\n",
-       "      <th>Negative voting conflicts</th>\n",
-       "      <th>Geometric mean</th>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Measure</th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "      <th></th>\n",
-       "    </tr>\n",
-       "  </thead>\n",
-       "  <tbody>\n",
-       "    <tr>\n",
-       "      <th>C2</th>\n",
-       "      <td>0.968266</td>\n",
-       "      <td>0.031734</td>\n",
-       "      <td>0.682882</td>\n",
-       "      <td>0.777962</td>\n",
-       "      <td>1.096047</td>\n",
-       "      <td>1.096047</td>\n",
-       "      <td>0.558824</td>\n",
-       "      <td>0.997100</td>\n",
-       "      <td>0.969782</td>\n",
-       "      <td>0.931373</td>\n",
-       "      <td>...</td>\n",
-       "      <td>0.698529</td>\n",
-       "      <td>0.966199</td>\n",
-       "      <td>7</td>\n",
-       "      <td>75</td>\n",
-       "      <td>95</td>\n",
-       "      <td>2407</td>\n",
-       "      <td>25.193885</td>\n",
-       "      <td>837.0</td>\n",
-       "      <td>57.0</td>\n",
-       "      <td>0.746460</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>Correlation</th>\n",
-       "      <td>0.916796</td>\n",
-       "      <td>0.083204</td>\n",
-       "      <td>0.321259</td>\n",
-       "      <td>0.660191</td>\n",
-       "      <td>2.873809</td>\n",
-       "      <td>2.873809</td>\n",
-       "      <td>0.364706</td>\n",
-       "      <td>0.955675</td>\n",
-       "      <td>0.955280</td>\n",
-       "      <td>0.366864</td>\n",
-       "      <td>...</td>\n",
-       "      <td>0.365782</td>\n",
-       "      <td>0.913023</td>\n",
-       "      <td>107</td>\n",
-       "      <td>108</td>\n",
-       "      <td>62</td>\n",
-       "      <td>2307</td>\n",
-       "      <td>22.997291</td>\n",
-       "      <td>1603.0</td>\n",
-       "      <td>157.0</td>\n",
-       "      <td>0.590373</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>RSS</th>\n",
-       "      <td>0.922601</td>\n",
-       "      <td>0.077399</td>\n",
-       "      <td>0.241820</td>\n",
-       "      <td>0.600414</td>\n",
-       "      <td>2.673301</td>\n",
-       "      <td>2.673301</td>\n",
-       "      <td>0.229412</td>\n",
-       "      <td>0.971417</td>\n",
-       "      <td>0.947092</td>\n",
-       "      <td>0.361111</td>\n",
-       "      <td>...</td>\n",
-       "      <td>0.280576</td>\n",
-       "      <td>0.920751</td>\n",
-       "      <td>69</td>\n",
-       "      <td>131</td>\n",
-       "      <td>39</td>\n",
-       "      <td>2345</td>\n",
-       "      <td>35.154025</td>\n",
-       "      <td>1844.0</td>\n",
-       "      <td>94.0</td>\n",
-       "      <td>0.472075</td>\n",
-       "    </tr>\n",
-       "  </tbody>\n",
-       "</table>\n",
-       "<p>3 rows × 24 columns</p>\n",
-       "</div>"
-      ],
-      "text/plain": [
-       "             Accuracy       MAE     Kappa  Balanced accuracy  Logistic loss  \\\n",
-       "Measure                                                                       \n",
-       "C2           0.968266  0.031734  0.682882           0.777962       1.096047   \n",
-       "Correlation  0.916796  0.083204  0.321259           0.660191       2.873809   \n",
-       "RSS          0.922601  0.077399  0.241820           0.600414       2.673301   \n",
-       "\n",
-       "             Precision  Sensitivity  Specificity       NPV       PPV  ...  \\\n",
-       "Measure                                                               ...   \n",
-       "C2            1.096047     0.558824     0.997100  0.969782  0.931373  ...   \n",
-       "Correlation   2.873809     0.364706     0.955675  0.955280  0.366864  ...   \n",
-       "RSS           2.673301     0.229412     0.971417  0.947092  0.361111  ...   \n",
-       "\n",
-       "             F-measure  Fowlkes-Mallows index  False positive  False negative  \\\n",
-       "Measure                                                                         \n",
-       "C2            0.698529               0.966199               7              75   \n",
-       "Correlation   0.365782               0.913023             107             108   \n",
-       "RSS           0.280576               0.920751              69             131   \n",
-       "\n",
-       "             True positive  True negative  Rules per example  \\\n",
-       "Measure                                                        \n",
-       "C2                      95           2407          25.193885   \n",
-       "Correlation             62           2307          22.997291   \n",
-       "RSS                     39           2345          35.154025   \n",
-       "\n",
-       "             Voting conflicts  Negative voting conflicts  Geometric mean  \n",
-       "Measure                                                                   \n",
-       "C2                      837.0                       57.0        0.746460  \n",
-       "Correlation            1603.0                      157.0        0.590373  \n",
-       "RSS                    1844.0                       94.0        0.472075  \n",
-       "\n",
-       "[3 rows x 24 columns]"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Confusion matrix - C2\n"
-     ]
-    },
-    {
-     "data": {
-      "text/html": [
-       "<div>\n",
-       "<style scoped>\n",
-       "    .dataframe tbody tr th:only-of-type {\n",
-       "        vertical-align: middle;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe tbody tr th {\n",
-       "        vertical-align: top;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe thead th {\n",
-       "        text-align: right;\n",
-       "    }\n",
-       "</style>\n",
-       "<table border=\"1\" class=\"dataframe\">\n",
-       "  <thead>\n",
-       "    <tr style=\"text-align: right;\">\n",
-       "      <th></th>\n",
-       "      <th>0</th>\n",
-       "      <th>1</th>\n",
-       "    </tr>\n",
-       "  </thead>\n",
-       "  <tbody>\n",
-       "    <tr>\n",
-       "      <th>0</th>\n",
-       "      <td>2407</td>\n",
-       "      <td>7</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>1</th>\n",
-       "      <td>75</td>\n",
-       "      <td>95</td>\n",
-       "    </tr>\n",
-       "  </tbody>\n",
-       "</table>\n",
-       "</div>"
-      ],
-      "text/plain": [
-       "      0   1\n",
-       "0  2407   7\n",
-       "1    75  95"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Confusion matrix - Correlation\n"
-     ]
-    },
-    {
-     "data": {
-      "text/html": [
-       "<div>\n",
-       "<style scoped>\n",
-       "    .dataframe tbody tr th:only-of-type {\n",
-       "        vertical-align: middle;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe tbody tr th {\n",
-       "        vertical-align: top;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe thead th {\n",
-       "        text-align: right;\n",
-       "    }\n",
-       "</style>\n",
-       "<table border=\"1\" class=\"dataframe\">\n",
-       "  <thead>\n",
-       "    <tr style=\"text-align: right;\">\n",
-       "      <th></th>\n",
-       "      <th>0</th>\n",
-       "      <th>1</th>\n",
-       "    </tr>\n",
-       "  </thead>\n",
-       "  <tbody>\n",
-       "    <tr>\n",
-       "      <th>0</th>\n",
-       "      <td>2307</td>\n",
-       "      <td>107</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>1</th>\n",
-       "      <td>108</td>\n",
-       "      <td>62</td>\n",
-       "    </tr>\n",
-       "  </tbody>\n",
-       "</table>\n",
-       "</div>"
-      ],
-      "text/plain": [
-       "      0    1\n",
-       "0  2307  107\n",
-       "1   108   62"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Confusion matrix - RSS\n"
-     ]
-    },
-    {
-     "data": {
-      "text/html": [
-       "<div>\n",
-       "<style scoped>\n",
-       "    .dataframe tbody tr th:only-of-type {\n",
-       "        vertical-align: middle;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe tbody tr th {\n",
-       "        vertical-align: top;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe thead th {\n",
-       "        text-align: right;\n",
-       "    }\n",
-       "</style>\n",
-       "<table border=\"1\" class=\"dataframe\">\n",
-       "  <thead>\n",
-       "    <tr style=\"text-align: right;\">\n",
-       "      <th></th>\n",
-       "      <th>0</th>\n",
-       "      <th>1</th>\n",
-       "    </tr>\n",
-       "  </thead>\n",
-       "  <tbody>\n",
-       "    <tr>\n",
-       "      <th>0</th>\n",
-       "      <td>2345</td>\n",
-       "      <td>69</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>1</th>\n",
-       "      <td>131</td>\n",
-       "      <td>39</td>\n",
-       "    </tr>\n",
-       "  </tbody>\n",
-       "</table>\n",
-       "</div>"
-      ],
-      "text/plain": [
-       "      0   1\n",
-       "0  2345  69\n",
-       "1   131  39"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
-   "source": [
-    "from rulekit.params import Measures\n",
-    "from IPython.display import display\n",
-    "\n",
-    "# C2\n",
-    "clf = RuleClassifier(\n",
-    "    induction_measure=Measures.C2,\n",
-    "    pruning_measure=Measures.C2,\n",
-    "    voting_measure=Measures.C2,\n",
-    ")\n",
-    "clf.fit(x, y)\n",
-    "c2_ruleset = clf.model\n",
-    "prediction, classification_metrics = clf.predict(x, return_metrics=True)\n",
-    "\n",
-    "prediction_metric, c2_confusion_matrix = get_prediction_metrics('C2', prediction, y, classification_metrics)\n",
-    "model_stats = get_ruleset_stats('C2', clf.model)\n",
-    "\n",
-    "# Correlation\n",
-    "clf = RuleClassifier(\n",
-    "    induction_measure=Measures.Correlation,\n",
-    "    pruning_measure=Measures.Correlation,\n",
-    "    voting_measure=Measures.Correlation,\n",
-    ")\n",
-    "clf.fit(x, y)\n",
-    "corr_ruleset = clf.model\n",
-    "prediction, classification_metrics = clf.predict(x, return_metrics=True)\n",
-    "\n",
-    "tmp, corr_confusion_matrix = get_prediction_metrics('Correlation', prediction, y, classification_metrics)\n",
-    "prediction_metric = pd.concat([prediction_metric, tmp])\n",
-    "model_stats = pd.concat([model_stats, get_ruleset_stats('Correlation', clf.model)])\n",
-    "\n",
-    "# RSS\n",
-    "clf = RuleClassifier(\n",
-    "    induction_measure=Measures.RSS,\n",
-    "    pruning_measure=Measures.RSS,\n",
-    "    voting_measure=Measures.RSS,\n",
-    ")\n",
-    "clf.fit(x, y)\n",
-    "rss_ruleset = clf.model\n",
-    "prediction, classification_metrics = clf.predict(x, return_metrics=True)\n",
-    "tmp, rss_confusion_matrix = get_prediction_metrics('RSS', prediction, y, classification_metrics)\n",
-    "prediction_metric = pd.concat([prediction_metric, tmp])\n",
-    "model_stats = pd.concat([model_stats, get_ruleset_stats('RSS', clf.model)])\n",
-    "\n",
-    "display(model_stats)\n",
-    "display(prediction_metric)\n",
-    "\n",
-    "print('Confusion matrix - C2')\n",
-    "display(pd.DataFrame(c2_confusion_matrix))\n",
-    "\n",
-    "print('Confusion matrix - Correlation')\n",
-    "display(pd.DataFrame(corr_confusion_matrix))\n",
-    "\n",
-    "print('Confusion matrix - RSS')\n",
-    "display(pd.DataFrame(rss_confusion_matrix))"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "C2 Measure generated rules"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 15,
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "IF gimpuls = (-inf, 32.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 54.50) AND senergy = (-inf, 3700) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 54.50) AND genergy = <1865, inf) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND goimpuls = (-inf, -0.50) AND genergy = (-inf, 13675) AND nbumps = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND genergy = (-inf, 17640) AND nbumps = (-inf, 0.50) THEN label = {0}\n",
-      "IF genergy = <1635, 13675) AND goimpuls = (-inf, -0.50) AND nbumps = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND gimpuls = (-inf, 772.50) AND genergy = (-inf, 17640) AND senergy = (-inf, 650) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND maxenergy = (-inf, 950) AND gimpuls = (-inf, 772.50) AND genergy = (-inf, 17640) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND goimpuls = (-inf, -5.50) AND genergy = (-inf, 13675) AND senergy = (-inf, 2200) AND nbumps2 = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND gimpuls = (-inf, 772.50) AND genergy = (-inf, 17640) AND senergy = (-inf, 2200) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND maxenergy = (-inf, 3500) AND genergy = (-inf, 17640) AND nbumps2 = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND maxenergy = (-inf, 3500) AND gimpuls = (-inf, 772.50) AND genergy = (-inf, 17640) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND gimpuls = (-inf, 772.50) AND genergy = (-inf, 17640) AND nbumps3 = (-inf, 0.50) AND senergy = (-inf, 25000) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND gimpuls = (-inf, 772.50) AND genergy = (-inf, 17640) AND nbumps3 = (-inf, 0.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 772.50) AND genergy = <1865, 17640) AND senergy = (-inf, 4400) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 217) AND genergy = <1865, inf) AND goimpuls = (-inf, -5.50) AND nbumps4 = (-inf, 0.50) AND nbumps2 = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = (-inf, 68) AND genergy = <1865, 17640) AND senergy = (-inf, 25000) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF ghazard = {c} THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND gimpuls = (-inf, 536) AND genergy = (-inf, 18585) AND nbumps = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND genergy = (-inf, 18585) AND nbumps = (-inf, 0.50) THEN label = {0}\n",
-      "IF maxenergy = (-inf, 950) AND gimpuls = (-inf, 536) AND genergy = (-inf, 18585) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 536) AND genergy = <1865, 18585) AND nbumps3 = (-inf, 1.50) AND senergy = (-inf, 27100) THEN label = {0}\n",
-      "IF goenergy = <297.50, inf) THEN label = {0}\n",
-      "IF senergy = <115450, inf) THEN label = {0}\n",
-      "IF genergy = <1789250, inf) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 786) AND genergy = <1865, 18810) AND nbumps3 = (-inf, 1.50) AND senergy = (-inf, 27100) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND genergy = (-inf, 51290) AND goimpuls = (-inf, -0.50) AND shift = {N} AND nbumps = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND gimpuls = (-inf, 184.50) AND goimpuls = (-inf, 27.50) AND nbumps = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND genergy = (-inf, 51290) AND shift = {N} AND nbumps = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = <-73.50, inf) AND goimpuls = (-inf, -0.50) AND shift = {N} AND nbumps = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = <-73.50, inf) AND goimpuls = (-inf, 96.50) AND shift = {N} AND nbumps = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = <-55.50, inf) AND goimpuls = (-inf, 96.50) AND shift = {N} AND senergy = (-inf, 2150) THEN label = {0}\n",
-      "IF goimpuls = <-70.50, 96.50) AND genergy = <4640, inf) AND shift = {N} AND nbumps2 = (-inf, 0.50) THEN label = {0}\n",
-      "IF gimpuls = <135, inf) AND goimpuls = (-inf, 230.50) AND genergy = <9110, inf) AND shift = {N} AND senergy = (-inf, 2150) THEN label = {0}\n",
-      "IF genergy = <9110, inf) AND shift = {N} AND senergy = <2400, 9500) AND nbumps3 = (-inf, 1.50) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND gimpuls = (-inf, 395) AND genergy = (-inf, 19310) AND goimpuls = (-inf, -0.50) AND nbumps = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND gimpuls = (-inf, 786) AND genergy = (-inf, 19310) AND senergy = (-inf, 650) THEN label = {0}\n",
-      "IF goenergy = <-54.50, inf) AND genergy = <10915, 19310) AND goimpuls = <-50.50, 230.50) AND nbumps2 = (-inf, 1.50) AND nbumps = <0.50, inf) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND gimpuls = (-inf, 786) AND genergy = (-inf, 19510) AND senergy = (-inf, 650) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND gimpuls = (-inf, 392.50) AND genergy = (-inf, 20525) AND goimpuls = (-inf, -0.50) AND nbumps = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = <-84.50, 118) AND genergy = (-inf, 20525) AND senergy = (-inf, 550) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND gimpuls = (-inf, 319.50) AND goimpuls = (-inf, -0.50) AND seismoacoustic = {a} AND nbumps = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND gimpuls = (-inf, 319.50) AND goimpuls = (-inf, -0.50) AND nbumps = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND gimpuls = (-inf, 362.50) AND goimpuls = (-inf, -0.50) AND nbumps = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND gimpuls = (-inf, 319.50) AND goimpuls = (-inf, -0.50) AND senergy = (-inf, 550) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND gimpuls = (-inf, 362.50) AND goimpuls = (-inf, -0.50) AND senergy = (-inf, 550) THEN label = {0}\n",
-      "IF goenergy = <-84.50, 118) AND gimpuls = (-inf, 362.50) AND goimpuls = (-inf, 96.50) AND nbumps = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = <-84.50, 118) AND gimpuls = (-inf, 362.50) AND goimpuls = (-inf, 96.50) AND senergy = (-inf, 550) THEN label = {0}\n",
-      "IF goenergy = <-84.50, 118) AND gimpuls = (-inf, 380.50) AND goimpuls = (-inf, 96.50) AND nbumps = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = <-84.50, 120.50) AND gimpuls = (-inf, 395.50) AND maxenergy = (-inf, 350) AND goimpuls = (-inf, 96.50) AND senergy = (-inf, 550) THEN label = {0}\n",
-      "IF goenergy = <-84.50, 120.50) AND gimpuls = (-inf, 449.50) AND maxenergy = (-inf, 350) AND genergy = (-inf, 32875) THEN label = {0}\n",
-      "IF goenergy = <-84.50, 120.50) AND gimpuls = (-inf, 449.50) AND maxenergy = (-inf, 350) AND goimpuls = (-inf, 96.50) AND senergy = (-inf, 550) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND gimpuls = (-inf, 449.50) AND goimpuls = (-inf, 96.50) AND senergy = (-inf, 550) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND gimpuls = (-inf, 537.50) AND genergy = (-inf, 25125) AND goimpuls = (-inf, 27.50) AND nbumps = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = <-84.50, 114.50) AND gimpuls = (-inf, 537.50) AND maxenergy = (-inf, 350) AND genergy = (-inf, 31790) THEN label = {0}\n",
-      "IF goenergy = <-84.50, 114.50) AND genergy = (-inf, 31790) AND senergy = (-inf, 550) THEN label = {0}\n",
-      "IF goenergy = <116.50, inf) AND gimpuls = (-inf, 788.50) AND genergy = <20930, 31790) THEN label = {0}\n",
-      "IF goenergy = <-84.50, 114.50) AND genergy = (-inf, 32770) AND senergy = (-inf, 550) THEN label = {0}\n",
-      "IF goenergy = <-84.50, 87.50) AND gimpuls = (-inf, 1342.50) AND goimpuls = (-inf, 96) AND senergy = (-inf, 550) THEN label = {0}\n",
-      "IF goenergy = <-84.50, 87.50) AND gimpuls = (-inf, 1732) AND goimpuls = (-inf, 96) AND senergy = (-inf, 550) THEN label = {0}\n",
-      "IF goenergy = <-84.50, 87.50) AND gimpuls = (-inf, 2168) AND goimpuls = (-inf, 96) AND senergy = (-inf, 550) THEN label = {0}\n",
-      "IF goenergy = <-84.50, 87.50) AND genergy = (-inf, 1674705) AND goimpuls = (-inf, 96) AND senergy = (-inf, 550) THEN label = {0}\n",
-      "IF ghazard = {a} AND goenergy = <57, inf) AND gimpuls = (-inf, 514.50) AND goimpuls = <-1.50, 96.50) AND senergy = (-inf, 550) THEN label = {0}\n",
-      "IF goenergy = (-inf, 104.50) AND gimpuls = <523, 1342.50) AND goimpuls = <17.50, inf) AND genergy = <46870, inf) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF goenergy = <29.50, 104.50) AND gimpuls = <522, 2168) AND senergy = (-inf, 250) THEN label = {0}\n",
-      "IF goenergy = <-19, inf) AND goimpuls = <4.50, 312) AND genergy = <4455, 34260) AND nbumps = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = <8.50, inf) AND gimpuls = <523, 1342.50) AND goimpuls = (-inf, 96.50) AND senergy = (-inf, 250) THEN label = {0}\n",
-      "IF genergy = <36470, 42165) AND goimpuls = <5.50, inf) AND senergy = (-inf, 550) THEN label = {0}\n",
-      "IF goenergy = <119.50, inf) AND gimpuls = <516, 1210) AND goimpuls = (-inf, 118.50) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF gimpuls = <144.50, 1210) AND genergy = <42430, inf) AND goimpuls = <59.50, inf) AND senergy = (-inf, 250) THEN label = {0}\n",
-      "IF gimpuls = <813.50, 1427.50) AND goimpuls = <104.50, inf) AND senergy = (-inf, 350) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 319) AND genergy = <1865, 19670) AND goimpuls = (-inf, -6.50) AND senergy = (-inf, 9600) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND gimpuls = (-inf, 362.50) AND goimpuls = (-inf, -0.50) AND senergy = (-inf, 650) THEN label = {0}\n",
-      "IF goenergy = <-44.50, inf) AND gimpuls = <324.50, inf) AND genergy = (-inf, 32770) AND goimpuls = (-inf, 105.50) AND nbumps = <0.50, 1.50) THEN label = {0}\n",
-      "IF goenergy = <-73.50, 14.50) AND gimpuls = (-inf, 1342.50) AND genergy = <36280, inf) AND senergy = (-inf, 650) THEN label = {0}\n",
-      "IF goimpuls = <-6.50, inf) AND genergy = <49585, inf) AND senergy = (-inf, 650) AND nbumps = <0.50, inf) THEN label = {0}\n",
-      "IF goenergy = <-54.50, inf) AND genergy = (-inf, 64725) AND senergy = <650, 750) THEN label = {0}\n",
-      "IF goenergy = <-33.50, inf) AND maxenergy = (-inf, 950) AND gimpuls = (-inf, 537.50) AND genergy = (-inf, 25125) AND goimpuls = <-41.50, -0.50) THEN label = {0}\n",
-      "IF goenergy = <-84.50, 114.50) AND gimpuls = (-inf, 587.50) AND genergy = (-inf, 27275) AND nbumps3 = (-inf, 0.50) AND senergy = (-inf, 25250) THEN label = {0}\n",
-      "IF goenergy = (-inf, 114.50) AND genergy = <1865, 28515) AND senergy = (-inf, 7500) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF goenergy = (-inf, -20.50) AND gimpuls = (-inf, 537.50) AND genergy = <20610, 28515) AND nbumps2 = (-inf, 0.50) THEN label = {0}\n",
-      "IF genergy = (-inf, 28515) AND nbumps = <5.50, inf) THEN label = {0}\n",
-      "IF maxenergy = (-inf, 3500) AND genergy = <20270, 28515) AND goimpuls = (-inf, -8.50) AND nbumps2 = <0.50, 1.50) THEN label = {0}\n",
-      "IF genergy = <3260, 28515) AND senergy = <8500, inf) AND nbumps = (-inf, 2.50) THEN label = {0}\n",
-      "IF goenergy = <-36.50, inf) AND genergy = (-inf, 28515) AND senergy = <5050, inf) THEN label = {0}\n",
-      "IF ghazard = {a} AND goenergy = <-53.50, 40.50) AND genergy = <20560, 29105) AND nbumps2 = <0.50, inf) THEN label = {0}\n",
-      "IF goenergy = (-inf, 14.50) AND maxenergy = (-inf, 550) AND gimpuls = (-inf, 1252.50) AND nbumps = (-inf, 2.50) THEN label = {0}\n",
-      "IF goenergy = <-40.50, 28.50) AND gimpuls = (-inf, 2168) AND genergy = <40210, inf) AND senergy = (-inf, 850) AND seismic = {a} THEN label = {0}\n",
-      "IF goenergy = (-inf, 104.50) AND gimpuls = (-inf, 362.50) AND genergy = <1865, inf) AND goimpuls = (-inf, 66.50) AND senergy = (-inf, 7500) AND nbumps2 = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = (-inf, 88.50) AND gimpuls = (-inf, 1210) AND goimpuls = (-inf, 96) AND genergy = <1865, inf) AND senergy = (-inf, 7500) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF goenergy = <17.50, inf) AND gimpuls = (-inf, 1210) AND goimpuls = (-inf, 66.50) AND nbumps2 = (-inf, 0.50) AND nbumps = <0.50, inf) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1210) AND genergy = <7815, inf) AND senergy = <1500, 7500) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF goenergy = (-inf, 88.50) AND gimpuls = (-inf, 1252.50) AND goimpuls = (-inf, 96) AND genergy = <1865, inf) AND senergy = (-inf, 7500) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1342.50) AND goimpuls = <-54.50, inf) AND genergy = <7870, inf) AND senergy = <1500, inf) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF goenergy = <-40.50, 31.50) AND gimpuls = (-inf, 1485) AND genergy = <44960, inf) AND senergy = (-inf, 5500) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF gimpuls = <1441.50, inf) AND genergy = (-inf, 117575) THEN label = {0}\n",
-      "IF goenergy = (-inf, 87.50) AND gimpuls = (-inf, 1752) AND goimpuls = (-inf, 96) AND nbumps3 = (-inf, 0.50) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF goimpuls = <-40.50, inf) AND genergy = <422215, inf) AND seismoacoustic = {a} AND senergy = <2500, inf) AND nbumps2 = (-inf, 0.50) THEN label = {0}\n",
-      "IF genergy = <29945, 31245) THEN label = {0}\n",
-      "IF goenergy = <-33.50, inf) AND genergy = <29155, 31615) AND goimpuls = (-inf, 105.50) AND nbumps3 = (-inf, 1.50) THEN label = {0}\n",
-      "IF genergy = <31805, 32680) THEN label = {0}\n",
-      "IF goenergy = (-inf, 158.50) AND maxenergy = (-inf, 650) AND gimpuls = (-inf, 1210) AND goimpuls = (-inf, 96.50) THEN label = {0}\n",
-      "IF genergy = <32925, 34315) THEN label = {0}\n",
-      "IF maxenergy = (-inf, 750) AND genergy = <35480, 45240) AND nbumps = <0.50, inf) THEN label = {0}\n",
-      "IF ghazard = {a} AND goenergy = <-27.50, inf) AND maxenergy = (-inf, 750) AND gimpuls = (-inf, 2056) AND genergy = (-inf, 715465) AND senergy = <850, inf) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND gimpuls = (-inf, 305.50) AND goimpuls = (-inf, 17.50) AND senergy = (-inf, 2300) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND gimpuls = (-inf, 305.50) AND maxenergy = (-inf, 3500) AND goimpuls = (-inf, -5.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 305.50) AND genergy = <29195, inf) AND goimpuls = (-inf, 96) AND senergy = (-inf, 9850) THEN label = {0}\n",
-      "IF senergy = <71000, inf) AND nbumps2 = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = (-inf, 88.50) AND gimpuls = (-inf, 1141.50) AND maxenergy = (-inf, 7500) AND genergy = <1865, inf) AND goimpuls = (-inf, 96) AND nbumps3 = (-inf, 2.50) AND nbumps2 = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = <-72.50, inf) AND gimpuls = (-inf, 1372) AND genergy = <55365, inf) AND senergy = <1500, inf) AND nbumps2 = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = (-inf, 87.50) AND genergy = (-inf, 1733075) AND nbumps3 = (-inf, 1.50) AND nbumps2 = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = <-32.50, inf) AND gimpuls = (-inf, 2681) AND genergy = <173815, 1026530) AND nbumps3 = (-inf, 2.50) AND nbumps2 = (-inf, 0.50) THEN label = {0}\n",
-      "IF ghazard = {a} AND goenergy = <0.50, 87.50) AND maxenergy = <550, 850) THEN label = {0}\n",
-      "IF ghazard = {a} AND goenergy = <-29.50, inf) AND gimpuls = <259.50, inf) AND maxenergy = <550, inf) AND genergy = (-inf, 39305) AND goimpuls = <-39.50, inf) AND senergy = (-inf, 4400) AND nbumps3 = (-inf, 2.50) THEN label = {0}\n",
-      "IF goenergy = <-18.50, 105.50) AND genergy = <9110, 39695) AND goimpuls = <-41.50, inf) AND nbumps3 = (-inf, 2.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 361.50) AND maxenergy = (-inf, 3500) AND senergy = <3250, inf) THEN label = {0}\n",
-      "IF goenergy = <-37.50, inf) AND gimpuls = (-inf, 361.50) AND maxenergy = (-inf, 35000) AND genergy = <38315, inf) AND senergy = <950, inf) THEN label = {0}\n",
-      "IF goenergy = <-18.50, inf) AND gimpuls = <334.50, 804.50) AND maxenergy = <550, inf) AND genergy = (-inf, 44750) AND senergy = (-inf, 25150) AND nbumps2 = <0.50, 3.50) THEN label = {0}\n",
-      "IF senergy = <1250, 1550) AND nbumps2 = (-inf, 1.50) THEN label = {0}\n",
-      "IF genergy = <44780, 45255) THEN label = {0}\n",
-      "IF goenergy = (-inf, 158.50) AND senergy = <1150, 1650) AND nbumps2 = (-inf, 2.50) THEN label = {0}\n",
-      "IF genergy = <46690, 48545) THEN label = {0}\n",
-      "IF goenergy = (-inf, 68) AND gimpuls = (-inf, 769.50) AND genergy = <43280, 49095) AND nbumps3 = (-inf, 3.50) THEN label = {0}\n",
-      "IF goenergy = (-inf, 95.50) AND gimpuls = (-inf, 514.50) AND goimpuls = <-7, 96.50) AND genergy = <40245, inf) AND nbumps3 = (-inf, 2.50) THEN label = {0}\n",
-      "IF goenergy = <-73.50, inf) AND gimpuls = (-inf, 514.50) AND maxenergy = <550, 8500) AND genergy = <49265, 108000) THEN label = {0}\n",
-      "IF goenergy = <-53.50, inf) AND gimpuls = (-inf, 1836) AND nbumps3 = (-inf, 0.50) AND nbumps4 = <0.50, inf) AND nbumps2 = (-inf, 1.50) THEN label = {0}\n",
-      "IF maxenergy = (-inf, 1500) AND gimpuls = <673.50, 1210) AND senergy = <1700, inf) THEN label = {0}\n",
-      "IF goenergy = <-84.50, inf) AND gimpuls = (-inf, 1245.50) AND genergy = <49585, 58435) AND goimpuls = (-inf, 96.50) AND nbumps3 = (-inf, 1.50) AND nbumps2 = (-inf, 2.50) THEN label = {0}\n",
-      "IF ghazard = {a} AND goenergy = (-inf, 68.50) AND gimpuls = <526, 606) AND genergy = <17700, inf) AND senergy = (-inf, 9550) AND nbumps2 = (-inf, 1.50) THEN label = {0}\n",
-      "IF goenergy = <-43.50, 87.50) AND senergy = (-inf, 3150) AND nbumps3 = (-inf, 1.50) AND nbumps2 = (-inf, 1.50) AND nbumps = <1.50, inf) THEN label = {0}\n",
-      "IF goenergy = (-inf, 120.50) AND gimpuls = (-inf, 1029.50) AND genergy = <58515, 61125) AND nbumps2 = (-inf, 2.50) THEN label = {0}\n",
-      "IF gimpuls = <393.50, 725.50) AND genergy = <81935, inf) AND nbumps3 = (-inf, 2.50) THEN label = {0}\n",
-      "IF goenergy = <11.50, 68.50) AND maxenergy = (-inf, 2500) AND gimpuls = <556, inf) AND genergy = (-inf, 1482055) AND nbumps2 = <0.50, inf) THEN label = {0}\n",
-      "IF goenergy = (-inf, 28.50) AND gimpuls = <354, 791.50) AND genergy = <81505, 366505) AND nbumps3 = (-inf, 2.50) THEN label = {0}\n",
-      "IF goenergy = <-31.50, 104.50) AND gimpuls = <325, 2068.50) AND goimpuls = (-inf, 50.50) AND senergy = (-inf, 5750) AND nbumps3 = (-inf, 1.50) AND nbumps2 = <0.50, 1.50) THEN label = {0}\n",
-      "IF goenergy = <-9.50, inf) AND gimpuls = <938.50, 2902.50) AND maxenergy = (-inf, 3500) AND genergy = <80845, 508210) AND nbumps = <0.50, inf) THEN label = {0}\n",
-      "IF senergy = <5050, 5750) THEN label = {0}\n",
-      "IF gimpuls = <887.50, 977) AND goimpuls = (-inf, -6.50) AND senergy = (-inf, 85450) THEN label = {0}\n",
-      "IF ghazard = {a} AND goenergy = <-38.50, inf) AND gimpuls = <813.50, 1151) AND maxenergy = <3500, inf) AND goimpuls = (-inf, 89.50) AND nbumps2 = (-inf, 2.50) THEN label = {0}\n",
-      "IF goenergy = <-27.50, inf) AND genergy = <123990, 544010) AND senergy = (-inf, 17850) AND nbumps = <3.50, inf) THEN label = {0}\n",
-      "IF goenergy = (-inf, 68.50) AND maxenergy = <7500, inf) AND genergy = (-inf, 189505) AND goimpuls = <32.50, inf) THEN label = {0}\n",
-      "IF goenergy = <-29.50, inf) AND gimpuls = (-inf, 2078.50) AND goimpuls = (-inf, -5.50) AND genergy = <138665, inf) AND senergy = <3250, inf) AND nbumps2 = (-inf, 1.50) AND nbumps = <1.50, inf) THEN label = {0}\n",
-      "IF goenergy = <-15.50, 53.50) AND gimpuls = (-inf, 2917) AND goimpuls = <-7.50, inf) AND nbumps3 = (-inf, 1.50) AND senergy = <7500, inf) THEN label = {0}\n",
-      "IF goenergy = <-88.50, 87.50) AND genergy = (-inf, 1713980) AND goimpuls = (-inf, 89.50) AND senergy = (-inf, 18500) AND nbumps3 = (-inf, 4.50) AND nbumps2 = (-inf, 3.50) THEN label = {0}\n",
-      "IF goenergy = <22.50, inf) AND gimpuls = <364, inf) AND genergy = (-inf, 144410) AND nbumps3 = <3.50, inf) THEN label = {1}\n",
-      "IF gimpuls = <364, inf) AND goimpuls = (-inf, 21.50) AND nbumps3 = <3.50, inf) AND senergy = <10150, inf) THEN label = {1}\n",
-      "IF goenergy = <-15, inf) AND goimpuls = (-inf, 44.50) AND senergy = <13850, inf) AND nbumps3 = (-inf, 3.50) AND nbumps = <5.50, inf) THEN label = {1}\n",
-      "IF gimpuls = <2208.50, 2361.50) AND genergy = <493095, inf) AND nbumps2 = <0.50, inf) THEN label = {1}\n",
-      "IF gimpuls = <3011, inf) AND genergy = (-inf, 1005720) AND nbumps2 = <0.50, inf) THEN label = {1}\n",
-      "IF gimpuls = <1328, 1361.50) AND nbumps2 = <0.50, inf) THEN label = {1}\n",
-      "IF goenergy = (-inf, -29.50) AND gimpuls = <1328, inf) AND goimpuls = <-29, -14.50) THEN label = {1}\n",
-      "IF ghazard = {a} AND goenergy = <-10.50, inf) AND gimpuls = <1328, 1443.50) AND goimpuls = <-1, inf) AND nbumps2 = (-inf, 1.50) THEN label = {1}\n",
-      "IF gimpuls = <1328, 2109) AND maxenergy = (-inf, 7500) AND goimpuls = (-inf, -5.50) AND genergy = (-inf, 642325) AND senergy = <850, 9350) AND seismoacoustic = {a} AND nbumps = (-inf, 3.50) THEN label = {1}\n",
-      "IF gimpuls = <1394.50, 2004) AND goimpuls = <-25, 13) AND genergy = <393900, inf) AND senergy = (-inf, 38250) AND nbumps2 = <0.50, inf) AND nbumps = <1.50, 3.50) THEN label = {1}\n",
-      "IF gimpuls = <1747.50, 3018) AND goimpuls = <-25, 20.50) AND nbumps3 = (-inf, 1.50) AND senergy = (-inf, 32750) THEN label = {1}\n",
-      "IF goenergy = <-16.50, inf) AND gimpuls = <1831, 2945.50) AND genergy = <254130, 1133675) AND seismic = {b} AND senergy = <1600, 32750) THEN label = {1}\n",
-      "IF maxenergy = (-inf, 25000) AND gimpuls = <364, inf) AND goimpuls = <1.50, inf) AND nbumps3 = <1.50, 4.50) AND senergy = <4300, inf) AND nbumps = <4.50, 6.50) THEN label = {1}\n",
-      "IF gimpuls = <740.50, 887.50) AND goimpuls = (-inf, 9) AND nbumps = <2.50, inf) THEN label = {1}\n",
-      "IF gimpuls = <764.50, 1288.50) AND genergy = <61240, 213225) AND goimpuls = <-22.50, 58.50) AND senergy = (-inf, 27350) AND nbumps3 = (-inf, 1.50) AND nbumps = <2.50, inf) THEN label = {1}\n",
-      "IF gimpuls = <379, 484) AND goimpuls = (-inf, 12.50) AND senergy = (-inf, 10350) AND nbumps = <2.50, inf) THEN label = {1}\n",
-      "IF goenergy = (-inf, -4.50) AND maxenergy = <3500, inf) AND goimpuls = <-50, inf) AND genergy = (-inf, 52070) AND senergy = <5750, 15200) AND nbumps = <2.50, 5.50) AND nbumps2 = (-inf, 2.50) THEN label = {1}\n",
-      "IF goenergy = (-inf, 123.50) AND goimpuls = <-70.50, 32.50) AND seismoacoustic = {a} AND senergy = (-inf, 27350) AND nbumps = <2.50, 4.50) THEN label = {1}\n",
-      "IF goenergy = <-30.50, inf) AND gimpuls = <1139.50, 1270.50) AND goimpuls = (-inf, 105) AND genergy = <54930, 220205) AND senergy = (-inf, 38250) AND nbumps3 = (-inf, 1.50) THEN label = {1}\n",
-      "IF goenergy = <-51, inf) AND gimpuls = <754.50, 1048) AND goimpuls = (-inf, 62.50) AND genergy = (-inf, 99210) AND senergy = (-inf, 201650) AND nbumps = <1.50, 2.50) AND nbumps2 = (-inf, 1.50) THEN label = {1}\n",
-      "IF goenergy = (-inf, 144) AND gimpuls = <361.50, 728.50) AND maxenergy = <450, inf) AND genergy = <32455, inf) AND goimpuls = <-12.50, 8.50) AND senergy = (-inf, 7600) AND nbumps2 = <0.50, inf) AND nbumps = (-inf, 2.50) THEN label = {1}\n",
-      "IF ghazard = {a} AND gimpuls = <160, 256) AND maxenergy = (-inf, 4500) AND genergy = (-inf, 21865) AND nbumps = <1.50, inf) THEN label = {1}\n",
-      "IF goenergy = (-inf, 106.50) AND gimpuls = <110, 649.50) AND genergy = (-inf, 46930) AND senergy = (-inf, 40500) AND nbumps = <1.50, 2.50) THEN label = {1}\n",
-      "IF gimpuls = <110, inf) AND senergy = <550, inf) AND nbumps2 = <0.50, inf) THEN label = {1}\n",
-      "IF goenergy = <-78.50, inf) AND gimpuls = <32.50, 237.50) AND maxenergy = <3500, inf) AND goimpuls = <-74.50, 68.50) AND nbumps3 = (-inf, 2.50) AND nbumps2 = (-inf, 2.50) AND nbumps = (-inf, 4.50) THEN label = {1}\n",
-      "IF gimpuls = <767.50, 813.50) AND genergy = (-inf, 75455) AND goimpuls = <1, inf) AND senergy = (-inf, 1300) AND nbumps = (-inf, 1.50) THEN label = {1}\n",
-      "IF ghazard = {a} AND goenergy = (-inf, 106.50) AND gimpuls = <131, 735) AND maxenergy = (-inf, 350) AND genergy = <48545, 66335) AND goimpuls = <-72, inf) THEN label = {1}\n",
-      "IF ghazard = {a} AND goenergy = <5.50, inf) AND gimpuls = <396, 732.50) AND genergy = <40050, 50765) AND goimpuls = (-inf, 79.50) AND senergy = (-inf, 350) THEN label = {1}\n",
-      "IF goenergy = <-37.50, 152.50) AND gimpuls = <571, 651) AND genergy = <20840, 36590) AND nbumps = (-inf, 0.50) THEN label = {1}\n",
-      "IF ghazard = {a} AND goenergy = <-22, 33.50) AND gimpuls = <361.50, 525.50) AND genergy = <25145, 42200) AND goimpuls = <-27.50, 8.50) AND nbumps = (-inf, 0.50) THEN label = {1}\n",
-      "IF goenergy = <-45.50, inf) AND gimpuls = <380.50, 542.50) AND genergy = <17635, 21260) AND shift = {W} AND nbumps = (-inf, 0.50) THEN label = {1}\n",
-      "IF gimpuls = <240, 324.50) AND genergy = <18585, 25665) AND goimpuls = <-49.50, 37.50) AND shift = {W} AND senergy = (-inf, 3350) AND nbumps = (-inf, 2.50) THEN label = {1}\n",
-      "IF ghazard = {a} AND goenergy = <-59.50, -10.50) AND gimpuls = <88, 269.50) AND maxenergy = (-inf, 4500) AND goimpuls = <-42.50, 4.50) AND genergy = <4565, 21365) THEN label = {1}\n"
-     ]
-    }
-   ],
-   "source": [
-    "for rule in c2_ruleset.rules:\n",
-    "    print(rule)"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "Correlation Measure generated rules"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 16,
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "IF gimpuls = (-inf, 1252.50) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1342.50) AND goimpuls = (-inf, 96.50) AND senergy = (-inf, 550) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1342.50) AND goimpuls = (-inf, 312) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1410) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1653.50) AND genergy = (-inf, 1006585) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1684) AND goimpuls = (-inf, 312) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1798) AND goimpuls = (-inf, 312) AND genergy = (-inf, 1006585) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 2733) AND nbumps2 = (-inf, 0.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 3146) AND genergy = (-inf, 1733075) AND goimpuls = (-inf, 312) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF goimpuls = (-inf, 312) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF senergy = (-inf, 2350) AND nbumps2 = (-inf, 1.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1331) AND nbumps = (-inf, 2.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1655.50) AND nbumps = (-inf, 2.50) AND nbumps2 = (-inf, 1.50) THEN label = {0}\n",
-      "IF ghazard = {a} AND gimpuls = <334.50, 2892) AND genergy = (-inf, 318735) AND goimpuls = <31.50, inf) AND senergy = <350, inf) AND nbumps = (-inf, 2.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1832.50) AND nbumps = (-inf, 2.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 3146) AND genergy = (-inf, 1713980) AND goimpuls = (-inf, 312) AND nbumps = (-inf, 2.50) AND nbumps2 = (-inf, 1.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1253.50) AND nbumps3 = (-inf, 1.50) AND nbumps5 = (-inf, 0.50) AND nbumps2 = (-inf, 1.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1253.50) AND nbumps3 = (-inf, 1.50) AND nbumps2 = (-inf, 2.50) THEN label = {0}\n",
-      "IF goenergy = (-inf, 104.50) AND genergy = (-inf, 32675) AND senergy = (-inf, 2350) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1253.50) AND nbumps3 = (-inf, 1.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1150.50) AND nbumps3 = (-inf, 2.50) AND nbumps2 = (-inf, 1.50) THEN label = {0}\n",
-      "IF maxenergy = (-inf, 4500) AND gimpuls = (-inf, 769.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1253.50) AND nbumps3 = (-inf, 3.50) AND nbumps2 = (-inf, 1.50) THEN label = {0}\n",
-      "IF goenergy = (-inf, 123.50) AND gimpuls = (-inf, 1028.50) AND maxenergy = <1500, inf) AND genergy = <31805, 373295) AND goimpuls = <-54.50, inf) AND senergy = (-inf, 14350) AND seismic = {a} AND nbumps2 = (-inf, 2.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1253.50) AND nbumps3 = (-inf, 2.50) AND nbumps2 = (-inf, 2.50) THEN label = {0}\n",
-      "IF genergy = (-inf, 378500) AND nbumps3 = (-inf, 2.50) AND nbumps = (-inf, 5.50) THEN label = {0}\n",
-      "IF goenergy = (-inf, 68.50) AND gimpuls = (-inf, 901) AND genergy = <21765, inf) AND nbumps3 = (-inf, 3.50) AND nbumps2 = <1.50, 3.50) AND nbumps = <3.50, inf) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1150.50) AND senergy = (-inf, 20650) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1378) AND maxenergy = (-inf, 75000) AND goimpuls = (-inf, 312) AND nbumps4 = (-inf, 2.50) AND nbumps = (-inf, 8.50) THEN label = {0}\n",
-      "IF goenergy = <-4.50, inf) AND gimpuls = (-inf, 2185.50) AND genergy = <135285, 1505475) AND senergy = (-inf, 5750) AND nbumps2 = <0.50, inf) THEN label = {0}\n",
-      "IF goenergy = <-0.50, 104.50) AND maxenergy = (-inf, 5500) AND goimpuls = <20.50, inf) AND genergy = <101710, inf) AND nbumps = <1.50, inf) THEN label = {0}\n",
-      "IF goenergy = <-29.50, inf) AND goimpuls = (-inf, 6.50) AND genergy = <392530, inf) AND senergy = <7250, inf) AND nbumps2 = (-inf, 1.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 3881.50) AND nbumps = (-inf, 4.50) AND nbumps2 = (-inf, 2.50) THEN label = {0}\n",
-      "IF maxenergy = <1500, inf) AND gimpuls = <994.50, 1959) AND goimpuls = <-34, 95) AND genergy = (-inf, 662435) AND senergy = (-inf, 36050) AND nbumps3 = <0.50, 4.50) AND nbumps2 = <0.50, 2.50) THEN label = {1}\n",
-      "IF goenergy = (-inf, 96) AND maxenergy = <1500, inf) AND gimpuls = <712, 2257.50) AND genergy = <61250, 662435) AND goimpuls = (-inf, 95) AND nbumps3 = <0.50, inf) AND senergy = (-inf, 27350) AND nbumps2 = <0.50, inf) AND nbumps = (-inf, 6.50) THEN label = {1}\n",
-      "IF goenergy = (-inf, 96) AND maxenergy = <1500, inf) AND gimpuls = <538.50, inf) AND goimpuls = <-34, 109) AND genergy = <61250, 826925) AND senergy = (-inf, 36050) AND nbumps3 = (-inf, 4.50) AND nbumps2 = <0.50, inf) AND nbumps = (-inf, 6.50) THEN label = {1}\n",
-      "IF goenergy = (-inf, 186) AND maxenergy = <1500, inf) AND gimpuls = <538.50, inf) AND genergy = <58310, 934630) AND goimpuls = <-55, inf) AND senergy = (-inf, 40650) AND nbumps2 = <0.50, inf) THEN label = {1}\n",
-      "IF ghazard = {a} AND gimpuls = <521.50, inf) AND genergy = <58310, 799855) AND goimpuls = <-23.50, 64.50) AND senergy = <850, 36050) AND nbumps = <1.50, 3.50) AND nbumps2 = <0.50, inf) THEN label = {1}\n",
-      "IF goenergy = (-inf, 84) AND gimpuls = <894.50, inf) AND genergy = <66235, 1161025) AND goimpuls = <-46, 77.50) AND senergy = <650, inf) AND nbumps3 = (-inf, 2.50) AND nbumps = <1.50, 5.50) AND nbumps2 = <0.50, 3.50) THEN label = {1}\n",
-      "IF goenergy = <-34.50, 96) AND gimpuls = <521.50, 1548.50) AND maxenergy = (-inf, 7500) AND genergy = <34360, 207270) AND goimpuls = <-22.50, inf) AND nbumps = <1.50, inf) THEN label = {1}\n",
-      "IF goenergy = (-inf, 135.50) AND gimpuls = <378, inf) AND genergy = <32635, 622815) AND goimpuls = (-inf, 10.50) AND senergy = (-inf, 36050) AND nbumps = <1.50, inf) THEN label = {1}\n",
-      "IF goenergy = (-inf, 106.50) AND gimpuls = <306, 542) AND genergy = <19245, 81890) AND senergy = <750, 12050) AND nbumps = <1.50, 3.50) THEN label = {1}\n",
-      "IF ghazard = {a} AND goenergy = (-inf, -1.50) AND gimpuls = <153.50, 289) AND genergy = (-inf, 37085) AND senergy = (-inf, 40500) AND nbumps3 = (-inf, 3.50) AND nbumps = <1.50, inf) AND nbumps2 = <0.50, inf) THEN label = {1}\n",
-      "IF ghazard = {a} AND goenergy = <-65.50, 27) AND gimpuls = <98.50, 346) AND goimpuls = <-70.50, 8.50) AND genergy = (-inf, 64310) AND senergy = <2350, inf) AND nbumps3 = (-inf, 3.50) AND nbumps2 = <0.50, inf) THEN label = {1}\n",
-      "IF ghazard = {a} AND goenergy = <-50.50, inf) AND gimpuls = <1328.50, inf) AND genergy = (-inf, 1062020) AND goimpuls = <-33.50, 39.50) AND senergy = <850, 38250) AND nbumps = (-inf, 7.50) THEN label = {1}\n",
-      "IF goenergy = (-inf, 56.50) AND gimpuls = <1253.50, inf) AND maxenergy = (-inf, 65000) AND genergy = <52565, 716085) AND goimpuls = <-60.50, 73) AND senergy = <350, inf) AND nbumps3 = (-inf, 2.50) AND nbumps4 = (-inf, 1.50) AND nbumps2 = (-inf, 2.50) AND nbumps = (-inf, 4.50) THEN label = {1}\n",
-      "IF gimpuls = <1342, 3508) AND maxenergy = (-inf, 7500) AND genergy = <77100, inf) AND goimpuls = (-inf, 68.50) AND shift = {W} AND senergy = (-inf, 13350) AND nbumps2 = (-inf, 3.50) THEN label = {1}\n",
-      "IF ghazard = {a} AND goenergy = <-59.50, 45.50) AND gimpuls = <110, 762) AND genergy = <12145, 134125) AND goimpuls = <-53.50, inf) AND senergy = <550, 950) THEN label = {1}\n",
-      "IF goenergy = (-inf, 128.50) AND genergy = <10495, inf) AND shift = {W} AND senergy = (-inf, 36050) AND nbumps3 = <0.50, inf) AND nbumps2 = (-inf, 4.50) AND nbumps = (-inf, 6.50) THEN label = {1}\n",
-      "IF goenergy = <-78.50, inf) AND gimpuls = <32.50, inf) AND maxenergy = <250, inf) AND goimpuls = <-74.50, inf) AND senergy = <350, inf) THEN label = {1}\n",
-      "IF goenergy = (-inf, 176.50) AND gimpuls = <449.50, inf) AND genergy = <49095, inf) THEN label = {1}\n",
-      "IF ghazard = {a} AND goenergy = <68, 124.50) AND gimpuls = <725.50, 1445.50) AND maxenergy = (-inf, 2500) AND genergy = (-inf, 127635) AND goimpuls = <16, inf) AND senergy = (-inf, 4700) AND nbumps2 = (-inf, 1.50) THEN label = {1}\n",
-      "IF ghazard = {a} AND goenergy = <15.50, 160) AND gimpuls = <133.50, 732.50) AND maxenergy = (-inf, 5500) AND genergy = <40050, 52010) AND nbumps3 = (-inf, 0.50) AND nbumps2 = (-inf, 1.50) THEN label = {1}\n",
-      "IF ghazard = {a} AND goenergy = (-inf, 152.50) AND gimpuls = <361.50, 653.50) AND maxenergy = (-inf, 7500) AND genergy = <32680, 36470) AND nbumps3 = (-inf, 0.50) THEN label = {1}\n",
-      "IF goenergy = <-37.50, 124.50) AND gimpuls = <537.50, 621) AND genergy = <17635, 28105) AND shift = {W} AND nbumps = (-inf, 0.50) THEN label = {1}\n",
-      "IF ghazard = {a} AND goenergy = <-37.50, 181) AND gimpuls = <240, 470.50) AND genergy = <20485, 27430) AND goimpuls = <-43, inf) AND shift = {W} AND senergy = (-inf, 450) THEN label = {1}\n",
-      "IF goenergy = <-55.50, 297.50) AND gimpuls = <217.50, 796) AND genergy = <13725, 49585) AND goimpuls = <-42.50, inf) AND shift = {W} AND senergy = (-inf, 1050) AND nbumps2 = (-inf, 0.50) THEN label = {1}\n",
-      "IF goenergy = (-inf, -1.50) AND gimpuls = <54.50, 195.50) AND genergy = <1510, 12565) AND goimpuls = <-72.50, 28.50) AND shift = {N} AND seismoacoustic = {a} AND seismic = {a} AND senergy = (-inf, 3200) THEN label = {1}\n"
-     ]
-    }
-   ],
-   "source": [
-    "for rule in corr_ruleset.rules:\n",
-    "    print(rule)"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "RSS Measure generated rules"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 17,
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "IF genergy = (-inf, 126350) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1210) AND goimpuls = (-inf, 233.50) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1342.50) AND goimpuls = (-inf, 233.50) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1410) AND goimpuls = (-inf, 233.50) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1485) AND goimpuls = (-inf, 96.50) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1653.50) AND goimpuls = (-inf, 96.50) AND genergy = (-inf, 1006585) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1752) AND goimpuls = (-inf, 96.50) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1822) AND goimpuls = (-inf, 96.50) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF goenergy = (-inf, 104.50) AND gimpuls = (-inf, 2168) AND goimpuls = (-inf, 96.50) AND senergy = (-inf, 550) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 2733) AND genergy = (-inf, 1026530) AND goimpuls = (-inf, 312) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 2733) AND goimpuls = (-inf, 312) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF genergy = (-inf, 1733075) AND goimpuls = (-inf, 312) AND nbumps = (-inf, 1.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1342.50) AND goimpuls = (-inf, 96.50) AND senergy = (-inf, 650) THEN label = {0}\n",
-      "IF maxenergy = (-inf, 550) AND goimpuls = (-inf, 312) THEN label = {0}\n",
-      "IF goenergy = (-inf, 104.50) AND maxenergy = (-inf, 650) AND gimpuls = (-inf, 1210) AND senergy = (-inf, 1550) THEN label = {0}\n",
-      "IF maxenergy = (-inf, 650) AND gimpuls = (-inf, 1732) AND goimpuls = (-inf, 233.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1141.50) AND goimpuls = (-inf, 312) AND nbumps3 = (-inf, 2.50) AND nbumps2 = (-inf, 0.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1141.50) AND goimpuls = (-inf, 312) AND nbumps3 = (-inf, 3.50) AND nbumps2 = (-inf, 0.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1372) AND nbumps2 = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = (-inf, 104.50) AND gimpuls = (-inf, 1655.50) AND genergy = (-inf, 1006585) AND goimpuls = (-inf, 96) AND nbumps3 = (-inf, 2.50) AND nbumps2 = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = (-inf, 104.50) AND gimpuls = (-inf, 1760.50) AND goimpuls = (-inf, 96) AND nbumps3 = (-inf, 3.50) AND nbumps2 = (-inf, 0.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 2892) AND goimpuls = (-inf, 312) AND nbumps3 = (-inf, 2.50) AND nbumps2 = (-inf, 0.50) THEN label = {0}\n",
-      "IF nbumps2 = (-inf, 0.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1210) AND goimpuls = (-inf, 96.50) AND nbumps = (-inf, 2.50) THEN label = {0}\n",
-      "IF maxenergy = (-inf, 750) AND gimpuls = (-inf, 1732) AND goimpuls = (-inf, 96.50) AND genergy = (-inf, 703425) THEN label = {0}\n",
-      "IF goenergy = (-inf, 104.50) AND maxenergy = (-inf, 850) AND gimpuls = (-inf, 2888) AND goimpuls = (-inf, 96) THEN label = {0}\n",
-      "IF genergy = (-inf, 31245) AND nbumps3 = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = (-inf, 105.50) AND genergy = (-inf, 31245) AND senergy = (-inf, 4400) AND nbumps2 = (-inf, 2.50) THEN label = {0}\n",
-      "IF goenergy = (-inf, 105.50) AND gimpuls = (-inf, 664.50) AND senergy = (-inf, 27100) AND nbumps = (-inf, 3.50) AND nbumps2 = (-inf, 1.50) THEN label = {0}\n",
-      "IF genergy = (-inf, 31245) AND goimpuls = (-inf, 233.50) AND senergy = (-inf, 24700) AND nbumps2 = (-inf, 1.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 380.50) AND goimpuls = (-inf, 105.50) AND nbumps4 = (-inf, 0.50) AND nbumps = (-inf, 5.50) THEN label = {0}\n",
-      "IF genergy = (-inf, 31245) AND goimpuls = (-inf, 105.50) AND senergy = (-inf, 27650) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 664.50) AND goimpuls = (-inf, 105.50) AND nbumps3 = (-inf, 3.50) AND nbumps4 = (-inf, 2.50) AND nbumps2 = (-inf, 4) THEN label = {0}\n",
-      "IF goenergy = (-inf, 105.50) AND maxenergy = (-inf, 7500) AND genergy = (-inf, 44750) AND senergy = (-inf, 13700) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1414) AND genergy = (-inf, 48545) AND goimpuls = (-inf, 233.50) THEN label = {0}\n",
-      "IF goenergy = (-inf, 104.50) AND goimpuls = (-inf, 96) AND senergy = (-inf, 1950) AND nbumps2 = (-inf, 2.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1836) AND goimpuls = (-inf, 233.50) AND nbumps3 = (-inf, 0.50) AND nbumps5 = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = (-inf, 104.50) AND maxenergy = (-inf, 1500) AND genergy = (-inf, 531845) THEN label = {0}\n",
-      "IF goenergy = (-inf, 104.50) AND genergy = (-inf, 61125) AND goimpuls = (-inf, 96.50) AND nbumps = (-inf, 6.50) THEN label = {0}\n",
-      "IF goenergy = (-inf, 94.50) AND gimpuls = (-inf, 698) AND genergy = <45830, 105885) AND goimpuls = <-41.50, inf) AND senergy = <3950, 29200) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 2068.50) AND goimpuls = (-inf, 233.50) AND senergy = (-inf, 4400) AND nbumps = (-inf, 2.50) AND nbumps2 = (-inf, 1.50) THEN label = {0}\n",
-      "IF goimpuls = (-inf, 96.50) AND nbumps3 = (-inf, 1.50) AND nbumps = (-inf, 2.50) AND nbumps2 = (-inf, 1.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 1139.50) AND nbumps3 = (-inf, 1.50) AND nbumps5 = (-inf, 0.50) THEN label = {0}\n",
-      "IF goenergy = (-inf, 104.50) AND gimpuls = (-inf, 1139.50) AND genergy = (-inf, 366505) AND nbumps3 = (-inf, 2.50) AND nbumps5 = (-inf, 0.50) AND nbumps = (-inf, 4.50) AND nbumps2 = (-inf, 2.50) THEN label = {0}\n",
-      "IF goenergy = (-inf, 87.50) AND gimpuls = (-inf, 1655) AND genergy = (-inf, 1505475) AND nbumps = (-inf, 4.50) THEN label = {0}\n",
-      "IF gimpuls = (-inf, 2185.50) AND genergy = (-inf, 1505475) AND goimpuls = (-inf, 96) AND senergy = (-inf, 5750) AND nbumps2 = (-inf, 2.50) THEN label = {0}\n",
-      "IF goenergy = (-inf, 87.50) AND gimpuls = (-inf, 1328) AND senergy = (-inf, 85450) AND nbumps2 = (-inf, 3.50) THEN label = {0}\n",
-      "IF goenergy = (-inf, 87.50) AND maxenergy = (-inf, 4500) AND goimpuls = (-inf, 96) AND senergy = (-inf, 12000) THEN label = {0}\n",
-      "IF gimpuls = <1148.50, inf) AND genergy = (-inf, 189505) AND goimpuls = <-17.50, 107) AND senergy = <8950, inf) THEN label = {0}\n",
-      "IF goenergy = <-88.50, inf) AND gimpuls = (-inf, 2917) AND goimpuls = (-inf, 312) AND nbumps3 = (-inf, 1.50) AND nbumps2 = (-inf, 2.50) THEN label = {0}\n",
-      "IF goenergy = (-inf, 104.50) AND goimpuls = (-inf, 96.50) AND seismic = {a} AND nbumps3 = (-inf, 3.50) AND senergy = (-inf, 20650) THEN label = {0}\n",
-      "IF gimpuls = <521.50, inf) AND genergy = <57680, inf) THEN label = {1}\n",
-      "IF goenergy = (-inf, 123) AND senergy = <550, inf) THEN label = {1}\n",
-      "IF ghazard = {a} AND goenergy = <68.50, 105.50) AND gimpuls = <483, inf) AND genergy = <46530, 51605) AND nbumps = (-inf, 1.50) THEN label = {1}\n",
-      "IF ghazard = {a} AND goenergy = <7, 58) AND gimpuls = <396, 836) AND genergy = <34315, 43280) AND goimpuls = <-21.50, 28.50) AND nbumps = (-inf, 0.50) THEN label = {1}\n",
-      "IF ghazard = {a} AND goenergy = (-inf, 160) AND gimpuls = <362.50, 732.50) AND maxenergy = (-inf, 850) AND genergy = <32680, 66275) AND senergy = (-inf, 1350) THEN label = {1}\n",
-      "IF goenergy = <14.50, 297.50) AND gimpuls = <133.50, 797) AND maxenergy = (-inf, 1500) AND genergy = <27275, 52010) AND nbumps3 = (-inf, 0.50) THEN label = {1}\n",
-      "IF goenergy = <-37.50, 122) AND gimpuls = <537.50, 796) AND genergy = <16805, 29510) AND goimpuls = <-36.50, inf) AND senergy = (-inf, 250) THEN label = {1}\n",
-      "IF ghazard = {a} AND goenergy = <-37.50, inf) AND gimpuls = <240, 473.50) AND genergy = <20485, 25310) AND goimpuls = <-43, inf) AND shift = {W} AND senergy = (-inf, 450) THEN label = {1}\n",
-      "IF goenergy = <-55.50, 124.50) AND gimpuls = <194.50, inf) AND genergy = <9060, inf) AND goimpuls = <-60.50, inf) AND nbumps2 = (-inf, 4.50) THEN label = {1}\n"
-     ]
-    }
-   ],
-   "source": [
-    "for rule in rss_ruleset.rules:\n",
-    "    print(rule)"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "## Stratified K-Folds cross-validation"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 19,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "import numpy as np\n",
-    "from IPython.display import display\n",
-    "from sklearn.model_selection import StratifiedKFold\n",
-    "\n",
-    "N_SPLITS = 10\n",
-    "\n",
-    "skf = StratifiedKFold(n_splits=10)\n"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "### C2 Measure"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "c2_ruleset_stats = pd.DataFrame()\n",
-    "c2_prediction_metrics = pd.DataFrame()\n",
-    "c2_confusion_matrix = np.array([[0.0, 0.0], [0.0, 0.0]])\n",
-    "\n",
-    "for train_index, test_index in skf.split(x, y):\n",
-    "    x_train, x_test = x.iloc[train_index], x.iloc[test_index]\n",
-    "    y_train, y_test = y.iloc[train_index], y.iloc[test_index]\n",
-    "\n",
-    "    clf = RuleClassifier(\n",
-    "        induction_measure=Measures.C2,\n",
-    "        pruning_measure=Measures.C2,\n",
-    "        voting_measure=Measures.C2,\n",
-    "    )\n",
-    "    clf.fit(x_train, y_train)\n",
-    "    c2_ruleset = clf.model\n",
-    "    prediction, classification_metrics = clf.predict(x_test, return_metrics=True)\n",
-    "    tmp, confusion_matrix = get_prediction_metrics('C2', prediction, y_test, classification_metrics)\n",
-    "    \n",
-    "    c2_prediction_metrics = pd.concat([c2_prediction_metrics, tmp])\n",
-    "    c2_ruleset_stats = pd.concat([c2_ruleset_stats, get_ruleset_stats('C2', c2_ruleset)])\n",
-    "    c2_confusion_matrix += confusion_matrix\n",
-    "\n",
-    "c2_confusion_matrix /= N_SPLITS"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "Rules characteristics "
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 38,
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "time_total_s                     2.165153\n",
-       "time_growing_s                   2.956999\n",
-       "time_pruning_s                   0.562653\n",
-       "rules_count                    166.400000\n",
-       "conditions_per_rule              4.951229\n",
-       "induced_conditions_per_rule     13.649359\n",
-       "avg_rule_coverage                0.168386\n",
-       "avg_rule_precision               0.919191\n",
-       "avg_rule_quality                 0.486175\n",
-       "pvalue                           0.045394\n",
-       "FDR_pvalue                       0.049264\n",
-       "FWER_pvalue                      0.585424\n",
-       "fraction_significant             0.808201\n",
-       "fraction_FDR_significant         0.789743\n",
-       "fraction_FWER_significant        0.639193\n",
-       "dtype: float64"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
-   "source": [
-    "display(c2_ruleset_stats.mean())"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "Rules evaluation (average)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 39,
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "Accuracy                       0.899071\n",
-       "MAE                            0.100929\n",
-       "Kappa                          0.047367\n",
-       "Balanced accuracy              0.535887\n",
-       "Logistic loss                  3.486010\n",
-       "Precision                      3.486010\n",
-       "Sensitivity                    0.117647\n",
-       "Specificity                    0.954127\n",
-       "NPV                            0.939956\n",
-       "PPV                            0.197777\n",
-       "psep                           0.140239\n",
-       "Fall-out                       0.045873\n",
-       "Youden's J statistic           0.071774\n",
-       "Lift                           3.013186\n",
-       "F-measure                      0.073023\n",
-       "Fowlkes-Mallows index          0.901979\n",
-       "False positive                11.100000\n",
-       "False negative                15.000000\n",
-       "True positive                  2.000000\n",
-       "True negative                230.300000\n",
-       "Rules per example             23.878503\n",
-       "Voting conflicts             103.400000\n",
-       "Negative voting conflicts      7.400000\n",
-       "Geometric mean                 0.180079\n",
-       "dtype: float64"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
-   "source": [
-    "display(c2_prediction_metrics.mean())"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "Confusion matrix (average)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 37,
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "<div>\n",
-       "<style scoped>\n",
-       "    .dataframe tbody tr th:only-of-type {\n",
-       "        vertical-align: middle;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe tbody tr th {\n",
-       "        vertical-align: top;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe thead th {\n",
-       "        text-align: right;\n",
-       "    }\n",
-       "</style>\n",
-       "<table border=\"1\" class=\"dataframe\">\n",
-       "  <thead>\n",
-       "    <tr style=\"text-align: right;\">\n",
-       "      <th></th>\n",
-       "      <th>0</th>\n",
-       "      <th>1</th>\n",
-       "    </tr>\n",
-       "  </thead>\n",
-       "  <tbody>\n",
-       "    <tr>\n",
-       "      <th>0</th>\n",
-       "      <td>230.3</td>\n",
-       "      <td>11.1</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>1</th>\n",
-       "      <td>15.0</td>\n",
-       "      <td>2.0</td>\n",
-       "    </tr>\n",
-       "  </tbody>\n",
-       "</table>\n",
-       "</div>"
-      ],
-      "text/plain": [
-       "       0     1\n",
-       "0  230.3  11.1\n",
-       "1   15.0   2.0"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
-   "source": [
-    "display(pd.DataFrame(c2_confusion_matrix))"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "## Hyperparameters tuning\n",
-    "\n",
-    "This one gonna take a while..."
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 40,
-   "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Best BAC: 0.522949 using {'induction_measure': <Measures.WeightedLaplace: 'WeightedLaplace'>, 'min_rule_covered': 7, 'pruning_measure': <Measures.Correlation: 'Correlation'>, 'voting_measure': <Measures.WeightedLaplace: 'WeightedLaplace'>}\n"
-     ]
-    }
-   ],
-   "source": [
-    "from sklearn.datasets import make_blobs\n",
-    "from sklearn.model_selection import StratifiedKFold\n",
-    "from sklearn.model_selection import GridSearchCV\n",
-    "from sklearn.linear_model import LogisticRegression\n",
-    "from rulekit.params import Measures\n",
-    "# define dataset\n",
-    "import numpy as np\n",
-    "\n",
-    "N_SPLITS = 3\n",
-    "\n",
-    "# define models and parameters\n",
-    "model = RuleClassifier()\n",
-    "min_rule_covered = range(3, 15, 2)\n",
-    "measures_choice = [Measures.C2, Measures.RSS, Measures.WeightedLaplace, Measures.Correlation]\n",
-    "# define grid search\n",
-    "grid = {\n",
-    "    'min_rule_covered': min_rule_covered, \n",
-    "    'induction_measure': measures_choice, \n",
-    "    'pruning_measure': measures_choice, \n",
-    "    'voting_measure': measures_choice\n",
-    "}\n",
-    "cv = StratifiedKFold(n_splits=N_SPLITS)\n",
-    "grid_search = GridSearchCV(estimator=model, param_grid=grid, cv=cv, scoring='balanced_accuracy')\n",
-    "grid_result = grid_search.fit(x, y)\n",
-    "# summarize results\n",
-    "\n",
-    "print(\"Best BAC: %f using %s\" % (grid_result.best_score_, grid_result.best_params_))"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "## Building model with tuned hyperparameters\n",
-    "\n",
-    "Split dataset to train and test (80%/20%)."
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 41,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "import numpy as np\n",
-    "import pandas as pd\n",
-    "from sklearn.model_selection import train_test_split\n",
-    "from IPython.display import display\n",
-    "from rulekit.params import Measures\n",
-    "\n",
-    "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, shuffle=True)\n",
-    "\n",
-    "\n",
-    "clf = RuleClassifier(\n",
-    "    min_rule_covered=7,\n",
-    "    induction_measure=Measures.WeightedLaplace,\n",
-    "    pruning_measure=Measures.Correlation,\n",
-    "    voting_measure=Measures.WeightedLaplace,\n",
-    ")\n",
-    "clf.fit(x_train, y_train)\n",
-    "ruleset = clf.model\n",
-    "ruleset_stats = get_ruleset_stats('Best', ruleset)"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "### Rules evaluation"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 42,
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "time_total_s                    0.420254\n",
-       "time_growing_s                  0.559084\n",
-       "time_pruning_s                  0.106422\n",
-       "rules_count                    38.000000\n",
-       "conditions_per_rule             4.289474\n",
-       "induced_conditions_per_rule    13.921053\n",
-       "avg_rule_coverage               0.329832\n",
-       "avg_rule_precision              0.722841\n",
-       "avg_rule_quality                2.962379\n",
-       "pvalue                          0.015023\n",
-       "FDR_pvalue                      0.015570\n",
-       "FWER_pvalue                     0.034304\n",
-       "fraction_significant            0.894737\n",
-       "fraction_FDR_significant        0.894737\n",
-       "fraction_FWER_significant       0.868421\n",
-       "dtype: float64"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
-   "source": [
-    "display(ruleset_stats.mean())"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "### Validate model on test dataset"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 43,
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "Accuracy                       0.876209\n",
-       "MAE                            0.123791\n",
-       "Kappa                          0.303411\n",
-       "Balanced accuracy              0.746612\n",
-       "Logistic loss                  4.275674\n",
-       "Precision                      4.275674\n",
-       "Sensitivity                    0.600000\n",
-       "Specificity                    0.893224\n",
-       "NPV                            0.973154\n",
-       "PPV                            0.257143\n",
-       "psep                           0.230297\n",
-       "Fall-out                       0.106776\n",
-       "Youden's J statistic           0.493224\n",
-       "Lift                           4.431429\n",
-       "F-measure                      0.360000\n",
-       "Fowlkes-Mallows index          0.871226\n",
-       "False positive                52.000000\n",
-       "False negative                12.000000\n",
-       "True positive                 18.000000\n",
-       "True negative                435.000000\n",
-       "Rules per example             12.618956\n",
-       "Voting conflicts             207.000000\n",
-       "Negative voting conflicts     69.000000\n",
-       "Geometric mean                 0.732075\n",
-       "dtype: float64"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    },
-    {
-     "data": {
-      "text/html": [
-       "<div>\n",
-       "<style scoped>\n",
-       "    .dataframe tbody tr th:only-of-type {\n",
-       "        vertical-align: middle;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe tbody tr th {\n",
-       "        vertical-align: top;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe thead th {\n",
-       "        text-align: right;\n",
-       "    }\n",
-       "</style>\n",
-       "<table border=\"1\" class=\"dataframe\">\n",
-       "  <thead>\n",
-       "    <tr style=\"text-align: right;\">\n",
-       "      <th></th>\n",
-       "      <th>0</th>\n",
-       "      <th>1</th>\n",
-       "    </tr>\n",
-       "  </thead>\n",
-       "  <tbody>\n",
-       "    <tr>\n",
-       "      <th>0</th>\n",
-       "      <td>435</td>\n",
-       "      <td>52</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>1</th>\n",
-       "      <td>12</td>\n",
-       "      <td>18</td>\n",
-       "    </tr>\n",
-       "  </tbody>\n",
-       "</table>\n",
-       "</div>"
-      ],
-      "text/plain": [
-       "     0   1\n",
-       "0  435  52\n",
-       "1   12  18"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
-   "source": [
-    "prediction, classification_metrics = clf.predict(x_test, return_metrics=True)\n",
-    "prediction_metrics, confusion_matrix = get_prediction_metrics('Best', prediction, y_test, classification_metrics)\n",
-    "\n",
-    "display(prediction_metrics.mean())\n",
-    "display(pd.DataFrame(confusion_matrix))"
-   ]
-  }
- ],
- "metadata": {
-  "kernelspec": {
-   "display_name": "Python 3.8.6 64-bit ('env': venv)",
-   "metadata": {
-    "interpreter": {
-     "hash": "dec7553cb5330dfedea12a286a9a356afe79f89559ef3eea677ea4e5427f600e"
-    }
-   },
-   "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.6"
-  }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/doc/build/doctrees/nbsphinx/rst_tutorials_classification_5_0.png b/doc/build/doctrees/nbsphinx/rst_tutorials_classification_5_0.png
deleted file mode 100644
index 89b90e7..0000000
Binary files a/doc/build/doctrees/nbsphinx/rst_tutorials_classification_5_0.png and /dev/null differ
diff --git a/doc/build/doctrees/nbsphinx/rst_tutorials_classification_5_0.svg b/doc/build/doctrees/nbsphinx/rst_tutorials_classification_5_0.svg
deleted file mode 100644
index 84e3f89..0000000
--- a/doc/build/doctrees/nbsphinx/rst_tutorials_classification_5_0.svg
+++ /dev/null
@@ -1,335 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
-  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<!-- Created with matplotlib (https://matplotlib.org/) -->
-<svg height="236.173697pt" version="1.1" viewBox="0 0 349.2 236.173697" width="349.2pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
- <metadata>
-  <rdf:RDF xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
-   <cc:Work>
-    <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
-    <dc:date>2021-03-25T09:37:19.290051</dc:date>
-    <dc:format>image/svg+xml</dc:format>
-    <dc:creator>
-     <cc:Agent>
-      <dc:title>Matplotlib v3.3.4, https://matplotlib.org/</dc:title>
-     </cc:Agent>
-    </dc:creator>
-   </cc:Work>
-  </rdf:RDF>
- </metadata>
- <defs>
-  <style type="text/css">*{stroke-linecap:butt;stroke-linejoin:round;}</style>
- </defs>
- <g id="figure_1">
-  <g id="patch_1">
-   <path d="M 0 236.173697 
-L 349.2 236.173697 
-L 349.2 0 
-L 0 0 
-z
-" style="fill:none;"/>
-  </g>
-  <g id="axes_1">
-   <g id="patch_2">
-    <path d="M 172.726649 21.553377 
-C 160.647186 21.553377 148.670118 23.775329 137.39446 28.108106 
-C 126.118801 32.440883 115.735716 38.811028 106.764496 46.899949 
-C 97.793276 54.98887 90.386018 64.65943 84.913182 75.427973 
-C 79.440346 86.196515 75.994718 97.880472 74.748624 109.895491 
-C 73.502531 121.91051 74.477099 134.052892 77.623586 145.715355 
-C 80.770073 157.377818 86.035135 168.362641 93.155448 178.120436 
-C 100.275762 187.878232 109.130611 196.243568 119.277136 202.798067 
-C 129.423661 209.352567 140.68984 213.985106 152.512214 216.463997 
-C 164.334589 218.942888 176.512725 219.226103 188.437554 217.299479 
-C 200.362383 215.372855 211.831735 211.269055 222.27199 205.193323 
-C 232.712244 199.117591 241.9464 191.172934 249.512626 181.75669 
-C 257.078853 172.340446 262.848874 161.612255 266.534112 150.108671 
-C 270.219351 138.605087 271.757327 126.521137 271.071123 114.461181 
-C 270.384919 102.401224 267.486168 90.569721 262.519846 79.558405 
-C 257.553524 68.547089 250.603829 58.542643 242.018338 50.045422 
-C 233.432846 41.5482 223.357115 34.702264 212.295064 29.849999 
-L 172.726649 120.05692 
-L 172.726649 21.553377 
-z
-" style="fill:#092436;opacity:0.5;stroke:#092436;stroke-linejoin:miter;"/>
-   </g>
-   <g id="patch_3">
-    <path d="M 212.295064 29.849999 
-C 206.074771 27.121526 199.588909 25.043744 192.941079 23.649841 
-C 186.293248 22.255938 179.519034 21.553376 172.72664 21.553377 
-L 172.726649 120.05692 
-L 212.295064 29.849999 
-z
-" style="fill:#4c2604;opacity:0.5;stroke:#4c2604;stroke-linejoin:miter;"/>
-   </g>
-   <g id="patch_4">
-    <path d="M 174.69672 19.583306 
-C 162.617256 19.583306 150.640189 21.805258 139.364531 26.138035 
-C 128.088872 30.470812 117.705787 36.840957 108.734567 44.929878 
-C 99.763347 53.0188 92.356088 62.68936 86.883253 73.457902 
-C 81.410417 84.226444 77.964788 95.910401 76.718695 107.92542 
-C 75.472602 119.940439 76.447169 132.082821 79.593656 143.745284 
-C 82.740144 155.407748 88.005205 166.39257 95.125519 176.150366 
-C 102.245833 185.908161 111.100682 194.273497 121.247207 200.827997 
-C 131.393732 207.382496 142.659911 212.015036 154.482285 214.493926 
-C 166.30466 216.972817 178.482796 217.256033 190.407625 215.329408 
-C 202.332454 213.402784 213.801806 209.298984 224.242061 203.223252 
-C 234.682315 197.14752 243.916471 189.202863 251.482697 179.786619 
-C 259.048924 170.370375 264.818945 159.642185 268.504183 148.1386 
-C 272.189421 136.635016 273.727398 124.551066 273.041194 112.49111 
-C 272.35499 100.431153 269.456239 88.59965 264.489917 77.588334 
-C 259.523595 66.577019 252.5739 56.572572 243.988408 48.075351 
-C 235.402917 39.57813 225.327186 32.732193 214.265135 27.879929 
-L 174.69672 118.086849 
-L 174.69672 19.583306 
-z
-" style="fill:#1f77b4;"/>
-   </g>
-   <g id="patch_5">
-    <path d="M 214.265135 27.879929 
-C 208.044842 25.151455 201.55898 23.073673 194.91115 21.67977 
-C 188.263319 20.285867 181.489104 19.583305 174.696711 19.583306 
-L 174.69672 118.086849 
-L 214.265135 27.879929 
-z
-" style="fill:#ff7f0e;"/>
-   </g>
-   <g id="matplotlib.axis_1"/>
-   <g id="matplotlib.axis_2"/>
-   <g id="text_1">
-    <!-- 0 -->
-    <g transform="translate(146.098342 226.894009)scale(0.1 -0.1)">
-     <defs>
-      <path d="M 31.78125 66.40625 
-Q 24.171875 66.40625 20.328125 58.90625 
-Q 16.5 51.421875 16.5 36.375 
-Q 16.5 21.390625 20.328125 13.890625 
-Q 24.171875 6.390625 31.78125 6.390625 
-Q 39.453125 6.390625 43.28125 13.890625 
-Q 47.125 21.390625 47.125 36.375 
-Q 47.125 51.421875 43.28125 58.90625 
-Q 39.453125 66.40625 31.78125 66.40625 
-z
-M 31.78125 74.21875 
-Q 44.046875 74.21875 50.515625 64.515625 
-Q 56.984375 54.828125 56.984375 36.375 
-Q 56.984375 17.96875 50.515625 8.265625 
-Q 44.046875 -1.421875 31.78125 -1.421875 
-Q 19.53125 -1.421875 13.0625 8.265625 
-Q 6.59375 17.96875 6.59375 36.375 
-Q 6.59375 54.828125 13.0625 64.515625 
-Q 19.53125 74.21875 31.78125 74.21875 
-z
-" id="DejaVuSans-48"/>
-     </defs>
-     <use xlink:href="#DejaVuSans-48"/>
-    </g>
-   </g>
-   <g id="text_2">
-    <!-- 93.4% -->
-    <g transform="translate(146.684465 178.69047)scale(0.1 -0.1)">
-     <defs>
-      <path d="M 10.984375 1.515625 
-L 10.984375 10.5 
-Q 14.703125 8.734375 18.5 7.8125 
-Q 22.3125 6.890625 25.984375 6.890625 
-Q 35.75 6.890625 40.890625 13.453125 
-Q 46.046875 20.015625 46.78125 33.40625 
-Q 43.953125 29.203125 39.59375 26.953125 
-Q 35.25 24.703125 29.984375 24.703125 
-Q 19.046875 24.703125 12.671875 31.3125 
-Q 6.296875 37.9375 6.296875 49.421875 
-Q 6.296875 60.640625 12.9375 67.421875 
-Q 19.578125 74.21875 30.609375 74.21875 
-Q 43.265625 74.21875 49.921875 64.515625 
-Q 56.59375 54.828125 56.59375 36.375 
-Q 56.59375 19.140625 48.40625 8.859375 
-Q 40.234375 -1.421875 26.421875 -1.421875 
-Q 22.703125 -1.421875 18.890625 -0.6875 
-Q 15.09375 0.046875 10.984375 1.515625 
-z
-M 30.609375 32.421875 
-Q 37.25 32.421875 41.125 36.953125 
-Q 45.015625 41.5 45.015625 49.421875 
-Q 45.015625 57.28125 41.125 61.84375 
-Q 37.25 66.40625 30.609375 66.40625 
-Q 23.96875 66.40625 20.09375 61.84375 
-Q 16.21875 57.28125 16.21875 49.421875 
-Q 16.21875 41.5 20.09375 36.953125 
-Q 23.96875 32.421875 30.609375 32.421875 
-z
-" id="DejaVuSans-57"/>
-      <path d="M 40.578125 39.3125 
-Q 47.65625 37.796875 51.625 33 
-Q 55.609375 28.21875 55.609375 21.1875 
-Q 55.609375 10.40625 48.1875 4.484375 
-Q 40.765625 -1.421875 27.09375 -1.421875 
-Q 22.515625 -1.421875 17.65625 -0.515625 
-Q 12.796875 0.390625 7.625 2.203125 
-L 7.625 11.71875 
-Q 11.71875 9.328125 16.59375 8.109375 
-Q 21.484375 6.890625 26.8125 6.890625 
-Q 36.078125 6.890625 40.9375 10.546875 
-Q 45.796875 14.203125 45.796875 21.1875 
-Q 45.796875 27.640625 41.28125 31.265625 
-Q 36.765625 34.90625 28.71875 34.90625 
-L 20.21875 34.90625 
-L 20.21875 43.015625 
-L 29.109375 43.015625 
-Q 36.375 43.015625 40.234375 45.921875 
-Q 44.09375 48.828125 44.09375 54.296875 
-Q 44.09375 59.90625 40.109375 62.90625 
-Q 36.140625 65.921875 28.71875 65.921875 
-Q 24.65625 65.921875 20.015625 65.03125 
-Q 15.375 64.15625 9.8125 62.3125 
-L 9.8125 71.09375 
-Q 15.4375 72.65625 20.34375 73.4375 
-Q 25.25 74.21875 29.59375 74.21875 
-Q 40.828125 74.21875 47.359375 69.109375 
-Q 53.90625 64.015625 53.90625 55.328125 
-Q 53.90625 49.265625 50.4375 45.09375 
-Q 46.96875 40.921875 40.578125 39.3125 
-z
-" id="DejaVuSans-51"/>
-      <path d="M 10.6875 12.40625 
-L 21 12.40625 
-L 21 0 
-L 10.6875 0 
-z
-" id="DejaVuSans-46"/>
-      <path d="M 37.796875 64.3125 
-L 12.890625 25.390625 
-L 37.796875 25.390625 
-z
-M 35.203125 72.90625 
-L 47.609375 72.90625 
-L 47.609375 25.390625 
-L 58.015625 25.390625 
-L 58.015625 17.1875 
-L 47.609375 17.1875 
-L 47.609375 0 
-L 37.796875 0 
-L 37.796875 17.1875 
-L 4.890625 17.1875 
-L 4.890625 26.703125 
-z
-" id="DejaVuSans-52"/>
-      <path d="M 72.703125 32.078125 
-Q 68.453125 32.078125 66.03125 28.46875 
-Q 63.625 24.859375 63.625 18.40625 
-Q 63.625 12.0625 66.03125 8.421875 
-Q 68.453125 4.78125 72.703125 4.78125 
-Q 76.859375 4.78125 79.265625 8.421875 
-Q 81.6875 12.0625 81.6875 18.40625 
-Q 81.6875 24.8125 79.265625 28.4375 
-Q 76.859375 32.078125 72.703125 32.078125 
-z
-M 72.703125 38.28125 
-Q 80.421875 38.28125 84.953125 32.90625 
-Q 89.5 27.546875 89.5 18.40625 
-Q 89.5 9.28125 84.9375 3.921875 
-Q 80.375 -1.421875 72.703125 -1.421875 
-Q 64.890625 -1.421875 60.34375 3.921875 
-Q 55.8125 9.28125 55.8125 18.40625 
-Q 55.8125 27.59375 60.375 32.9375 
-Q 64.9375 38.28125 72.703125 38.28125 
-z
-M 22.3125 68.015625 
-Q 18.109375 68.015625 15.6875 64.375 
-Q 13.28125 60.75 13.28125 54.390625 
-Q 13.28125 47.953125 15.671875 44.328125 
-Q 18.0625 40.71875 22.3125 40.71875 
-Q 26.5625 40.71875 28.96875 44.328125 
-Q 31.390625 47.953125 31.390625 54.390625 
-Q 31.390625 60.6875 28.953125 64.34375 
-Q 26.515625 68.015625 22.3125 68.015625 
-z
-M 66.40625 74.21875 
-L 74.21875 74.21875 
-L 28.609375 -1.421875 
-L 20.796875 -1.421875 
-z
-M 22.3125 74.21875 
-Q 30.03125 74.21875 34.609375 68.875 
-Q 39.203125 63.53125 39.203125 54.390625 
-Q 39.203125 45.171875 34.640625 39.84375 
-Q 30.078125 34.515625 22.3125 34.515625 
-Q 14.546875 34.515625 10.03125 39.859375 
-Q 5.515625 45.21875 5.515625 54.390625 
-Q 5.515625 63.484375 10.046875 68.84375 
-Q 14.59375 74.21875 22.3125 74.21875 
-z
-" id="DejaVuSans-37"/>
-     </defs>
-     <use xlink:href="#DejaVuSans-57"/>
-     <use x="63.623047" xlink:href="#DejaVuSans-51"/>
-     <use x="127.246094" xlink:href="#DejaVuSans-46"/>
-     <use x="159.033203" xlink:href="#DejaVuSans-52"/>
-     <use x="222.65625" xlink:href="#DejaVuSans-37"/>
-    </g>
-   </g>
-   <g id="text_3">
-    <!-- 1 -->
-    <g transform="translate(196.932593 14.798438)scale(0.1 -0.1)">
-     <defs>
-      <path d="M 12.40625 8.296875 
-L 28.515625 8.296875 
-L 28.515625 63.921875 
-L 10.984375 60.40625 
-L 10.984375 69.390625 
-L 28.421875 72.90625 
-L 38.28125 72.90625 
-L 38.28125 8.296875 
-L 54.390625 8.296875 
-L 54.390625 0 
-L 12.40625 0 
-z
-" id="DejaVuSans-49"/>
-     </defs>
-     <use xlink:href="#DejaVuSans-49"/>
-    </g>
-   </g>
-   <g id="text_4">
-    <!-- 6.6% -->
-    <g transform="translate(174.123034 63.001977)scale(0.1 -0.1)">
-     <defs>
-      <path d="M 33.015625 40.375 
-Q 26.375 40.375 22.484375 35.828125 
-Q 18.609375 31.296875 18.609375 23.390625 
-Q 18.609375 15.53125 22.484375 10.953125 
-Q 26.375 6.390625 33.015625 6.390625 
-Q 39.65625 6.390625 43.53125 10.953125 
-Q 47.40625 15.53125 47.40625 23.390625 
-Q 47.40625 31.296875 43.53125 35.828125 
-Q 39.65625 40.375 33.015625 40.375 
-z
-M 52.59375 71.296875 
-L 52.59375 62.3125 
-Q 48.875 64.0625 45.09375 64.984375 
-Q 41.3125 65.921875 37.59375 65.921875 
-Q 27.828125 65.921875 22.671875 59.328125 
-Q 17.53125 52.734375 16.796875 39.40625 
-Q 19.671875 43.65625 24.015625 45.921875 
-Q 28.375 48.1875 33.59375 48.1875 
-Q 44.578125 48.1875 50.953125 41.515625 
-Q 57.328125 34.859375 57.328125 23.390625 
-Q 57.328125 12.15625 50.6875 5.359375 
-Q 44.046875 -1.421875 33.015625 -1.421875 
-Q 20.359375 -1.421875 13.671875 8.265625 
-Q 6.984375 17.96875 6.984375 36.375 
-Q 6.984375 53.65625 15.1875 63.9375 
-Q 23.390625 74.21875 37.203125 74.21875 
-Q 40.921875 74.21875 44.703125 73.484375 
-Q 48.484375 72.75 52.59375 71.296875 
-z
-" id="DejaVuSans-54"/>
-     </defs>
-     <use xlink:href="#DejaVuSans-54"/>
-     <use x="63.623047" xlink:href="#DejaVuSans-46"/>
-     <use x="95.410156" xlink:href="#DejaVuSans-54"/>
-     <use x="159.033203" xlink:href="#DejaVuSans-37"/>
-    </g>
-   </g>
-  </g>
- </g>
-</svg>
diff --git a/doc/build/doctrees/rst/autodoc.doctree b/doc/build/doctrees/rst/autodoc.doctree
deleted file mode 100644
index 72913ce..0000000
Binary files a/doc/build/doctrees/rst/autodoc.doctree and /dev/null differ
diff --git a/doc/build/doctrees/rst/autodoc/classification.doctree b/doc/build/doctrees/rst/autodoc/classification.doctree
deleted file mode 100644
index 7b21d54..0000000
Binary files a/doc/build/doctrees/rst/autodoc/classification.doctree and /dev/null differ
diff --git a/doc/build/doctrees/rst/autodoc/params.doctree b/doc/build/doctrees/rst/autodoc/params.doctree
deleted file mode 100644
index 4c98928..0000000
Binary files a/doc/build/doctrees/rst/autodoc/params.doctree and /dev/null differ
diff --git a/doc/build/doctrees/rst/autodoc/regression.doctree b/doc/build/doctrees/rst/autodoc/regression.doctree
deleted file mode 100644
index 718ce91..0000000
Binary files a/doc/build/doctrees/rst/autodoc/regression.doctree and /dev/null differ
diff --git a/doc/build/doctrees/rst/autodoc/rules.doctree b/doc/build/doctrees/rst/autodoc/rules.doctree
deleted file mode 100644
index b1747e8..0000000
Binary files a/doc/build/doctrees/rst/autodoc/rules.doctree and /dev/null differ
diff --git a/doc/build/doctrees/rst/autodoc/stats.doctree b/doc/build/doctrees/rst/autodoc/stats.doctree
deleted file mode 100644
index 7706677..0000000
Binary files a/doc/build/doctrees/rst/autodoc/stats.doctree and /dev/null differ
diff --git a/doc/build/doctrees/rst/autodoc/survival.doctree b/doc/build/doctrees/rst/autodoc/survival.doctree
deleted file mode 100644
index 3ee0842..0000000
Binary files a/doc/build/doctrees/rst/autodoc/survival.doctree and /dev/null differ
diff --git a/doc/build/doctrees/rst/quick_start.doctree b/doc/build/doctrees/rst/quick_start.doctree
deleted file mode 100644
index 54ad300..0000000
Binary files a/doc/build/doctrees/rst/quick_start.doctree and /dev/null differ
diff --git a/doc/build/doctrees/rst/tutorials.doctree b/doc/build/doctrees/rst/tutorials.doctree
deleted file mode 100644
index 0103818..0000000
Binary files a/doc/build/doctrees/rst/tutorials.doctree and /dev/null differ
diff --git a/doc/build/doctrees/rst/tutorials/classification.doctree b/doc/build/doctrees/rst/tutorials/classification.doctree
deleted file mode 100644
index 23b7333..0000000
Binary files a/doc/build/doctrees/rst/tutorials/classification.doctree and /dev/null differ
diff --git a/doc/build/html/.buildinfo b/doc/build/html/.buildinfo
index 611c9e7..71eae2d 100644
--- a/doc/build/html/.buildinfo
+++ b/doc/build/html/.buildinfo
@@ -1,4 +1,4 @@
 # Sphinx build info version 1
 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: ac32bc3d6e55a6a082cd25e0d8e5fd6e
+config: 188ccc5380ddb7e3195a28d28ec93e3d
 tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/doc/build/html/_sources/index.rst.txt b/doc/build/html/_sources/index.rst.txt
index 68ee1c8..d713903 100644
--- a/doc/build/html/_sources/index.rst.txt
+++ b/doc/build/html/_sources/index.rst.txt
@@ -2,12 +2,12 @@
 RuleKit
 ========================================
 
-This package is python wrapper for `RuleKit <https://github.com/adaa-polsl/RuleKit/>`_ library (a versatile tool for rule learning). 
+This package is python wrapper for `RuleKit <https://github.com/adaa-polsl/RuleKit/>`__ library (a versatile tool for rule learning). 
 Based on a sequential covering induction algorithm, it is suitable for:
 
 - classification, 
 
-- regression 
+- regression, 
 
 - survival problems.
 
diff --git a/doc/build/html/_sources/rst/quick_start.rst.txt b/doc/build/html/_sources/rst/quick_start.rst.txt
index d8515a2..8944aae 100644
--- a/doc/build/html/_sources/rst/quick_start.rst.txt
+++ b/doc/build/html/_sources/rst/quick_start.rst.txt
@@ -10,19 +10,21 @@ Quick start
 Installation
 -------------
 
-.. warning::
-    TODO add package to pip repository
-    
 .. code-block:: bash
 
     pip install rulekit
+    python -m rulekit download_jar
+
+.. note::
+   Second command will download `RuleKit <https://github.com/adaa-polsl/RuleKit/>`__ jar
+   file from github releases. This step is required to use this package.
 
 To check if everything was installed correctly call:
 
 .. code-block:: python
 
-    >> import rulekit
-    >> rulekit.__version__
+    import rulekit
+    rulekit.__version__
 
 It should run without errors and print package version.
 
@@ -30,7 +32,7 @@ Initializing package
 --------------------
 
 Before you start using any of rulelkit package functionality you need to initialize it first. This step should be done only
-once in the beginning, no need to initialize before every usage.
+once at the beginning of the program, no need to initialize before every usage.
 
 .. code-block:: python
 
@@ -80,4 +82,4 @@ As you may noticed, training and using rulekit models is the same as in scikit l
 mean you can use scikit: metrics, cross-validation, hyper-parameters tuning etc. with ease. 
 
 
-For more examples head to **Tutorials** section.
+For more examples head to :doc:`Tutorials <./tutorials>` section.
diff --git a/doc/build/html/_sources/rst/tutorials.rst.txt b/doc/build/html/_sources/rst/tutorials.rst.txt
index 5183519..ff3eece 100644
--- a/doc/build/html/_sources/rst/tutorials.rst.txt
+++ b/doc/build/html/_sources/rst/tutorials.rst.txt
@@ -6,4 +6,7 @@ Tutorials
     :maxdepth: 1
     :caption: Table of contents:
 
-    Classification <./tutorials/classification.ipynb>
\ No newline at end of file
+    Classification <./tutorials/classification.ipynb>
+    Regression <./tutorials/regression.ipynb>
+    Survival <./tutorials/survival.ipynb>
+    Expert Rules <./tutorials/expert_rules.ipynb>
\ No newline at end of file
diff --git a/doc/build/html/_sources/rst/tutorials/classification.ipynb.txt b/doc/build/html/_sources/rst/tutorials/classification.ipynb.txt
index 939366c..bca583e 100644
--- a/doc/build/html/_sources/rst/tutorials/classification.ipynb.txt
+++ b/doc/build/html/_sources/rst/tutorials/classification.ipynb.txt
@@ -14,13 +14,8 @@
   },
   "orig_nbformat": 2,
   "kernelspec": {
-   "name": "python3",
-   "display_name": "Python 3.8.6 64-bit ('env': venv)",
-   "metadata": {
-    "interpreter": {
-     "hash": "dec7553cb5330dfedea12a286a9a356afe79f89559ef3eea677ea4e5427f600e"
-    }
-   }
+   "name": "rulekit",
+   "display_name": "Python 3.8.6 64-bit ('env': venv)"
   }
  },
  "nbformat": 4,
@@ -37,19 +32,19 @@
    "source": [
     "This notebook presents example usage of package for solving classification problem on `seismic-bumps` dataset. You can download dataset [here](https://raw.githubusercontent.com/adaa-polsl/RuleKit/master/data/seismic-bumps/seismic-bumps.arff).\n",
     "\n",
-    "This tutorial will cover topics such as:\n",
-    "* training model\n",
-    "* changing model hyperparameters\n",
-    "* hyperparameters tuning\n",
-    "* calculating metrics for model\n",
-    "* getting RuleKit inbuil"
+    "This tutorial will cover topics such as:   \n",
+    "- training model   \n",
+    "- changing model hyperparameters   \n",
+    "- hyperparameters tuning   \n",
+    "- calculating metrics for model    \n",
+    "- getting RuleKit inbuilt   "
    ],
    "cell_type": "markdown",
    "metadata": {}
   },
   {
    "source": [
-    "### Summary of the dataset."
+    "## Summary of the dataset"
    ],
    "cell_type": "markdown",
    "metadata": {}
@@ -146,19 +141,38 @@
   },
   {
    "source": [
-    "### Helper function for calculating metrics"
+    "## Import and init RuleKit"
    ],
    "cell_type": "markdown",
    "metadata": {}
   },
   {
    "cell_type": "code",
-   "execution_count": 30,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
     "from rulekit import RuleKit\n",
     "from rulekit.classification import RuleClassifier\n",
+    "from rulekit.params import Measures\n",
+    "\n",
+    "\n",
+    "RuleKit.init()"
+   ]
+  },
+  {
+   "source": [
+    "## Helper function for calculating metrics"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 30,
+   "metadata": {},
+   "outputs": [],
+   "source": [
     "import sklearn.tree as scikit\n",
     "from sklearn.datasets import load_iris\n",
     "import math\n",
@@ -169,8 +183,6 @@
     "from typing import Tuple\n",
     "\n",
     "\n",
-    "RuleKit.init()\n",
-    "\n",
     "x = df_full.drop(['class'], axis=1)\n",
     "y = df_full['class']\n",
     "\n",
@@ -219,7 +231,7 @@
   },
   {
    "source": [
-    "### Rule induction on full dataset"
+    "## Rule induction on full dataset"
    ],
    "cell_type": "markdown",
    "metadata": {}
@@ -350,7 +362,7 @@
   },
   {
    "source": [
-    "C2 Measure generated rules"
+    "### C2 Measure generated rules"
    ],
    "cell_type": "markdown",
    "metadata": {}
@@ -375,7 +387,7 @@
   },
   {
    "source": [
-    "Correlation Measure generated rules"
+    "### Correlation Measure generated rules"
    ],
    "cell_type": "markdown",
    "metadata": {}
@@ -400,7 +412,7 @@
   },
   {
    "source": [
-    "RSS Measure generated rules"
+    "### RSS Measure generated rules"
    ],
    "cell_type": "markdown",
    "metadata": {}
@@ -445,13 +457,6 @@
     "skf = StratifiedKFold(n_splits=10)\n"
    ]
   },
-  {
-   "source": [
-    "### C2 Measure"
-   ],
-   "cell_type": "markdown",
-   "metadata": {}
-  },
   {
    "cell_type": "code",
    "execution_count": null,
@@ -612,7 +617,7 @@
    "source": [
     "## Building model with tuned hyperparameters\n",
     "\n",
-    "Split dataset to train and test (80%/20%)."
+    "### Split dataset to train and test (80%/20%)."
    ],
    "cell_type": "markdown",
    "metadata": {}
@@ -645,7 +650,7 @@
   },
   {
    "source": [
-    "### Rules evaluation"
+    "Rules evaluation"
    ],
    "cell_type": "markdown",
    "metadata": {}
diff --git a/doc/build/html/_static/documentation_options.js b/doc/build/html/_static/documentation_options.js
index 5e7790a..b37a4b0 100644
--- a/doc/build/html/_static/documentation_options.js
+++ b/doc/build/html/_static/documentation_options.js
@@ -1,6 +1,6 @@
 var DOCUMENTATION_OPTIONS = {
     URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
-    VERSION: '1.3.0',
+    VERSION: '1.5.2',
     LANGUAGE: 'None',
     COLLAPSE_INDEX: false,
     BUILDER: 'html',
diff --git a/doc/build/html/genindex.html b/doc/build/html/genindex.html
index e2a3458..3379cd3 100644
--- a/doc/build/html/genindex.html
+++ b/doc/build/html/genindex.html
@@ -7,12 +7,13 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
   
-  <title>Index &mdash; rulekit 1.3.0 documentation</title>
+  <title>Index &mdash; rulekit 1.5.2 documentation</title>
   
 
   
   <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
   <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="_static/copybutton.css" type="text/css" />
 
   
   
@@ -32,6 +33,8 @@
         <script src="_static/jquery.js"></script>
         <script src="_static/underscore.js"></script>
         <script src="_static/doctools.js"></script>
+        <script src="_static/clipboard.min.js"></script>
+        <script src="_static/copybutton.js"></script>
         <script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script>
     
     <script type="text/javascript" src="_static/js/theme.js"></script>
@@ -542,15 +545,27 @@ <h2 id="S">S</h2>
   <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="rst/autodoc/params.html#rulekit.params.Measures.SBayesian">SBayesian (rulekit.params.Measures attribute)</a>
 </li>
-      <li><a href="rst/autodoc/params.html#rulekit.params.Measures.Sensitivity">Sensitivity (rulekit.params.Measures attribute)</a>
-</li>
-      <li><a href="rst/autodoc/classification.html#rulekit.classification.ExpertRuleClassifier.set_params">set_params() (rulekit.classification.ExpertRuleClassifier method)</a>
+      <li><a href="rst/autodoc/classification.html#rulekit.classification.ExpertRuleClassifier.score">score() (rulekit.classification.ExpertRuleClassifier method)</a>
 
       <ul>
-        <li><a href="rst/autodoc/classification.html#rulekit.classification.RuleClassifier.set_params">(rulekit.classification.RuleClassifier method)</a>
+        <li><a href="rst/autodoc/classification.html#rulekit.classification.RuleClassifier.score">(rulekit.classification.RuleClassifier method)</a>
+</li>
+        <li><a href="rst/autodoc/regression.html#rulekit.regression.ExpertRuleRegressor.score">(rulekit.regression.ExpertRuleRegressor method)</a>
+</li>
+        <li><a href="rst/autodoc/regression.html#rulekit.regression.RuleRegressor.score">(rulekit.regression.RuleRegressor method)</a>
 </li>
-        <li><a href="rst/autodoc/regression.html#rulekit.regression.ExpertRuleRegressor.set_params">(rulekit.regression.ExpertRuleRegressor method)</a>
+        <li><a href="rst/autodoc/survival.html#rulekit.survival.ExpertSurvivalRules.score">(rulekit.survival.ExpertSurvivalRules method)</a>
+</li>
+        <li><a href="rst/autodoc/survival.html#rulekit.survival.SurvivalRules.score">(rulekit.survival.SurvivalRules method)</a>
+</li>
+      </ul></li>
+      <li><a href="rst/autodoc/params.html#rulekit.params.Measures.Sensitivity">Sensitivity (rulekit.params.Measures attribute)</a>
 </li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="rst/autodoc/classification.html#rulekit.classification.RuleClassifier.set_params">set_params() (rulekit.classification.RuleClassifier method)</a>
+
+      <ul>
         <li><a href="rst/autodoc/regression.html#rulekit.regression.RuleRegressor.set_params">(rulekit.regression.RuleRegressor method)</a>
 </li>
         <li><a href="rst/autodoc/survival.html#rulekit.survival.ExpertSurvivalRules.set_params">(rulekit.survival.ExpertSurvivalRules method)</a>
@@ -558,8 +573,6 @@ <h2 id="S">S</h2>
         <li><a href="rst/autodoc/survival.html#rulekit.survival.SurvivalRules.set_params">(rulekit.survival.SurvivalRules method)</a>
 </li>
       </ul></li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="rst/autodoc/stats.html#rulekit.stats.RuleSetStatistics.SIGNIFICANCE_LEVEL">SIGNIFICANCE_LEVEL (rulekit.stats.RuleSetStatistics attribute)</a>
 </li>
       <li><a href="rst/autodoc/params.html#rulekit.params.Measures.Specificity">Specificity (rulekit.params.Measures attribute)</a>
diff --git a/doc/build/html/index.html b/doc/build/html/index.html
index 0749996..c020f7e 100644
--- a/doc/build/html/index.html
+++ b/doc/build/html/index.html
@@ -7,12 +7,13 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
   
-  <title>RuleKit &mdash; rulekit 1.3.0 documentation</title>
+  <title>RuleKit &mdash; rulekit 1.5.2 documentation</title>
   
 
   
   <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
   <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="_static/copybutton.css" type="text/css" />
 
   
   
@@ -32,6 +33,8 @@
         <script src="_static/jquery.js"></script>
         <script src="_static/underscore.js"></script>
         <script src="_static/doctools.js"></script>
+        <script src="_static/clipboard.min.js"></script>
+        <script src="_static/copybutton.js"></script>
         <script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script>
     
     <script type="text/javascript" src="_static/js/theme.js"></script>
@@ -186,7 +189,7 @@ <h1>RuleKit<a class="headerlink" href="#rulekit" title="Permalink to this headli
 Based on a sequential covering induction algorithm, it is suitable for:</p>
 <ul class="simple">
 <li><p>classification,</p></li>
-<li><p>regression</p></li>
+<li><p>regression,</p></li>
 <li><p>survival problems.</p></li>
 </ul>
 <p>This wrapper aims to give an easy way to integrate RuleKit functionality into python projects and notebooks.
diff --git a/doc/build/html/objects.inv b/doc/build/html/objects.inv
index 6c0e533..ac62a76 100644
Binary files a/doc/build/html/objects.inv and b/doc/build/html/objects.inv differ
diff --git a/doc/build/html/py-modindex.html b/doc/build/html/py-modindex.html
index 9d20bb8..41c8c1b 100644
--- a/doc/build/html/py-modindex.html
+++ b/doc/build/html/py-modindex.html
@@ -7,12 +7,13 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
   
-  <title>Python Module Index &mdash; rulekit 1.3.0 documentation</title>
+  <title>Python Module Index &mdash; rulekit 1.5.2 documentation</title>
   
 
   
   <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
   <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="_static/copybutton.css" type="text/css" />
 
   
   
@@ -32,6 +33,8 @@
         <script src="_static/jquery.js"></script>
         <script src="_static/underscore.js"></script>
         <script src="_static/doctools.js"></script>
+        <script src="_static/clipboard.min.js"></script>
+        <script src="_static/copybutton.js"></script>
         <script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script>
     
     <script type="text/javascript" src="_static/js/theme.js"></script>
diff --git a/doc/build/html/rst/autodoc.html b/doc/build/html/rst/autodoc.html
index 8468775..6cc71ad 100644
--- a/doc/build/html/rst/autodoc.html
+++ b/doc/build/html/rst/autodoc.html
@@ -7,12 +7,13 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
   
-  <title>Code documentation &mdash; rulekit 1.3.0 documentation</title>
+  <title>Code documentation &mdash; rulekit 1.5.2 documentation</title>
   
 
   
   <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
   <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/copybutton.css" type="text/css" />
 
   
   
@@ -32,6 +33,8 @@
         <script src="../_static/jquery.js"></script>
         <script src="../_static/underscore.js"></script>
         <script src="../_static/doctools.js"></script>
+        <script src="../_static/clipboard.min.js"></script>
+        <script src="../_static/copybutton.js"></script>
         <script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script>
     
     <script type="text/javascript" src="../_static/js/theme.js"></script>
@@ -40,7 +43,7 @@
     <link rel="index" title="Index" href="../genindex.html" />
     <link rel="search" title="Search" href="../search.html" />
     <link rel="next" title="Classification" href="autodoc/classification.html" />
-    <link rel="prev" title="Classification" href="tutorials/classification.html" /> 
+    <link rel="prev" title="Expert Rules" href="tutorials/expert_rules.html" /> 
 </head>
 
 <body class="wy-body-for-nav">
@@ -248,7 +251,7 @@
           <footer>
     <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
         <a href="autodoc/classification.html" class="btn btn-neutral float-right" title="Classification" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
-        <a href="tutorials/classification.html" class="btn btn-neutral float-left" title="Classification" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+        <a href="tutorials/expert_rules.html" class="btn btn-neutral float-left" title="Expert Rules" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
     </div>
 
   <hr/>
diff --git a/doc/build/html/rst/autodoc/classification.html b/doc/build/html/rst/autodoc/classification.html
index c6ef186..73ef263 100644
--- a/doc/build/html/rst/autodoc/classification.html
+++ b/doc/build/html/rst/autodoc/classification.html
@@ -7,12 +7,13 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
   
-  <title>Classification &mdash; rulekit 1.3.0 documentation</title>
+  <title>Classification &mdash; rulekit 1.5.2 documentation</title>
   
 
   
   <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
   <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/copybutton.css" type="text/css" />
 
   
   
@@ -32,6 +33,8 @@
         <script src="../../_static/jquery.js"></script>
         <script src="../../_static/underscore.js"></script>
         <script src="../../_static/doctools.js"></script>
+        <script src="../../_static/clipboard.min.js"></script>
+        <script src="../../_static/copybutton.js"></script>
         <script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script>
     
     <script type="text/javascript" src="../../_static/js/theme.js"></script>
@@ -310,6 +313,26 @@ <h1>Classification<a class="headerlink" href="#classification" title="Permalink
 </dl>
 </dd></dl>
 
+<dl class="py method">
+<dt id="rulekit.classification.RuleClassifier.score">
+<code class="sig-name descname"><span class="pre">score</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">values</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Union</span><span class="p"><span class="pre">[</span></span><span class="pre">numpy.ndarray</span><span class="p"><span class="pre">,</span> </span><span class="pre">pandas.core.frame.DataFrame</span><span class="p"><span class="pre">,</span> </span><span class="pre">List</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">labels</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Union</span><span class="p"><span class="pre">[</span></span><span class="pre">numpy.ndarray</span><span class="p"><span class="pre">,</span> </span><span class="pre">pandas.core.frame.DataFrame</span><span class="p"><span class="pre">,</span> </span><span class="pre">List</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> &#x2192; <span class="pre">float</span><a class="headerlink" href="#rulekit.classification.RuleClassifier.score" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the accuracy on the given test data and labels.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>values</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – attributes</p></li>
+<li><p><strong>labels</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – true labels</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><strong>score</strong> – Accuracy of self.predict(values) wrt. labels.</p>
+</dd>
+<dt class="field-odd">Return type</dt>
+<dd class="field-odd"><p>float</p>
+</dd>
+</dl>
+</dd></dl>
+
 <dl class="py method">
 <dt id="rulekit.classification.RuleClassifier.set_params">
 <code class="sig-name descname"><span class="pre">set_params</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">min_rule_covered</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">induction_measure</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="params.html#rulekit.params.Measures" title="rulekit.params.Measures"><span class="pre">rulekit.params.Measures</span></a><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pruning_measure</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">Union</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="params.html#rulekit.params.Measures" title="rulekit.params.Measures"><span class="pre">rulekit.params.Measures</span></a><span class="p"><span class="pre">,</span> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">voting_measure</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="params.html#rulekit.params.Measures" title="rulekit.params.Measures"><span class="pre">rulekit.params.Measures</span></a><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_growing</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">enable_pruning</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_missing</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> &#x2192; <span class="pre">object</span><a class="headerlink" href="#rulekit.classification.RuleClassifier.set_params" title="Permalink to this definition">¶</a></dt>
@@ -449,9 +472,23 @@ <h1>Classification<a class="headerlink" href="#classification" title="Permalink
 </dd></dl>
 
 <dl class="py method">
-<dt id="rulekit.classification.ExpertRuleClassifier.set_params">
-<code class="sig-name descname"><span class="pre">set_params</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">min_rule_covered</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">induction_measure</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="params.html#rulekit.params.Measures" title="rulekit.params.Measures"><span class="pre">rulekit.params.Measures</span></a><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pruning_measure</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">Union</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="params.html#rulekit.params.Measures" title="rulekit.params.Measures"><span class="pre">rulekit.params.Measures</span></a><span class="p"><span class="pre">,</span> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">voting_measure</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="params.html#rulekit.params.Measures" title="rulekit.params.Measures"><span class="pre">rulekit.params.Measures</span></a><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_growing</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">enable_pruning</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_missing</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> &#x2192; <span class="pre">object</span><a class="headerlink" href="#rulekit.classification.ExpertRuleClassifier.set_params" title="Permalink to this definition">¶</a></dt>
-<dd><p>Set models hyperparameters. Parameters are the same as in constructor.</p>
+<dt id="rulekit.classification.ExpertRuleClassifier.score">
+<code class="sig-name descname"><span class="pre">score</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">values</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Union</span><span class="p"><span class="pre">[</span></span><span class="pre">numpy.ndarray</span><span class="p"><span class="pre">,</span> </span><span class="pre">pandas.core.frame.DataFrame</span><span class="p"><span class="pre">,</span> </span><span class="pre">List</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">labels</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Union</span><span class="p"><span class="pre">[</span></span><span class="pre">numpy.ndarray</span><span class="p"><span class="pre">,</span> </span><span class="pre">pandas.core.frame.DataFrame</span><span class="p"><span class="pre">,</span> </span><span class="pre">List</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> &#x2192; <span class="pre">float</span><a class="headerlink" href="#rulekit.classification.ExpertRuleClassifier.score" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the accuracy on the given test data and labels.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>values</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – attributes</p></li>
+<li><p><strong>labels</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – true labels</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><strong>score</strong> – Accuracy of self.predict(values) wrt. labels.</p>
+</dd>
+<dt class="field-odd">Return type</dt>
+<dd class="field-odd"><p>float</p>
+</dd>
+</dl>
 </dd></dl>
 
 </dd></dl>
diff --git a/doc/build/html/rst/autodoc/params.html b/doc/build/html/rst/autodoc/params.html
index e0aac9c..6c8723b 100644
--- a/doc/build/html/rst/autodoc/params.html
+++ b/doc/build/html/rst/autodoc/params.html
@@ -7,12 +7,13 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
   
-  <title>Parameters &mdash; rulekit 1.3.0 documentation</title>
+  <title>Parameters &mdash; rulekit 1.5.2 documentation</title>
   
 
   
   <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
   <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/copybutton.css" type="text/css" />
 
   
   
@@ -32,6 +33,8 @@
         <script src="../../_static/jquery.js"></script>
         <script src="../../_static/underscore.js"></script>
         <script src="../../_static/doctools.js"></script>
+        <script src="../../_static/clipboard.min.js"></script>
+        <script src="../../_static/copybutton.js"></script>
         <script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script>
     
     <script type="text/javascript" src="../../_static/js/theme.js"></script>
diff --git a/doc/build/html/rst/autodoc/regression.html b/doc/build/html/rst/autodoc/regression.html
index 4fb91bc..4da3623 100644
--- a/doc/build/html/rst/autodoc/regression.html
+++ b/doc/build/html/rst/autodoc/regression.html
@@ -7,12 +7,13 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
   
-  <title>Regression &mdash; rulekit 1.3.0 documentation</title>
+  <title>Regression &mdash; rulekit 1.5.2 documentation</title>
   
 
   
   <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
   <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/copybutton.css" type="text/css" />
 
   
   
@@ -32,6 +33,8 @@
         <script src="../../_static/jquery.js"></script>
         <script src="../../_static/underscore.js"></script>
         <script src="../../_static/doctools.js"></script>
+        <script src="../../_static/clipboard.min.js"></script>
+        <script src="../../_static/copybutton.js"></script>
         <script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script>
     
     <script type="text/javascript" src="../../_static/js/theme.js"></script>
@@ -222,7 +225,7 @@ <h1>Regression<a class="headerlink" href="#regression" title="Permalink to this
 <dt class="field-odd">Parameters</dt>
 <dd class="field-odd"><ul class="simple">
 <li><p><strong>values</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – attributes</p></li>
-<li><p><strong>labels</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – labels</p></li>
+<li><p><strong>labels</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – target values</p></li>
 </ul>
 </dd>
 <dt class="field-even">Returns</dt>
@@ -283,6 +286,26 @@ <h1>Regression<a class="headerlink" href="#regression" title="Permalink to this
 </dl>
 </dd></dl>
 
+<dl class="py method">
+<dt id="rulekit.regression.RuleRegressor.score">
+<code class="sig-name descname"><span class="pre">score</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">values</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Union</span><span class="p"><span class="pre">[</span></span><span class="pre">numpy.ndarray</span><span class="p"><span class="pre">,</span> </span><span class="pre">pandas.core.frame.DataFrame</span><span class="p"><span class="pre">,</span> </span><span class="pre">List</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">labels</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Union</span><span class="p"><span class="pre">[</span></span><span class="pre">numpy.ndarray</span><span class="p"><span class="pre">,</span> </span><span class="pre">pandas.core.frame.DataFrame</span><span class="p"><span class="pre">,</span> </span><span class="pre">List</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> &#x2192; <span class="pre">float</span><a class="headerlink" href="#rulekit.regression.RuleRegressor.score" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the coefficient of determination R2 of the prediction</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>values</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – attributes</p></li>
+<li><p><strong>labels</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – true target values</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><strong>score</strong> – R2 of self.predict(values) wrt. labels.</p>
+</dd>
+<dt class="field-odd">Return type</dt>
+<dd class="field-odd"><p>float</p>
+</dd>
+</dl>
+</dd></dl>
+
 <dl class="py method">
 <dt id="rulekit.regression.RuleRegressor.set_params">
 <code class="sig-name descname"><span class="pre">set_params</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">min_rule_covered</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">induction_measure</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="params.html#rulekit.params.Measures" title="rulekit.params.Measures"><span class="pre">rulekit.params.Measures</span></a><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pruning_measure</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">Union</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="params.html#rulekit.params.Measures" title="rulekit.params.Measures"><span class="pre">rulekit.params.Measures</span></a><span class="p"><span class="pre">,</span> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">voting_measure</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="params.html#rulekit.params.Measures" title="rulekit.params.Measures"><span class="pre">rulekit.params.Measures</span></a><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_growing</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">enable_pruning</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_missing</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> &#x2192; <span class="pre">object</span><a class="headerlink" href="#rulekit.regression.RuleRegressor.set_params" title="Permalink to this definition">¶</a></dt>
@@ -325,7 +348,7 @@ <h1>Regression<a class="headerlink" href="#regression" title="Permalink to this
 <dt class="field-odd">Parameters</dt>
 <dd class="field-odd"><ul class="simple">
 <li><p><strong>values</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – attributes</p></li>
-<li><p><strong>labels</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – labels</p></li>
+<li><p><strong>labels</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – target values</p></li>
 <li><p><strong>expert_rules</strong> (<em>List</em><em>[</em><em>Union</em><em>[</em><em>str</em><em>, </em><em>Tuple</em><em>[</em><em>str</em><em>, </em><em>str</em><em>]</em><em>]</em><em>]</em>) – set of initial rules, either passed as a list of strings representing rules or as list of tuples where first
 element is name of the rule and second one is rule string.</p></li>
 <li><p><strong>expert_preferred_conditions</strong> (<em>List</em><em>[</em><em>Union</em><em>[</em><em>str</em><em>, </em><em>Tuple</em><em>[</em><em>str</em><em>, </em><em>str</em><em>]</em><em>]</em><em>]</em>) – multiset of preferred conditions (used also for specifying preferred attributes by using special value Any). Either passed as a list of strings representing rules or as list of tuples where first
@@ -393,9 +416,23 @@ <h1>Regression<a class="headerlink" href="#regression" title="Permalink to this
 </dd></dl>
 
 <dl class="py method">
-<dt id="rulekit.regression.ExpertRuleRegressor.set_params">
-<code class="sig-name descname"><span class="pre">set_params</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">min_rule_covered</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">induction_measure</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="params.html#rulekit.params.Measures" title="rulekit.params.Measures"><span class="pre">rulekit.params.Measures</span></a><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pruning_measure</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">Union</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="params.html#rulekit.params.Measures" title="rulekit.params.Measures"><span class="pre">rulekit.params.Measures</span></a><span class="p"><span class="pre">,</span> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">voting_measure</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="params.html#rulekit.params.Measures" title="rulekit.params.Measures"><span class="pre">rulekit.params.Measures</span></a><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_growing</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">enable_pruning</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_missing</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> &#x2192; <span class="pre">object</span><a class="headerlink" href="#rulekit.regression.ExpertRuleRegressor.set_params" title="Permalink to this definition">¶</a></dt>
-<dd><p>Set models hyperparameters. Parameters are the same as in constructor.</p>
+<dt id="rulekit.regression.ExpertRuleRegressor.score">
+<code class="sig-name descname"><span class="pre">score</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">values</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Union</span><span class="p"><span class="pre">[</span></span><span class="pre">numpy.ndarray</span><span class="p"><span class="pre">,</span> </span><span class="pre">pandas.core.frame.DataFrame</span><span class="p"><span class="pre">,</span> </span><span class="pre">List</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">labels</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Union</span><span class="p"><span class="pre">[</span></span><span class="pre">numpy.ndarray</span><span class="p"><span class="pre">,</span> </span><span class="pre">pandas.core.frame.DataFrame</span><span class="p"><span class="pre">,</span> </span><span class="pre">List</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> &#x2192; <span class="pre">float</span><a class="headerlink" href="#rulekit.regression.ExpertRuleRegressor.score" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the coefficient of determination R2 of the prediction</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>values</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – attributes</p></li>
+<li><p><strong>labels</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – true target values</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><strong>score</strong> – R2 of self.predict(values) wrt. labels.</p>
+</dd>
+<dt class="field-odd">Return type</dt>
+<dd class="field-odd"><p>float</p>
+</dd>
+</dl>
 </dd></dl>
 
 </dd></dl>
diff --git a/doc/build/html/rst/autodoc/rules.html b/doc/build/html/rst/autodoc/rules.html
index d53562a..64a20da 100644
--- a/doc/build/html/rst/autodoc/rules.html
+++ b/doc/build/html/rst/autodoc/rules.html
@@ -7,12 +7,13 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
   
-  <title>Rules &mdash; rulekit 1.3.0 documentation</title>
+  <title>Rules &mdash; rulekit 1.5.2 documentation</title>
   
 
   
   <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
   <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/copybutton.css" type="text/css" />
 
   
   
@@ -32,6 +33,8 @@
         <script src="../../_static/jquery.js"></script>
         <script src="../../_static/underscore.js"></script>
         <script src="../../_static/doctools.js"></script>
+        <script src="../../_static/clipboard.min.js"></script>
+        <script src="../../_static/copybutton.js"></script>
         <script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script>
     
     <script type="text/javascript" src="../../_static/js/theme.js"></script>
diff --git a/doc/build/html/rst/autodoc/stats.html b/doc/build/html/rst/autodoc/stats.html
index 7b8be44..f170ed2 100644
--- a/doc/build/html/rst/autodoc/stats.html
+++ b/doc/build/html/rst/autodoc/stats.html
@@ -7,12 +7,13 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
   
-  <title>Statistics &mdash; rulekit 1.3.0 documentation</title>
+  <title>Statistics &mdash; rulekit 1.5.2 documentation</title>
   
 
   
   <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
   <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/copybutton.css" type="text/css" />
 
   
   
@@ -32,6 +33,8 @@
         <script src="../../_static/jquery.js"></script>
         <script src="../../_static/underscore.js"></script>
         <script src="../../_static/doctools.js"></script>
+        <script src="../../_static/clipboard.min.js"></script>
+        <script src="../../_static/copybutton.js"></script>
         <script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script>
     
     <script type="text/javascript" src="../../_static/js/theme.js"></script>
diff --git a/doc/build/html/rst/autodoc/survival.html b/doc/build/html/rst/autodoc/survival.html
index 5e20753..14fee45 100644
--- a/doc/build/html/rst/autodoc/survival.html
+++ b/doc/build/html/rst/autodoc/survival.html
@@ -7,12 +7,13 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
   
-  <title>Survival &mdash; rulekit 1.3.0 documentation</title>
+  <title>Survival &mdash; rulekit 1.5.2 documentation</title>
   
 
   
   <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
   <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/copybutton.css" type="text/css" />
 
   
   
@@ -32,6 +33,8 @@
         <script src="../../_static/jquery.js"></script>
         <script src="../../_static/underscore.js"></script>
         <script src="../../_static/doctools.js"></script>
+        <script src="../../_static/clipboard.min.js"></script>
+        <script src="../../_static/copybutton.js"></script>
         <script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script>
     
     <script type="text/javascript" src="../../_static/js/theme.js"></script>
@@ -219,7 +222,7 @@ <h1>Survival<a class="headerlink" href="#survival" title="Permalink to this head
 <dt class="field-odd">Parameters</dt>
 <dd class="field-odd"><ul class="simple">
 <li><p><strong>values</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – attributes</p></li>
-<li><p><strong>labels</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – labels</p></li>
+<li><p><strong>labels</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – survival status</p></li>
 <li><p><strong>survival_time</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – data about survival time. Could be omitted when <em>survival_time_attr</em> parameter was specified.</p></li>
 </ul>
 </dd>
@@ -267,13 +270,13 @@ <h1>Survival<a class="headerlink" href="#survival" title="Permalink to this head
 <dl class="py method">
 <dt id="rulekit.survival.SurvivalRules.predict">
 <code class="sig-name descname"><span class="pre">predict</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">values</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Union</span><span class="p"><span class="pre">[</span></span><span class="pre">numpy.ndarray</span><span class="p"><span class="pre">,</span> </span><span class="pre">pandas.core.frame.DataFrame</span><span class="p"><span class="pre">,</span> </span><span class="pre">List</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> &#x2192; <span class="pre">numpy.ndarray</span><a class="headerlink" href="#rulekit.survival.SurvivalRules.predict" title="Permalink to this definition">¶</a></dt>
-<dd><p>Perform prediction and returns predicted values.</p>
+<dd><p>Perform prediction and return estimated survival function for each example.</p>
 <dl class="field-list simple">
 <dt class="field-odd">Parameters</dt>
 <dd class="field-odd"><p><strong>values</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – attributes</p>
 </dd>
 <dt class="field-even">Returns</dt>
-<dd class="field-even"><p><strong>result</strong> – predicted values</p>
+<dd class="field-even"><p><strong>result</strong> – Each row represent single example from dataset and contains estimated survival function for that example. Estimated survival function is returned as a dictionary containing times and corresponding probabilities.</p>
 </dd>
 <dt class="field-odd">Return type</dt>
 <dd class="field-odd"><p>np.ndarray</p>
@@ -281,9 +284,32 @@ <h1>Survival<a class="headerlink" href="#survival" title="Permalink to this head
 </dl>
 </dd></dl>
 
+<dl class="py method">
+<dt id="rulekit.survival.SurvivalRules.score">
+<code class="sig-name descname"><span class="pre">score</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">values</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Union</span><span class="p"><span class="pre">[</span></span><span class="pre">numpy.ndarray</span><span class="p"><span class="pre">,</span> </span><span class="pre">pandas.core.frame.DataFrame</span><span class="p"><span class="pre">,</span> </span><span class="pre">List</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">labels</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Union</span><span class="p"><span class="pre">[</span></span><span class="pre">numpy.ndarray</span><span class="p"><span class="pre">,</span> </span><span class="pre">pandas.core.frame.DataFrame</span><span class="p"><span class="pre">,</span> </span><span class="pre">List</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">survival_time</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">Union</span><span class="p"><span class="pre">[</span></span><span class="pre">numpy.ndarray</span><span class="p"><span class="pre">,</span> </span><span class="pre">pandas.core.frame.DataFrame</span><span class="p"><span class="pre">,</span> </span><span class="pre">List</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> &#x2192; <span class="pre">float</span><a class="headerlink" href="#rulekit.survival.SurvivalRules.score" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the Integrated Brier Score on the given dataset and labels(event status indicator).</p>
+<p>Integrated Brier Score (IBS) - the Brier score (BS) represents the squared difference between true event status at time T and predicted event status at that time;
+the Integrated Brier score summarizes the prediction error over all observations and over all times in a test set.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>values</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – attributes</p></li>
+<li><p><strong>labels</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – survival status</p></li>
+<li><p><strong>survival_time</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – data about survival time. Could be omitted when <em>survival_time_attr</em> parameter was specified</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><strong>score</strong> – Integrated Brier Score of self.predict(values) wrt. labels.</p>
+</dd>
+<dt class="field-odd">Return type</dt>
+<dd class="field-odd"><p>float</p>
+</dd>
+</dl>
+</dd></dl>
+
 <dl class="py method">
 <dt id="rulekit.survival.SurvivalRules.set_params">
-<code class="sig-name descname"><span class="pre">set_params</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">min_rule_covered</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">induction_measure</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="params.html#rulekit.params.Measures" title="rulekit.params.Measures"><span class="pre">rulekit.params.Measures</span></a><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pruning_measure</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">Union</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="params.html#rulekit.params.Measures" title="rulekit.params.Measures"><span class="pre">rulekit.params.Measures</span></a><span class="p"><span class="pre">,</span> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">voting_measure</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="params.html#rulekit.params.Measures" title="rulekit.params.Measures"><span class="pre">rulekit.params.Measures</span></a><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_growing</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">enable_pruning</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_missing</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> &#x2192; <span class="pre">object</span><a class="headerlink" href="#rulekit.survival.SurvivalRules.set_params" title="Permalink to this definition">¶</a></dt>
+<code class="sig-name descname"><span class="pre">set_params</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">survival_time_attr</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">min_rule_covered</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_growing</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">enable_pruning</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_missing</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> &#x2192; <span class="pre">object</span><a class="headerlink" href="#rulekit.survival.SurvivalRules.set_params" title="Permalink to this definition">¶</a></dt>
 <dd><p>Set models hyperparameters. Parameters are the same as in constructor.</p>
 </dd></dl>
 
@@ -320,7 +346,7 @@ <h1>Survival<a class="headerlink" href="#survival" title="Permalink to this head
 <dt class="field-odd">Parameters</dt>
 <dd class="field-odd"><ul class="simple">
 <li><p><strong>values</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – attributes</p></li>
-<li><p><strong>labels</strong> (<em>Data</em>) – labels</p></li>
+<li><p><strong>labels</strong> (<em>Data</em>) – survival status</p></li>
 <li><p><strong>survival_time</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – data about survival time. Could be omitted when <em>survival_time_attr</em> parameter was specified.</p></li>
 <li><p><strong>expert_rules</strong> (<em>List</em><em>[</em><em>Union</em><em>[</em><em>str</em><em>, </em><em>Tuple</em><em>[</em><em>str</em><em>, </em><em>str</em><em>]</em><em>]</em><em>]</em>) – set of initial rules, either passed as a list of strings representing rules or as list of tuples where first
 element is name of the rule and second one is rule string.</p></li>
@@ -374,13 +400,13 @@ <h1>Survival<a class="headerlink" href="#survival" title="Permalink to this head
 <dl class="py method">
 <dt id="rulekit.survival.ExpertSurvivalRules.predict">
 <code class="sig-name descname"><span class="pre">predict</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">values</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Union</span><span class="p"><span class="pre">[</span></span><span class="pre">numpy.ndarray</span><span class="p"><span class="pre">,</span> </span><span class="pre">pandas.core.frame.DataFrame</span><span class="p"><span class="pre">,</span> </span><span class="pre">List</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> &#x2192; <span class="pre">numpy.ndarray</span><a class="headerlink" href="#rulekit.survival.ExpertSurvivalRules.predict" title="Permalink to this definition">¶</a></dt>
-<dd><p>Perform prediction and returns predicted values.</p>
+<dd><p>Perform prediction and return estimated survival function for each example.</p>
 <dl class="field-list simple">
 <dt class="field-odd">Parameters</dt>
 <dd class="field-odd"><p><strong>values</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – attributes</p>
 </dd>
 <dt class="field-even">Returns</dt>
-<dd class="field-even"><p><strong>result</strong> – predicted values</p>
+<dd class="field-even"><p><strong>result</strong> – Each row represent single example from dataset and contains estimated survival function for that example. Estimated survival function is returned as a dictionary containing times and corresponding probabilities.</p>
 </dd>
 <dt class="field-odd">Return type</dt>
 <dd class="field-odd"><p>np.ndarray</p>
@@ -388,9 +414,32 @@ <h1>Survival<a class="headerlink" href="#survival" title="Permalink to this head
 </dl>
 </dd></dl>
 
+<dl class="py method">
+<dt id="rulekit.survival.ExpertSurvivalRules.score">
+<code class="sig-name descname"><span class="pre">score</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">values</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Union</span><span class="p"><span class="pre">[</span></span><span class="pre">numpy.ndarray</span><span class="p"><span class="pre">,</span> </span><span class="pre">pandas.core.frame.DataFrame</span><span class="p"><span class="pre">,</span> </span><span class="pre">List</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">labels</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Union</span><span class="p"><span class="pre">[</span></span><span class="pre">numpy.ndarray</span><span class="p"><span class="pre">,</span> </span><span class="pre">pandas.core.frame.DataFrame</span><span class="p"><span class="pre">,</span> </span><span class="pre">List</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">survival_time</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">Union</span><span class="p"><span class="pre">[</span></span><span class="pre">numpy.ndarray</span><span class="p"><span class="pre">,</span> </span><span class="pre">pandas.core.frame.DataFrame</span><span class="p"><span class="pre">,</span> </span><span class="pre">List</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> &#x2192; <span class="pre">float</span><a class="headerlink" href="#rulekit.survival.ExpertSurvivalRules.score" title="Permalink to this definition">¶</a></dt>
+<dd><p>Return the Integrated Brier Score on the given dataset and labels(event status indicator).</p>
+<p>Integrated Brier Score (IBS) - the Brier score (BS) represents the squared difference between true event status at time T and predicted event status at that time;
+the Integrated Brier score summarizes the prediction error over all observations and over all times in a test set.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>values</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – attributes</p></li>
+<li><p><strong>labels</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – survival status</p></li>
+<li><p><strong>survival_time</strong> (<a class="reference internal" href="params.html#rulekit.operator.Data" title="rulekit.operator.Data"><code class="xref py py-class docutils literal notranslate"><span class="pre">rulekit.operator.Data</span></code></a>) – data about survival time. Could be omitted when <em>survival_time_attr</em> parameter was specified</p></li>
+</ul>
+</dd>
+<dt class="field-even">Returns</dt>
+<dd class="field-even"><p><strong>score</strong> – Integrated Brier Score of self.predict(values) wrt. labels.</p>
+</dd>
+<dt class="field-odd">Return type</dt>
+<dd class="field-odd"><p>float</p>
+</dd>
+</dl>
+</dd></dl>
+
 <dl class="py method">
 <dt id="rulekit.survival.ExpertSurvivalRules.set_params">
-<code class="sig-name descname"><span class="pre">set_params</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">min_rule_covered</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">induction_measure</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="params.html#rulekit.params.Measures" title="rulekit.params.Measures"><span class="pre">rulekit.params.Measures</span></a><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pruning_measure</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">Union</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="params.html#rulekit.params.Measures" title="rulekit.params.Measures"><span class="pre">rulekit.params.Measures</span></a><span class="p"><span class="pre">,</span> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">voting_measure</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="params.html#rulekit.params.Measures" title="rulekit.params.Measures"><span class="pre">rulekit.params.Measures</span></a><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_growing</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">enable_pruning</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_missing</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> &#x2192; <span class="pre">object</span><a class="headerlink" href="#rulekit.survival.ExpertSurvivalRules.set_params" title="Permalink to this definition">¶</a></dt>
+<code class="sig-name descname"><span class="pre">set_params</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">survival_time_attr</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">min_rule_covered</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_growing</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">enable_pruning</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ignore_missing</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">extend_using_preferred</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">extend_using_automatic</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">induce_using_preferred</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">induce_using_automatic</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">preferred_conditions_per_rule</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">preferred_attributes_per_rule</span></span><span class="p"><span class="pre">:</span></span> <span class="n"><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span> <span class="o"><span class="pre">=</span></span> <span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> &#x2192; <span class="pre">object</span><a class="headerlink" href="#rulekit.survival.ExpertSurvivalRules.set_params" title="Permalink to this definition">¶</a></dt>
 <dd><p>Set models hyperparameters. Parameters are the same as in constructor.</p>
 </dd></dl>
 
diff --git a/doc/build/html/rst/quick_start.html b/doc/build/html/rst/quick_start.html
index 387c1a6..d93f650 100644
--- a/doc/build/html/rst/quick_start.html
+++ b/doc/build/html/rst/quick_start.html
@@ -7,12 +7,13 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
   
-  <title>Quick start &mdash; rulekit 1.3.0 documentation</title>
+  <title>Quick start &mdash; rulekit 1.5.2 documentation</title>
   
 
   
   <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
   <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/copybutton.css" type="text/css" />
 
   
   
@@ -32,6 +33,8 @@
         <script src="../_static/jquery.js"></script>
         <script src="../_static/underscore.js"></script>
         <script src="../_static/doctools.js"></script>
+        <script src="../_static/clipboard.min.js"></script>
+        <script src="../_static/copybutton.js"></script>
         <script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script>
     
     <script type="text/javascript" src="../_static/js/theme.js"></script>
@@ -196,16 +199,18 @@ <h1>Quick start<a class="headerlink" href="#quick-start" title="Permalink to thi
 </div>
 <div class="section" id="installation">
 <h2>Installation<a class="headerlink" href="#installation" title="Permalink to this headline">¶</a></h2>
-<div class="admonition warning">
-<p class="admonition-title">Warning</p>
-<p>TODO add package to pip repository</p>
-</div>
 <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>pip install rulekit
+python -m rulekit download_jar
 </pre></div>
 </div>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>Second command will download <a class="reference external" href="https://github.com/adaa-polsl/RuleKit/">RuleKit</a> jar
+file from github releases. This step is required to use this package.</p>
+</div>
 <p>To check if everything was installed correctly call:</p>
-<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="o">&gt;&gt;</span> <span class="kn">import</span> <span class="nn">rulekit</span>
-<span class="o">&gt;&gt;</span> <span class="n">rulekit</span><span class="o">.</span><span class="n">__version__</span>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">rulekit</span>
+<span class="n">rulekit</span><span class="o">.</span><span class="n">__version__</span>
 </pre></div>
 </div>
 <p>It should run without errors and print package version.</p>
@@ -213,7 +218,7 @@ <h2>Installation<a class="headerlink" href="#installation" title="Permalink to t
 <div class="section" id="initializing-package">
 <h2>Initializing package<a class="headerlink" href="#initializing-package" title="Permalink to this headline">¶</a></h2>
 <p>Before you start using any of rulelkit package functionality you need to initialize it first. This step should be done only
-once in the beginning, no need to initialize before every usage.</p>
+once at the beginning of the program, no need to initialize before every usage.</p>
 <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">rulekit</span> <span class="kn">import</span> <span class="n">RuleKit</span>
 
 <span class="n">RuleKit</span><span class="o">.</span><span class="n">init</span><span class="p">()</span>
@@ -254,7 +259,7 @@ <h2>Package usage<a class="headerlink" href="#package-usage" title="Permalink to
 </div>
 <p>As you may noticed, training and using rulekit models is the same as in scikit learn. This
 mean you can use scikit: metrics, cross-validation, hyper-parameters tuning etc. with ease.</p>
-<p>For more examples head to <strong>Tutorials</strong> section.</p>
+<p>For more examples head to <a class="reference internal" href="tutorials.html"><span class="doc">Tutorials</span></a> section.</p>
 </div>
 </div>
 
diff --git a/doc/build/html/rst/tutorials.html b/doc/build/html/rst/tutorials.html
index 45b8cbd..96d8fe6 100644
--- a/doc/build/html/rst/tutorials.html
+++ b/doc/build/html/rst/tutorials.html
@@ -7,12 +7,13 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
   
-  <title>Tutorials &mdash; rulekit 1.3.0 documentation</title>
+  <title>Tutorials &mdash; rulekit 1.5.2 documentation</title>
   
 
   
   <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
   <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../_static/copybutton.css" type="text/css" />
 
   
   
@@ -32,6 +33,8 @@
         <script src="../_static/jquery.js"></script>
         <script src="../_static/underscore.js"></script>
         <script src="../_static/doctools.js"></script>
+        <script src="../_static/clipboard.min.js"></script>
+        <script src="../_static/copybutton.js"></script>
         <script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script>
     
     <script type="text/javascript" src="../_static/js/theme.js"></script>
@@ -90,6 +93,9 @@
 <li class="toctree-l1"><a class="reference internal" href="quick_start.html">Quick start</a></li>
 <li class="toctree-l1 current"><a class="current reference internal" href="#">Tutorials</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="tutorials/classification.html">Classification</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/regression.html">Regression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/survival.html">Survival</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorials/expert_rules.html">Expert Rules</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="autodoc.html">Code documentation</a></li>
@@ -190,6 +196,9 @@ <h1>Tutorials<a class="headerlink" href="#tutorials" title="Permalink to this he
 <p class="caption"><span class="caption-text">Table of contents:</span></p>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="tutorials/classification.html">Classification</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorials/regression.html">Regression</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorials/survival.html">Survival</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorials/expert_rules.html">Expert Rules</a></li>
 </ul>
 </div>
 </div>
diff --git a/doc/build/html/rst/tutorials/classification.html b/doc/build/html/rst/tutorials/classification.html
index 0a4c953..7f0899b 100644
--- a/doc/build/html/rst/tutorials/classification.html
+++ b/doc/build/html/rst/tutorials/classification.html
@@ -7,12 +7,13 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
   
-  <title>Classification &mdash; rulekit 1.3.0 documentation</title>
+  <title>Classification &mdash; rulekit 1.5.2 documentation</title>
   
 
   
   <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
   <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/copybutton.css" type="text/css" />
 
   
   
@@ -32,6 +33,8 @@
         <script src="../../_static/jquery.js"></script>
         <script src="../../_static/underscore.js"></script>
         <script src="../../_static/doctools.js"></script>
+        <script src="../../_static/clipboard.min.js"></script>
+        <script src="../../_static/copybutton.js"></script>
         <script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script>
     
     <script type="text/javascript" src="../../_static/js/theme.js"></script>
@@ -39,7 +42,7 @@
     
     <link rel="index" title="Index" href="../../genindex.html" />
     <link rel="search" title="Search" href="../../search.html" />
-    <link rel="next" title="Code documentation" href="../autodoc.html" />
+    <link rel="next" title="Regression" href="regression.html" />
     <link rel="prev" title="Tutorials" href="../tutorials.html" /> 
 </head>
 
@@ -90,22 +93,30 @@
 <li class="toctree-l1"><a class="reference internal" href="../quick_start.html">Quick start</a></li>
 <li class="toctree-l1 current"><a class="reference internal" href="../tutorials.html">Tutorials</a><ul class="current">
 <li class="toctree-l2 current"><a class="current reference internal" href="#">Classification</a><ul>
-<li class="toctree-l3"><a class="reference internal" href="#Summary-of-the-dataset.">Summary of the dataset.</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#Decision-class-distribution">Decision class distribution</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#Summary-of-the-dataset">Summary of the dataset</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#Decision-class-distribution">Decision class distribution</a></li>
+</ul>
+</li>
+<li class="toctree-l3"><a class="reference internal" href="#Import-and-init-RuleKit">Import and init RuleKit</a></li>
 <li class="toctree-l3"><a class="reference internal" href="#Helper-function-for-calculating-metrics">Helper function for calculating metrics</a></li>
 <li class="toctree-l3"><a class="reference internal" href="#Rule-induction-on-full-dataset">Rule induction on full dataset</a><ul>
-<li class="toctree-l4"><a class="reference internal" href="#Stratified-K-Folds-cross-validation">Stratified K-Folds cross-validation</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#C2-Measure-generated-rules">C2 Measure generated rules</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#Correlation-Measure-generated-rules">Correlation Measure generated rules</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#RSS-Measure-generated-rules">RSS Measure generated rules</a></li>
 </ul>
 </li>
-<li class="toctree-l3"><a class="reference internal" href="#C2-Measure">C2 Measure</a><ul>
-<li class="toctree-l4"><a class="reference internal" href="#Hyperparameters-tuning">Hyperparameters tuning</a></li>
-<li class="toctree-l4"><a class="reference internal" href="#Building-model-with-tuned-hyperparameters">Building model with tuned hyperparameters</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#Stratified-K-Folds-cross-validation">Stratified K-Folds cross-validation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#Hyperparameters-tuning">Hyperparameters tuning</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#Building-model-with-tuned-hyperparameters">Building model with tuned hyperparameters</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#Split-dataset-to-train-and-test-(80%/20%).">Split dataset to train and test (80%/20%).</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#Validate-model-on-test-dataset">Validate model on test dataset</a></li>
 </ul>
 </li>
-<li class="toctree-l3"><a class="reference internal" href="#Rules-evaluation">Rules evaluation</a></li>
-<li class="toctree-l3"><a class="reference internal" href="#Validate-model-on-test-dataset">Validate model on test dataset</a></li>
 </ul>
 </li>
+<li class="toctree-l2"><a class="reference internal" href="regression.html">Regression</a></li>
+<li class="toctree-l2"><a class="reference internal" href="survival.html">Survival</a></li>
+<li class="toctree-l2"><a class="reference internal" href="expert_rules.html">Expert Rules</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="../autodoc.html">Code documentation</a></li>
@@ -451,9 +462,16 @@
 <div class="section" id="Classification">
 <h1>Classification<a class="headerlink" href="#Classification" title="Permalink to this headline">¶</a></h1>
 <p>This notebook presents example usage of package for solving classification problem on <code class="docutils literal notranslate"><span class="pre">seismic-bumps</span></code> dataset. You can download dataset <a class="reference external" href="https://raw.githubusercontent.com/adaa-polsl/RuleKit/master/data/seismic-bumps/seismic-bumps.arff">here</a>.</p>
-<p>This tutorial will cover topics such as: * training model * changing model hyperparameters * hyperparameters tuning * calculating metrics for model * getting RuleKit inbuil</p>
-<div class="section" id="Summary-of-the-dataset.">
-<h2>Summary of the dataset.<a class="headerlink" href="#Summary-of-the-dataset." title="Permalink to this headline">¶</a></h2>
+<div class="line-block">
+<div class="line">This tutorial will cover topics such as:</div>
+<div class="line">- training model</div>
+<div class="line">- changing model hyperparameters</div>
+<div class="line">- hyperparameters tuning</div>
+<div class="line">- calculating metrics for model</div>
+<div class="line">- getting RuleKit inbuilt</div>
+</div>
+<div class="section" id="Summary-of-the-dataset">
+<h2>Summary of the dataset<a class="headerlink" href="#Summary-of-the-dataset" title="Permalink to this headline">¶</a></h2>
 <div class="nbinput docutils container">
 <div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[28]:
 </pre></div>
@@ -657,9 +675,8 @@ <h2>Summary of the dataset.<a class="headerlink" href="#Summary-of-the-dataset."
 </table>
 </div></div>
 </div>
-</div>
 <div class="section" id="Decision-class-distribution">
-<h2>Decision class distribution<a class="headerlink" href="#Decision-class-distribution" title="Permalink to this headline">¶</a></h2>
+<h3>Decision class distribution<a class="headerlink" href="#Decision-class-distribution" title="Permalink to this headline">¶</a></h3>
 <div class="nbinput docutils container">
 <div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[10]:
 </pre></div>
@@ -686,6 +703,24 @@ <h2>Decision class distribution<a class="headerlink" href="#Decision-class-distr
 <img alt="../../_images/rst_tutorials_classification_5_0.svg" src="../../_images/rst_tutorials_classification_5_0.svg" /></div>
 </div>
 </div>
+</div>
+<div class="section" id="Import-and-init-RuleKit">
+<h2>Import and init RuleKit<a class="headerlink" href="#Import-and-init-RuleKit" title="Permalink to this headline">¶</a></h2>
+<div class="nbinput nblast docutils container">
+<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]:
+</pre></div>
+</div>
+<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre>
+<span></span><span class="kn">from</span> <span class="nn">rulekit</span> <span class="kn">import</span> <span class="n">RuleKit</span>
+<span class="kn">from</span> <span class="nn">rulekit.classification</span> <span class="kn">import</span> <span class="n">RuleClassifier</span>
+<span class="kn">from</span> <span class="nn">rulekit.params</span> <span class="kn">import</span> <span class="n">Measures</span>
+
+
+<span class="n">RuleKit</span><span class="o">.</span><span class="n">init</span><span class="p">()</span>
+</pre></div>
+</div>
+</div>
+</div>
 <div class="section" id="Helper-function-for-calculating-metrics">
 <h2>Helper function for calculating metrics<a class="headerlink" href="#Helper-function-for-calculating-metrics" title="Permalink to this headline">¶</a></h2>
 <div class="nbinput nblast docutils container">
@@ -693,9 +728,7 @@ <h2>Helper function for calculating metrics<a class="headerlink" href="#Helper-f
 </pre></div>
 </div>
 <div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre>
-<span></span><span class="kn">from</span> <span class="nn">rulekit</span> <span class="kn">import</span> <span class="n">RuleKit</span>
-<span class="kn">from</span> <span class="nn">rulekit.classification</span> <span class="kn">import</span> <span class="n">RuleClassifier</span>
-<span class="kn">import</span> <span class="nn">sklearn.tree</span> <span class="k">as</span> <span class="nn">scikit</span>
+<span></span><span class="kn">import</span> <span class="nn">sklearn.tree</span> <span class="k">as</span> <span class="nn">scikit</span>
 <span class="kn">from</span> <span class="nn">sklearn.datasets</span> <span class="kn">import</span> <span class="n">load_iris</span>
 <span class="kn">import</span> <span class="nn">math</span>
 <span class="kn">from</span> <span class="nn">sklearn.preprocessing</span> <span class="kn">import</span> <span class="n">MultiLabelBinarizer</span>
@@ -705,8 +738,6 @@ <h2>Helper function for calculating metrics<a class="headerlink" href="#Helper-f
 <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Tuple</span>
 
 
-<span class="n">RuleKit</span><span class="o">.</span><span class="n">init</span><span class="p">()</span>
-
 <span class="n">x</span> <span class="o">=</span> <span class="n">df_full</span><span class="o">.</span><span class="n">drop</span><span class="p">([</span><span class="s1">&#39;class&#39;</span><span class="p">],</span> <span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
 <span class="n">y</span> <span class="o">=</span> <span class="n">df_full</span><span class="p">[</span><span class="s1">&#39;class&#39;</span><span class="p">]</span>
 
@@ -1228,7 +1259,8 @@ <h2>Rule induction on full dataset<a class="headerlink" href="#Rule-induction-on
 </table>
 </div></div>
 </div>
-<p>C2 Measure generated rules</p>
+<div class="section" id="C2-Measure-generated-rules">
+<h3>C2 Measure generated rules<a class="headerlink" href="#C2-Measure-generated-rules" title="Permalink to this headline">¶</a></h3>
 <div class="nbinput docutils container">
 <div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[15]:
 </pre></div>
@@ -1424,7 +1456,9 @@ <h2>Rule induction on full dataset<a class="headerlink" href="#Rule-induction-on
 IF ghazard = {a} AND goenergy = &lt;-59.50, -10.50) AND gimpuls = &lt;88, 269.50) AND maxenergy = (-inf, 4500) AND goimpuls = &lt;-42.50, 4.50) AND genergy = &lt;4565, 21365) THEN label = {1}
 </pre></div></div>
 </div>
-<p>Correlation Measure generated rules</p>
+</div>
+<div class="section" id="Correlation-Measure-generated-rules">
+<h3>Correlation Measure generated rules<a class="headerlink" href="#Correlation-Measure-generated-rules" title="Permalink to this headline">¶</a></h3>
 <div class="nbinput docutils container">
 <div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[16]:
 </pre></div>
@@ -1500,7 +1534,9 @@ <h2>Rule induction on full dataset<a class="headerlink" href="#Rule-induction-on
 IF goenergy = (-inf, -1.50) AND gimpuls = &lt;54.50, 195.50) AND genergy = &lt;1510, 12565) AND goimpuls = &lt;-72.50, 28.50) AND shift = {N} AND seismoacoustic = {a} AND seismic = {a} AND senergy = (-inf, 3200) THEN label = {1}
 </pre></div></div>
 </div>
-<p>RSS Measure generated rules</p>
+</div>
+<div class="section" id="RSS-Measure-generated-rules">
+<h3>RSS Measure generated rules<a class="headerlink" href="#RSS-Measure-generated-rules" title="Permalink to this headline">¶</a></h3>
 <div class="nbinput docutils container">
 <div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[17]:
 </pre></div>
@@ -1578,8 +1614,10 @@ <h2>Rule induction on full dataset<a class="headerlink" href="#Rule-induction-on
 IF goenergy = &lt;-55.50, 124.50) AND gimpuls = &lt;194.50, inf) AND genergy = &lt;9060, inf) AND goimpuls = &lt;-60.50, inf) AND nbumps2 = (-inf, 4.50) THEN label = {1}
 </pre></div></div>
 </div>
+</div>
+</div>
 <div class="section" id="Stratified-K-Folds-cross-validation">
-<h3>Stratified K-Folds cross-validation<a class="headerlink" href="#Stratified-K-Folds-cross-validation" title="Permalink to this headline">¶</a></h3>
+<h2>Stratified K-Folds cross-validation<a class="headerlink" href="#Stratified-K-Folds-cross-validation" title="Permalink to this headline">¶</a></h2>
 <div class="nbinput nblast docutils container">
 <div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[19]:
 </pre></div>
@@ -1596,10 +1634,6 @@ <h3>Stratified K-Folds cross-validation<a class="headerlink" href="#Stratified-K
 </pre></div>
 </div>
 </div>
-</div>
-</div>
-<div class="section" id="C2-Measure">
-<h2>C2 Measure<a class="headerlink" href="#C2-Measure" title="Permalink to this headline">¶</a></h2>
 <div class="nbinput nblast docutils container">
 <div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]:
 </pre></div>
@@ -1757,8 +1791,9 @@ <h2>C2 Measure<a class="headerlink" href="#C2-Measure" title="Permalink to this
 </table>
 </div></div>
 </div>
+</div>
 <div class="section" id="Hyperparameters-tuning">
-<h3>Hyperparameters tuning<a class="headerlink" href="#Hyperparameters-tuning" title="Permalink to this headline">¶</a></h3>
+<h2>Hyperparameters tuning<a class="headerlink" href="#Hyperparameters-tuning" title="Permalink to this headline">¶</a></h2>
 <p>This one gonna take a while…</p>
 <div class="nbinput docutils container">
 <div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[40]:
@@ -1805,8 +1840,9 @@ <h3>Hyperparameters tuning<a class="headerlink" href="#Hyperparameters-tuning" t
 </div>
 </div>
 <div class="section" id="Building-model-with-tuned-hyperparameters">
-<h3>Building model with tuned hyperparameters<a class="headerlink" href="#Building-model-with-tuned-hyperparameters" title="Permalink to this headline">¶</a></h3>
-<p>Split dataset to train and test (80%/20%).</p>
+<h2>Building model with tuned hyperparameters<a class="headerlink" href="#Building-model-with-tuned-hyperparameters" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="Split-dataset-to-train-and-test-(80%/20%).">
+<h3>Split dataset to train and test (80%/20%).<a class="headerlink" href="#Split-dataset-to-train-and-test-(80%/20%)." title="Permalink to this headline">¶</a></h3>
 <div class="nbinput nblast docutils container">
 <div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[41]:
 </pre></div>
@@ -1833,10 +1869,7 @@ <h3>Building model with tuned hyperparameters<a class="headerlink" href="#Buildi
 </pre></div>
 </div>
 </div>
-</div>
-</div>
-<div class="section" id="Rules-evaluation">
-<h2>Rules evaluation<a class="headerlink" href="#Rules-evaluation" title="Permalink to this headline">¶</a></h2>
+<p>Rules evaluation</p>
 <div class="nbinput docutils container">
 <div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[42]:
 </pre></div>
@@ -1871,7 +1904,7 @@ <h2>Rules evaluation<a class="headerlink" href="#Rules-evaluation" title="Permal
 </div>
 </div>
 <div class="section" id="Validate-model-on-test-dataset">
-<h2>Validate model on test dataset<a class="headerlink" href="#Validate-model-on-test-dataset" title="Permalink to this headline">¶</a></h2>
+<h3>Validate model on test dataset<a class="headerlink" href="#Validate-model-on-test-dataset" title="Permalink to this headline">¶</a></h3>
 <div class="nbinput docutils container">
 <div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[43]:
 </pre></div>
@@ -1959,6 +1992,7 @@ <h2>Validate model on test dataset<a class="headerlink" href="#Validate-model-on
 </div></div>
 </div>
 </div>
+</div>
 </div>
 
 
@@ -1967,7 +2001,7 @@ <h2>Validate model on test dataset<a class="headerlink" href="#Validate-model-on
           </div>
           <footer>
     <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
-        <a href="../autodoc.html" class="btn btn-neutral float-right" title="Code documentation" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+        <a href="regression.html" class="btn btn-neutral float-right" title="Regression" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
         <a href="../tutorials.html" class="btn btn-neutral float-left" title="Tutorials" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
     </div>
 
diff --git a/doc/build/html/rst/tutorials/classification.ipynb b/doc/build/html/rst/tutorials/classification.ipynb
index 49f4148..acd67fc 100644
--- a/doc/build/html/rst/tutorials/classification.ipynb
+++ b/doc/build/html/rst/tutorials/classification.ipynb
@@ -13,19 +13,19 @@
    "source": [
     "This notebook presents example usage of package for solving classification problem on `seismic-bumps` dataset. You can download dataset [here](https://raw.githubusercontent.com/adaa-polsl/RuleKit/master/data/seismic-bumps/seismic-bumps.arff).\n",
     "\n",
-    "This tutorial will cover topics such as:\n",
-    "* training model\n",
-    "* changing model hyperparameters\n",
-    "* hyperparameters tuning\n",
-    "* calculating metrics for model\n",
-    "* getting RuleKit inbuil"
+    "This tutorial will cover topics such as:   \n",
+    "- training model   \n",
+    "- changing model hyperparameters   \n",
+    "- hyperparameters tuning   \n",
+    "- calculating metrics for model    \n",
+    "- getting RuleKit inbuilt   "
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Summary of the dataset."
+    "## Summary of the dataset"
    ]
   },
   {
@@ -644,17 +644,36 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Helper function for calculating metrics"
+    "## Import and init RuleKit"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 30,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
     "from rulekit import RuleKit\n",
     "from rulekit.classification import RuleClassifier\n",
+    "from rulekit.params import Measures\n",
+    "\n",
+    "\n",
+    "RuleKit.init()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Helper function for calculating metrics"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 30,
+   "metadata": {},
+   "outputs": [],
+   "source": [
     "import sklearn.tree as scikit\n",
     "from sklearn.datasets import load_iris\n",
     "import math\n",
@@ -665,8 +684,6 @@
     "from typing import Tuple\n",
     "\n",
     "\n",
-    "RuleKit.init()\n",
-    "\n",
     "x = df_full.drop(['class'], axis=1)\n",
     "y = df_full['class']\n",
     "\n",
@@ -717,7 +734,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Rule induction on full dataset"
+    "## Rule induction on full dataset"
    ]
   },
   {
@@ -1288,7 +1305,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "C2 Measure generated rules"
+    "### C2 Measure generated rules"
    ]
   },
   {
@@ -1490,7 +1507,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "Correlation Measure generated rules"
+    "### Correlation Measure generated rules"
    ]
   },
   {
@@ -1572,7 +1589,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "RSS Measure generated rules"
+    "### RSS Measure generated rules"
    ]
   },
   {
@@ -1674,13 +1691,6 @@
     "skf = StratifiedKFold(n_splits=10)\n"
    ]
   },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "### C2 Measure"
-   ]
-  },
   {
    "cell_type": "code",
    "execution_count": null,
@@ -1927,7 +1937,7 @@
    "source": [
     "## Building model with tuned hyperparameters\n",
     "\n",
-    "Split dataset to train and test (80%/20%)."
+    "### Split dataset to train and test (80%/20%)."
    ]
   },
   {
@@ -1960,7 +1970,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Rules evaluation"
+    "Rules evaluation"
    ]
   },
   {
@@ -2104,12 +2114,7 @@
  "metadata": {
   "kernelspec": {
    "display_name": "Python 3.8.6 64-bit ('env': venv)",
-   "metadata": {
-    "interpreter": {
-     "hash": "dec7553cb5330dfedea12a286a9a356afe79f89559ef3eea677ea4e5427f600e"
-    }
-   },
-   "name": "python3"
+   "name": "rulekit"
   },
   "language_info": {
    "codemirror_mode": {
diff --git a/doc/build/html/search.html b/doc/build/html/search.html
index fee51a8..9ced50c 100644
--- a/doc/build/html/search.html
+++ b/doc/build/html/search.html
@@ -7,12 +7,13 @@
   
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
   
-  <title>Search &mdash; rulekit 1.3.0 documentation</title>
+  <title>Search &mdash; rulekit 1.5.2 documentation</title>
   
 
   
   <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
   <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="_static/copybutton.css" type="text/css" />
 
   
   
@@ -33,6 +34,8 @@
         <script src="_static/jquery.js"></script>
         <script src="_static/underscore.js"></script>
         <script src="_static/doctools.js"></script>
+        <script src="_static/clipboard.min.js"></script>
+        <script src="_static/copybutton.js"></script>
         <script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script>
     
     <script type="text/javascript" src="_static/js/theme.js"></script>
diff --git a/doc/build/html/searchindex.js b/doc/build/html/searchindex.js
index a88f08a..817fbd0 100644
--- a/doc/build/html/searchindex.js
+++ b/doc/build/html/searchindex.js
@@ -1,1 +1,1 @@
-Search.setIndex({docnames:["index","rst/autodoc","rst/autodoc/classification","rst/autodoc/params","rst/autodoc/regression","rst/autodoc/rules","rst/autodoc/stats","rst/autodoc/survival","rst/quick_start","rst/tutorials","rst/tutorials/classification"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,nbsphinx:3,sphinx:56},filenames:["index.rst","rst\\autodoc.rst","rst\\autodoc\\classification.rst","rst\\autodoc\\params.rst","rst\\autodoc\\regression.rst","rst\\autodoc\\rules.rst","rst\\autodoc\\stats.rst","rst\\autodoc\\survival.rst","rst\\quick_start.rst","rst\\tutorials.rst","rst\\tutorials\\classification.ipynb"],objects:{"rulekit.classification":{ExpertRuleClassifier:[2,0,1,""],RuleClassifier:[2,0,1,""]},"rulekit.classification.ExpertRuleClassifier":{fit:[2,1,1,""],get_coverage_matrix:[2,1,1,""],get_params:[2,1,1,""],predict:[2,1,1,""],predict_proba:[2,1,1,""],set_params:[2,1,1,""]},"rulekit.classification.RuleClassifier":{fit:[2,1,1,""],get_coverage_matrix:[2,1,1,""],get_params:[2,1,1,""],predict:[2,1,1,""],predict_proba:[2,1,1,""],set_params:[2,1,1,""]},"rulekit.main":{RuleKit:[1,0,1,""]},"rulekit.main.RuleKit":{init:[1,1,1,""],version:[1,3,1,""]},"rulekit.operator":{Data:[3,4,1,""]},"rulekit.params":{Measures:[3,0,1,""]},"rulekit.params.Measures":{Accuracy:[3,3,1,""],BinaryEntropy:[3,3,1,""],C1:[3,3,1,""],C2:[3,3,1,""],CFoil:[3,3,1,""],CN2Significnce:[3,3,1,""],Correlation:[3,3,1,""],Coverage:[3,3,1,""],FBayesianConfirmation:[3,3,1,""],FMeasure:[3,3,1,""],FullCoverage:[3,3,1,""],GMeasure:[3,3,1,""],GeoRSS:[3,3,1,""],InformationGain:[3,3,1,""],JMeasure:[3,3,1,""],Kappa:[3,3,1,""],Klosgen:[3,3,1,""],Laplace:[3,3,1,""],Lift:[3,3,1,""],LogRank:[3,3,1,""],LogicalSufficiency:[3,3,1,""],MEstimate:[3,3,1,""],MutualSupport:[3,3,1,""],Novelty:[3,3,1,""],OddsRatio:[3,3,1,""],OneWaySupport:[3,3,1,""],PawlakDependencyFactor:[3,3,1,""],Precision:[3,3,1,""],Q2:[3,3,1,""],RSS:[3,3,1,""],RelativeRisk:[3,3,1,""],Ripper:[3,3,1,""],RuleInterest:[3,3,1,""],SBayesian:[3,3,1,""],Sensitivity:[3,3,1,""],Specificity:[3,3,1,""],TwoWaySupport:[3,3,1,""],WeightedLaplace:[3,3,1,""],WeightedRelativeAccuracy:[3,3,1,""],YAILS:[3,3,1,""]},"rulekit.regression":{ExpertRuleRegressor:[4,0,1,""],RuleRegressor:[4,0,1,""]},"rulekit.regression.ExpertRuleRegressor":{fit:[4,1,1,""],get_coverage_matrix:[4,1,1,""],get_params:[4,1,1,""],predict:[4,1,1,""],set_params:[4,1,1,""]},"rulekit.regression.RuleRegressor":{fit:[4,1,1,""],get_coverage_matrix:[4,1,1,""],get_params:[4,1,1,""],predict:[4,1,1,""],set_params:[4,1,1,""]},"rulekit.rules":{Rule:[5,0,1,""],RuleSet:[5,0,1,""]},"rulekit.rules.Rule":{get_covering_information:[5,1,1,""],print_stats:[5,1,1,""],pvalue:[5,1,1,""],stats:[5,1,1,""],weight:[5,1,1,""],weighted_N:[5,1,1,""],weighted_P:[5,1,1,""],weighted_n:[5,1,1,""],weighted_p:[5,1,1,""]},"rulekit.rules.RuleSet":{calculate_avg_rule_coverage:[5,1,1,""],calculate_avg_rule_precision:[5,1,1,""],calculate_avg_rule_quality:[5,1,1,""],calculate_conditions_count:[5,1,1,""],calculate_induced_conditions_count:[5,1,1,""],calculate_significance:[5,1,1,""],calculate_significance_fdr:[5,1,1,""],calculate_significance_fwer:[5,1,1,""],growing_time:[5,1,1,""],is_voting:[5,1,1,""],parameters:[5,1,1,""],pruning_time:[5,1,1,""],rules:[5,1,1,""],stats:[5,1,1,""],total_time:[5,1,1,""]},"rulekit.stats":{RuleSetStatistics:[6,0,1,""],RuleStatistics:[6,0,1,""]},"rulekit.stats.RuleSetStatistics":{SIGNIFICANCE_LEVEL:[6,3,1,""]},"rulekit.stats.RuleStatistics":{N:[6,3,1,""],P:[6,3,1,""],n:[6,3,1,""],p:[6,3,1,""],pvalue:[6,3,1,""],weight:[6,3,1,""]},"rulekit.survival":{ExpertSurvivalRules:[7,0,1,""],SurvivalRules:[7,0,1,""]},"rulekit.survival.ExpertSurvivalRules":{fit:[7,1,1,""],get_coverage_matrix:[7,1,1,""],get_params:[7,1,1,""],predict:[7,1,1,""],set_params:[7,1,1,""]},"rulekit.survival.SurvivalRules":{fit:[7,1,1,""],get_coverage_matrix:[7,1,1,""],get_params:[7,1,1,""],predict:[7,1,1,""],set_params:[7,1,1,""]},rulekit:{main:[1,2,0,"-"],params:[3,2,0,"-"],rules:[5,2,0,"-"],stats:[6,2,0,"-"]}},objnames:{"0":["py","class","Python class"],"1":["py","method","Python method"],"2":["py","module","Python module"],"3":["py","attribute","Python attribute"],"4":["py","data","Python data"]},objtypes:{"0":"py:class","1":"py:method","2":"py:module","3":"py:attribute","4":"py:data"},terms:{"000000":10,"000000e":10,"004644":10,"005618":10,"011781":10,"012022":10,"013186":10,"015023":10,"015570":10,"024252e":10,"025579":10,"031233":10,"031734":10,"032530":10,"034304":10,"045394":10,"045873":10,"047367":10,"049264":10,"058208":10,"063738":10,"065789":10,"067724":10,"068001":10,"071774":10,"073023":10,"077399":10,"083204":10,"096047":10,"100000":10,"1005720":10,"1006585":10,"100929":10,"101139":10,"10150":10,"101710":10,"1026530":10,"1028":10,"1029":10,"103":10,"10350":10,"104":10,"1048":10,"10495":10,"105":10,"1050":10,"105885":10,"106":10,"1062020":10,"106422":10,"106776":10,"107":10,"108":10,"108000":10,"109":10,"10915":10,"110":10,"1133675":10,"1139":10,"114":10,"1141":10,"1148":10,"1150":10,"1151":10,"115450":10,"116":10,"1161025":10,"117575":10,"117647":10,"118":10,"119":10,"120":10,"12000":10,"12050":10,"1210":10,"12145":10,"122":10,"122812":10,"123":10,"123791":10,"123990":10,"124":10,"1245":10,"1250":10,"1252":10,"1253":10,"12565":10,"126350":10,"1270":10,"127635":10,"128":10,"1288":10,"1300":10,"131":10,"1328":10,"133":10,"1331":10,"13350":10,"134125":10,"1342":10,"135":10,"1350":10,"135285":10,"1361":10,"13675":10,"13700":10,"1372":10,"13725":10,"1378":10,"13850":10,"138665":10,"1394":10,"140239":10,"140447":10,"1410":10,"1414":10,"141539":10,"1427":10,"14350":10,"144":10,"1441":10,"1443":10,"144410":10,"1445":10,"1482055":10,"1485":10,"1500":10,"1505475":10,"1510":10,"152":10,"15200":10,"153":10,"154025":10,"1548":10,"1550":10,"157":10,"158":10,"160":10,"1600":10,"1603":10,"1635":10,"1650":10,"165153":10,"1653":10,"1655":10,"166":10,"166000e":10,"166556":10,"1674705":10,"16805":10,"168386":10,"1684":10,"1700":10,"1713980":10,"1732":10,"1733075":10,"173815":10,"1747":10,"1752":10,"176":10,"1760":10,"17635":10,"17640":10,"17700":10,"178":10,"17850":10,"1789250":10,"1798":10,"180079":10,"181":10,"1822":10,"1831":10,"1832":10,"1836":10,"184":10,"1844":10,"18500":10,"18585":10,"186":10,"1865":10,"18810":10,"188542":10,"189505":10,"190":10,"19245":10,"19310":10,"19357":10,"193885":10,"194":10,"195":10,"1950":10,"19510":10,"1959":10,"19670":10,"197777":10,"2000":10,"2004":10,"201650":10,"20270":10,"20450":10,"20485":10,"20525":10,"2056":10,"20560":10,"20610":10,"20650":10,"2068":10,"207":10,"207270":10,"2078":10,"20840":10,"20930":10,"2109":10,"21260":10,"213225":10,"21365":10,"2150":10,"2168":10,"217":10,"21765":10,"2185":10,"21865":10,"2200":10,"220205":10,"220216":10,"2208":10,"2257":10,"229412":10,"230":10,"2300":10,"230297":10,"2307":10,"233":10,"233333":10,"2345":10,"2350":10,"2361":10,"237":10,"240":10,"2400":10,"2407":10,"241820":10,"24700":10,"247962":10,"250":10,"2500":10,"25000":10,"250000":10,"25125":10,"25145":10,"25150":10,"25250":10,"25310":10,"254130":10,"256":10,"25665":10,"257143":10,"2584":10,"259":10,"2600":10,"266667":10,"2681":10,"269":10,"270898":10,"27100":10,"27275":10,"2733":10,"27350":10,"27430":10,"275674":10,"27650":10,"279059":10,"280576":10,"28105":10,"283250e":10,"28515":10,"2888":10,"289":10,"2892":10,"289474":10,"2902":10,"29105":10,"29155":10,"2917":10,"29195":10,"29200":10,"292005e":10,"2945":10,"29510":10,"297":10,"29945":10,"300000":10,"3011":10,"3018":10,"303411":10,"305":10,"306":10,"312":10,"31245":10,"3146":10,"3150":10,"31615":10,"31790":10,"31805":10,"318735":10,"319":10,"319051":10,"3200":10,"321259":10,"324":10,"32455":10,"325":10,"3250":10,"3260":10,"32635":10,"32675":10,"32680":10,"32750":10,"32770":10,"328324":10,"32875":10,"32925":10,"329832":10,"334":10,"3350":10,"34260":10,"34315":10,"34360":10,"346":10,"350":10,"3500":10,"35000":10,"3508":10,"354":10,"35480":10,"360000":10,"36050":10,"361":10,"361111":10,"362":10,"36280":10,"364":10,"364616":10,"36470":10,"364706":10,"365782":10,"36590":10,"366505":10,"366864":10,"3700":10,"37085":10,"373295":10,"375774":10,"378":10,"378500":10,"379":10,"380":10,"38250":10,"38315":10,"387640":10,"3881":10,"392":10,"392530":10,"392802":10,"393":10,"39305":10,"393576":10,"393900":10,"395":10,"3950":10,"396":10,"396505":10,"39695":10,"400000":10,"40050":10,"402000":10,"40210":10,"40245":10,"40500":10,"40650":10,"420254":10,"42165":10,"42200":10,"422215":10,"42430":10,"4278":10,"4300":10,"431429":10,"43280":10,"435":10,"4400":10,"444098":10,"4455":10,"44750":10,"44780":10,"449":10,"44960":10,"450":10,"4500":10,"4518":10,"45240":10,"45255":10,"454882":10,"4565":10,"45830":10,"4640":10,"46530":10,"46690":10,"46870":10,"46930":10,"470":10,"4700":10,"472075":10,"473":10,"479177":10,"483":10,"484":10,"48545":10,"486010":10,"486175":10,"49095":10,"49265":10,"493095":10,"493224":10,"49585":10,"4975":10,"5050":10,"50765":10,"508210":10,"508901":10,"51290":10,"514":10,"516":10,"51605":10,"517241":10,"52010":10,"52070":10,"521":10,"522":10,"522949":10,"523":10,"525":10,"52565":10,"526":10,"531845":10,"535887":10,"536":10,"537":10,"538":10,"542":10,"544010":10,"548500e":10,"54930":10,"550":10,"5500":10,"55365":10,"556":10,"558824":10,"559084":10,"561798":10,"562":10,"562653":10,"571":10,"5750":10,"57680":10,"579334":10,"58310":10,"584000e":10,"58435":10,"58515":10,"585424":10,"585900":10,"587":10,"590373":10,"595650e":10,"600000":10,"600414":10,"606":10,"61125":10,"61240":10,"61250":10,"618956":10,"621":10,"622815":10,"639193":10,"642325":10,"64310":10,"64725":10,"649":10,"649359":10,"650":10,"65000":10,"651":10,"652536":10,"653":10,"660191":10,"66235":10,"662435":10,"66275":10,"66335":10,"664":10,"669":10,"673":10,"673301":10,"673479":10,"682882":10,"684995":10,"692544":10,"698":10,"698529":10,"703425":10,"71000":10,"712":10,"715465":10,"716085":10,"722841":10,"725":10,"7250":10,"728":10,"732":10,"732075":10,"735":10,"740":10,"746460":10,"746612":10,"750":10,"7500":10,"75000":10,"752809":10,"754":10,"75455":10,"7600":10,"762":10,"764":10,"767":10,"769":10,"769663":10,"769710":10,"77100":10,"772":10,"777962":10,"778426":10,"7815":10,"783772":10,"786":10,"7870":10,"788":10,"789743":10,"791":10,"796":10,"797":10,"799855":10,"804":10,"808201":10,"80845":10,"813":10,"81505":10,"81890":10,"81935":10,"826925":10,"833222":10,"836":10,"837":10,"838":10,"850":10,"8500":10,"850619":10,"852020":10,"85450":10,"859520":10,"862069":10,"868421":10,"871226":10,"873809":10,"876209":10,"878110":10,"878503":10,"879310":10,"884413":10,"887":10,"893224":10,"894":10,"894737":10,"8950":10,"899071":10,"900000":10,"901":10,"901979":10,"9060":10,"909509":10,"9110":10,"913023":10,"916631":10,"916796":10,"919191":10,"920751":10,"921053":10,"922601":10,"931373":10,"933333":10,"934630":10,"9350":10,"938":10,"939956":10,"947092":10,"950":10,"9500":10,"950000":10,"951229":10,"954127":10,"9550":10,"955280":10,"955675":10,"956999":10,"9600":10,"962379":10,"966199":10,"968266":10,"969782":10,"971417":10,"973154":10,"977":10,"9850":10,"99210":10,"994":10,"997100":10,"997291":10,"boolean":[2,4,7],"class":[1,2,3,4,5,6,7],"default":[2,4,6,7],"enum":3,"final":8,"float":[2,5,6],"function":[0,8],"import":[8,10],"int":[1,2,4,6,7,10],"new":[2,4,7],"return":[2,4,5,7,10],"static":1,"true":[2,4,7,10],"while":10,AND:10,For:8,THEN:10,The:8,__dict__:10,__version__:8,about:[3,5,7],account:[5,6],accuraci:[3,8,10],accuracy_scor:[8,10],add:8,added:[2,4,7],addit:2,aim:0,algorithm:0,alia:3,all:[0,5,8],alpha:5,also:[2,4,7,8],alwai:[2,4,7],ani:[1,2,4,7,8],arff:10,arrai:10,assum:[5,6],astyp:10,attribut:[2,4,7],automat:[2,4,7],autopct:10,averag:[5,6,10],avg_rule_coverag:[6,10],avg_rule_precis:[6,10],avg_rule_qu:[6,10],ax1:10,axi:10,bac:10,balanc:10,balanced_accuraci:10,balanced_accuracy_scor:10,base:[0,3],been:2,befor:[1,8],begin:8,being:[2,8],best:10,best_params_:10,best_score_:10,between:8,binaryentropi:3,bool:[2,4,7],both:8,build:[2,4,7],bump:10,c2_confusion_matrix:10,c2_prediction_metr:10,c2_ruleset:10,c2_ruleset_stat:10,calcul:[2,4,7],calculate_avg_rule_coverag:5,calculate_avg_rule_precis:5,calculate_avg_rule_qu:5,calculate_conditions_count:5,calculate_induced_conditions_count:5,calculate_signific:5,calculate_significance_fdr:5,calculate_significance_fw:5,call:[1,8],can:[2,3,4,7,8,10],cell:[2,4,7],certain:[2,4,7],cfoil:3,chang:10,characterist:10,check:8,classif:[0,1,4,7,8,9],classifi:8,classification_metr:10,clf:10,cn2significnc:3,code:0,cohen_kappa_scor:10,column:[2,4,7,10],compat:0,comput:8,concat:10,condit:[2,4,5,6,7],conditions_per_rul:[6,10],configur:1,conflict:10,confus:10,confusion_matrix:10,consid:[2,4,7],consider_other_class:2,construct:[5,6],constructor:[2,4,7],contain:[2,4,5,7],content:[0,1,9],core:[2,3,4,7],corr_confusion_matrix:10,corr_ruleset:10,correct:[5,6],correctli:8,correl:[2,3,4,10],could:[2,4,7],count:[5,10],cover:[0,2,4,5,6,7,10],coverag:[2,3,4,5,6,7],coverage_matrix:[2,4,7],covering_data:5,cross:8,data:[2,3,4,7,8,10],datafram:[2,3,4,7,10],dataset:[2,4,7,8],deep:[2,4,7],def:10,defin:[2,4,10],describ:10,df_full:10,dict:[2,4,5,7,10],dictionari:[2,4,5,7,10],differ:[3,8],directori:8,disabl:[2,4,7],discoveri:[5,6],displai:10,document:0,doesn:[2,4,7],don:8,done:8,download:[8,10],drop:10,dtype:10,dure:[2,3,4,5],each:[2,3,4,7],eas:8,easi:0,either:[2,4,7],element:[2,4,7],enabl:[2,4,7],enable_prun:[2,4,7],end:8,environment:8,equal:[1,10],error:[5,6,8],estim:10,etc:8,everi:[2,4,7,8],everyth:8,exampl:[2,4,7,8,10],except:1,execut:[2,4,7],expert:2,expert_forbidden_condit:[2,4,7],expert_preferred_condit:[2,4,7],expert_rul:[2,4,7],expertruleclassifi:2,expertruleregressor:4,expertsurvivalrul:7,extend:[2,4,7],extend_using_automat:[2,4,7],extend_using_pref:[2,4,7],fail:[1,8],fall:10,fals:[2,4,5,6,7,10],familii:[5,6],fbayesianconfirm:3,fdr_pvalu:[6,10],field:5,fig1:10,file:[1,8],fine:8,first:[2,4,7,8],fit:[2,4,7,8,10],flag:2,float64:10,fmeasur:3,forbidden:[2,4,7],forget:8,format:5,fowlk:10,fowlkes_mallows_scor:10,fraction:[5,6],fraction_fdr_signific:[6,10],fraction_fwer_signific:[6,10],fraction_signific:[6,10],frame:[2,3,4,7],from:[2,4,7,8,10],from_record:10,fulfil:[2,4,7],fullcoverag:3,fwer_pvalu:[6,10],gener:10,genergi:10,geometr:10,georss:3,get:[8,10],get_coverage_matrix:[2,4,7],get_covering_inform:5,get_param:[2,4,7],get_prediction_metr:10,get_ruleset_stat:10,ghazard:10,gimpul:10,give:0,given:[2,4,7],gmeasur:3,goenergi:10,goimpul:10,gonna:10,grid:10,grid_result:10,grid_search:10,gridsearchcv:10,group:10,grow:[2,4,5,6,7],growing_tim:5,has:2,have:8,head:8,heap:1,here:[3,8,10],hyper:8,hyperparamet:[2,4,7],ignor:[2,4,7],ignore_miss:[2,4,7],iloc:10,implement:3,inbuil:10,index:10,indic:[2,4,5,7],induc:[2,4,5,6,7],induce_using_automat:[2,4,7],induce_using_pref:[2,4,7],induced_conditions_per_rul:[6,10],induct:[0,2,3,4,5],induction_measur:[2,4,7,10],inf:10,inform:5,informationgain:3,init:[1,8,10],initi:[1,2,4,7],initial_heap_s:1,instead:2,integ:[2,4,7],integr:0,ipython:10,iri:8,is_vot:5,its:[3,8],itself:8,jar:[1,8],java:8,java_hom:8,java_object:5,jdk:8,jmeasur:3,jre:8,just:2,jvm:1,kappa:[3,10],klosgen:3,knowledg:2,label:[2,4,7,10],lambda:10,laplac:3,larg:[2,4,7],learn:[0,8],level:[5,6],librari:[0,8],lift:[3,10],limit:[2,4,7],linear_model:10,list:[2,3,4,5,7,10],load:1,load_iri:[8,10],loadarff:10,log_loss:10,logicalsuffici:3,logist:10,logisticregress:10,logrank:3,loss:10,mae:10,mai:8,main:1,make_blob:10,mallow:10,map:10,math:10,matplotlib:10,matrix:[2,4,7,10],max:[1,10],max_grow:[2,4,7],max_heap_s:1,maxenergi:10,maximum:[2,4,7],mean:[2,4,7,8,10],mean_absolute_error:10,measur:[2,3,4,7],measures_choic:10,mestim:3,method:[1,2],metric:[2,8],min:10,min_rule_cov:[2,4,7,10],minimum:[2,4,7],miss:[2,4,7],model:[0,2,4,7,8],model_select:10,model_stat:10,more:[3,8],multilabelbinar:10,multiset:[2,4,7],must:1,mutualsupport:3,n_split:10,name:[2,4,7],nbump:10,nbumps2:10,nbumps3:10,nbumps4:10,nbumps5:10,nbumps6:10,nbumps7:10,nbumps89:10,ndarrai:[2,3,4,7,10],need:8,neg:[2,4,5,6,7,10],negative_voting_conflict:10,non:[2,4,7],none:[1,2,4,7],notebook:[0,10],notic:8,novelti:3,now:8,npv:10,number:[2,4,5,6,7],numpi:[2,3,4,7,10],object:[2,4,5,7],oddsratio:3,omit:7,onc:8,one:[2,4,7,8,10],onewaysupport:3,onli:[2,8],open:8,oper:[1,2,3,4,7],option:[1,2,4,7],oracl:8,otherwis:2,out:10,packag:[0,1,10],padna:7,panda:[2,3,4,7,10],param:[2,3,4,7,10],param_grid:10,paramet:[1,2,4,5,7,8,10],pass:[2,4,7],pawlakdependencyfactor:3,per:[2,4,6,7,10],perform:[2,4,7],phase:[2,4,7],pie:10,pip:8,plt:10,posit:[2,4,5,6,7,10],ppv:10,precis:[3,5,6,10],predict:[2,4,7,8,10],predict_proba:2,prediction_metr:10,prefer:[2,4,7],preferred_attributes_per_rul:[2,4,7],preferred_conditions_per_rul:[2,4,7],preprocess:10,present:10,previous:[2,4,7],print:[5,8,10],print_stat:5,probabl:[2,8],problem:[0,2,4,7,10],prohibit:[2,4,7],project:0,properti:5,prune:[2,3,4,5,6,7],pruning_measur:[2,4,7,10],pruning_tim:5,psep:10,pvalu:[5,6,10],pyplot:10,python:[0,1,8],qualiti:[5,6],quick:0,rais:1,rang:10,rate:[5,6],ravel:10,readi:8,ream:3,regress:[0,1,7],relativerisk:3,repositori:8,repres:[2,4,5,7],requir:8,result:[2,4,7,10],return_metr:[2,10],ripper:3,row:[2,4,7,10],rss:[3,10],rss_confusion_matrix:10,rss_ruleset:10,rule:[0,1,2,4,6,7],ruleclassifi:[2,8,10],ruleinterest:3,rulekit:[1,2,3,4,5,6,7,8,10],rulelkit:8,ruleregressor:4,rules_count:[6,10],rules_per_exampl:10,ruleset:[2,4,5,6,7,10],ruleset_stat:10,rulesetstatist:6,rulestatist:6,run:8,same:[2,4,7,8],sbayesian:3,scikit:[0,8,10],scipi:10,score:10,screen:8,search:10,second:[2,4,5,6,7,8],section:8,seismic:10,seismoacoust:10,self:[2,4,7],senergi:10,sensit:[3,10],sequenti:0,set:[2,4,5,6,7,8],set_param:[2,4,7],setup:1,shadow:10,shift:10,should:[2,4,7,8],show:10,shuffl:10,signific:[5,6],significance_level:6,singl:[2,4,5,6,7],size:[1,10],skf:10,sklearn:[8,10],solv:10,some:2,special:[2,4,7],specif:[3,10],specifi:[2,4,7],split:10,sqrt:10,start:[0,1],startangl:10,stat:[5,6,10],statist:[1,5,10],std:10,step:8,str:[1,2,4,7,10],stratifiedkfold:10,string:[2,4,7],subplot:10,suitabl:0,summar:10,surviv:[0,1],survival_tim:7,survival_time_attr:7,survival_time_attribut:4,survivalrul:7,tabl:[0,1,9],take:10,target:8,tell:[2,4,7],test_index:10,test_siz:10,text:5,thi:[0,1,2,4,7,8,10],thing:8,time:[2,4,5,6,7],time_growing_:[6,10],time_pruning_:[6,10],time_total_:[6,10],tmp:10,todo:8,tool:0,topic:10,total_tim:5,train:[2,4,5,6,7,8,10],train_index:10,train_test_split:10,tree:10,tune:8,tupl:[2,4,7,10],tutori:[0,8,10],two:[5,8],twowaysupport:3,type:[1,2,3,4,5,6,7,10],uncov:[2,4,7],underhood:1,union:[2,3,4,7],upon:[2,4,7],usag:10,use:[2,4,7,8],used:[1,2,3,4,5,7,8],user:[2,4],using:[1,2,4,7,8,10],valid:8,valu:[2,3,4,5,6,7],value_count:10,valy:[2,4,7],variabl:8,versatil:0,version:[1,8],vote:[2,3,4,5,10],voting_conflict:10,voting_measur:[2,4,7,10],wai:0,wasn:2,weight:[5,6],weighted_n:5,weighted_p:5,weightedlaplac:[3,10],weightedrelativeaccuraci:3,what:8,when:7,where:[2,4,7],wherea:8,whether:[2,4,5,7],which:[2,4,7],wise:[5,6],without:8,wonder:8,work:8,wrapper:[0,1,8],writen:0,x_test:10,x_train:10,y_pred:10,y_test:10,y_train:10,y_true:10,yail:3,you:[3,8,10],youden:10,your:8},titles:["RuleKit","Code documentation","Classification","Parameters","Regression","Rules","Statistics","Survival","Quick start","Tutorials","Classification"],titleterms:{"class":10,"function":10,build:10,calcul:10,classif:[2,10],code:1,cross:10,dataset:10,decis:10,distribut:10,document:1,evalu:10,fold:10,full:10,helper:10,hyperparamet:10,induct:10,initi:8,instal:8,measur:10,metric:10,model:10,packag:8,paramet:3,quick:8,regress:4,rule:[5,10],rulekit:0,start:8,statist:6,stratifi:10,summari:10,surviv:7,test:10,tune:10,tutori:9,usag:8,valid:10}})
\ No newline at end of file
+Search.setIndex({docnames:["index","rst/autodoc","rst/autodoc/classification","rst/autodoc/params","rst/autodoc/regression","rst/autodoc/rules","rst/autodoc/stats","rst/autodoc/survival","rst/quick_start","rst/tutorials","rst/tutorials/classification","rst/tutorials/expert_rules","rst/tutorials/regression","rst/tutorials/survival"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,nbsphinx:3,sphinx:56},filenames:["index.rst","rst\\autodoc.rst","rst\\autodoc\\classification.rst","rst\\autodoc\\params.rst","rst\\autodoc\\regression.rst","rst\\autodoc\\rules.rst","rst\\autodoc\\stats.rst","rst\\autodoc\\survival.rst","rst\\quick_start.rst","rst\\tutorials.rst","rst\\tutorials\\classification.ipynb","rst\\tutorials\\expert_rules.ipynb","rst\\tutorials\\regression.ipynb","rst\\tutorials\\survival.ipynb"],objects:{"rulekit.classification":{ExpertRuleClassifier:[2,0,1,""],RuleClassifier:[2,0,1,""]},"rulekit.classification.ExpertRuleClassifier":{fit:[2,1,1,""],get_coverage_matrix:[2,1,1,""],get_params:[2,1,1,""],predict:[2,1,1,""],predict_proba:[2,1,1,""],score:[2,1,1,""]},"rulekit.classification.RuleClassifier":{fit:[2,1,1,""],get_coverage_matrix:[2,1,1,""],get_params:[2,1,1,""],predict:[2,1,1,""],predict_proba:[2,1,1,""],score:[2,1,1,""],set_params:[2,1,1,""]},"rulekit.main":{RuleKit:[1,0,1,""]},"rulekit.main.RuleKit":{init:[1,1,1,""],version:[1,3,1,""]},"rulekit.operator":{Data:[3,4,1,""]},"rulekit.params":{Measures:[3,0,1,""]},"rulekit.params.Measures":{Accuracy:[3,3,1,""],BinaryEntropy:[3,3,1,""],C1:[3,3,1,""],C2:[3,3,1,""],CFoil:[3,3,1,""],CN2Significnce:[3,3,1,""],Correlation:[3,3,1,""],Coverage:[3,3,1,""],FBayesianConfirmation:[3,3,1,""],FMeasure:[3,3,1,""],FullCoverage:[3,3,1,""],GMeasure:[3,3,1,""],GeoRSS:[3,3,1,""],InformationGain:[3,3,1,""],JMeasure:[3,3,1,""],Kappa:[3,3,1,""],Klosgen:[3,3,1,""],Laplace:[3,3,1,""],Lift:[3,3,1,""],LogRank:[3,3,1,""],LogicalSufficiency:[3,3,1,""],MEstimate:[3,3,1,""],MutualSupport:[3,3,1,""],Novelty:[3,3,1,""],OddsRatio:[3,3,1,""],OneWaySupport:[3,3,1,""],PawlakDependencyFactor:[3,3,1,""],Precision:[3,3,1,""],Q2:[3,3,1,""],RSS:[3,3,1,""],RelativeRisk:[3,3,1,""],Ripper:[3,3,1,""],RuleInterest:[3,3,1,""],SBayesian:[3,3,1,""],Sensitivity:[3,3,1,""],Specificity:[3,3,1,""],TwoWaySupport:[3,3,1,""],WeightedLaplace:[3,3,1,""],WeightedRelativeAccuracy:[3,3,1,""],YAILS:[3,3,1,""]},"rulekit.regression":{ExpertRuleRegressor:[4,0,1,""],RuleRegressor:[4,0,1,""]},"rulekit.regression.ExpertRuleRegressor":{fit:[4,1,1,""],get_coverage_matrix:[4,1,1,""],get_params:[4,1,1,""],predict:[4,1,1,""],score:[4,1,1,""]},"rulekit.regression.RuleRegressor":{fit:[4,1,1,""],get_coverage_matrix:[4,1,1,""],get_params:[4,1,1,""],predict:[4,1,1,""],score:[4,1,1,""],set_params:[4,1,1,""]},"rulekit.rules":{Rule:[5,0,1,""],RuleSet:[5,0,1,""]},"rulekit.rules.Rule":{get_covering_information:[5,1,1,""],print_stats:[5,1,1,""],pvalue:[5,1,1,""],stats:[5,1,1,""],weight:[5,1,1,""],weighted_N:[5,1,1,""],weighted_P:[5,1,1,""],weighted_n:[5,1,1,""],weighted_p:[5,1,1,""]},"rulekit.rules.RuleSet":{calculate_avg_rule_coverage:[5,1,1,""],calculate_avg_rule_precision:[5,1,1,""],calculate_avg_rule_quality:[5,1,1,""],calculate_conditions_count:[5,1,1,""],calculate_induced_conditions_count:[5,1,1,""],calculate_significance:[5,1,1,""],calculate_significance_fdr:[5,1,1,""],calculate_significance_fwer:[5,1,1,""],growing_time:[5,1,1,""],is_voting:[5,1,1,""],parameters:[5,1,1,""],pruning_time:[5,1,1,""],rules:[5,1,1,""],stats:[5,1,1,""],total_time:[5,1,1,""]},"rulekit.stats":{RuleSetStatistics:[6,0,1,""],RuleStatistics:[6,0,1,""]},"rulekit.stats.RuleSetStatistics":{SIGNIFICANCE_LEVEL:[6,3,1,""]},"rulekit.stats.RuleStatistics":{N:[6,3,1,""],P:[6,3,1,""],n:[6,3,1,""],p:[6,3,1,""],pvalue:[6,3,1,""],weight:[6,3,1,""]},"rulekit.survival":{ExpertSurvivalRules:[7,0,1,""],SurvivalRules:[7,0,1,""]},"rulekit.survival.ExpertSurvivalRules":{fit:[7,1,1,""],get_coverage_matrix:[7,1,1,""],get_params:[7,1,1,""],predict:[7,1,1,""],score:[7,1,1,""],set_params:[7,1,1,""]},"rulekit.survival.SurvivalRules":{fit:[7,1,1,""],get_coverage_matrix:[7,1,1,""],get_params:[7,1,1,""],predict:[7,1,1,""],score:[7,1,1,""],set_params:[7,1,1,""]},rulekit:{main:[1,2,0,"-"],params:[3,2,0,"-"],rules:[5,2,0,"-"],stats:[6,2,0,"-"]}},objnames:{"0":["py","class","Python class"],"1":["py","method","Python method"],"2":["py","module","Python module"],"3":["py","attribute","Python attribute"],"4":["py","data","Python data"]},objtypes:{"0":"py:class","1":"py:method","2":"py:module","3":"py:attribute","4":"py:data"},terms:{"00000":12,"000000":[10,12,13],"000000e":[10,12],"000007":12,"000017":12,"001971":13,"002043":13,"002328":13,"004644":10,"004967":12,"004968":12,"005618":10,"006913":12,"011781":10,"012022":10,"013186":10,"013230":13,"015023":10,"015570":10,"020000":13,"023018":12,"024252e":10,"025579":10,"028386":12,"031233":10,"031734":10,"031913":12,"032530":10,"032734":12,"034304":10,"038858":13,"039726":13,"040000":13,"042458":12,"042781":13,"043566":12,"045394":10,"045873":10,"046849":12,"047367":10,"049264":10,"049314":12,"04946":12,"049460":12,"050000":13,"058208":10,"063596":12,"063738":10,"065789":10,"067724":10,"068001":10,"071429":12,"071774":10,"073023":10,"077399":10,"077770":13,"078295":13,"078865":12,"083204":10,"092752":12,"095808":12,"096047":10,"096365":12,"096903":12,"099532":12,"0x2155f890880":13,"0x2aab5e8f550":13,"10000":11,"100000":[10,12],"1000000":13,"1004565":11,"1005720":10,"1006585":[10,11],"100929":10,"101139":10,"10150":10,"101710":10,"1026530":10,"1028":10,"1029":10,"103":[10,13],"10350":10,"104":10,"1048":10,"104913":12,"10495":10,"105":[10,12],"1050":10,"105885":10,"106":10,"1062020":[10,11],"106422":10,"106681":12,"106694":12,"1067":12,"106776":10,"1069":12,"107":10,"1070":12,"1071":12,"1072":[11,12],"1073":12,"1074":12,"1075":12,"1076":12,"1077":[11,12],"1078":12,"108":10,"108000":10,"109":[10,11,12],"10915":[10,11],"110":10,"1109":13,"111826":12,"112692":12,"113257":12,"1133675":10,"1139":[10,11],"114":10,"1141":10,"114682":12,"1148":10,"1150":[10,11],"1151":10,"115450":[10,11],"116":10,"1161025":10,"117105":12,"117575":10,"117647":10,"117809":13,"118":10,"119":10,"119912":12,"120":10,"12000":10,"12050":10,"120687":12,"1210":10,"12145":10,"121742":12,"122":10,"122812":10,"123":10,"123791":10,"123990":10,"124":10,"124060":12,"1245":10,"1250":10,"1252":[10,11],"1253":[10,11],"12565":10,"126350":10,"1270":10,"127635":10,"128":10,"1288":10,"1300":10,"131":[10,11],"1328":10,"133":10,"1331":[10,11],"13350":10,"13368":12,"133913":12,"134125":10,"1342":[10,11],"135":[10,11],"1350":10,"135285":10,"1361":10,"13675":10,"13700":10,"1372":10,"13725":10,"1378":10,"138080":12,"13850":10,"138665":10,"1394":10,"140239":10,"140447":10,"1410":10,"1414":10,"141539":10,"142504":12,"1427":[10,11],"142857":12,"143185":12,"143461":12,"14350":10,"144":10,"1441":10,"1443":10,"144410":10,"1445":[10,11],"145":12,"145382":12,"146711":12,"147825":12,"1482055":10,"1485":10,"1500":[10,11],"150155":12,"1505475":10,"1510":[10,11],"151703":12,"151715":12,"151750":12,"152":10,"15200":10,"152205":12,"153":[10,11],"153675":12,"154025":10,"1548":10,"154868":12,"1550":10,"157":10,"158":10,"160":10,"1600":10,"1603":10,"1604":13,"161747":13,"162":12,"162811":12,"163":13,"1635":10,"1650":10,"165153":10,"1653":[10,11],"1655":[10,11],"166":10,"166000e":10,"166556":10,"1674705":10,"167494":12,"167711":12,"167983":12,"168":13,"16805":[10,11],"168386":10,"1684":10,"168481":12,"1686":11,"1700":10,"170000":12,"171393":12,"1713980":10,"1732":10,"1733075":10,"173815":10,"17405":11,"1747":10,"1752":[10,11],"175348":12,"176":[10,11],"1760":10,"17635":10,"17640":10,"17700":10,"178":10,"17850":10,"178643":12,"1789250":10,"1798":10,"180079":10,"180926":12,"181":[10,11],"181535":12,"182":13,"1822":10,"183":13,"1831":10,"183108":12,"1832":10,"1836":10,"184":[10,13],"1844":10,"185":13,"18500":10,"18585":10,"186":[10,11,13],"1865":10,"187":13,"187964":12,"18810":10,"188542":10,"1895":13,"189505":10,"190":10,"19112015424542664":13,"192022":13,"19245":[10,11],"19310":10,"19357":10,"193885":10,"194":10,"195":10,"1950":10,"19510":10,"1959":[10,11],"19670":[10,11],"197185":12,"197777":10,"2000":10,"20000":12,"200000":[12,13],"200041":12,"2004":10,"200525":13,"201650":10,"2019":11,"20270":10,"204132":13,"2043":13,"20450":10,"20485":10,"20525":10,"2056":10,"20560":10,"20610":10,"20650":10,"2068":[10,11],"207":10,"207270":10,"2078":10,"20840":10,"209023":12,"20930":10,"2109":10,"21260":10,"2132":11,"213225":10,"21365":10,"2150":10,"2154545054362314":13,"2168":10,"217":10,"21765":10,"2184":11,"2185":10,"21865":10,"2200":10,"220205":10,"220216":10,"2208":10,"222068":12,"222395":12,"2257":10,"228297":13,"229412":10,"230":10,"2300":10,"230297":10,"2307":10,"233":10,"233333":10,"2345":10,"2350":10,"2361":10,"236627":12,"237":10,"240":[10,11],"2400":10,"2407":10,"241820":10,"24666778331912664":13,"24700":10,"247962":10,"2489":11,"250":[10,11],"2500":[10,11],"25000":10,"250000":10,"25125":10,"25145":10,"25150":10,"25250":10,"252689":13,"25310":10,"254130":10,"256":10,"25665":10,"257143":10,"2584":10,"259":10,"2600":10,"260000":12,"266":13,"266667":[10,12],"26752":13,"2681":10,"268429":12,"269":10,"269366":12,"270898":10,"27100":10,"271826":13,"27275":10,"2733":[10,11],"27350":10,"27430":10,"275674":10,"27650":10,"279059":10,"280576":10,"28105":10,"283250e":10,"28515":10,"28649":12,"286917":12,"288242":13,"2888":10,"289":[10,11],"2892":[10,11],"289474":10,"2902":10,"29105":10,"29155":10,"2917":10,"29195":10,"29200":10,"292005e":10,"2945":10,"294734":12,"29510":10,"2965":11,"297":10,"29945":10,"300000":[10,12],"3011":10,"3018":10,"303411":10,"305":10,"305639":13,"306":[10,11],"3065":11,"308573":12,"312":[10,11],"31245":10,"3146":10,"3150":[10,11],"31615":10,"31790":10,"31805":10,"318735":[10,11],"319":10,"319051":10,"3200":10,"32020":11,"321259":10,"324":10,"32455":10,"325":10,"3250":10,"325000":13,"3260":10,"32635":10,"32675":10,"32680":10,"32750":10,"32770":10,"32795":11,"328324":10,"32875":10,"32925":10,"329405":13,"329832":10,"334":10,"3350":10,"3364":13,"338760":13,"342466":13,"34260":10,"34315":10,"34360":10,"346":10,"347945":13,"34880":11,"350":[10,11],"3500":10,"35000":10,"350000":[12,13],"3508":10,"354":10,"35480":10,"358904":13,"360000":[10,12],"36050":[10,11],"361":10,"361111":10,"362":10,"36280":10,"363960":12,"364":10,"364616":10,"36470":10,"364706":10,"365782":10,"36590":10,"366505":10,"366864":10,"3700":10,"37085":[10,11],"373295":10,"375774":10,"378":[10,11],"378500":[10,11],"379":10,"380":10,"382":13,"38250":10,"38315":10,"385":13,"3850":11,"385096":13,"386010":11,"387640":10,"3881":[10,11],"389676":13,"392":10,"392530":[10,11],"392802":10,"393":10,"39305":10,"393576":10,"393900":10,"394521":13,"395":10,"3950":[10,11],"396":[10,11],"396505":10,"39695":10,"399725":12,"400000":[10,12,13],"40050":10,"402000":10,"40210":10,"40245":10,"40500":[10,11],"40650":[10,11],"40735":11,"407688":13,"407715":12,"412373":12,"415000":13,"418425":13,"420254":10,"42165":10,"42200":10,"422215":10,"42430":10,"4278":10,"4300":10,"431429":10,"43280":10,"435":[10,13],"4400":10,"443372":12,"444098":10,"4455":10,"44750":10,"44780":10,"449":10,"44960":10,"450":10,"4500":10,"450000":12,"4518":10,"45240":10,"45255":10,"454545":13,"454882":10,"4565":10,"45830":10,"460000":12,"461922":12,"4640":10,"46530":10,"46690":10,"46870":10,"46930":10,"470":[10,11],"4700":10,"472068":13,"472075":10,"473":10,"479177":10,"479965":12,"481647":13,"481968":12,"483":10,"484":10,"48545":[10,11],"486010":10,"486175":10,"49095":10,"49265":10,"493095":10,"493224":10,"493354":12,"49585":[10,11],"4975":10,"498566":12,"499266":13,"50000":12,"500000":[12,13],"500142":11,"5050":10,"50765":10,"508210":[10,11],"508901":10,"51290":10,"514":10,"516":10,"51605":10,"517241":10,"52010":10,"52070":10,"521":[10,11],"522":10,"522750":13,"522949":10,"523":10,"525":10,"52565":10,"526":10,"531845":10,"535887":10,"536":10,"537":[10,11],"538":[10,11],"538408":12,"542":10,"544010":10,"548500e":10,"54930":[10,11],"550":[10,11],"5500":[10,11],"550000":12,"550685":13,"553425":13,"55365":10,"556":10,"556652":12,"558824":10,"559084":10,"560970":13,"561798":10,"562":10,"562653":10,"571":10,"5728":12,"5750":[10,11],"575342":13,"57680":10,"579334":10,"58310":[10,11],"584000e":10,"58435":10,"58515":10,"585424":10,"585900":10,"587":10,"587745":11,"589495":13,"589923":12,"590373":10,"595650e":10,"598716":13,"600000":[10,12,13],"600414":10,"605":11,"606":10,"61125":10,"61240":10,"61250":[10,11],"618956":10,"621":10,"622815":10,"634":13,"634250":11,"635559":13,"639193":10,"640000":12,"642325":10,"643009":12,"64310":10,"646575":13,"64725":10,"647903":12,"649":10,"649359":10,"650":[10,11],"65000":10,"650922":13,"651":10,"652536":10,"653":10,"660191":10,"66235":10,"662435":[10,11],"66275":10,"66335":10,"664":10,"664758":12,"669":10,"673":10,"673155":11,"673301":10,"673479":10,"6750":11,"676":13,"682882":10,"684932":13,"684995":10,"687500":13,"691690":12,"692544":10,"695":11,"698":10,"698529":10,"700000":[12,13],"703425":10,"71000":10,"712":10,"715465":10,"716085":10,"719695":12,"720000":13,"722841":10,"724619":12,"725":10,"7250":10,"728":10,"729990":13,"732":10,"732075":10,"734462":13,"735":10,"736225":12,"740":10,"743316":13,"745714":13,"746460":10,"746612":10,"750":[10,11],"7500":[10,11],"75000":[10,11],"752809":10,"754":10,"75455":10,"7600":10,"762":10,"764":10,"767":10,"768065":12,"769":10,"769663":10,"769710":10,"77100":10,"772":10,"775007":12,"775408":13,"777962":10,"778426":10,"778758":12,"780000":13,"780822":13,"7815":10,"783772":10,"785000":13,"785714":12,"786":10,"786683":13,"7870":10,"788":10,"789167":13,"789743":10,"790000":13,"791":10,"796":[10,11],"797":10,"79825":12,"799559":12,"799855":10,"80000":12,"800000":12,"801081":13,"801878":12,"804":10,"808201":10,"80845":10,"8100":11,"813":10,"81505":10,"815327":12,"81890":10,"819239":12,"81935":10,"820000":12,"823565":13,"826925":10,"828241":12,"830137":13,"833222":10,"835207":12,"835600":12,"836":10,"837":10,"838":10,"840021e":12,"849":13,"849569":12,"850":10,"8500":10,"850067":12,"850619":10,"852020":10,"85450":[10,11],"857143":12,"859128":13,"859520":10,"862069":10,"866310":13,"868421":10,"868585":12,"871226":10,"873809":10,"875078":12,"876209":10,"878110":10,"878503":10,"879310":10,"884413":10,"887":10,"891781":13,"892996":12,"893224":10,"894":10,"894737":10,"8950":10,"895890":13,"899071":10,"900000":[10,12],"901":[10,11],"901979":10,"9060":10,"90937":13,"909509":10,"910077":12,"910635":12,"9110":10,"913023":10,"914386":13,"916631":10,"916796":10,"919191":10,"919786":13,"920751":10,"921053":10,"922601":10,"927":11,"927018":13,"931373":10,"931551":13,"933333":10,"934630":[10,11],"9350":10,"935456":12,"938":[10,13],"939956":10,"944984":12,"947092":10,"948135":13,"950":10,"9500":10,"950000":10,"951229":10,"952062":12,"954127":10,"9550":10,"955280":10,"955675":10,"956999":10,"9600":[10,11],"962379":10,"96260":11,"966199":10,"966667":12,"966684":12,"967428e":12,"967460e":12,"968198":12,"968266":10,"968345e":12,"969782":10,"971417":10,"972255":13,"973154":10,"977":10,"980000":12,"9850":10,"99210":10,"994":10,"997100":10,"997291":10,"998029":13,"999":13,"boolean":[2,4,7],"class":[1,2,3,4,5,6,7,11],"default":[2,4,6,7],"enum":3,"final":8,"float":[2,4,5,6,7],"function":[0,7,8],"import":8,"int":[1,2,4,6,7,10,11],"new":[2,4,7],"return":[2,4,5,7,10,12,13],"static":1,"true":[2,4,7,10,11,12,13],"while":[10,12,13],AND:[10,11,12,13],For:8,IBS:7,THEN:[10,11,12,13],The:8,__dict__:[10,12,13],__version__:8,_java_object:[12,13],abomatch:13,about:[3,5,7],abs:12,absolute_error:12,account:[5,6],accuraci:[2,3,8,10],accuracy_scor:[8,10],add:[],added:[2,4,7],addit:[2,11],aim:0,algorithm:[0,11],alia:3,all:[0,5,7,8],allow:11,alpha:5,also:[2,4,7,8],alwai:[2,4,7],ancrecoveri:[11,13],ani:[1,2,4,7,8,11],append:13,arff:[10,11,12,13],arrai:10,as038:[11,12],assum:[5,6],astyp:[10,11],attr:11,attribut:[2,4,7,11,12,13],automat:[2,4,7],autopct:10,averag:[5,6,10,13],avg:12,avg_rule_coverag:[6,10,12,13],avg_rule_precis:[6,10,12,13],avg_rule_qu:[6,10,12,13],ax1:10,axessubplot:13,axi:[10,11,12,13],ba13:[11,12],bac:10,balanc:10,balanced_accuraci:10,balanced_accuracy_scor:10,base:[0,3],basic:[11,12,13],been:2,befor:[1,8],begin:8,being:[2,8],best:[10,12,13],best_estimator_:12,best_params_:[10,12,13],best_score_:[10,12,13],between:[7,8],binaryentropi:3,bmt:[11,13],bool:[2,4,7],both:8,brier:[7,13],build:[2,4,7],bump:[10,11],c2_confusion_matrix:10,c2_predict:12,c2_prediction_metr:10,c2_reg:12,c2_regression_metr:12,c2_ruleset:[10,12],c2_ruleset_stat:10,calcul:[2,4,7,13],calculate_avg_rule_coverag:5,calculate_avg_rule_precis:5,calculate_avg_rule_qu:5,calculate_conditions_count:5,calculate_induced_conditions_count:5,calculate_signific:5,calculate_significance_fdr:5,calculate_significance_fw:5,call:[1,8],can:[2,3,4,7,8,10,12,13],cd34kgx10d6:[11,13],cd3dcd34:[11,13],cd3dkgx10d8:[11,13],cell:[2,4,7],certain:[2,4,7],cfoil:3,chang:[10,12,13],characterist:10,check:8,ci_show:13,classif:[0,1,4,7,8,9],classifi:8,classification_metr:10,clf:[10,11],cn2significnc:3,code:[0,11,13],coeffici:4,cohen_kappa_scor:10,col:[11,13],column:[2,4,7,10,13],command:8,compat:0,comput:8,concat:[10,12,13],condit:[2,4,5,6,7],conditions_per_rul:[6,10,12,13],configur:1,conflict:10,confus:10,confusion_matrix:10,consid:[2,4,7],consider_other_class:2,construct:[5,6],constructor:[2,4,7],contain:[2,4,5,7],content:[0,1,9],core:[2,3,4,7],corr_confusion_matrix:10,corr_predict:12,corr_reg:12,corr_regression_metr:12,corr_ruleset:[10,12],corrcoef:12,correct:[5,6],correctli:8,correl:[2,3,4],correspond:7,could:[2,4,7],count:[5,10,12,13],cover:[0,2,4,5,6,7,10,12,13],coverag:[2,3,4,5,6,7],coverage_matrix:[2,4,7],covering_data:5,cp1252:[11,13],cross:8,data:[2,3,4,7,8,10,13],data_df:[11,13],datafram:[2,3,4,7,10,11,12],dataset:[2,4,7,8],datasets_path:[11,12,13],decod:[11,13],deep:[2,4,7],def:[10,12,13],defin:[2,4,10,12,13],del:[12,13],describ:[10,12,13],determin:4,df_full:10,dict:[2,4,5,7,10],dictionari:[2,4,5,7,10,12],differ:[3,7,8],directori:8,disabl:[2,4,7],discoveri:[5,6],displai:[10,12,13],dmm116:[11,12],document:0,doesn:[2,4,7],don:8,done:8,donorabo:13,donorag:[11,13],donorage35:[11,13],download:[8,10,12,13],download_jar:8,drop:[10,11,12,13],dtype:[10,13],dure:[2,3,4,5],each:[2,3,4,7,11],eas:8,easi:0,either:[2,4,7],element:[2,4,7],enabl:[2,4,7],enable_prun:[2,4,7],encod:[11,13],end:8,environment:8,equal:[1,10],error:[5,6,7,8],estim:[7,10,12,13],etc:8,evalu:10,event:7,everi:[2,4,7,8],everyth:8,exampl:[2,4,7,8,10,11,12,13],except:1,execut:[2,4,7],expert:[2,9],expert_forbidden_condit:[2,4,7,11],expert_preferred_condit:[2,4,7,11],expert_rul:[2,4,7,11],expertruleclassifi:[2,11],expertruleregressor:[4,11],expertsurvivalrul:[7,11],extcgvhd:[11,13],extend:[2,4,7],extend_using_automat:[2,4,7,11],extend_using_pref:[2,4,7,11],fail:[1,8],fall:10,fals:[2,4,5,6,7,10,11,12,13],familii:[5,6],fbayesianconfirm:3,fdr_pvalu:[6,10,12,13],field:5,fig1:10,file:[1,8,11,13],file_nam:[11,13],fine:8,first:[2,4,7,8],fit:[2,4,7,8,10,11,12,13],fix:[11,13],flag:2,float64:[10,13],fmeasur:3,follow:11,forb:11,forbidden:[2,4,7,11],forget:8,format:5,fowlk:10,fowlkes_mallows_scor:10,fraction:[5,6],fraction_fdr_signific:[6,10,12,13],fraction_fwer_signific:[6,10,12,13],fraction_signific:[6,10,12,13],frame:[2,3,4,7],from:[2,4,7,8,10,11,13],from_record:[10,12,13],fulfil:[2,4,7],fullcoverag:3,fwer_pvalu:[6,10,12,13],gendermatch:[11,13],gener:[],genergi:[10,11],geometr:10,georss:3,get:[8,10,12,13],get_coverage_matrix:[2,4,7],get_covering_inform:5,get_param:[2,4,7],get_prediction_metr:10,get_regression_metr:12,get_ruleset_stat:[10,12,13],ghazard:[10,11],gimpul:[10,11],github:8,give:0,given:[2,4,7],gmeasur:3,goenergi:[10,11],goimpul:[10,11],gonna:[10,12,13],grid:[10,12,13],grid_result:[10,12,13],grid_search:[10,12,13],gridsearchcv:[10,12,13],group:10,grow:[2,4,5,6,7],growing_tim:5,guid:11,guider:11,has:[2,11],have:8,head:8,heap:1,here:[3,8,10,12,13],hlamismatch:13,how:11,hyper:8,hyperparamet:[2,4,7],ibs:13,ignor:[2,4,7],ignore_miss:[2,4,7,12,13],iiiv:13,iloc:[10,12,13],implement:3,inbuil:[],inbuilt:[10,12,13],index:[10,12],indic:[2,4,5,7],induc:[2,4,5,6,7],induce_using_automat:[2,4,7,11],induce_using_pref:[2,4,7,11],induced_conditions_per_rul:[6,10,12,13],induct:[0,2,3,4,5],induction_measur:[2,4,10,12],inf:[10,11,12,13],inform:5,informationgain:3,init:[1,8],initi:[1,2,4,7,11],initial_heap_s:1,instead:2,integ:[2,4,7],integr:[0,7,13],integrated_brier_scor:13,introduc:11,ipython:10,iri:8,is_vot:5,its:[3,8],itself:8,jar:[1,8],java:8,java_hom:8,java_object:5,jdk:8,jmeasur:3,jre:8,just:2,jvm:1,kaplanmeierfitt:13,kappa:[3,10],kfold:12,klosgen:3,kmf:13,knowledg:2,label:[2,4,7,10,11,13],lambda:10,laplac:3,larg:[2,4,7],learn:[0,8],len:12,level:[5,6],librari:[0,8],lifelin:13,lift:[3,10],limit:[2,4,7],line2d:13,line:13,linear_model:10,list:[2,3,4,5,7,10],load:1,load_iri:[8,10],loadarff:[10,11,12,13],log_loss:10,logicalsuffici:3,logist:10,logisticregress:10,logrank:3,loss:10,mae:10,mai:8,main:1,make_blob:10,mallow:10,map:10,math:[10,12],matplotlib:[10,13],matrix:[2,4,7,10],max:[1,10,12,13],max_grow:[2,4,7,11],max_growing_condit:[12,13],max_heap_s:1,maxenergi:[10,11],maximum:[2,4,7],maximum_uncovered_fract:[12,13],mean:[2,4,7,8,10,12,13],mean_absolute_error:[10,12],mean_squared_error:12,measur:[2,3,4,11,13],measures_choic:[10,12],mestim:3,methan:[11,12],method:[1,2],metric:[2,8,13],min:[10,12,13],min_rule_cov:[2,4,7,10,11,12,13],minimum:[2,4,7],minimum_cov:[12,13],miss:[2,4,7],mm116:[11,12],mm116_pred:[11,12],mm31:[11,12],model:[0,2,4,7,8,11],model_select:[10,12,13],model_stat:10,more:[3,8],multilabelbinar:[10,12],multiset:[2,4,7],must:1,mutualsupport:3,n_split:[10,12,13],nae_denomin:12,name:[2,4,7,12,13],nan:[11,13],nbump:[10,11],nbumps2:[10,11],nbumps3:[10,11],nbumps4:[10,11],nbumps5:[10,11],nbumps6:10,nbumps7:10,nbumps89:10,ndarrai:[2,3,4,7,10],need:8,neg:[2,4,5,6,7,10],neg_root_mean_squared_error:12,negative_voting_conflict:10,non:[2,4,7],none:[1,2,4,7,11,13],normalized_absolute_error:12,notebook:[0,10,11,12,13],notic:8,novelti:3,now:8,npv:10,ntest:12,number:[2,4,5,6,7,12,13],numpi:[2,3,4,7,10,12,13],object:[2,4,5,7,11,12,13],observ:7,oddsratio:3,omit:7,onc:8,one:[2,4,7,8,10,12,13],onewaysupport:3,onli:[2,8],open:[8,11,13],oper:[1,2,3,4,7],option:[1,2,4,7],oracl:8,otherwis:2,out:10,over:7,overview:[12,13],packag:[0,1,10,12,13],padna:7,panda:[2,3,4,7,10,11,12,13],param:[2,3,4,10,11,12,13],param_grid:[10,12,13],paramet:[1,2,4,5,7,8,10,12,13],pass:[2,4,7],pawlakdependencyfactor:3,per:[2,4,6,7,10],perform:[2,4,7],pg072:[11,12],phase:[2,4,7],pie:10,pip:8,plot:13,plt:[10,13],pltrecoveri:[11,13],posit:[2,4,5,6,7,10],power:12,ppv:10,precis:[3,5,6,10],predict:[2,4,7,8,10,13],predict_proba:2,prediction_metr:10,prefer:[2,4,7,11],preferred_attributes_per_rul:[2,4,7],preferred_conditions_per_rul:[2,4,7],preprocess:[10,12],present:[10,11,12,13],previous:[2,4,7],print:[5,8,10,11,12,13],print_stat:5,probabl:[2,7,8,13],problem:[0,2,4,7,10,11,12,13],program:8,prohibit:[2,4,7],project:0,properti:5,prune:[2,3,4,5,6,7],pruning_en:[12,13],pruning_measur:[2,4,10,12],pruning_tim:5,psep:10,pvalu:[5,6,10,12,13],pyplot:[10,13],python:[0,1,8],qualiti:[5,6],quick:0,rais:1,rang:[10,12,13],rate:[5,6],ravel:10,rbodymass:[11,13],readi:8,ream:3,recipientabo:13,recipientag:[11,13],recipientgend:13,recipientrh:[11,13],reg:[11,12],regress:[0,1,7,9],regression_metr:12,relaps:[11,13],relative_error:12,relative_error_leni:12,relative_error_strict:12,relativerisk:3,releas:8,replac:[11,13],repositori:[],repres:[2,4,5,7],requir:8,result:[2,4,7,10,12,13],return_metr:[2,10],ripper:3,rmse:12,root_mean_squared_error:12,root_relative_squared_error:12,row:[2,4,7,10,13],rss:3,rss_confusion_matrix:10,rss_predict:12,rss_reg:12,rss_regression_metr:12,rss_ruleset:[10,12],rule:[0,1,2,4,6,7,9],ruleclassifi:[2,8,10,11],ruleinterest:3,rulekit:[1,2,3,4,5,6,7,8],rulelkit:8,ruleregressor:[4,12],rules_count:[6,10,12,13],rules_per_exampl:10,ruleset:[2,4,5,6,7,10,11,12],ruleset_stat:[10,12,13],rulesetstatist:6,rulestatist:6,run:8,same:[2,4,7,8],sbayesian:3,scheme:11,scikit:[0,8,10,12],scipi:[10,11,12,13],score:[2,4,7,10,12,13],scorer:13,screen:8,search:[10,12,13],second:[2,4,5,6,7,8],section:8,seismic:[10,11],seismoacoust:[10,11],select_dtyp:[11,13],self:[2,4,7],senergi:[10,11],sensit:[3,10],sequenti:0,set:[2,4,5,6,7,8,11],set_param:[2,4,7],setup:1,shadow:10,shape:[12,13],shift:[10,11],should:[2,4,7,8],show:[10,11],shuffl:[10,13],signific:[5,6],significance_level:6,sikora:11,singl:[2,4,5,6,7],size:[1,10],skf:[10,13],sklearn:[8,10,12,13],solv:[10,12,13],some:2,special:[2,4,7],specif:[3,10],specifi:[2,4,7],split:[],sqrt:[10,12],squar:[7,12],squared_correl:12,squared_error:12,squared_relative_error:12,srv:[11,13],stack:[11,13],start:[0,1],startangl:10,stat:[5,6,10,12,13],statist:[1,5,10,12,13],statu:7,std:[10,12,13],stemcellsourc:13,steop:[],step:8,str:[1,2,4,7,10,11,12,13],stratifiedkfold:[10,13],string:[2,4,7],subplot:10,suitabl:0,sum:12,summar:[7,10,12,13],surviv:[0,1,9],survival_metr:13,survival_statu:[11,13],survival_tim:[7,11,13],survival_time_attr:[7,11,13],survival_time_attribut:4,survivalrul:[7,13],tabl:[0,1,9],take:[10,12,13],target:[4,8],tell:[2,4,7],test:[2,7],test_df:12,test_file_nam:12,test_index:[10,13],test_siz:[10,13],text:5,thi:[0,1,2,4,7,8,10,11,12,13],thing:8,time:[2,4,5,6,7,13],time_growing_:[6,10,12,13],time_pruning_:[6,10,12,13],time_to_agvhd_iii_iv:13,time_total_:[6,10,12,13],timelin:13,tmp:[10,12,13],tmp_df:[11,13],todo:[],tool:0,topic:[10,12,13],total_tim:5,train:[2,4,5,6,7,8,11],train_df:12,train_file_nam:12,train_index:[10,13],train_test_split:[10,13],tree:[10,12],tune:8,tupl:[2,4,7,10,12],tutori:[0,8,10,11,12,13],two:[5,8],twowaysupport:3,type:[1,2,3,4,5,6,7,10,12],uncov:[2,4,7],underhood:1,union:[2,3,4,7],unstack:[11,13],upon:[2,4,7],usag:[10,11,12,13],use:[2,4,7,8],used:[1,2,3,4,5,7,8],user:[2,4,11],using:[1,2,4,7,8,10,13],valid:8,valu:[2,3,4,5,6,7,11],value_count:10,valy:[2,4,7],variabl:8,versatil:0,version:[1,8],vote:[2,3,4,5,10],voting_conflict:10,voting_measur:[2,4,10,12],wai:0,wasn:2,weight:[5,6],weighted_n:5,weighted_p:5,weightedlaplac:[3,10,12],weightedrelativeaccuraci:3,what:8,when:7,where:[2,4,7],wherea:8,whether:[2,4,5,7],which:[2,4,7,11],wise:[5,6],without:8,wonder:8,work:8,wrapper:[0,1,8],writen:0,wrt:[2,4,7],x_test:[10,12,13],x_train:[10,12,13],xlabel:13,y_pred:[10,12],y_test:[10,12,13],y_train:[10,12,13],y_true:[10,12],yail:3,you:[3,8,10,11,12,13],youden:10,your:8},titles:["RuleKit","Code documentation","Classification","Parameters","Regression","Rules","Statistics","Survival","Quick start","Tutorials","Classification","Expert Rules","Regression","Survival analysis"],titleterms:{"class":10,"function":[10,12,13],"import":[10,11,12,13],analysi:13,build:[10,13],calcul:[10,12],characterist:13,classif:[2,10,11],code:1,condit:11,correl:[10,12],creat:13,cross:[10,13],curv:13,datafram:13,dataset:[10,11,12,13],decis:10,defin:11,distribut:10,document:1,entir:13,evalu:[12,13],expert:11,file:12,fold:[10,13],from:12,full:[10,13],gener:[10,12,13],helper:[10,12,13],hyperparamet:[10,12,13],induct:[10,11,12,13],init:[10,11,12,13],initi:8,instal:8,kaplan:13,measur:[10,12],meier:13,metric:[10,12],model:[10,12,13],packag:8,paramet:3,predict:12,prepar:11,quick:8,regress:[4,11,12],rss:[10,12],rule:[5,10,11,12,13],rulekit:[0,10,11,12,13],ruleset:13,select:12,set:[12,13],split:[10,13],start:8,statist:6,stratifi:[10,13],summari:[10,12,13],surviv:[7,11,13],test:[10,12,13],train:[10,12,13],tune:[10,12,13],tutori:9,usag:8,using:12,valid:[10,12,13]}})
\ No newline at end of file
diff --git a/doc/requirements.txt b/doc/requirements.txt
index 3afde03..8d112b3 100644
--- a/doc/requirements.txt
+++ b/doc/requirements.txt
@@ -1,7 +1,8 @@
 Sphinx==3.5.3
 sphinx-rtd-theme==0.5.1
 nbsphinx==0.8.2
+sphinx-copybutton==0.3.1
+ipykernel==5.5.0
+pandoc==1.0.2
 ../
 
-ipykernel==5.5.0
-pandoc==1.0.2
\ No newline at end of file
diff --git a/doc/source/conf.py b/doc/source/conf.py
index c441f63..a107f90 100644
--- a/doc/source/conf.py
+++ b/doc/source/conf.py
@@ -12,6 +12,7 @@
 #
 import os
 import sys
+import re
 sys.path.insert(0, os.path.abspath('../..'))
 
 current_path = os.path.dirname(os.path.realpath(__file__))
@@ -22,7 +23,9 @@
 project = 'rulekit'
 copyright = '2021, ADAA'
 
-release = open(f'{current_path}/../../rulekit/VERSION.txt', mode='r').read().strip()
+release = open(f'{current_path}/../../rulekit/__init__.py', mode='r').read().strip()
+version_regex = r'__version__\s*=\s*\'{0,1}"{0,1}([^\'"]+)\'{0,1}"{0,1}'
+release = re.search(version_regex, release)[1]
 master_doc = 'index'
 
 source_suffix = [".rst", ".md"]
@@ -38,7 +41,8 @@
     'sphinx.ext.coverage', 
     'sphinx.ext.napoleon',
     'sphinx.ext.intersphinx',
-    'nbsphinx'
+    'nbsphinx',
+    'sphinx_copybutton'
 ]
 autoclass_content = 'both'
 # Add any paths that contain templates here, relative to this directory.
@@ -60,4 +64,4 @@
 # Add any paths that contain custom static files (such as style sheets) here,
 # relative to this directory. They are copied after the builtin static files,
 # so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ['_static']
\ No newline at end of file
+# html_static_path = ['_static']
\ No newline at end of file
diff --git a/doc/source/index.rst b/doc/source/index.rst
index 68ee1c8..d713903 100644
--- a/doc/source/index.rst
+++ b/doc/source/index.rst
@@ -2,12 +2,12 @@
 RuleKit
 ========================================
 
-This package is python wrapper for `RuleKit <https://github.com/adaa-polsl/RuleKit/>`_ library (a versatile tool for rule learning). 
+This package is python wrapper for `RuleKit <https://github.com/adaa-polsl/RuleKit/>`__ library (a versatile tool for rule learning). 
 Based on a sequential covering induction algorithm, it is suitable for:
 
 - classification, 
 
-- regression 
+- regression, 
 
 - survival problems.
 
diff --git a/doc/source/rst/quick_start.rst b/doc/source/rst/quick_start.rst
index d8515a2..8944aae 100644
--- a/doc/source/rst/quick_start.rst
+++ b/doc/source/rst/quick_start.rst
@@ -10,19 +10,21 @@ Quick start
 Installation
 -------------
 
-.. warning::
-    TODO add package to pip repository
-    
 .. code-block:: bash
 
     pip install rulekit
+    python -m rulekit download_jar
+
+.. note::
+   Second command will download `RuleKit <https://github.com/adaa-polsl/RuleKit/>`__ jar
+   file from github releases. This step is required to use this package.
 
 To check if everything was installed correctly call:
 
 .. code-block:: python
 
-    >> import rulekit
-    >> rulekit.__version__
+    import rulekit
+    rulekit.__version__
 
 It should run without errors and print package version.
 
@@ -30,7 +32,7 @@ Initializing package
 --------------------
 
 Before you start using any of rulelkit package functionality you need to initialize it first. This step should be done only
-once in the beginning, no need to initialize before every usage.
+once at the beginning of the program, no need to initialize before every usage.
 
 .. code-block:: python
 
@@ -80,4 +82,4 @@ As you may noticed, training and using rulekit models is the same as in scikit l
 mean you can use scikit: metrics, cross-validation, hyper-parameters tuning etc. with ease. 
 
 
-For more examples head to **Tutorials** section.
+For more examples head to :doc:`Tutorials <./tutorials>` section.
diff --git a/doc/source/rst/tutorials.rst b/doc/source/rst/tutorials.rst
index 5183519..ff3eece 100644
--- a/doc/source/rst/tutorials.rst
+++ b/doc/source/rst/tutorials.rst
@@ -6,4 +6,7 @@ Tutorials
     :maxdepth: 1
     :caption: Table of contents:
 
-    Classification <./tutorials/classification.ipynb>
\ No newline at end of file
+    Classification <./tutorials/classification.ipynb>
+    Regression <./tutorials/regression.ipynb>
+    Survival <./tutorials/survival.ipynb>
+    Expert Rules <./tutorials/expert_rules.ipynb>
\ No newline at end of file
diff --git a/doc/source/rst/tutorials/classification.ipynb b/doc/source/rst/tutorials/classification.ipynb
index 939366c..bca583e 100644
--- a/doc/source/rst/tutorials/classification.ipynb
+++ b/doc/source/rst/tutorials/classification.ipynb
@@ -14,13 +14,8 @@
   },
   "orig_nbformat": 2,
   "kernelspec": {
-   "name": "python3",
-   "display_name": "Python 3.8.6 64-bit ('env': venv)",
-   "metadata": {
-    "interpreter": {
-     "hash": "dec7553cb5330dfedea12a286a9a356afe79f89559ef3eea677ea4e5427f600e"
-    }
-   }
+   "name": "rulekit",
+   "display_name": "Python 3.8.6 64-bit ('env': venv)"
   }
  },
  "nbformat": 4,
@@ -37,19 +32,19 @@
    "source": [
     "This notebook presents example usage of package for solving classification problem on `seismic-bumps` dataset. You can download dataset [here](https://raw.githubusercontent.com/adaa-polsl/RuleKit/master/data/seismic-bumps/seismic-bumps.arff).\n",
     "\n",
-    "This tutorial will cover topics such as:\n",
-    "* training model\n",
-    "* changing model hyperparameters\n",
-    "* hyperparameters tuning\n",
-    "* calculating metrics for model\n",
-    "* getting RuleKit inbuil"
+    "This tutorial will cover topics such as:   \n",
+    "- training model   \n",
+    "- changing model hyperparameters   \n",
+    "- hyperparameters tuning   \n",
+    "- calculating metrics for model    \n",
+    "- getting RuleKit inbuilt   "
    ],
    "cell_type": "markdown",
    "metadata": {}
   },
   {
    "source": [
-    "### Summary of the dataset."
+    "## Summary of the dataset"
    ],
    "cell_type": "markdown",
    "metadata": {}
@@ -146,19 +141,38 @@
   },
   {
    "source": [
-    "### Helper function for calculating metrics"
+    "## Import and init RuleKit"
    ],
    "cell_type": "markdown",
    "metadata": {}
   },
   {
    "cell_type": "code",
-   "execution_count": 30,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
     "from rulekit import RuleKit\n",
     "from rulekit.classification import RuleClassifier\n",
+    "from rulekit.params import Measures\n",
+    "\n",
+    "\n",
+    "RuleKit.init()"
+   ]
+  },
+  {
+   "source": [
+    "## Helper function for calculating metrics"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 30,
+   "metadata": {},
+   "outputs": [],
+   "source": [
     "import sklearn.tree as scikit\n",
     "from sklearn.datasets import load_iris\n",
     "import math\n",
@@ -169,8 +183,6 @@
     "from typing import Tuple\n",
     "\n",
     "\n",
-    "RuleKit.init()\n",
-    "\n",
     "x = df_full.drop(['class'], axis=1)\n",
     "y = df_full['class']\n",
     "\n",
@@ -219,7 +231,7 @@
   },
   {
    "source": [
-    "### Rule induction on full dataset"
+    "## Rule induction on full dataset"
    ],
    "cell_type": "markdown",
    "metadata": {}
@@ -350,7 +362,7 @@
   },
   {
    "source": [
-    "C2 Measure generated rules"
+    "### C2 Measure generated rules"
    ],
    "cell_type": "markdown",
    "metadata": {}
@@ -375,7 +387,7 @@
   },
   {
    "source": [
-    "Correlation Measure generated rules"
+    "### Correlation Measure generated rules"
    ],
    "cell_type": "markdown",
    "metadata": {}
@@ -400,7 +412,7 @@
   },
   {
    "source": [
-    "RSS Measure generated rules"
+    "### RSS Measure generated rules"
    ],
    "cell_type": "markdown",
    "metadata": {}
@@ -445,13 +457,6 @@
     "skf = StratifiedKFold(n_splits=10)\n"
    ]
   },
-  {
-   "source": [
-    "### C2 Measure"
-   ],
-   "cell_type": "markdown",
-   "metadata": {}
-  },
   {
    "cell_type": "code",
    "execution_count": null,
@@ -612,7 +617,7 @@
    "source": [
     "## Building model with tuned hyperparameters\n",
     "\n",
-    "Split dataset to train and test (80%/20%)."
+    "### Split dataset to train and test (80%/20%)."
    ],
    "cell_type": "markdown",
    "metadata": {}
@@ -645,7 +650,7 @@
   },
   {
    "source": [
-    "### Rules evaluation"
+    "Rules evaluation"
    ],
    "cell_type": "markdown",
    "metadata": {}
diff --git a/doc/source/rst/tutorials/expert_rules.ipynb b/doc/source/rst/tutorials/expert_rules.ipynb
new file mode 100644
index 0000000..be2ca00
--- /dev/null
+++ b/doc/source/rst/tutorials/expert_rules.ipynb
@@ -0,0 +1,364 @@
+{
+ "metadata": {
+  "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.6"
+  },
+  "orig_nbformat": 2,
+  "kernelspec": {
+   "name": "magisterka",
+   "display_name": "magisterka",
+   "language": "python"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2,
+ "cells": [
+  {
+   "source": [
+    "# Expert Rules"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "source": [
+    "This notebook presents example usage of user-guided rule induction which follows the scheme introduced by the [GuideR](https://www.sciencedirect.com/science/article/abs/pii/S0950705119300802?dgcid=coauthor) algorithm (Sikora et al, 2019).    \n",
+    "Each problem (classification, regression, survival) in addition to the basic class has an expert class, i.e. RuleClassifier and ExpertRuleClassifier. Expert classes allow you to define set of initial rules, preferred conditions and forbidden conditions.    \n",
+    "This tutorial will show you how to define rules and conditions\n"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "source": [
+    "## Import and init RuleKit"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from rulekit import RuleKit\n",
+    "from rulekit.classification import RuleClassifier\n",
+    "from rulekit.params import Measures\n",
+    "\n",
+    "\n",
+    "RuleKit.init()"
+   ]
+  },
+  {
+   "source": [
+    "## Classification"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "source": [
+    "### Prepare dataset"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 24,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from scipy.io import arff\n",
+    "import pandas as pd\n",
+    "\n",
+    "datasets_path = \"\" \n",
+    "file_name = \"seismic-bumps.arff\"\n",
+    "\n",
+    "data_df = pd.DataFrame(arff.loadarff(datasets_path + file_name)[0])\n",
+    "data_df['class'] = data_df['class'].astype(int)\n",
+    "\n",
+    "x = data_df.drop(['class'], axis=1)\n",
+    "y = data_df['class']"
+   ]
+  },
+  {
+   "source": [
+    "### Define rules and conditions"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 25,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "expert_rules = [('rule-0', 'IF [[gimpuls = (-inf, 750)]] THEN class = {0}'), ('rule-1', 'IF [[gimpuls = &lt;750, inf)]] THEN class = {1}')]\n",
+    "\n",
+    "expert_preferred_conditions = [('preferred-condition-0', '1: IF [[seismic = {a}]] THEN class = {0}'), ('preferred-attribute-0', '1: IF [[gimpuls = Any]] THEN class = {1}')]\n",
+    "\n",
+    "expert_forbidden_conditions = [('forb-attribute-0', '1: IF [[seismoacoustic  = Any]] THEN class = {0}'), ('forb-attribute-1', 'inf: IF [[ghazard  = Any]] THEN class = {1}')]"
+   ]
+  },
+  {
+   "source": [
+    "### Rule induction"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 26,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from rulekit.classification import ExpertRuleClassifier\n",
+    "\n",
+    "clf = ExpertRuleClassifier(\n",
+    "    min_rule_covered = 8,\n",
+    "    max_growing= 0,\n",
+    "    extend_using_preferred=True,\n",
+    "    extend_using_automatic=True,\n",
+    "    induce_using_preferred=True,\n",
+    "    induce_using_automatic=True\n",
+    ")\n",
+    "clf.fit(values = x, labels = y, expert_rules = expert_rules, expert_preferred_conditions = expert_preferred_conditions, expert_forbidden_conditions= expert_forbidden_conditions)\n",
+    "ruleset = clf.model"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 27,
+   "metadata": {},
+   "outputs": [
+    {
+     "output_type": "stream",
+     "name": "stdout",
+     "text": [
+      "IF [[gimpuls = (-inf, 750)]] AND [seismic = {a}] AND nbumps4 = (-inf, 0.50) AND nbumps = (-inf, 1.50) THEN class = {0}\nIF gimpuls = (-inf, 1252.50) AND nbumps = (-inf, 1.50) THEN class = {0}\nIF gimpuls = (-inf, 1342.50) AND goimpuls = (-inf, 312) AND nbumps = (-inf, 1.50) THEN class = {0}\nIF gimpuls = (-inf, 1427.50) AND nbumps = (-inf, 1.50) THEN class = {0}\nIF gimpuls = (-inf, 1653.50) AND genergy = (-inf, 1006585) AND goimpuls = (-inf, 312) AND nbumps = (-inf, 1.50) THEN class = {0}\nIF gimpuls = (-inf, 1752) AND nbumps = (-inf, 1.50) THEN class = {0}\nIF gimpuls = (-inf, 2733) AND goimpuls = (-inf, 312) AND nbumps = (-inf, 1.50) THEN class = {0}\nIF gimpuls = <2965, inf) AND genergy = <634250, inf) AND nbumps = (-inf, 1.50) THEN class = {0}\nIF gimpuls = (-inf, 1331) AND nbumps = (-inf, 2.50) THEN class = {0}\nIF gimpuls = (-inf, 1655.50) AND genergy = (-inf, 386010) AND nbumps = (-inf, 2.50) THEN class = {0}\nIF gimpuls = (-inf, 1686) AND goimpuls = (-inf, 312) AND nbumps5 = (-inf, 0.50) AND nbumps = (-inf, 2.50) AND nbumps2 = (-inf, 1.50) THEN class = {0}\nIF gimpuls = (-inf, 2892) AND genergy = (-inf, 386010) AND goimpuls = (-inf, 312) AND nbumps = (-inf, 2.50) THEN class = {0}\nIF gimpuls = (-inf, 2068.50) AND goimpuls = (-inf, 312) AND genergy = (-inf, 1004565) AND nbumps = (-inf, 2.50) AND nbumps2 = (-inf, 1.50) THEN class = {0}\nIF gimpuls = (-inf, 2184.50) AND nbumps = (-inf, 2.50) THEN class = {0}\nIF gimpuls = (-inf, 1253.50) AND nbumps3 = (-inf, 1.50) AND nbumps2 = (-inf, 2.50) THEN class = {0}\nIF gimpuls = (-inf, 901) AND goimpuls = (-inf, 96.50) AND senergy = (-inf, 3850) AND nbumps = (-inf, 3.50) THEN class = {0}\nIF gimpuls = (-inf, 1253.50) AND nbumps3 = (-inf, 1.50) THEN class = {0}\nIF gimpuls = (-inf, 1253.50) AND goimpuls = (-inf, 312) AND senergy = (-inf, 9600) AND nbumps3 = (-inf, 2.50) AND nbumps2 = (-inf, 1.50) THEN class = {0}\nIF gimpuls = (-inf, 1253.50) AND nbumps3 = (-inf, 2.50) AND nbumps2 = (-inf, 1.50) THEN class = {0}\nIF gimpuls = (-inf, 1253.50) AND goimpuls = (-inf, 312) AND senergy = (-inf, 8100) AND nbumps2 = (-inf, 2.50) THEN class = {0}\nIF ghazard = {a} AND goenergy = <-40.50, 68.50) AND maxenergy = (-inf, 5500) AND gimpuls = (-inf, 901) AND goimpuls = <-39.50, inf) AND senergy = <1150, inf) AND nbumps2 = <1.50, inf) THEN class = {0}\nIF goenergy = <-48.50, inf) AND gimpuls = (-inf, 695.50) AND maxenergy = <2500, inf) AND goimpuls = <-54.50, inf) AND genergy = <10915, inf) AND nbumps3 = (-inf, 3.50) AND senergy = <3950, inf) AND nbumps2 = (-inf, 1.50) AND nbumps = (-inf, 6.50) THEN class = {0}\nIF gimpuls = (-inf, 1253.50) AND nbumps = (-inf, 4.50) AND nbumps2 = (-inf, 2.50) THEN class = {0}\nIF gimpuls = (-inf, 1253.50) AND nbumps3 = (-inf, 2.50) AND nbumps = (-inf, 5.50) THEN class = {0}\nIF maxenergy = (-inf, 75000) AND gimpuls = (-inf, 901) AND genergy = (-inf, 378500) AND nbumps3 = (-inf, 3.50) AND nbumps4 = (-inf, 2.50) THEN class = {0}\nIF gimpuls = (-inf, 1139.50) AND goimpuls = (-inf, 312) AND senergy = (-inf, 85450) THEN class = {0}\nIF gimpuls = <1150.50, inf) AND goimpuls = <-35.50, inf) AND nbumps3 = (-inf, 2.50) AND nbumps2 = (-inf, 0.50) AND nbumps = <1.50, inf) THEN class = {0}\nIF goenergy = <-18.50, inf) AND gimpuls = <927, inf) AND genergy = (-inf, 508210) AND senergy = (-inf, 5750) AND nbumps2 = <1.50, inf) THEN class = {0}\nIF senergy = (-inf, 5750) THEN class = {0}\nIF gimpuls = (-inf, 2489.50) AND genergy = (-inf, 318735) AND nbumps3 = (-inf, 2.50) AND nbumps2 = (-inf, 2.50) THEN class = {0}\nIF goenergy = <-36.50, inf) AND goimpuls = (-inf, 6.50) AND genergy = <392530, inf) AND senergy = <6750, inf) AND nbumps2 = (-inf, 1.50) THEN class = {0}\nIF gimpuls = (-inf, 3881.50) AND nbumps = (-inf, 4.50) AND nbumps2 = (-inf, 2.50) THEN class = {0}\nIF [gimpuls = <1253.50, inf)] AND goenergy = <-40.50, 87) AND maxenergy = (-inf, 7500) AND genergy = <96260, 673155) AND seismic = {b} AND seismoacoustic = {a} AND senergy = (-inf, 10000) AND nbumps = (-inf, 3.50) THEN class = {1}\nIF goenergy = (-inf, 96) AND maxenergy = <1500, inf) AND gimpuls = <605, 1959) AND goimpuls = <-55, 95) AND genergy = <61250, 662435) AND senergy = (-inf, 36050) AND nbumps3 = <0.50, inf) AND nbumps2 = <0.50, inf) AND nbumps = (-inf, 6.50) THEN class = {1}\nIF goenergy = (-inf, 186) AND maxenergy = <1500, inf) AND gimpuls = <538.50, inf) AND genergy = <58310, 934630) AND goimpuls = <-55, inf) AND senergy = (-inf, 40650) AND nbumps2 = <0.50, inf) THEN class = {1}\nIF gimpuls = <521.50, inf) AND genergy = <58310, inf) AND goimpuls = <-71, inf) AND senergy = <650, inf) AND nbumps = <1.50, inf) AND nbumps2 = <0.50, inf) THEN class = {1}\nIF goenergy = (-inf, 97) AND gimpuls = <378, 2132) AND maxenergy = <2500, inf) AND genergy = <34880, 587745) AND goimpuls = (-inf, 95) AND senergy = <3150, 36050) AND nbumps3 = <0.50, inf) AND nbumps2 = <0.50, inf) AND nbumps = (-inf, 6.50) THEN class = {1}\nIF goenergy = (-inf, 135.50) AND gimpuls = <306, inf) AND genergy = <19245, inf) AND senergy = <550, inf) AND nbumps = <1.50, inf) THEN class = {1}\nIF goenergy = (-inf, -1.50) AND gimpuls = <153.50, 289) AND genergy = <17405, 37085) AND goimpuls = <-60.50, inf) AND senergy = (-inf, 40500) AND nbumps3 = (-inf, 3.50) AND nbumps = <1.50, inf) AND nbumps2 = <0.50, inf) THEN class = {1}\nIF goenergy = (-inf, 131.50) AND gimpuls = <1253.50, inf) AND genergy = <54930, 1062020) AND goimpuls = <-60.50, 109) AND shift = {W} AND senergy = (-inf, 36050) AND nbumps2 = (-inf, 2.50) THEN class = {1}\nIF gimpuls = <98.50, inf) AND senergy = <650, inf) AND nbumps2 = <0.50, inf) THEN class = {1}\nIF goenergy = <-78.50, inf) AND gimpuls = <66, inf) AND goimpuls = <-74.50, inf) AND genergy = <3065, inf) AND senergy = <550, inf) THEN class = {1}\nIF goenergy = (-inf, 176.50) AND gimpuls = <131, inf) AND genergy = <48545, inf) THEN class = {1}\nIF goenergy = <-4, inf) AND gimpuls = <396, 1445.50) AND genergy = <32795, 49585) AND goimpuls = <-19, inf) AND shift = {W} AND senergy = (-inf, 350) THEN class = {1}\nIF goenergy = <-37.50, inf) AND gimpuls = <537.50, 796) AND genergy = <16805, 32020) AND goimpuls = <-36.50, inf) AND senergy = (-inf, 250) THEN class = {1}\nIF goenergy = <-37.50, 181) AND gimpuls = <240, 470.50) AND genergy = <19670, 40735) AND goimpuls = <-42.50, inf) AND shift = {W} THEN class = {1}\nIF gimpuls = <54.50, inf) AND goimpuls = <-74.50, inf) AND genergy = <1510, inf) AND senergy = (-inf, 115450) THEN class = {1}\n"
+     ]
+    }
+   ],
+   "source": [
+    "for rule in ruleset.rules:\n",
+    "    print(rule)"
+   ]
+  },
+  {
+   "source": [
+    "## Regression"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "source": [
+    "### Prepare dataset"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from scipy.io import arff\n",
+    "import pandas as pd\n",
+    "\n",
+    "datasets_path = \"\" \n",
+    "file_name = \"methane-train.arff\"\n",
+    "\n",
+    "data_df = pd.DataFrame(arff.loadarff(datasets_path + file_name)[0])\n",
+    "\n",
+    "x = data_df.drop(['MM116_pred'], axis=1)\n",
+    "y = data_df['MM116_pred']"
+   ]
+  },
+  {
+   "source": [
+    "### Define rules and conditions"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "expert_rules = None\n",
+    "\n",
+    "expert_preferred_conditions = [('preferred-condition-0', '3: IF PD = &lt;0.5, inf) THEN MM116_pred = {NaN}'), ('preferred-condition-1', '5: IF PD = &lt;0.5, inf) AND MM116 = (-inf, 1.0) THEN MM116_pred = {NaN}')]\n",
+    "\n",
+    "expert_forbidden_conditions = [('forb-attribute-0', 'inf: IF DMM116 = Any THEN MM116_pred = {NaN}')]"
+   ]
+  },
+  {
+   "source": [
+    "### Rule induction"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from rulekit.regression import ExpertRuleRegressor\n",
+    "\n",
+    "reg = ExpertRuleRegressor(\n",
+    "    min_rule_covered = 5,\n",
+    "    max_growing= 0,\n",
+    "    extend_using_preferred=True,\n",
+    "    extend_using_automatic=False,\n",
+    "    induce_using_preferred=True,\n",
+    "    induce_using_automatic=True\n",
+    ")\n",
+    "reg.fit(values = x, labels = y, expert_rules = expert_rules, expert_preferred_conditions = expert_preferred_conditions, expert_forbidden_conditions= expert_forbidden_conditions)\n",
+    "ruleset = reg.model"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {},
+   "outputs": [
+    {
+     "output_type": "stream",
+     "name": "stdout",
+     "text": [
+      "IF MM116 = (-inf, 0.45) AND MM31 = <0.18, 0.24) THEN MM116_pred = {0.40} [0.38,0.42]\nIF MM31 = (-inf, 0.25) THEN MM116_pred = {0.40} [0.33,0.47]\nIF AS038 = (-inf, 2.45) AND MM31 = (-inf, 0.26) THEN MM116_pred = {0.40} [0.31,0.49]\nIF MM31 = <0.18, 0.28) THEN MM116_pred = {0.50} [0.38,0.62]\nIF MM116 = <0.25, 0.45) AND MM31 = <0.18, inf) AND BA13 = (-inf, 1077.50) THEN MM116_pred = {0.40} [0.38,0.42]\nIF MM116 = (-inf, 0.25) THEN MM116_pred = {0.20} [0.15,0.25]\nIF MM116 = <0.45, 0.55) AND PG072 = <1.65, inf) THEN MM116_pred = {0.50} [0.47,0.53]\nIF MM116 = <0.55, 0.65) AND MM31 = <0.24, inf) THEN MM116_pred = {0.60} [0.56,0.64]\nIF MM116 = <0.45, 0.75) AND AS038 = (-inf, 2.45) AND MM31 = (-inf, 0.29) AND BA13 = <1072.50, 1077.50) THEN MM116_pred = {0.50} [0.47,0.53]\nIF PD = (-inf, 0.50) AND MM116 = <0.45, 0.85) AND AS038 = (-inf, 2.45) AND MM31 = (-inf, 0.29) AND BA13 = <1072.50, 1077.50) THEN MM116_pred = {0.50} [0.44,0.56]\nIF MM116 = (-inf, 0.75) THEN MM116_pred = {0.50} [0.37,0.63]\nIF MM116 = <0.45, 0.85) THEN MM116_pred = {0.70} [0.55,0.85]\nIF MM116 = <0.45, inf) AND MM31 = <0.30, inf) THEN MM116_pred = {0.90} [0.68,1.12]\nIF MM116 = <0.70, inf) THEN MM116_pred = {0.90} [0.70,1.10]\n"
+     ]
+    }
+   ],
+   "source": [
+    "for rule in ruleset.rules:\n",
+    "    print(rule)"
+   ]
+  },
+  {
+   "source": [
+    "## Survival"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "source": [
+    "### Prepare dataset"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 30,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from scipy.io import arff\n",
+    "import pandas as pd\n",
+    "\n",
+    "datasets_path = \"\" \n",
+    "file_name = 'bmt.arff'\n",
+    "\n",
+    "data_df = pd.DataFrame(arff.loadarff(open(datasets_path + file_name, 'r', encoding=\"cp1252\"))[0])\n",
+    "\n",
+    "# code to fix the problem with encoding of the file\n",
+    "tmp_df = data_df.select_dtypes([object]) \n",
+    "tmp_df = tmp_df.stack().str.decode(\"cp1252\").unstack()\n",
+    "for col in tmp_df:\n",
+    "    data_df[col] = tmp_df[col]\n",
+    "    \n",
+    "data_df = data_df.replace({'?': None})\n",
+    "\n",
+    "x = data_df.drop(['survival_status'], axis=1)\n",
+    "y = data_df['survival_status']"
+   ]
+  },
+  {
+   "source": [
+    "### Define rules and conditions"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 31,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "expert_rules = [('rule-0', 'IF [[CD34kgx10d6 = (-inf, 10.0)]] AND [[extcGvHD = {0}]] THEN survival_status = {NaN}')]\n",
+    "\n",
+    "expert_preferred_conditions = [('attr-preferred-0', 'inf: IF [CD34kgx10d6 = Any] THEN survival_status = {NaN}')]\n",
+    "\n",
+    "expert_forbidden_conditions = [('attr-forbidden-0', 'IF [ANCrecovery = Any] THEN survival_status = {NaN}')]"
+   ]
+  },
+  {
+   "source": [
+    "### Rule induction"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 33,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from rulekit.survival import ExpertSurvivalRules\n",
+    "\n",
+    "srv = ExpertSurvivalRules(\n",
+    "    survival_time_attr = 'survival_time',\n",
+    "    min_rule_covered = 5,\n",
+    "    max_growing= 0,\n",
+    "    extend_using_preferred=False,\n",
+    "    extend_using_automatic=False,\n",
+    "    induce_using_preferred=True,\n",
+    "    induce_using_automatic=True\n",
+    ")\n",
+    "srv.fit(values = x, labels = y, expert_rules = expert_rules, expert_preferred_conditions = expert_preferred_conditions, expert_forbidden_conditions= expert_forbidden_conditions)\n",
+    "ruleset = srv.model"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 34,
+   "metadata": {},
+   "outputs": [
+    {
+     "output_type": "stream",
+     "name": "stdout",
+     "text": [
+      "IF [[CD34kgx10d6 = (-inf, 10)]] AND [[extcGvHD = {0}]] THEN survival_status = {NaN}\nIF [CD34kgx10d6 = (-inf, 11.86)] AND PLTrecovery = <500142.50, inf) THEN survival_status = {NaN}\nIF [CD34kgx10d6 = (-inf, 11.86)] AND RecipientRh = {1} AND Recipientage = <17.85, inf) THEN survival_status = {NaN}\nIF [CD34kgx10d6 = (-inf, 11.86)] AND Relapse = {0} AND PLTrecovery = <26, inf) AND Recipientage = <14.30, inf) THEN survival_status = {NaN}\nIF [CD34kgx10d6 = (-inf, 11.86)] AND Donorage = (-inf, 40.64) AND Gendermatch = {0} AND PLTrecovery = <26, inf) AND Recipientage = <12, 18.85) THEN survival_status = {NaN}\nIF [CD34kgx10d6 = (-inf, 11.86)] AND RecipientRh = {1} AND CD3dCD34 = <6.64, inf) THEN survival_status = {NaN}\nIF [CD34kgx10d6 = <11.86, inf)] AND Relapse = {0} THEN survival_status = {NaN}\nIF [CD34kgx10d6 = (-inf, 11.86)] AND Relapse = {0} AND extcGvHD = {1} THEN survival_status = {NaN}\nIF [CD34kgx10d6 = (-inf, 11.86)] AND Donorage35 = {1} AND Rbodymass = <37.65, inf) THEN survival_status = {NaN}\nIF [CD34kgx10d6 = (-inf, 11.86)] AND PLTrecovery = <19.50, inf) AND Donorage35 = {0} AND CD3dkgx10d8 = <0.92, inf) AND CD3dCD34 = <0.97, inf) AND Rbodymass = (-inf, 43.50) AND Recipientage = (-inf, 12.95) THEN survival_status = {NaN}\nIF [CD34kgx10d6 = <11.86, inf)] THEN survival_status = {NaN}\n"
+     ]
+    }
+   ],
+   "source": [
+    "for rule in ruleset.rules:\n",
+    "    print(rule)"
+   ]
+  }
+ ]
+}
\ No newline at end of file
diff --git a/doc/source/rst/tutorials/regression.ipynb b/doc/source/rst/tutorials/regression.ipynb
new file mode 100644
index 0000000..9f264c9
--- /dev/null
+++ b/doc/source/rst/tutorials/regression.ipynb
@@ -0,0 +1,641 @@
+{
+ "metadata": {
+  "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.6"
+  },
+  "orig_nbformat": 2,
+  "kernelspec": {
+   "name": "rulekit",
+   "display_name": "rulekit",
+   "language": "python"
+  },
+  "metadata": {
+   "interpreter": {
+    "hash": "62266c16fff41e971c13e9cb2ad3d47e4ef45d0678714c255381eb9fdcbd7032"
+   }
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2,
+ "cells": [
+  {
+   "source": [
+    "# Regression"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "source": [
+    "This notebook presents example usage of package for solving regression problem on `methane` dataset. You can download training dataset [here](https://raw.githubusercontent.com/adaa-polsl/RuleKit/master/data/methane/methane-train.arff) and test dataset [here](https://raw.githubusercontent.com/adaa-polsl/RuleKit/master/data/methane/methane-test.arff)\n",
+    "\n",
+    "This tutorial will cover topics such as:    \n",
+    "- training model   \n",
+    "- changing model hyperparameters   \n",
+    "- hyperparameters tuning   \n",
+    "- calculating metrics for model    \n",
+    "- getting RuleKit inbuilt   "
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "source": [
+    "## Summary of the dataset"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from scipy.io import arff\n",
+    "import pandas as pd\n",
+    "\n",
+    "datasets_path = \"\" \n",
+    "\n",
+    "train_file_name = \"methane-train.arff\"\n",
+    "test_file_name = \"methane-test.arff\"\n",
+    "\n",
+    "train_df = pd.DataFrame(arff.loadarff(datasets_path + train_file_name)[0])\n",
+    "test_df = pd.DataFrame(arff.loadarff(datasets_path + test_file_name)[0])"
+   ]
+  },
+  {
+   "source": [
+    "### Train file"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [
+    {
+     "output_type": "stream",
+     "name": "stdout",
+     "text": [
+      "Train file overview:\nName: methane-train.arff\nObjects number: 13368; Attributes number: 8\nBasic attribute statistics:\n"
+     ]
+    },
+    {
+     "output_type": "execute_result",
+     "data": {
+      "text/plain": [
+       "               MM31         MM116         AS038         PG072            PD  \\\n",
+       "count  13368.000000  13368.000000  13368.000000  13368.000000  13368.000000   \n",
+       "mean       0.363960      0.775007      2.294734      1.835600      0.308573   \n",
+       "std        0.117105      0.269366      0.142504      0.106681      0.461922   \n",
+       "min        0.170000      0.200000      1.400000      1.100000      0.000000   \n",
+       "25%        0.260000      0.500000      2.300000      1.800000      0.000000   \n",
+       "50%        0.360000      0.800000      2.300000      1.800000      0.000000   \n",
+       "75%        0.450000      1.000000      2.400000      1.900000      1.000000   \n",
+       "max        0.820000      2.200000      2.700000      2.600000      1.000000   \n",
+       "\n",
+       "               BA13        DMM116   MM116_pred  \n",
+       "count  13368.000000  13368.000000  13368.00000  \n",
+       "mean    1073.443372     -0.000007      0.79825  \n",
+       "std        3.162811      0.043566      0.28649  \n",
+       "min     1067.000000     -1.800000      0.20000  \n",
+       "25%     1070.000000      0.000000      0.50000  \n",
+       "50%     1075.000000      0.000000      0.80000  \n",
+       "75%     1076.000000      0.000000      1.00000  \n",
+       "max     1078.000000      0.800000      2.20000  "
+      ],
+      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>MM31</th>\n      <th>MM116</th>\n      <th>AS038</th>\n      <th>PG072</th>\n      <th>PD</th>\n      <th>BA13</th>\n      <th>DMM116</th>\n      <th>MM116_pred</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>count</th>\n      <td>13368.000000</td>\n      <td>13368.000000</td>\n      <td>13368.000000</td>\n      <td>13368.000000</td>\n      <td>13368.000000</td>\n      <td>13368.000000</td>\n      <td>13368.000000</td>\n      <td>13368.00000</td>\n    </tr>\n    <tr>\n      <th>mean</th>\n      <td>0.363960</td>\n      <td>0.775007</td>\n      <td>2.294734</td>\n      <td>1.835600</td>\n      <td>0.308573</td>\n      <td>1073.443372</td>\n      <td>-0.000007</td>\n      <td>0.79825</td>\n    </tr>\n    <tr>\n      <th>std</th>\n      <td>0.117105</td>\n      <td>0.269366</td>\n      <td>0.142504</td>\n      <td>0.106681</td>\n      <td>0.461922</td>\n      <td>3.162811</td>\n      <td>0.043566</td>\n      <td>0.28649</td>\n    </tr>\n    <tr>\n      <th>min</th>\n      <td>0.170000</td>\n      <td>0.200000</td>\n      <td>1.400000</td>\n      <td>1.100000</td>\n      <td>0.000000</td>\n      <td>1067.000000</td>\n      <td>-1.800000</td>\n      <td>0.20000</td>\n    </tr>\n    <tr>\n      <th>25%</th>\n      <td>0.260000</td>\n      <td>0.500000</td>\n      <td>2.300000</td>\n      <td>1.800000</td>\n      <td>0.000000</td>\n      <td>1070.000000</td>\n      <td>0.000000</td>\n      <td>0.50000</td>\n    </tr>\n    <tr>\n      <th>50%</th>\n      <td>0.360000</td>\n      <td>0.800000</td>\n      <td>2.300000</td>\n      <td>1.800000</td>\n      <td>0.000000</td>\n      <td>1075.000000</td>\n      <td>0.000000</td>\n      <td>0.80000</td>\n    </tr>\n    <tr>\n      <th>75%</th>\n      <td>0.450000</td>\n      <td>1.000000</td>\n      <td>2.400000</td>\n      <td>1.900000</td>\n      <td>1.000000</td>\n      <td>1076.000000</td>\n      <td>0.000000</td>\n      <td>1.00000</td>\n    </tr>\n    <tr>\n      <th>max</th>\n      <td>0.820000</td>\n      <td>2.200000</td>\n      <td>2.700000</td>\n      <td>2.600000</td>\n      <td>1.000000</td>\n      <td>1078.000000</td>\n      <td>0.800000</td>\n      <td>2.20000</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
+     },
+     "metadata": {},
+     "execution_count": 3
+    }
+   ],
+   "source": [
+    "print(\"Train file overview:\")\n",
+    "print(f\"Name: {train_file_name}\")\n",
+    "print(f\"Objects number: {train_df.shape[0]}; Attributes number: {train_df.shape[1]}\")\n",
+    "print(\"Basic attribute statistics:\")\n",
+    "train_df.describe()"
+   ]
+  },
+  {
+   "source": [
+    "### Test file"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {},
+   "outputs": [
+    {
+     "output_type": "stream",
+     "name": "stdout",
+     "text": [
+      "\nTest file overview:\nName: methane-test.arff\nObjects number: 5728; Attributes number: 8\nBasic attribute statistics:\n"
+     ]
+    },
+    {
+     "output_type": "execute_result",
+     "data": {
+      "text/plain": [
+       "              MM31        MM116        AS038        PG072           PD  \\\n",
+       "count  5728.000000  5728.000000  5728.000000  5728.000000  5728.000000   \n",
+       "mean      0.556652     1.006913     2.236627     1.819239     0.538408   \n",
+       "std       0.114682     0.167983     0.104913     0.078865     0.498566   \n",
+       "min       0.350000     0.500000     1.800000     1.600000     0.000000   \n",
+       "25%       0.460000     0.900000     2.200000     1.800000     0.000000   \n",
+       "50%       0.550000     1.000000     2.200000     1.800000     1.000000   \n",
+       "75%       0.640000     1.100000     2.300000     1.900000     1.000000   \n",
+       "max       0.980000     1.600000     2.700000     2.100000     1.000000   \n",
+       "\n",
+       "              BA13       DMM116   MM116_pred  \n",
+       "count  5728.000000  5728.000000  5728.000000  \n",
+       "mean   1072.691690    -0.000017     1.042458  \n",
+       "std       2.799559     0.046849     0.171393  \n",
+       "min    1067.000000    -0.400000     0.600000  \n",
+       "25%    1071.000000     0.000000     0.900000  \n",
+       "50%    1073.000000     0.000000     1.000000  \n",
+       "75%    1075.000000     0.000000     1.200000  \n",
+       "max    1078.000000     0.300000     1.600000  "
+      ],
+      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>MM31</th>\n      <th>MM116</th>\n      <th>AS038</th>\n      <th>PG072</th>\n      <th>PD</th>\n      <th>BA13</th>\n      <th>DMM116</th>\n      <th>MM116_pred</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>count</th>\n      <td>5728.000000</td>\n      <td>5728.000000</td>\n      <td>5728.000000</td>\n      <td>5728.000000</td>\n      <td>5728.000000</td>\n      <td>5728.000000</td>\n      <td>5728.000000</td>\n      <td>5728.000000</td>\n    </tr>\n    <tr>\n      <th>mean</th>\n      <td>0.556652</td>\n      <td>1.006913</td>\n      <td>2.236627</td>\n      <td>1.819239</td>\n      <td>0.538408</td>\n      <td>1072.691690</td>\n      <td>-0.000017</td>\n      <td>1.042458</td>\n    </tr>\n    <tr>\n      <th>std</th>\n      <td>0.114682</td>\n      <td>0.167983</td>\n      <td>0.104913</td>\n      <td>0.078865</td>\n      <td>0.498566</td>\n      <td>2.799559</td>\n      <td>0.046849</td>\n      <td>0.171393</td>\n    </tr>\n    <tr>\n      <th>min</th>\n      <td>0.350000</td>\n      <td>0.500000</td>\n      <td>1.800000</td>\n      <td>1.600000</td>\n      <td>0.000000</td>\n      <td>1067.000000</td>\n      <td>-0.400000</td>\n      <td>0.600000</td>\n    </tr>\n    <tr>\n      <th>25%</th>\n      <td>0.460000</td>\n      <td>0.900000</td>\n      <td>2.200000</td>\n      <td>1.800000</td>\n      <td>0.000000</td>\n      <td>1071.000000</td>\n      <td>0.000000</td>\n      <td>0.900000</td>\n    </tr>\n    <tr>\n      <th>50%</th>\n      <td>0.550000</td>\n      <td>1.000000</td>\n      <td>2.200000</td>\n      <td>1.800000</td>\n      <td>1.000000</td>\n      <td>1073.000000</td>\n      <td>0.000000</td>\n      <td>1.000000</td>\n    </tr>\n    <tr>\n      <th>75%</th>\n      <td>0.640000</td>\n      <td>1.100000</td>\n      <td>2.300000</td>\n      <td>1.900000</td>\n      <td>1.000000</td>\n      <td>1075.000000</td>\n      <td>0.000000</td>\n      <td>1.200000</td>\n    </tr>\n    <tr>\n      <th>max</th>\n      <td>0.980000</td>\n      <td>1.600000</td>\n      <td>2.700000</td>\n      <td>2.100000</td>\n      <td>1.000000</td>\n      <td>1078.000000</td>\n      <td>0.300000</td>\n      <td>1.600000</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
+     },
+     "metadata": {},
+     "execution_count": 4
+    }
+   ],
+   "source": [
+    "# test file\n",
+    "print(\"\\nTest file overview:\")\n",
+    "print(f\"Name: {test_file_name}\")\n",
+    "print(f\"Objects number: {test_df.shape[0]}; Attributes number: {test_df.shape[1]}\")\n",
+    "print(\"Basic attribute statistics:\")\n",
+    "test_df.describe()"
+   ]
+  },
+  {
+   "source": [
+    "## Import and init RuleKit"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from rulekit import RuleKit\n",
+    "from rulekit.regression import RuleRegressor\n",
+    "from rulekit.params import Measures\n",
+    "\n",
+    "\n",
+    "RuleKit.init()"
+   ]
+  },
+  {
+   "source": [
+    "## Helper function for calculating metrics"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import sklearn.tree as scikit\n",
+    "import math\n",
+    "from sklearn.preprocessing import MultiLabelBinarizer\n",
+    "from sklearn import metrics\n",
+    "import pandas as pd\n",
+    "import numpy as np\n",
+    "from typing import Tuple\n",
+    "from math import sqrt\n",
+    "\n",
+    "\n",
+    "def get_regression_metrics(measure: str, y_pred, y_true) -> pd.DataFrame:\n",
+    "    relative_error = 0\n",
+    "    squared_relative_error = 0\n",
+    "    relative_error_lenient = 0\n",
+    "    relative_error_strict = 0\n",
+    "    nae_denominator = 0\n",
+    "    avg = sum(y_true) / len(y_pred)\n",
+    "\n",
+    "    for i in range(0, len(y_pred)):\n",
+    "        true = y_true[i]\n",
+    "        predicted = y_pred[i]\n",
+    "\n",
+    "        relative_error += abs((true - predicted) / true)\n",
+    "        squared_relative_error += abs((true - predicted) / true) * abs((true - predicted) / true)\n",
+    "        relative_error_lenient += abs((true - predicted) / max(true, predicted))\n",
+    "        relative_error_strict += abs((true - predicted) / min(true, predicted))\n",
+    "        nae_denominator += abs(avg - true)\n",
+    "    relative_error /= len(y_pred)\n",
+    "    squared_relative_error /= len(y_pred)\n",
+    "    relative_error_lenient /= len(y_pred)\n",
+    "    relative_error_strict /= len(y_pred)\n",
+    "    nae_denominator /= len(y_pred)\n",
+    "    correlation = np.mean(np.corrcoef(y_true, y_pred))\n",
+    "\n",
+    "    dictionary = {\n",
+    "        'Measure': measure,\n",
+    "        'absolute_error': metrics.mean_absolute_error(y_true, y_pred),\n",
+    "        'relative_error': relative_error,\n",
+    "        'relative_error_lenient': relative_error_lenient,\n",
+    "        'relative_error_strict': relative_error_strict,\n",
+    "        'normalized_absolute_error': metrics.mean_absolute_error(y_true, y_pred) / nae_denominator,\n",
+    "        'squared_error': metrics.mean_squared_error(y_true, y_pred),\n",
+    "        'root_mean_squared_error': metrics.mean_squared_error(y_true, y_pred, squared=False),\n",
+    "        'root_relative_squared_error': sqrt(squared_relative_error),\n",
+    "        'correlation': correlation,\n",
+    "        'squared_correlation': np.power(correlation, 2),\n",
+    "    }\n",
+    "    return pd.DataFrame.from_records([dictionary], index='Measure')\n",
+    "\n",
+    "def get_ruleset_stats(measure: str, model) -> pd.DataFrame:\n",
+    "    tmp = model.parameters.__dict__\n",
+    "    del tmp['_java_object']\n",
+    "    return pd.DataFrame.from_records([{'Measure': measure, **tmp, **model.stats.__dict__}], index='Measure')"
+   ]
+  },
+  {
+   "source": [
+    "## Rule induction on training dataset"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "x_train = train_df.drop(['MM116_pred'], axis=1)\n",
+    "y_train = train_df['MM116_pred']"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {},
+   "outputs": [
+    {
+     "output_type": "display_data",
+     "data": {
+      "text/plain": "             minimum_covered  maximum_uncovered_fraction  ignore_missing  \\\nMeasure                                                                    \nC2                       5.0                         0.0           False   \nCorrelation              5.0                         0.0           False   \nRSS                      5.0                         0.0           False   \n\n             pruning_enabled  max_growing_condition  time_total_s  \\\nMeasure                                                             \nC2                      True                    0.0    162.647903   \nCorrelation             True                    0.0     89.092752   \nRSS                     True                    0.0    145.849569   \n\n             time_growing_s  time_pruning_s  rules_count  conditions_per_rule  \\\nMeasure                                                                         \nC2               109.968198       52.479965           30             4.800000   \nCorrelation       52.286917       36.736225           14             3.857143   \nRSS               82.719695       63.063596           14             3.071429   \n\n             induced_conditions_per_rule  avg_rule_coverage  \\\nMeasure                                                       \nC2                             25.266667           0.145382   \nCorrelation                    31.142857           0.200041   \nRSS                            33.785714           0.268429   \n\n             avg_rule_precision  avg_rule_quality        pvalue    FDR_pvalue  \\\nMeasure                                                                         \nC2                     0.910635          0.724619  4.967428e-03  4.967460e-03   \nCorrelation            0.868585          0.850067  0.000000e+00  0.000000e+00   \nRSS                    0.778758          0.835207  1.840021e-12  1.840021e-12   \n\n              FWER_pvalue  fraction_significant  fraction_FDR_significant  \\\nMeasure                                                                     \nC2           4.968345e-03              0.966667                  0.966667   \nCorrelation  0.000000e+00              1.000000                  1.000000   \nRSS          1.840021e-12              1.000000                  1.000000   \n\n             fraction_FWER_significant  \nMeasure                                 \nC2                            0.966667  \nCorrelation                   1.000000  \nRSS                           1.000000  ",
+      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>minimum_covered</th>\n      <th>maximum_uncovered_fraction</th>\n      <th>ignore_missing</th>\n      <th>pruning_enabled</th>\n      <th>max_growing_condition</th>\n      <th>time_total_s</th>\n      <th>time_growing_s</th>\n      <th>time_pruning_s</th>\n      <th>rules_count</th>\n      <th>conditions_per_rule</th>\n      <th>induced_conditions_per_rule</th>\n      <th>avg_rule_coverage</th>\n      <th>avg_rule_precision</th>\n      <th>avg_rule_quality</th>\n      <th>pvalue</th>\n      <th>FDR_pvalue</th>\n      <th>FWER_pvalue</th>\n      <th>fraction_significant</th>\n      <th>fraction_FDR_significant</th>\n      <th>fraction_FWER_significant</th>\n    </tr>\n    <tr>\n      <th>Measure</th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>C2</th>\n      <td>5.0</td>\n      <td>0.0</td>\n      <td>False</td>\n      <td>True</td>\n      <td>0.0</td>\n      <td>162.647903</td>\n      <td>109.968198</td>\n      <td>52.479965</td>\n      <td>30</td>\n      <td>4.800000</td>\n      <td>25.266667</td>\n      <td>0.145382</td>\n      <td>0.910635</td>\n      <td>0.724619</td>\n      <td>4.967428e-03</td>\n      <td>4.967460e-03</td>\n      <td>4.968345e-03</td>\n      <td>0.966667</td>\n      <td>0.966667</td>\n      <td>0.966667</td>\n    </tr>\n    <tr>\n      <th>Correlation</th>\n      <td>5.0</td>\n      <td>0.0</td>\n      <td>False</td>\n      <td>True</td>\n      <td>0.0</td>\n      <td>89.092752</td>\n      <td>52.286917</td>\n      <td>36.736225</td>\n      <td>14</td>\n      <td>3.857143</td>\n      <td>31.142857</td>\n      <td>0.200041</td>\n      <td>0.868585</td>\n      <td>0.850067</td>\n      <td>0.000000e+00</td>\n      <td>0.000000e+00</td>\n      <td>0.000000e+00</td>\n      <td>1.000000</td>\n      <td>1.000000</td>\n      <td>1.000000</td>\n    </tr>\n    <tr>\n      <th>RSS</th>\n      <td>5.0</td>\n      <td>0.0</td>\n      <td>False</td>\n      <td>True</td>\n      <td>0.0</td>\n      <td>145.849569</td>\n      <td>82.719695</td>\n      <td>63.063596</td>\n      <td>14</td>\n      <td>3.071429</td>\n      <td>33.785714</td>\n      <td>0.268429</td>\n      <td>0.778758</td>\n      <td>0.835207</td>\n      <td>1.840021e-12</td>\n      <td>1.840021e-12</td>\n      <td>1.840021e-12</td>\n      <td>1.000000</td>\n      <td>1.000000</td>\n      <td>1.000000</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
+     },
+     "metadata": {}
+    },
+    {
+     "output_type": "display_data",
+     "data": {
+      "text/plain": "             absolute_error  relative_error  relative_error_lenient  \\\nMeasure                                                               \nC2                 0.113257        0.119912                0.112692   \nCorrelation        0.096903        0.099532                0.096365   \nRSS                0.095808        0.111826                0.106694   \n\n             relative_error_strict  normalized_absolute_error  squared_error  \\\nMeasure                                                                        \nC2                        0.146711                   0.481968       0.031913   \nCorrelation               0.124060                   0.412373       0.028386   \nRSS                       0.133913                   0.407715       0.023018   \n\n             root_mean_squared_error  root_relative_squared_error  \\\nMeasure                                                             \nC2                          0.178643                     0.167711   \nCorrelation                 0.168481                     0.147825   \nRSS                         0.151715                     0.151703   \n\n             correlation  squared_correlation  \nMeasure                                        \nC2              0.910077             0.828241  \nCorrelation     0.935456             0.875078  \nRSS             0.944984             0.892996  ",
+      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>absolute_error</th>\n      <th>relative_error</th>\n      <th>relative_error_lenient</th>\n      <th>relative_error_strict</th>\n      <th>normalized_absolute_error</th>\n      <th>squared_error</th>\n      <th>root_mean_squared_error</th>\n      <th>root_relative_squared_error</th>\n      <th>correlation</th>\n      <th>squared_correlation</th>\n    </tr>\n    <tr>\n      <th>Measure</th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>C2</th>\n      <td>0.113257</td>\n      <td>0.119912</td>\n      <td>0.112692</td>\n      <td>0.146711</td>\n      <td>0.481968</td>\n      <td>0.031913</td>\n      <td>0.178643</td>\n      <td>0.167711</td>\n      <td>0.910077</td>\n      <td>0.828241</td>\n    </tr>\n    <tr>\n      <th>Correlation</th>\n      <td>0.096903</td>\n      <td>0.099532</td>\n      <td>0.096365</td>\n      <td>0.124060</td>\n      <td>0.412373</td>\n      <td>0.028386</td>\n      <td>0.168481</td>\n      <td>0.147825</td>\n      <td>0.935456</td>\n      <td>0.875078</td>\n    </tr>\n    <tr>\n      <th>RSS</th>\n      <td>0.095808</td>\n      <td>0.111826</td>\n      <td>0.106694</td>\n      <td>0.133913</td>\n      <td>0.407715</td>\n      <td>0.023018</td>\n      <td>0.151715</td>\n      <td>0.151703</td>\n      <td>0.944984</td>\n      <td>0.892996</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
+     },
+     "metadata": {}
+    }
+   ],
+   "source": [
+    "# C2\n",
+    "c2_reg = RuleRegressor(\n",
+    "    induction_measure=Measures.C2,\n",
+    "    pruning_measure=Measures.C2,\n",
+    "    voting_measure=Measures.C2,\n",
+    ")\n",
+    "c2_reg.fit(x_train, y_train)\n",
+    "c2_ruleset = c2_reg.model\n",
+    "predictions = c2_reg.predict(x_train)\n",
+    "\n",
+    "regression_metrics = get_regression_metrics('C2', predictions, y_train)\n",
+    "ruleset_stats = get_ruleset_stats('C2', c2_ruleset)\n",
+    "\n",
+    "\n",
+    "# Correlation\n",
+    "corr_reg = RuleRegressor(\n",
+    "    induction_measure=Measures.Correlation,\n",
+    "    pruning_measure=Measures.Correlation,\n",
+    "    voting_measure=Measures.Correlation,\n",
+    ")\n",
+    "corr_reg.fit(x_train, y_train)\n",
+    "corr_ruleset = corr_reg.model\n",
+    "predictions = corr_reg.predict(x_train)\n",
+    "\n",
+    "tmp = get_regression_metrics('Correlation', predictions, y_train)\n",
+    "regression_metrics = pd.concat([regression_metrics, tmp])\n",
+    "ruleset_stats = pd.concat([ruleset_stats, get_ruleset_stats('Correlation', corr_ruleset)])\n",
+    "\n",
+    "\n",
+    "# RSS\n",
+    "rss_reg = RuleRegressor(\n",
+    "    induction_measure=Measures.RSS,\n",
+    "    pruning_measure=Measures.RSS,\n",
+    "    voting_measure=Measures.RSS,\n",
+    ")\n",
+    "rss_reg.fit(x_train, y_train)\n",
+    "rss_ruleset = rss_reg.model\n",
+    "predictions = rss_reg.predict(x_train)\n",
+    "\n",
+    "tmp = get_regression_metrics('RSS', predictions, y_train)\n",
+    "regression_metrics = pd.concat([regression_metrics, tmp])\n",
+    "ruleset_stats = pd.concat([ruleset_stats, get_ruleset_stats('RSS', rss_ruleset)])\n",
+    "\n",
+    "\n",
+    "display(ruleset_stats)\n",
+    "display(regression_metrics)"
+   ]
+  },
+  {
+   "source": [
+    "### C2 Measure generated rules"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {},
+   "outputs": [
+    {
+     "output_type": "stream",
+     "name": "stdout",
+     "text": [
+      "IF PD = (-inf, 0.50) AND AS038 = (-inf, 2.35) AND MM31 = <0.21, 0.22) AND BA13 = <1075.50, inf) THEN MM116_pred = {0.40} [0.40,0.40]\nIF MM116 = <0.35, 0.45) AND DMM116 = <-0.05, inf) AND MM31 = (-inf, 0.24) THEN MM116_pred = {0.40} [0.38,0.42]\nIF MM116 = (-inf, 0.45) AND MM31 = <0.18, 0.24) THEN MM116_pred = {0.40} [0.38,0.42]\nIF MM31 = <0.24, 0.25) AND BA13 = (-inf, 1076.50) THEN MM116_pred = {0.50} [0.50,0.50]\nIF MM116 = (-inf, 0.45) AND DMM116 = <-0.05, inf) AND AS038 = (-inf, 2.45) AND MM31 = <0.19, 0.25) AND PG072 = (-inf, 2.05) THEN MM116_pred = {0.40} [0.38,0.42]\nIF MM116 = (-inf, 0.45) AND DMM116 = (-inf, 0.05) THEN MM116_pred = {0.40} [0.37,0.43]\nIF MM116 = <0.35, inf) AND MM31 = (-inf, 0.23) THEN MM116_pred = {0.40} [0.39,0.41]\nIF MM116 = <0.35, inf) AND DMM116 = <-0.05, 0.05) AND MM31 = (-inf, 0.24) AND BA13 = (-inf, 1077.50) THEN MM116_pred = {0.40} [0.37,0.43]\nIF MM116 = <0.35, inf) AND DMM116 = <-0.05, inf) AND AS038 = <2.05, inf) AND MM31 = (-inf, 0.24) AND BA13 = (-inf, 1077.50) THEN MM116_pred = {0.40} [0.37,0.43]\nIF MM116 = <0.35, 0.70) AND DMM116 = <-0.05, 0.05) AND MM31 = (-inf, 0.24) THEN MM116_pred = {0.40} [0.36,0.44]\nIF PD = (-inf, 0.50) AND MM116 = <0.35, inf) AND DMM116 = <-0.05, 0.05) AND MM31 = (-inf, 0.24) THEN MM116_pred = {0.40} [0.36,0.44]\nIF MM116 = <0.55, inf) AND DMM116 = (-inf, 0.05) THEN MM116_pred = {0.90} [0.69,1.11]\nIF MM116 = <0.45, inf) AND MM31 = <0.23, 0.27) AND PG072 = <1.65, inf) AND BA13 = (-inf, 1075.50) THEN MM116_pred = {0.50} [0.49,0.51]\nIF PD = (-inf, 0.50) AND MM116 = <0.45, 0.55) AND DMM116 = <-0.05, inf) AND MM31 = <0.23, inf) AND PG072 = <1.65, inf) THEN MM116_pred = {0.50} [0.47,0.53]\nIF MM116 = <0.45, 0.55) AND DMM116 = <-0.05, inf) AND PG072 = <1.65, inf) THEN MM116_pred = {0.50} [0.47,0.53]\nIF PD = (-inf, 0.50) AND MM116 = <0.45, 0.55) AND AS038 = (-inf, 2.45) AND PG072 = <1.65, inf) THEN MM116_pred = {0.50} [0.47,0.53]\nIF MM116 = <0.55, 0.65) AND DMM116 = <0.05, inf) AND MM31 = (-inf, 0.26) AND PG072 = (-inf, 1.85) THEN MM116_pred = {0.60} [0.60,0.60]\nIF MM116 = <0.55, 0.95) AND DMM116 = <0.05, inf) AND MM31 = (-inf, 0.27) AND BA13 = <1075.50, inf) THEN MM116_pred = {0.70} [0.59,0.81]\nIF MM116 = (-inf, 1.05) AND DMM116 = (-inf, 0.15) AND AS038 = (-inf, 2.45) AND MM31 = (-inf, 0.27) AND PG072 = (-inf, 2.05) THEN MM116_pred = {0.40} [0.30,0.50]\nIF PD = (-inf, 0.50) AND DMM116 = <0.05, inf) AND AS038 = <2.35, inf) AND MM31 = <0.27, 0.28) THEN MM116_pred = {0.60} [0.60,0.60]\nIF PD = (-inf, 0.50) AND MM116 = <0.55, 0.75) AND DMM116 = <-0.05, inf) AND MM31 = <0.27, 0.30) THEN MM116_pred = {0.60} [0.57,0.63]\nIF MM116 = <0.55, 0.85) AND MM31 = <0.27, 0.30) THEN MM116_pred = {0.60} [0.51,0.69]\nIF MM116 = <0.45, 0.55) AND DMM116 = <-0.15, inf) AND MM31 = (-inf, 0.30) AND PG072 = <1.65, inf) THEN MM116_pred = {0.50} [0.47,0.53]\nIF DMM116 = (-inf, 0.15) AND AS038 = (-inf, 2.55) AND MM31 = <0.19, 0.30) AND PG072 = <1.55, inf) THEN MM116_pred = {0.50} [0.37,0.63]\nIF MM116 = (-inf, 0.95) AND DMM116 = <-0.30, inf) AND AS038 = <2.25, 2.45) AND MM31 = <0.28, 0.31) AND PG072 = <1.75, 1.95) AND BA13 = (-inf, 1077.50) THEN MM116_pred = {0.60} [0.50,0.70]\nIF MM116 = <0.45, 1.10) AND DMM116 = <-0.15, inf) AND AS038 = <2.15, 2.45) AND MM31 = (-inf, 0.31) AND BA13 = <1072.50, 1077.50) THEN MM116_pred = {0.50} [0.40,0.60]\nIF PD = (-inf, 0.50) AND MM116 = <0.45, 0.95) AND MM31 = <0.30, inf) AND BA13 = (-inf, 1076.50) THEN MM116_pred = {0.80} [0.68,0.92]\nIF MM116 = <0.35, 0.65) AND AS038 = (-inf, 2.45) AND MM31 = <0.29, inf) AND BA13 = (-inf, 1076.50) THEN MM116_pred = {0.60} [0.56,0.64]\nIF MM116 = <0.65, inf) AND DMM116 = <0.05, inf) AND AS038 = <2.15, inf) AND MM31 = <0.30, 0.32) AND PG072 = (-inf, 1.95) AND BA13 = <1074.50, inf) THEN MM116_pred = {1.20} [1.00,1.40]\nIF MM116 = <0.45, inf) AND DMM116 = <-0.15, inf) AND MM31 = <0.32, inf) THEN MM116_pred = {0.90} [0.69,1.11]\n"
+     ]
+    }
+   ],
+   "source": [
+    "for rule in c2_ruleset.rules:\n",
+    "    print(rule)"
+   ]
+  },
+  {
+   "source": [
+    "### Correlation Measure generated rules"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {},
+   "outputs": [
+    {
+     "output_type": "stream",
+     "name": "stdout",
+     "text": [
+      "IF MM116 = (-inf, 0.45) AND DMM116 = <-0.05, inf) AND MM31 = <0.18, 0.24) THEN MM116_pred = {0.40} [0.38,0.42]\nIF MM116 = (-inf, 0.45) AND MM31 = <0.18, 0.24) THEN MM116_pred = {0.40} [0.38,0.42]\nIF MM31 = (-inf, 0.25) THEN MM116_pred = {0.40} [0.33,0.47]\nIF DMM116 = (-inf, 0.05) AND AS038 = (-inf, 2.45) AND MM31 = (-inf, 0.26) THEN MM116_pred = {0.40} [0.31,0.49]\nIF MM31 = <0.18, 0.28) THEN MM116_pred = {0.50} [0.38,0.62]\nIF MM116 = <0.25, 0.45) AND DMM116 = <-0.05, inf) AND MM31 = <0.18, inf) AND BA13 = (-inf, 1077.50) THEN MM116_pred = {0.40} [0.38,0.42]\nIF MM116 = (-inf, 0.45) AND DMM116 = <-0.05, inf) AND MM31 = <0.18, inf) AND BA13 = (-inf, 1077.50) THEN MM116_pred = {0.40} [0.37,0.43]\nIF MM116 = <0.45, 0.55) AND DMM116 = <-0.05, inf) AND PG072 = <1.65, inf) THEN MM116_pred = {0.50} [0.47,0.53]\nIF MM116 = <0.55, 0.65) AND DMM116 = <-0.15, inf) AND MM31 = <0.24, inf) THEN MM116_pred = {0.60} [0.56,0.64]\nIF MM116 = <0.45, 0.75) AND DMM116 = <-0.05, inf) AND MM31 = (-inf, 0.29) AND BA13 = <1072.50, 1077.50) THEN MM116_pred = {0.50} [0.47,0.53]\nIF MM116 = <0.45, 0.75) AND DMM116 = <-0.05, inf) AND AS038 = (-inf, 2.45) AND MM31 = (-inf, 0.30) AND BA13 = <1072.50, 1077.50) THEN MM116_pred = {0.50} [0.46,0.54]\nIF PD = (-inf, 0.50) AND MM116 = <0.45, 0.85) AND AS038 = (-inf, 2.45) AND MM31 = (-inf, 0.29) AND BA13 = <1072.50, 1077.50) THEN MM116_pred = {0.50} [0.44,0.56]\nIF MM116 = <0.45, 0.85) AND MM31 = <0.26, inf) THEN MM116_pred = {0.70} [0.57,0.83]\nIF MM116 = <0.70, inf) THEN MM116_pred = {0.90} [0.70,1.10]\n"
+     ]
+    }
+   ],
+   "source": [
+    "for rule in corr_ruleset.rules:\n",
+    "    print(rule)"
+   ]
+  },
+  {
+   "source": [
+    "### RSS Measure generated rules"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {},
+   "outputs": [
+    {
+     "output_type": "stream",
+     "name": "stdout",
+     "text": [
+      "IF MM31 = (-inf, 0.23) THEN MM116_pred = {0.40} [0.39,0.41]\nIF MM116 = (-inf, 0.45) AND MM31 = <0.18, 0.25) AND PG072 = (-inf, 2.05) THEN MM116_pred = {0.40} [0.38,0.42]\nIF MM31 = (-inf, 0.26) THEN MM116_pred = {0.40} [0.30,0.50]\nIF MM31 = <0.18, 0.28) THEN MM116_pred = {0.50} [0.38,0.62]\nIF PD = (-inf, 0.50) AND MM116 = <0.25, inf) AND DMM116 = <-0.95, inf) AND MM31 = <0.23, inf) AND BA13 = (-inf, 1075.50) THEN MM116_pred = {0.70} [0.48,0.92]\nIF MM116 = (-inf, 0.25) THEN MM116_pred = {0.20} [0.15,0.25]\nIF MM116 = (-inf, 0.55) AND DMM116 = <-0.15, inf) AND MM31 = <0.23, inf) AND PG072 = <1.65, inf) THEN MM116_pred = {0.50} [0.44,0.56]\nIF MM116 = (-inf, 0.65) AND DMM116 = <-0.15, 0.15) AND MM31 = <0.23, 0.40) AND PG072 = <1.65, inf) AND BA13 = <1070.50, inf) THEN MM116_pred = {0.50} [0.43,0.57]\nIF DMM116 = <-0.25, 0.15) AND MM31 = (-inf, 0.32) AND PG072 = <1.55, inf) THEN MM116_pred = {0.50} [0.36,0.64]\nIF MM116 = (-inf, 0.75) AND DMM116 = <-0.15, inf) AND AS038 = <2.15, inf) AND BA13 = <1069.50, inf) THEN MM116_pred = {0.50} [0.37,0.63]\nIF MM116 = (-inf, 0.75) AND MM31 = <0.23, 0.46) THEN MM116_pred = {0.60} [0.48,0.72]\nIF MM116 = (-inf, 0.85) AND DMM116 = (-inf, 0.15) AND AS038 = (-inf, 2.55) AND MM31 = (-inf, 0.33) THEN MM116_pred = {0.50} [0.37,0.63]\nIF MM116 = <0.85, inf) THEN MM116_pred = {1} [0.82,1.18]\nIF MM116 = <0.65, 0.85) THEN MM116_pred = {0.80} [0.71,0.89]\n"
+     ]
+    }
+   ],
+   "source": [
+    "for rule in rss_ruleset.rules:\n",
+    "    print(rule)"
+   ]
+  },
+  {
+   "source": [
+    "## Evaluation on a test set"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "x_test = test_df.drop(['MM116_pred'], axis=1)\n",
+    "y_test = test_df['MM116_pred']"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# C2\n",
+    "c2_predictions = c2_reg.predict(x_test)\n",
+    "c2_regression_metrics = get_regression_metrics('C2', c2_predictions, y_test)\n",
+    "\n",
+    "# Correlation\n",
+    "corr_predictions = corr_reg.predict(x_test)\n",
+    "corr_regression_metrics = get_regression_metrics('Correlation', corr_predictions, y_test)\n",
+    "\n",
+    "# RSS\n",
+    "rss_predictions = rss_reg.predict(x_test)\n",
+    "rss_regression_metrics = get_regression_metrics('RSS', rss_predictions, y_test)\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {},
+   "outputs": [
+    {
+     "output_type": "display_data",
+     "data": {
+      "text/plain": "             absolute_error  relative_error  relative_error_lenient  \\\nMeasure                                                               \nC2                 0.175348        0.153675                0.152205   \nCorrelation        0.167494        0.143461                0.143185   \nRSS                0.138080        0.121742                0.120687   \n\n             relative_error_strict  normalized_absolute_error  squared_error  \\\nMeasure                                                                        \nC2                        0.197185                   1.209023       0.049460   \nCorrelation               0.187964                   1.154868       0.049314   \nRSS                       0.150155                   0.952062       0.032734   \n\n             root_mean_squared_error  root_relative_squared_error  \\\nMeasure                                                             \nC2                          0.222395                     0.183108   \nCorrelation                 0.222068                     0.181535   \nRSS                         0.180926                     0.151750   \n\n             correlation  squared_correlation  \nMeasure                                        \nC2              0.768065             0.589923  \nCorrelation     0.801878             0.643009  \nRSS             0.815327             0.664758  ",
+      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>absolute_error</th>\n      <th>relative_error</th>\n      <th>relative_error_lenient</th>\n      <th>relative_error_strict</th>\n      <th>normalized_absolute_error</th>\n      <th>squared_error</th>\n      <th>root_mean_squared_error</th>\n      <th>root_relative_squared_error</th>\n      <th>correlation</th>\n      <th>squared_correlation</th>\n    </tr>\n    <tr>\n      <th>Measure</th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>C2</th>\n      <td>0.175348</td>\n      <td>0.153675</td>\n      <td>0.152205</td>\n      <td>0.197185</td>\n      <td>1.209023</td>\n      <td>0.049460</td>\n      <td>0.222395</td>\n      <td>0.183108</td>\n      <td>0.768065</td>\n      <td>0.589923</td>\n    </tr>\n    <tr>\n      <th>Correlation</th>\n      <td>0.167494</td>\n      <td>0.143461</td>\n      <td>0.143185</td>\n      <td>0.187964</td>\n      <td>1.154868</td>\n      <td>0.049314</td>\n      <td>0.222068</td>\n      <td>0.181535</td>\n      <td>0.801878</td>\n      <td>0.643009</td>\n    </tr>\n    <tr>\n      <th>RSS</th>\n      <td>0.138080</td>\n      <td>0.121742</td>\n      <td>0.120687</td>\n      <td>0.150155</td>\n      <td>0.952062</td>\n      <td>0.032734</td>\n      <td>0.180926</td>\n      <td>0.151750</td>\n      <td>0.815327</td>\n      <td>0.664758</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
+     },
+     "metadata": {}
+    }
+   ],
+   "source": [
+    "display(pd.concat([c2_regression_metrics, corr_regression_metrics, rss_regression_metrics]))"
+   ]
+  },
+  {
+   "source": [
+    "## Hyperparameters tuning\n",
+    "\n",
+    "This one gonna take a while..."
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from sklearn.model_selection import KFold\n",
+    "from sklearn.model_selection import GridSearchCV\n",
+    "from rulekit.params import Measures\n",
+    "\n",
+    "\n",
+    "# define models and parameters\n",
+    "model = RuleRegressor()\n",
+    "min_rule_covered = [5]#range(3, 15)\n",
+    "measures_choice = [Measures.C2, Measures.RSS, Measures.WeightedLaplace, Measures.Correlation]\n",
+    "\n",
+    "# define grid search\n",
+    "grid = {\n",
+    "    'min_rule_covered': min_rule_covered, \n",
+    "    'induction_measure': measures_choice, \n",
+    "    'pruning_measure': measures_choice, \n",
+    "    'voting_measure': measures_choice\n",
+    "}\n",
+    "cv = KFold(n_splits=3)\n",
+    "grid_search = GridSearchCV(estimator=model, param_grid=grid, cv=cv, scoring='neg_root_mean_squared_error')\n",
+    "grid_result = grid_search.fit(x_train, y_train)\n",
+    "\n",
+    "# summarize results\n",
+    "print(\"Best RMSE: %f using %s\" % (grid_result.best_score_, grid_result.best_params_))"
+   ]
+  },
+  {
+   "source": [
+    "## Prediction using the model selected from the tuning"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 23,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "reg = grid_result.best_estimator_"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 26,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "ruleset = reg.model\n",
+    "ruleset_stats = get_ruleset_stats('', ruleset)"
+   ]
+  },
+  {
+   "source": [
+    "Generated rules"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 27,
+   "metadata": {},
+   "outputs": [
+    {
+     "output_type": "stream",
+     "name": "stdout",
+     "text": [
+      "IF PD = (-inf, 0.50) AND AS038 = (-inf, 2.35) AND MM31 = <0.21, 0.22) AND BA13 = <1075.50, inf) THEN MM116_pred = {0.40} [0.40,0.40]\nIF MM116 = <0.35, 0.45) AND DMM116 = <-0.05, inf) AND MM31 = (-inf, 0.24) THEN MM116_pred = {0.40} [0.38,0.42]\nIF MM116 = (-inf, 0.45) AND MM31 = <0.18, 0.24) THEN MM116_pred = {0.40} [0.38,0.42]\nIF MM31 = <0.24, 0.25) AND BA13 = (-inf, 1076.50) THEN MM116_pred = {0.50} [0.50,0.50]\nIF MM116 = (-inf, 0.45) AND DMM116 = <-0.05, inf) AND AS038 = (-inf, 2.45) AND MM31 = <0.19, 0.25) AND PG072 = (-inf, 2.05) THEN MM116_pred = {0.40} [0.38,0.42]\nIF MM116 = (-inf, 0.45) AND DMM116 = (-inf, 0.05) THEN MM116_pred = {0.40} [0.37,0.43]\nIF MM116 = <0.35, inf) AND MM31 = (-inf, 0.23) THEN MM116_pred = {0.40} [0.39,0.41]\nIF MM116 = <0.35, inf) AND DMM116 = <-0.05, 0.05) AND MM31 = (-inf, 0.24) AND BA13 = (-inf, 1077.50) THEN MM116_pred = {0.40} [0.37,0.43]\nIF MM116 = <0.35, inf) AND DMM116 = <-0.05, inf) AND AS038 = <2.05, inf) AND MM31 = (-inf, 0.24) AND BA13 = (-inf, 1077.50) THEN MM116_pred = {0.40} [0.37,0.43]\nIF MM116 = <0.35, 0.70) AND DMM116 = <-0.05, 0.05) AND MM31 = (-inf, 0.24) THEN MM116_pred = {0.40} [0.36,0.44]\nIF PD = (-inf, 0.50) AND MM116 = <0.35, inf) AND DMM116 = <-0.05, 0.05) AND MM31 = (-inf, 0.24) THEN MM116_pred = {0.40} [0.36,0.44]\nIF MM116 = <0.55, inf) AND DMM116 = (-inf, 0.05) THEN MM116_pred = {0.90} [0.69,1.11]\nIF MM116 = <0.45, inf) AND MM31 = <0.23, 0.27) AND PG072 = <1.65, inf) AND BA13 = (-inf, 1075.50) THEN MM116_pred = {0.50} [0.49,0.51]\nIF PD = (-inf, 0.50) AND MM116 = <0.45, 0.55) AND DMM116 = <-0.05, inf) AND MM31 = <0.23, inf) AND PG072 = <1.65, inf) THEN MM116_pred = {0.50} [0.47,0.53]\nIF MM116 = <0.45, 0.55) AND DMM116 = <-0.05, inf) AND PG072 = <1.65, inf) THEN MM116_pred = {0.50} [0.47,0.53]\nIF PD = (-inf, 0.50) AND MM116 = <0.45, 0.55) AND AS038 = (-inf, 2.45) AND PG072 = <1.65, inf) THEN MM116_pred = {0.50} [0.47,0.53]\nIF MM116 = <0.55, 0.65) AND DMM116 = <0.05, inf) AND MM31 = (-inf, 0.26) AND PG072 = (-inf, 1.85) THEN MM116_pred = {0.60} [0.60,0.60]\nIF MM116 = <0.55, 0.95) AND DMM116 = <0.05, inf) AND MM31 = (-inf, 0.27) AND BA13 = <1075.50, inf) THEN MM116_pred = {0.70} [0.59,0.81]\nIF MM116 = (-inf, 1.05) AND DMM116 = (-inf, 0.15) AND AS038 = (-inf, 2.45) AND MM31 = (-inf, 0.27) AND PG072 = (-inf, 2.05) THEN MM116_pred = {0.40} [0.30,0.50]\nIF PD = (-inf, 0.50) AND DMM116 = <0.05, inf) AND AS038 = <2.35, inf) AND MM31 = <0.27, 0.28) THEN MM116_pred = {0.60} [0.60,0.60]\nIF PD = (-inf, 0.50) AND MM116 = <0.55, 0.75) AND DMM116 = <-0.05, inf) AND MM31 = <0.27, 0.30) THEN MM116_pred = {0.60} [0.57,0.63]\nIF MM116 = <0.55, 0.85) AND MM31 = <0.27, 0.30) THEN MM116_pred = {0.60} [0.51,0.69]\nIF MM116 = <0.45, 0.55) AND DMM116 = <-0.15, inf) AND MM31 = (-inf, 0.30) AND PG072 = <1.65, inf) THEN MM116_pred = {0.50} [0.47,0.53]\nIF DMM116 = (-inf, 0.15) AND AS038 = (-inf, 2.55) AND MM31 = <0.19, 0.30) AND PG072 = <1.55, inf) THEN MM116_pred = {0.50} [0.37,0.63]\nIF MM116 = (-inf, 0.95) AND DMM116 = <-0.30, inf) AND AS038 = <2.25, 2.45) AND MM31 = <0.28, 0.31) AND PG072 = <1.75, 1.95) AND BA13 = (-inf, 1077.50) THEN MM116_pred = {0.60} [0.50,0.70]\nIF MM116 = <0.45, 1.10) AND DMM116 = <-0.15, inf) AND AS038 = <2.15, 2.45) AND MM31 = (-inf, 0.31) AND BA13 = <1072.50, 1077.50) THEN MM116_pred = {0.50} [0.40,0.60]\nIF PD = (-inf, 0.50) AND MM116 = <0.45, 0.95) AND MM31 = <0.30, inf) AND BA13 = (-inf, 1076.50) THEN MM116_pred = {0.80} [0.68,0.92]\nIF MM116 = <0.35, 0.65) AND AS038 = (-inf, 2.45) AND MM31 = <0.29, inf) AND BA13 = (-inf, 1076.50) THEN MM116_pred = {0.60} [0.56,0.64]\nIF MM116 = <0.65, inf) AND DMM116 = <0.05, inf) AND AS038 = <2.15, inf) AND MM31 = <0.30, 0.32) AND PG072 = (-inf, 1.95) AND BA13 = <1074.50, inf) THEN MM116_pred = {1.20} [1.00,1.40]\nIF MM116 = <0.45, inf) AND DMM116 = <-0.15, inf) AND MM31 = <0.32, inf) THEN MM116_pred = {0.90} [0.69,1.11]\n"
+     ]
+    }
+   ],
+   "source": [
+    "for rule in ruleset.rules:\n",
+    "    print(rule)"
+   ]
+  },
+  {
+   "source": [
+    "Ruleset evaluation"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 28,
+   "metadata": {},
+   "outputs": [
+    {
+     "output_type": "display_data",
+     "data": {
+      "text/plain": "         minimum_covered  maximum_uncovered_fraction  ignore_missing  \\\nMeasure                                                                \n                     5.0                         0.0           False   \n\n         pruning_enabled  max_growing_condition  time_total_s  time_growing_s  \\\nMeasure                                                                         \n                    True                    0.0    105.966684       71.493354   \n\n         time_pruning_s  rules_count  conditions_per_rule  \\\nMeasure                                                     \n              34.399725           30                  4.8   \n\n         induced_conditions_per_rule  avg_rule_coverage  avg_rule_precision  \\\nMeasure                                                                       \n                           25.266667           0.145382            0.910635   \n\n         avg_rule_quality    pvalue  FDR_pvalue  FWER_pvalue  \\\nMeasure                                                        \n                 0.724619  0.004967    0.004967     0.004968   \n\n         fraction_significant  fraction_FDR_significant  \\\nMeasure                                                   \n                     0.966667                  0.966667   \n\n         fraction_FWER_significant  \nMeasure                             \n                          0.966667  ",
+      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>minimum_covered</th>\n      <th>maximum_uncovered_fraction</th>\n      <th>ignore_missing</th>\n      <th>pruning_enabled</th>\n      <th>max_growing_condition</th>\n      <th>time_total_s</th>\n      <th>time_growing_s</th>\n      <th>time_pruning_s</th>\n      <th>rules_count</th>\n      <th>conditions_per_rule</th>\n      <th>induced_conditions_per_rule</th>\n      <th>avg_rule_coverage</th>\n      <th>avg_rule_precision</th>\n      <th>avg_rule_quality</th>\n      <th>pvalue</th>\n      <th>FDR_pvalue</th>\n      <th>FWER_pvalue</th>\n      <th>fraction_significant</th>\n      <th>fraction_FDR_significant</th>\n      <th>fraction_FWER_significant</th>\n    </tr>\n    <tr>\n      <th>Measure</th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th></th>\n      <td>5.0</td>\n      <td>0.0</td>\n      <td>False</td>\n      <td>True</td>\n      <td>0.0</td>\n      <td>105.966684</td>\n      <td>71.493354</td>\n      <td>34.399725</td>\n      <td>30</td>\n      <td>4.8</td>\n      <td>25.266667</td>\n      <td>0.145382</td>\n      <td>0.910635</td>\n      <td>0.724619</td>\n      <td>0.004967</td>\n      <td>0.004967</td>\n      <td>0.004968</td>\n      <td>0.966667</td>\n      <td>0.966667</td>\n      <td>0.966667</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
+     },
+     "metadata": {}
+    }
+   ],
+   "source": [
+    "display(ruleset_stats)"
+   ]
+  },
+  {
+   "source": [
+    "### Validate model on test dataset"
+   ],
+   "cell_type": "markdown",
+   "metadata": {}
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 30,
+   "metadata": {},
+   "outputs": [
+    {
+     "output_type": "display_data",
+     "data": {
+      "text/plain": "         absolute_error  relative_error  relative_error_lenient  \\\nMeasure                                                           \n               0.175348        0.153675                0.152205   \n\n         relative_error_strict  normalized_absolute_error  squared_error  \\\nMeasure                                                                    \n                      0.197185                   1.209023        0.04946   \n\n         root_mean_squared_error  root_relative_squared_error  correlation  \\\nMeasure                                                                      \n                        0.222395                     0.183108     0.768065   \n\n         squared_correlation  \nMeasure                       \n                    0.589923  ",
+      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>absolute_error</th>\n      <th>relative_error</th>\n      <th>relative_error_lenient</th>\n      <th>relative_error_strict</th>\n      <th>normalized_absolute_error</th>\n      <th>squared_error</th>\n      <th>root_mean_squared_error</th>\n      <th>root_relative_squared_error</th>\n      <th>correlation</th>\n      <th>squared_correlation</th>\n    </tr>\n    <tr>\n      <th>Measure</th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th></th>\n      <td>0.175348</td>\n      <td>0.153675</td>\n      <td>0.152205</td>\n      <td>0.197185</td>\n      <td>1.209023</td>\n      <td>0.04946</td>\n      <td>0.222395</td>\n      <td>0.183108</td>\n      <td>0.768065</td>\n      <td>0.589923</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
+     },
+     "metadata": {}
+    }
+   ],
+   "source": [
+    "predictions = reg.predict(x_test)\n",
+    "regression_metrics = get_regression_metrics('', predictions, y_test)\n",
+    "display(regression_metrics.iloc[0])"
+   ]
+  }
+ ]
+}
\ No newline at end of file
diff --git a/doc/source/rst/tutorials/survival.ipynb b/doc/source/rst/tutorials/survival.ipynb
new file mode 100644
index 0000000..7f4c0ee
--- /dev/null
+++ b/doc/source/rst/tutorials/survival.ipynb
@@ -0,0 +1,734 @@
+{
+  "nbformat": 4,
+  "nbformat_minor": 0,
+  "metadata": {
+    "colab": {
+      "name": "Raport_przezyciowy.ipynb",
+      "provenance": [],
+      "collapsed_sections": [],
+      "toc_visible": true
+    },
+    "kernelspec": {
+      "name": "rulekit",
+      "display_name": "rulekit",
+      "language": "python"
+    },
+    "language_info": {
+      "name": "python",
+      "version": "3.8.6"
+    },
+    "metadata": {
+      "interpreter": {
+        "hash": "62266c16fff41e971c13e9cb2ad3d47e4ef45d0678714c255381eb9fdcbd7032"
+      }
+    }
+  },
+  "cells": [
+    {
+      "cell_type": "markdown",
+      "metadata": {
+        "id": "-Uy-yBGsd9W1"
+      },
+      "source": [
+        "# Survival analysis"
+      ]
+    },
+    {
+      "source": [
+        "This notebook presents example usage of package for solving survival problem on `bmt` dataset. You can download dataset [here](https://raw.githubusercontent.com/adaa-polsl/RuleKit/master/data/bmt/bmt.arff) \n",
+        "\n",
+        "This tutorial will cover topics such as:    \n",
+        "- training model   \n",
+        "- changing model hyperparameters   \n",
+        "- hyperparameters tuning   \n",
+        "- calculating metrics for model    \n",
+        "- getting RuleKit inbuilt   "
+      ],
+      "cell_type": "markdown",
+      "metadata": {}
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {
+        "id": "KjtU7PA8eOTr"
+      },
+      "source": [
+        "## Summary of the dataset"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "metadata": {
+        "id": "Tp1TpfCkd58n"
+      },
+      "source": [
+        "from scipy.io import arff\n",
+        "import pandas as pd\n",
+        "import matplotlib.pyplot as plt\n",
+        "import numpy as np\n",
+        "\n",
+        "datasets_path = \"\" \n",
+        "\n",
+        "file_name = 'bmt.arff'\n",
+        "\n",
+        "data_df = pd.DataFrame(arff.loadarff(open(datasets_path + file_name, 'r', encoding=\"cp1252\"))[0])\n",
+        "\n",
+        "# code to fix the problem with encoding of the file\n",
+        "tmp_df = data_df.select_dtypes([object]) \n",
+        "tmp_df = tmp_df.stack().str.decode(\"cp1252\").unstack()\n",
+        "for col in tmp_df:\n",
+        "    data_df[col] = tmp_df[col]\n",
+        "    \n",
+        "data_df = data_df.replace({'?': None})"
+      ],
+      "execution_count": 1,
+      "outputs": []
+    },
+    {
+      "cell_type": "code",
+      "execution_count": 97,
+      "metadata": {},
+      "outputs": [
+        {
+          "output_type": "execute_result",
+          "data": {
+            "text/plain": [
+              "    Recipientgender Stemcellsource   Donorage Donorage35 IIIV Gendermatch  \\\n",
+              "0                 1              1  22.830137          0    1           0   \n",
+              "1                 1              0  23.342466          0    1           0   \n",
+              "2                 1              0  26.394521          0    1           0   \n",
+              "3                 0              0  39.684932          1    1           0   \n",
+              "4                 0              1  33.358904          0    0           0   \n",
+              "..              ...            ...        ...        ...  ...         ...   \n",
+              "182               1              1  37.575342          1    1           0   \n",
+              "183               0              1  22.895890          0    0           0   \n",
+              "184               0              1  27.347945          0    1           0   \n",
+              "185               1              1  27.780822          0    1           0   \n",
+              "186               1              1  55.553425          1    1           0   \n",
+              "\n",
+              "    DonorABO RecipientABO RecipientRh ABOmatch  ... extcGvHD CD34kgx10d6  \\\n",
+              "0          1            1           1        0  ...        1        7.20   \n",
+              "1         -1           -1           1        0  ...        1        4.50   \n",
+              "2         -1           -1           1        0  ...        1        7.94   \n",
+              "3          1            2           1        1  ...     None        4.25   \n",
+              "4          1            2           0        1  ...        1       51.85   \n",
+              "..       ...          ...         ...      ...  ...      ...         ...   \n",
+              "182        1            1           0        0  ...        1       11.08   \n",
+              "183        1            0           1        1  ...        1        4.64   \n",
+              "184        1           -1           1        1  ...        1        7.73   \n",
+              "185        1            0           1        1  ...        0       15.41   \n",
+              "186        1            2           1        1  ...        1        9.91   \n",
+              "\n",
+              "      CD3dCD34 CD3dkgx10d8 Rbodymass ANCrecovery PLTrecovery  \\\n",
+              "0     1.338760        5.38      35.0        19.0        51.0   \n",
+              "1    11.078295        0.41      20.6        16.0        37.0   \n",
+              "2    19.013230        0.42      23.4        23.0        20.0   \n",
+              "3    29.481647        0.14      50.0        23.0        29.0   \n",
+              "4     3.972255       13.05       9.0        14.0        14.0   \n",
+              "..         ...         ...       ...         ...         ...   \n",
+              "182   2.522750        4.39      44.0        15.0        22.0   \n",
+              "183   1.038858        4.47      44.5        12.0        30.0   \n",
+              "184   1.635559        4.73      33.0        16.0        16.0   \n",
+              "185   8.077770        1.91      24.0        13.0        14.0   \n",
+              "186   0.948135       10.45      37.0        18.0        20.0   \n",
+              "\n",
+              "    time_to_aGvHD_III_IV survival_time survival_status  \n",
+              "0                   32.0         999.0             0.0  \n",
+              "1              1000000.0         163.0             1.0  \n",
+              "2              1000000.0         435.0             1.0  \n",
+              "3                   19.0          53.0             1.0  \n",
+              "4              1000000.0        2043.0             0.0  \n",
+              "..                   ...           ...             ...  \n",
+              "182                 16.0         385.0             1.0  \n",
+              "183            1000000.0         634.0             1.0  \n",
+              "184            1000000.0        1895.0             0.0  \n",
+              "185                 54.0         382.0             1.0  \n",
+              "186            1000000.0        1109.0             0.0  \n",
+              "\n",
+              "[187 rows x 37 columns]"
+            ],
+            "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Recipientgender</th>\n      <th>Stemcellsource</th>\n      <th>Donorage</th>\n      <th>Donorage35</th>\n      <th>IIIV</th>\n      <th>Gendermatch</th>\n      <th>DonorABO</th>\n      <th>RecipientABO</th>\n      <th>RecipientRh</th>\n      <th>ABOmatch</th>\n      <th>...</th>\n      <th>extcGvHD</th>\n      <th>CD34kgx10d6</th>\n      <th>CD3dCD34</th>\n      <th>CD3dkgx10d8</th>\n      <th>Rbodymass</th>\n      <th>ANCrecovery</th>\n      <th>PLTrecovery</th>\n      <th>time_to_aGvHD_III_IV</th>\n      <th>survival_time</th>\n      <th>survival_status</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>1</td>\n      <td>1</td>\n      <td>22.830137</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>0</td>\n      <td>...</td>\n      <td>1</td>\n      <td>7.20</td>\n      <td>1.338760</td>\n      <td>5.38</td>\n      <td>35.0</td>\n      <td>19.0</td>\n      <td>51.0</td>\n      <td>32.0</td>\n      <td>999.0</td>\n      <td>0.0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>1</td>\n      <td>0</td>\n      <td>23.342466</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>-1</td>\n      <td>-1</td>\n      <td>1</td>\n      <td>0</td>\n      <td>...</td>\n      <td>1</td>\n      <td>4.50</td>\n      <td>11.078295</td>\n      <td>0.41</td>\n      <td>20.6</td>\n      <td>16.0</td>\n      <td>37.0</td>\n      <td>1000000.0</td>\n      <td>163.0</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>1</td>\n      <td>0</td>\n      <td>26.394521</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>-1</td>\n      <td>-1</td>\n      <td>1</td>\n      <td>0</td>\n      <td>...</td>\n      <td>1</td>\n      <td>7.94</td>\n      <td>19.013230</td>\n      <td>0.42</td>\n      <td>23.4</td>\n      <td>23.0</td>\n      <td>20.0</td>\n      <td>1000000.0</td>\n      <td>435.0</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>0</td>\n      <td>0</td>\n      <td>39.684932</td>\n      <td>1</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>2</td>\n      <td>1</td>\n      <td>1</td>\n      <td>...</td>\n      <td>None</td>\n      <td>4.25</td>\n      <td>29.481647</td>\n      <td>0.14</td>\n      <td>50.0</td>\n      <td>23.0</td>\n      <td>29.0</td>\n      <td>19.0</td>\n      <td>53.0</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>0</td>\n      <td>1</td>\n      <td>33.358904</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>2</td>\n      <td>0</td>\n      <td>1</td>\n      <td>...</td>\n      <td>1</td>\n      <td>51.85</td>\n      <td>3.972255</td>\n      <td>13.05</td>\n      <td>9.0</td>\n      <td>14.0</td>\n      <td>14.0</td>\n      <td>1000000.0</td>\n      <td>2043.0</td>\n      <td>0.0</td>\n    </tr>\n    <tr>\n      <th>...</th>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n    </tr>\n    <tr>\n      <th>182</th>\n      <td>1</td>\n      <td>1</td>\n      <td>37.575342</td>\n      <td>1</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0</td>\n      <td>...</td>\n      <td>1</td>\n      <td>11.08</td>\n      <td>2.522750</td>\n      <td>4.39</td>\n      <td>44.0</td>\n      <td>15.0</td>\n      <td>22.0</td>\n      <td>16.0</td>\n      <td>385.0</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>183</th>\n      <td>0</td>\n      <td>1</td>\n      <td>22.895890</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n      <td>...</td>\n      <td>1</td>\n      <td>4.64</td>\n      <td>1.038858</td>\n      <td>4.47</td>\n      <td>44.5</td>\n      <td>12.0</td>\n      <td>30.0</td>\n      <td>1000000.0</td>\n      <td>634.0</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>184</th>\n      <td>0</td>\n      <td>1</td>\n      <td>27.347945</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>-1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>...</td>\n      <td>1</td>\n      <td>7.73</td>\n      <td>1.635559</td>\n      <td>4.73</td>\n      <td>33.0</td>\n      <td>16.0</td>\n      <td>16.0</td>\n      <td>1000000.0</td>\n      <td>1895.0</td>\n      <td>0.0</td>\n    </tr>\n    <tr>\n      <th>185</th>\n      <td>1</td>\n      <td>1</td>\n      <td>27.780822</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>1</td>\n      <td>...</td>\n      <td>0</td>\n      <td>15.41</td>\n      <td>8.077770</td>\n      <td>1.91</td>\n      <td>24.0</td>\n      <td>13.0</td>\n      <td>14.0</td>\n      <td>54.0</td>\n      <td>382.0</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>186</th>\n      <td>1</td>\n      <td>1</td>\n      <td>55.553425</td>\n      <td>1</td>\n      <td>1</td>\n      <td>0</td>\n      <td>1</td>\n      <td>2</td>\n      <td>1</td>\n      <td>1</td>\n      <td>...</td>\n      <td>1</td>\n      <td>9.91</td>\n      <td>0.948135</td>\n      <td>10.45</td>\n      <td>37.0</td>\n      <td>18.0</td>\n      <td>20.0</td>\n      <td>1000000.0</td>\n      <td>1109.0</td>\n      <td>0.0</td>\n    </tr>\n  </tbody>\n</table>\n<p>187 rows × 37 columns</p>\n</div>"
+          },
+          "metadata": {},
+          "execution_count": 97
+        }
+      ],
+      "source": [
+        "data_df"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "metadata": {
+        "colab": {
+          "base_uri": "https://localhost:8080/",
+          "height": 378
+        },
+        "id": "y9uVi9SFeZSa",
+        "outputId": "6809c06d-5d8c-48a0-9b6d-3c433574f7f7"
+      },
+      "source": [
+        "print(\"Dataset overview:\")\n",
+        "print(f\"Name: {file_name}\")\n",
+        "print(f\"Objects number: {data_df.shape[0]}; Attributes number: {data_df.shape[1]}\")\n",
+        "print(\"Basic attribute statistics:\")\n",
+        "data_df.describe()"
+      ],
+      "execution_count": 2,
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Dataset overview:\nName: bmt.arff\nObjects number: 187; Attributes number: 37\nBasic attribute statistics:\n"
+          ]
+        },
+        {
+          "output_type": "execute_result",
+          "data": {
+            "text/plain": [
+              "         Donorage  Recipientage  CD34kgx10d6    CD3dCD34  CD3dkgx10d8  \\\n",
+              "count  187.000000    187.000000   187.000000  182.000000   182.000000   \n",
+              "mean    33.472068      9.931551    11.891781    5.385096     4.745714   \n",
+              "std      8.271826      5.305639     9.914386    9.598716     3.859128   \n",
+              "min     18.646575      0.600000     0.790000    0.204132     0.040000   \n",
+              "25%     27.039726      5.050000     5.350000    1.786683     1.687500   \n",
+              "50%     33.550685      9.600000     9.720000    2.734462     4.325000   \n",
+              "75%     40.117809     14.050000    15.415000    5.823565     6.785000   \n",
+              "max     55.553425     20.200000    57.780000   99.560970    20.020000   \n",
+              "\n",
+              "        Rbodymass     ANCrecovery     PLTrecovery  time_to_aGvHD_III_IV  \\\n",
+              "count  185.000000      187.000000      187.000000            187.000000   \n",
+              "mean    35.801081    26752.866310    90937.919786         775408.042781   \n",
+              "std     19.650922   161747.200525   288242.407688         418425.252689   \n",
+              "min      6.000000        9.000000        9.000000             10.000000   \n",
+              "25%     19.000000       13.000000       16.000000        1000000.000000   \n",
+              "50%     33.000000       15.000000       21.000000        1000000.000000   \n",
+              "75%     50.600000       17.000000       37.000000        1000000.000000   \n",
+              "max    103.400000  1000000.000000  1000000.000000        1000000.000000   \n",
+              "\n",
+              "       survival_time  survival_status  \n",
+              "count     187.000000       187.000000  \n",
+              "mean      938.743316         0.454545  \n",
+              "std       849.589495         0.499266  \n",
+              "min         6.000000         0.000000  \n",
+              "25%       168.500000         0.000000  \n",
+              "50%       676.000000         0.000000  \n",
+              "75%      1604.000000         1.000000  \n",
+              "max      3364.000000         1.000000  "
+            ],
+            "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Donorage</th>\n      <th>Recipientage</th>\n      <th>CD34kgx10d6</th>\n      <th>CD3dCD34</th>\n      <th>CD3dkgx10d8</th>\n      <th>Rbodymass</th>\n      <th>ANCrecovery</th>\n      <th>PLTrecovery</th>\n      <th>time_to_aGvHD_III_IV</th>\n      <th>survival_time</th>\n      <th>survival_status</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>count</th>\n      <td>187.000000</td>\n      <td>187.000000</td>\n      <td>187.000000</td>\n      <td>182.000000</td>\n      <td>182.000000</td>\n      <td>185.000000</td>\n      <td>187.000000</td>\n      <td>187.000000</td>\n      <td>187.000000</td>\n      <td>187.000000</td>\n      <td>187.000000</td>\n    </tr>\n    <tr>\n      <th>mean</th>\n      <td>33.472068</td>\n      <td>9.931551</td>\n      <td>11.891781</td>\n      <td>5.385096</td>\n      <td>4.745714</td>\n      <td>35.801081</td>\n      <td>26752.866310</td>\n      <td>90937.919786</td>\n      <td>775408.042781</td>\n      <td>938.743316</td>\n      <td>0.454545</td>\n    </tr>\n    <tr>\n      <th>std</th>\n      <td>8.271826</td>\n      <td>5.305639</td>\n      <td>9.914386</td>\n      <td>9.598716</td>\n      <td>3.859128</td>\n      <td>19.650922</td>\n      <td>161747.200525</td>\n      <td>288242.407688</td>\n      <td>418425.252689</td>\n      <td>849.589495</td>\n      <td>0.499266</td>\n    </tr>\n    <tr>\n      <th>min</th>\n      <td>18.646575</td>\n      <td>0.600000</td>\n      <td>0.790000</td>\n      <td>0.204132</td>\n      <td>0.040000</td>\n      <td>6.000000</td>\n      <td>9.000000</td>\n      <td>9.000000</td>\n      <td>10.000000</td>\n      <td>6.000000</td>\n      <td>0.000000</td>\n    </tr>\n    <tr>\n      <th>25%</th>\n      <td>27.039726</td>\n      <td>5.050000</td>\n      <td>5.350000</td>\n      <td>1.786683</td>\n      <td>1.687500</td>\n      <td>19.000000</td>\n      <td>13.000000</td>\n      <td>16.000000</td>\n      <td>1000000.000000</td>\n      <td>168.500000</td>\n      <td>0.000000</td>\n    </tr>\n    <tr>\n      <th>50%</th>\n      <td>33.550685</td>\n      <td>9.600000</td>\n      <td>9.720000</td>\n      <td>2.734462</td>\n      <td>4.325000</td>\n      <td>33.000000</td>\n      <td>15.000000</td>\n      <td>21.000000</td>\n      <td>1000000.000000</td>\n      <td>676.000000</td>\n      <td>0.000000</td>\n    </tr>\n    <tr>\n      <th>75%</th>\n      <td>40.117809</td>\n      <td>14.050000</td>\n      <td>15.415000</td>\n      <td>5.823565</td>\n      <td>6.785000</td>\n      <td>50.600000</td>\n      <td>17.000000</td>\n      <td>37.000000</td>\n      <td>1000000.000000</td>\n      <td>1604.000000</td>\n      <td>1.000000</td>\n    </tr>\n    <tr>\n      <th>max</th>\n      <td>55.553425</td>\n      <td>20.200000</td>\n      <td>57.780000</td>\n      <td>99.560970</td>\n      <td>20.020000</td>\n      <td>103.400000</td>\n      <td>1000000.000000</td>\n      <td>1000000.000000</td>\n      <td>1000000.000000</td>\n      <td>3364.000000</td>\n      <td>1.000000</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
+          },
+          "metadata": {},
+          "execution_count": 2
+        }
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {
+        "id": "al2J-WKIesF7"
+      },
+      "source": [
+        "### Survival curve for the entire set (Kaplan Meier curve)"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "metadata": {
+        "colab": {
+          "base_uri": "https://localhost:8080/",
+          "height": 296
+        },
+        "id": "vQSEvAcRfES0",
+        "outputId": "acd03cb0-a7a8-4d7c-dee9-7f0bb0bddd6f"
+      },
+      "source": [
+        "from lifelines import KaplanMeierFitter\n",
+        "\n",
+        "# create a kmf object\n",
+        "kmf = KaplanMeierFitter() \n",
+        "\n",
+        "# Fit the data into the model\n",
+        "kmf.fit(data_df['survival_time'], data_df['survival_status'],label='Kaplan Meier Estimate')\n",
+        "\n",
+        "# Create an estimate\n",
+        "kmf.plot(ci_show=False) "
+      ],
+      "execution_count": 3,
+      "outputs": [
+        {
+          "output_type": "execute_result",
+          "data": {
+            "text/plain": [
+              "<AxesSubplot:xlabel='timeline'>"
+            ]
+          },
+          "metadata": {},
+          "execution_count": 3
+        },
+        {
+          "output_type": "display_data",
+          "data": {
+            "text/plain": "<Figure size 432x288 with 1 Axes>",
+            "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<svg height=\"262.19625pt\" version=\"1.1\" viewBox=\"0 0 381.914775 262.19625\" width=\"381.914775pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <metadata>\r\n  <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\r\n   <cc:Work>\r\n    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\r\n    <dc:date>2021-04-22T08:04:41.255915</dc:date>\r\n    <dc:format>image/svg+xml</dc:format>\r\n    <dc:creator>\r\n     <cc:Agent>\r\n      <dc:title>Matplotlib v3.4.1, https://matplotlib.org/</dc:title>\r\n     </cc:Agent>\r\n    </dc:creator>\r\n   </cc:Work>\r\n  </rdf:RDF>\r\n </metadata>\r\n <defs>\r\n  <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n  <g id=\"patch_1\">\r\n   <path d=\"M 0 262.19625 \r\nL 381.914775 262.19625 \r\nL 381.914775 0 \r\nL 0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n  </g>\r\n  <g id=\"axes_1\">\r\n   <g id=\"patch_2\">\r\n    <path d=\"M 30.103125 224.64 \r\nL 364.903125 224.64 \r\nL 364.903125 7.2 \r\nL 30.103125 7.2 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n   </g>\r\n   <g id=\"matplotlib.axis_1\">\r\n    <g id=\"xtick_1\">\r\n     <g id=\"line2d_1\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL 0 3.5 \r\n\" id=\"m734c994c71\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"45.321307\" xlink:href=\"#m734c994c71\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_1\">\r\n      <!-- 0 -->\r\n      <g transform=\"translate(42.140057 239.238438)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 2034 4250 \r\nQ 1547 4250 1301 3770 \r\nQ 1056 3291 1056 2328 \r\nQ 1056 1369 1301 889 \r\nQ 1547 409 2034 409 \r\nQ 2525 409 2770 889 \r\nQ 3016 1369 3016 2328 \r\nQ 3016 3291 2770 3770 \r\nQ 2525 4250 2034 4250 \r\nz\r\nM 2034 4750 \r\nQ 2819 4750 3233 4129 \r\nQ 3647 3509 3647 2328 \r\nQ 3647 1150 3233 529 \r\nQ 2819 -91 2034 -91 \r\nQ 1250 -91 836 529 \r\nQ 422 1150 422 2328 \r\nQ 422 3509 836 4129 \r\nQ 1250 4750 2034 4750 \r\nz\r\n\" id=\"DejaVuSans-30\" transform=\"scale(0.015625)\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_2\">\r\n     <g id=\"line2d_2\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"90.559659\" xlink:href=\"#m734c994c71\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_2\">\r\n      <!-- 500 -->\r\n      <g transform=\"translate(81.015909 239.238438)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 691 4666 \r\nL 3169 4666 \r\nL 3169 4134 \r\nL 1269 4134 \r\nL 1269 2991 \r\nQ 1406 3038 1543 3061 \r\nQ 1681 3084 1819 3084 \r\nQ 2600 3084 3056 2656 \r\nQ 3513 2228 3513 1497 \r\nQ 3513 744 3044 326 \r\nQ 2575 -91 1722 -91 \r\nQ 1428 -91 1123 -41 \r\nQ 819 9 494 109 \r\nL 494 744 \r\nQ 775 591 1075 516 \r\nQ 1375 441 1709 441 \r\nQ 2250 441 2565 725 \r\nQ 2881 1009 2881 1497 \r\nQ 2881 1984 2565 2268 \r\nQ 2250 2553 1709 2553 \r\nQ 1456 2553 1204 2497 \r\nQ 953 2441 691 2322 \r\nL 691 4666 \r\nz\r\n\" id=\"DejaVuSans-35\" transform=\"scale(0.015625)\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-35\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_3\">\r\n     <g id=\"line2d_3\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"135.798012\" xlink:href=\"#m734c994c71\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_3\">\r\n      <!-- 1000 -->\r\n      <g transform=\"translate(123.073012 239.238438)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 794 531 \r\nL 1825 531 \r\nL 1825 4091 \r\nL 703 3866 \r\nL 703 4441 \r\nL 1819 4666 \r\nL 2450 4666 \r\nL 2450 531 \r\nL 3481 531 \r\nL 3481 0 \r\nL 794 0 \r\nL 794 531 \r\nz\r\n\" id=\"DejaVuSans-31\" transform=\"scale(0.015625)\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-31\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"190.869141\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_4\">\r\n     <g id=\"line2d_4\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"181.036365\" xlink:href=\"#m734c994c71\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_4\">\r\n      <!-- 1500 -->\r\n      <g transform=\"translate(168.311365 239.238438)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-31\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-35\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"190.869141\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_5\">\r\n     <g id=\"line2d_5\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"226.274717\" xlink:href=\"#m734c994c71\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_5\">\r\n      <!-- 2000 -->\r\n      <g transform=\"translate(213.549717 239.238438)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 1228 531 \r\nL 3431 531 \r\nL 3431 0 \r\nL 469 0 \r\nL 469 531 \r\nQ 828 903 1448 1529 \r\nQ 2069 2156 2228 2338 \r\nQ 2531 2678 2651 2914 \r\nQ 2772 3150 2772 3378 \r\nQ 2772 3750 2511 3984 \r\nQ 2250 4219 1831 4219 \r\nQ 1534 4219 1204 4116 \r\nQ 875 4013 500 3803 \r\nL 500 4441 \r\nQ 881 4594 1212 4672 \r\nQ 1544 4750 1819 4750 \r\nQ 2544 4750 2975 4387 \r\nQ 3406 4025 3406 3419 \r\nQ 3406 3131 3298 2873 \r\nQ 3191 2616 2906 2266 \r\nQ 2828 2175 2409 1742 \r\nQ 1991 1309 1228 531 \r\nz\r\n\" id=\"DejaVuSans-32\" transform=\"scale(0.015625)\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-32\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"190.869141\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_6\">\r\n     <g id=\"line2d_6\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"271.51307\" xlink:href=\"#m734c994c71\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_6\">\r\n      <!-- 2500 -->\r\n      <g transform=\"translate(258.78807 239.238438)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-32\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-35\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"190.869141\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_7\">\r\n     <g id=\"line2d_7\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"316.751422\" xlink:href=\"#m734c994c71\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_7\">\r\n      <!-- 3000 -->\r\n      <g transform=\"translate(304.026422 239.238438)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 2597 2516 \r\nQ 3050 2419 3304 2112 \r\nQ 3559 1806 3559 1356 \r\nQ 3559 666 3084 287 \r\nQ 2609 -91 1734 -91 \r\nQ 1441 -91 1130 -33 \r\nQ 819 25 488 141 \r\nL 488 750 \r\nQ 750 597 1062 519 \r\nQ 1375 441 1716 441 \r\nQ 2309 441 2620 675 \r\nQ 2931 909 2931 1356 \r\nQ 2931 1769 2642 2001 \r\nQ 2353 2234 1838 2234 \r\nL 1294 2234 \r\nL 1294 2753 \r\nL 1863 2753 \r\nQ 2328 2753 2575 2939 \r\nQ 2822 3125 2822 3475 \r\nQ 2822 3834 2567 4026 \r\nQ 2313 4219 1838 4219 \r\nQ 1578 4219 1281 4162 \r\nQ 984 4106 628 3988 \r\nL 628 4550 \r\nQ 988 4650 1302 4700 \r\nQ 1616 4750 1894 4750 \r\nQ 2613 4750 3031 4423 \r\nQ 3450 4097 3450 3541 \r\nQ 3450 3153 3228 2886 \r\nQ 3006 2619 2597 2516 \r\nz\r\n\" id=\"DejaVuSans-33\" transform=\"scale(0.015625)\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-33\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"190.869141\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_8\">\r\n     <g id=\"line2d_8\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"361.989775\" xlink:href=\"#m734c994c71\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_8\">\r\n      <!-- 3500 -->\r\n      <g transform=\"translate(349.264775 239.238438)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-33\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-35\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"190.869141\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"text_9\">\r\n     <!-- timeline -->\r\n     <g transform=\"translate(177.183594 252.916563)scale(0.1 -0.1)\">\r\n      <defs>\r\n       <path d=\"M 1172 4494 \r\nL 1172 3500 \r\nL 2356 3500 \r\nL 2356 3053 \r\nL 1172 3053 \r\nL 1172 1153 \r\nQ 1172 725 1289 603 \r\nQ 1406 481 1766 481 \r\nL 2356 481 \r\nL 2356 0 \r\nL 1766 0 \r\nQ 1100 0 847 248 \r\nQ 594 497 594 1153 \r\nL 594 3053 \r\nL 172 3053 \r\nL 172 3500 \r\nL 594 3500 \r\nL 594 4494 \r\nL 1172 4494 \r\nz\r\n\" id=\"DejaVuSans-74\" transform=\"scale(0.015625)\"/>\r\n       <path d=\"M 603 3500 \r\nL 1178 3500 \r\nL 1178 0 \r\nL 603 0 \r\nL 603 3500 \r\nz\r\nM 603 4863 \r\nL 1178 4863 \r\nL 1178 4134 \r\nL 603 4134 \r\nL 603 4863 \r\nz\r\n\" id=\"DejaVuSans-69\" transform=\"scale(0.015625)\"/>\r\n       <path d=\"M 3328 2828 \r\nQ 3544 3216 3844 3400 \r\nQ 4144 3584 4550 3584 \r\nQ 5097 3584 5394 3201 \r\nQ 5691 2819 5691 2113 \r\nL 5691 0 \r\nL 5113 0 \r\nL 5113 2094 \r\nQ 5113 2597 4934 2840 \r\nQ 4756 3084 4391 3084 \r\nQ 3944 3084 3684 2787 \r\nQ 3425 2491 3425 1978 \r\nL 3425 0 \r\nL 2847 0 \r\nL 2847 2094 \r\nQ 2847 2600 2669 2842 \r\nQ 2491 3084 2119 3084 \r\nQ 1678 3084 1418 2786 \r\nQ 1159 2488 1159 1978 \r\nL 1159 0 \r\nL 581 0 \r\nL 581 3500 \r\nL 1159 3500 \r\nL 1159 2956 \r\nQ 1356 3278 1631 3431 \r\nQ 1906 3584 2284 3584 \r\nQ 2666 3584 2933 3390 \r\nQ 3200 3197 3328 2828 \r\nz\r\n\" id=\"DejaVuSans-6d\" transform=\"scale(0.015625)\"/>\r\n       <path d=\"M 3597 1894 \r\nL 3597 1613 \r\nL 953 1613 \r\nQ 991 1019 1311 708 \r\nQ 1631 397 2203 397 \r\nQ 2534 397 2845 478 \r\nQ 3156 559 3463 722 \r\nL 3463 178 \r\nQ 3153 47 2828 -22 \r\nQ 2503 -91 2169 -91 \r\nQ 1331 -91 842 396 \r\nQ 353 884 353 1716 \r\nQ 353 2575 817 3079 \r\nQ 1281 3584 2069 3584 \r\nQ 2775 3584 3186 3129 \r\nQ 3597 2675 3597 1894 \r\nz\r\nM 3022 2063 \r\nQ 3016 2534 2758 2815 \r\nQ 2500 3097 2075 3097 \r\nQ 1594 3097 1305 2825 \r\nQ 1016 2553 972 2059 \r\nL 3022 2063 \r\nz\r\n\" id=\"DejaVuSans-65\" transform=\"scale(0.015625)\"/>\r\n       <path d=\"M 603 4863 \r\nL 1178 4863 \r\nL 1178 0 \r\nL 603 0 \r\nL 603 4863 \r\nz\r\n\" id=\"DejaVuSans-6c\" transform=\"scale(0.015625)\"/>\r\n       <path d=\"M 3513 2113 \r\nL 3513 0 \r\nL 2938 0 \r\nL 2938 2094 \r\nQ 2938 2591 2744 2837 \r\nQ 2550 3084 2163 3084 \r\nQ 1697 3084 1428 2787 \r\nQ 1159 2491 1159 1978 \r\nL 1159 0 \r\nL 581 0 \r\nL 581 3500 \r\nL 1159 3500 \r\nL 1159 2956 \r\nQ 1366 3272 1645 3428 \r\nQ 1925 3584 2291 3584 \r\nQ 2894 3584 3203 3211 \r\nQ 3513 2838 3513 2113 \r\nz\r\n\" id=\"DejaVuSans-6e\" transform=\"scale(0.015625)\"/>\r\n      </defs>\r\n      <use xlink:href=\"#DejaVuSans-74\"/>\r\n      <use x=\"39.208984\" xlink:href=\"#DejaVuSans-69\"/>\r\n      <use x=\"66.992188\" xlink:href=\"#DejaVuSans-6d\"/>\r\n      <use x=\"164.404297\" xlink:href=\"#DejaVuSans-65\"/>\r\n      <use x=\"225.927734\" xlink:href=\"#DejaVuSans-6c\"/>\r\n      <use x=\"253.710938\" xlink:href=\"#DejaVuSans-69\"/>\r\n      <use x=\"281.494141\" xlink:href=\"#DejaVuSans-6e\"/>\r\n      <use x=\"344.873047\" xlink:href=\"#DejaVuSans-65\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"matplotlib.axis_2\">\r\n    <g id=\"ytick_1\">\r\n     <g id=\"line2d_9\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL -3.5 0 \r\n\" id=\"m163f059092\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#m163f059092\" y=\"186.567136\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_10\">\r\n      <!-- 0.6 -->\r\n      <g transform=\"translate(7.2 190.366354)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 684 794 \r\nL 1344 794 \r\nL 1344 0 \r\nL 684 0 \r\nL 684 794 \r\nz\r\n\" id=\"DejaVuSans-2e\" transform=\"scale(0.015625)\"/>\r\n        <path d=\"M 2113 2584 \r\nQ 1688 2584 1439 2293 \r\nQ 1191 2003 1191 1497 \r\nQ 1191 994 1439 701 \r\nQ 1688 409 2113 409 \r\nQ 2538 409 2786 701 \r\nQ 3034 994 3034 1497 \r\nQ 3034 2003 2786 2293 \r\nQ 2538 2584 2113 2584 \r\nz\r\nM 3366 4563 \r\nL 3366 3988 \r\nQ 3128 4100 2886 4159 \r\nQ 2644 4219 2406 4219 \r\nQ 1781 4219 1451 3797 \r\nQ 1122 3375 1075 2522 \r\nQ 1259 2794 1537 2939 \r\nQ 1816 3084 2150 3084 \r\nQ 2853 3084 3261 2657 \r\nQ 3669 2231 3669 1497 \r\nQ 3669 778 3244 343 \r\nQ 2819 -91 2113 -91 \r\nQ 1303 -91 875 529 \r\nQ 447 1150 447 2328 \r\nQ 447 3434 972 4092 \r\nQ 1497 4750 2381 4750 \r\nQ 2619 4750 2861 4703 \r\nQ 3103 4656 3366 4563 \r\nz\r\n\" id=\"DejaVuSans-36\" transform=\"scale(0.015625)\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-36\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_2\">\r\n     <g id=\"line2d_10\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#m163f059092\" y=\"144.196261\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_11\">\r\n      <!-- 0.7 -->\r\n      <g transform=\"translate(7.2 147.99548)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 525 4666 \r\nL 3525 4666 \r\nL 3525 4397 \r\nL 1831 0 \r\nL 1172 0 \r\nL 2766 4134 \r\nL 525 4134 \r\nL 525 4666 \r\nz\r\n\" id=\"DejaVuSans-37\" transform=\"scale(0.015625)\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-37\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_3\">\r\n     <g id=\"line2d_11\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#m163f059092\" y=\"101.825386\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_12\">\r\n      <!-- 0.8 -->\r\n      <g transform=\"translate(7.2 105.624605)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 2034 2216 \r\nQ 1584 2216 1326 1975 \r\nQ 1069 1734 1069 1313 \r\nQ 1069 891 1326 650 \r\nQ 1584 409 2034 409 \r\nQ 2484 409 2743 651 \r\nQ 3003 894 3003 1313 \r\nQ 3003 1734 2745 1975 \r\nQ 2488 2216 2034 2216 \r\nz\r\nM 1403 2484 \r\nQ 997 2584 770 2862 \r\nQ 544 3141 544 3541 \r\nQ 544 4100 942 4425 \r\nQ 1341 4750 2034 4750 \r\nQ 2731 4750 3128 4425 \r\nQ 3525 4100 3525 3541 \r\nQ 3525 3141 3298 2862 \r\nQ 3072 2584 2669 2484 \r\nQ 3125 2378 3379 2068 \r\nQ 3634 1759 3634 1313 \r\nQ 3634 634 3220 271 \r\nQ 2806 -91 2034 -91 \r\nQ 1263 -91 848 271 \r\nQ 434 634 434 1313 \r\nQ 434 1759 690 2068 \r\nQ 947 2378 1403 2484 \r\nz\r\nM 1172 3481 \r\nQ 1172 3119 1398 2916 \r\nQ 1625 2713 2034 2713 \r\nQ 2441 2713 2670 2916 \r\nQ 2900 3119 2900 3481 \r\nQ 2900 3844 2670 4047 \r\nQ 2441 4250 2034 4250 \r\nQ 1625 4250 1398 4047 \r\nQ 1172 3844 1172 3481 \r\nz\r\n\" id=\"DejaVuSans-38\" transform=\"scale(0.015625)\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-38\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_4\">\r\n     <g id=\"line2d_12\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#m163f059092\" y=\"59.454511\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_13\">\r\n      <!-- 0.9 -->\r\n      <g transform=\"translate(7.2 63.25373)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 703 97 \r\nL 703 672 \r\nQ 941 559 1184 500 \r\nQ 1428 441 1663 441 \r\nQ 2288 441 2617 861 \r\nQ 2947 1281 2994 2138 \r\nQ 2813 1869 2534 1725 \r\nQ 2256 1581 1919 1581 \r\nQ 1219 1581 811 2004 \r\nQ 403 2428 403 3163 \r\nQ 403 3881 828 4315 \r\nQ 1253 4750 1959 4750 \r\nQ 2769 4750 3195 4129 \r\nQ 3622 3509 3622 2328 \r\nQ 3622 1225 3098 567 \r\nQ 2575 -91 1691 -91 \r\nQ 1453 -91 1209 -44 \r\nQ 966 3 703 97 \r\nz\r\nM 1959 2075 \r\nQ 2384 2075 2632 2365 \r\nQ 2881 2656 2881 3163 \r\nQ 2881 3666 2632 3958 \r\nQ 2384 4250 1959 4250 \r\nQ 1534 4250 1286 3958 \r\nQ 1038 3666 1038 3163 \r\nQ 1038 2656 1286 2365 \r\nQ 1534 2075 1959 2075 \r\nz\r\n\" id=\"DejaVuSans-39\" transform=\"scale(0.015625)\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-39\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_5\">\r\n     <g id=\"line2d_13\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#m163f059092\" y=\"17.083636\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_14\">\r\n      <!-- 1.0 -->\r\n      <g transform=\"translate(7.2 20.882855)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-31\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"line2d_14\">\r\n    <path clip-path=\"url(#pb385381dcd)\" d=\"M 45.321307 17.083636 \r\nL 45.864167 17.083636 \r\nL 45.864167 19.349459 \r\nL 46.226074 19.349459 \r\nL 46.316551 23.881103 \r\nL 46.678457 23.881103 \r\nL 46.678457 26.146925 \r\nL 47.040364 26.146925 \r\nL 47.040364 28.412747 \r\nL 47.673701 28.412747 \r\nL 47.673701 30.678569 \r\nL 47.854655 30.678569 \r\nL 47.854655 35.210214 \r\nL 48.126085 35.210214 \r\nL 48.126085 37.476036 \r\nL 48.487992 37.476036 \r\nL 48.487992 39.741858 \r\nL 49.030852 39.741858 \r\nL 49.121328 48.805147 \r\nL 49.392759 48.805147 \r\nL 49.392759 51.070969 \r\nL 49.664189 51.070969 \r\nL 49.664189 55.602613 \r\nL 50.116572 55.602613 \r\nL 50.116572 57.868436 \r\nL 50.297526 57.868436 \r\nL 50.388002 62.40008 \r\nL 50.478479 62.40008 \r\nL 50.568956 66.931724 \r\nL 50.659432 66.931724 \r\nL 50.749909 75.995013 \r\nL 51.111816 75.995013 \r\nL 51.111816 78.260835 \r\nL 51.292769 78.260835 \r\nL 51.383246 82.79248 \r\nL 51.473723 82.79248 \r\nL 51.473723 85.058302 \r\nL 53.46421 85.058302 \r\nL 53.46421 87.324124 \r\nL 54.007071 87.324124 \r\nL 54.007071 89.589946 \r\nL 54.549931 89.589946 \r\nL 54.549931 91.855768 \r\nL 55.092791 91.855768 \r\nL 55.092791 94.121591 \r\nL 55.364221 94.121591 \r\nL 55.364221 96.387413 \r\nL 55.545175 96.387413 \r\nL 55.545175 98.653235 \r\nL 55.726128 98.653235 \r\nL 55.726128 100.919057 \r\nL 55.907081 100.919057 \r\nL 55.907081 103.184879 \r\nL 57.083278 103.184879 \r\nL 57.083278 105.450701 \r\nL 57.626139 105.450701 \r\nL 57.716615 109.982346 \r\nL 58.621382 109.982346 \r\nL 58.621382 112.248168 \r\nL 58.802336 112.248168 \r\nL 58.892813 119.045635 \r\nL 59.888056 119.045635 \r\nL 59.888056 121.311457 \r\nL 60.06901 121.311457 \r\nL 60.06901 123.577279 \r\nL 61.064254 123.577279 \r\nL 61.064254 125.843101 \r\nL 61.69759 125.843101 \r\nL 61.788067 130.374745 \r\nL 62.602358 130.374745 \r\nL 62.602358 132.640568 \r\nL 63.054741 132.640568 \r\nL 63.054741 134.90639 \r\nL 63.416648 134.90639 \r\nL 63.416648 137.172212 \r\nL 63.597601 137.172212 \r\nL 63.597601 139.438034 \r\nL 64.683322 139.438034 \r\nL 64.683322 141.703856 \r\nL 65.588089 141.703856 \r\nL 65.588089 143.969679 \r\nL 66.673809 143.969679 \r\nL 66.673809 146.235501 \r\nL 67.578576 146.235501 \r\nL 67.578576 148.501323 \r\nL 68.935727 148.501323 \r\nL 68.935727 150.767145 \r\nL 70.111924 150.767145 \r\nL 70.111924 153.032967 \r\nL 71.559551 153.032967 \r\nL 71.559551 155.298789 \r\nL 73.007179 155.298789 \r\nL 73.007179 157.564612 \r\nL 74.364329 157.564612 \r\nL 74.364329 159.830434 \r\nL 75.17862 159.830434 \r\nL 75.17862 162.096256 \r\nL 75.631003 162.096256 \r\nL 75.631003 164.362078 \r\nL 77.259584 164.362078 \r\nL 77.259584 166.6279 \r\nL 79.883408 166.6279 \r\nL 79.883408 168.893723 \r\nL 80.154838 168.893723 \r\nL 80.154838 173.425367 \r\nL 81.240559 173.425367 \r\nL 81.240559 175.691189 \r\nL 81.783419 175.691189 \r\nL 81.783419 177.957011 \r\nL 82.688186 177.957011 \r\nL 82.688186 180.222833 \r\nL 83.412 180.222833 \r\nL 83.412 182.488656 \r\nL 84.678674 182.488656 \r\nL 84.678674 187.060403 \r\nL 93.635867 187.060403 \r\nL 93.635867 189.547971 \r\nL 97.435889 189.547971 \r\nL 97.435889 192.03554 \r\nL 100.15019 192.03554 \r\nL 100.15019 194.573875 \r\nL 102.683538 194.573875 \r\nL 102.683538 197.11221 \r\nL 106.121653 197.11221 \r\nL 106.121653 199.677265 \r\nL 112.726452 199.677265 \r\nL 112.726452 202.356322 \r\nL 122.13603 202.356322 \r\nL 122.13603 205.161452 \r\nL 135.436105 205.161452 \r\nL 135.436105 208.106838 \r\nL 137.426593 208.106838 \r\nL 137.426593 211.16849 \r\nL 157.783851 211.16849 \r\nL 157.783851 214.756364 \r\nL 349.684943 214.756364 \r\nL 349.684943 214.756364 \r\n\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\r\n   </g>\r\n   <g id=\"patch_3\">\r\n    <path d=\"M 30.103125 224.64 \r\nL 30.103125 7.2 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_4\">\r\n    <path d=\"M 364.903125 224.64 \r\nL 364.903125 7.2 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_5\">\r\n    <path d=\"M 30.103125 224.64 \r\nL 364.903125 224.64 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_6\">\r\n    <path d=\"M 30.103125 7.2 \r\nL 364.903125 7.2 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"legend_1\">\r\n    <g id=\"patch_7\">\r\n     <path d=\"M 213.451563 29.878125 \r\nL 357.903125 29.878125 \r\nQ 359.903125 29.878125 359.903125 27.878125 \r\nL 359.903125 14.2 \r\nQ 359.903125 12.2 357.903125 12.2 \r\nL 213.451563 12.2 \r\nQ 211.451563 12.2 211.451563 14.2 \r\nL 211.451563 27.878125 \r\nQ 211.451563 29.878125 213.451563 29.878125 \r\nz\r\n\" style=\"fill:#ffffff;opacity:0.8;stroke:#cccccc;stroke-linejoin:miter;\"/>\r\n    </g>\r\n    <g id=\"line2d_15\">\r\n     <path d=\"M 215.451563 20.298438 \r\nL 235.451563 20.298438 \r\n\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\r\n    </g>\r\n    <g id=\"line2d_16\"/>\r\n    <g id=\"text_15\">\r\n     <!-- Kaplan Meier Estimate -->\r\n     <g transform=\"translate(243.451563 23.798438)scale(0.1 -0.1)\">\r\n      <defs>\r\n       <path d=\"M 628 4666 \r\nL 1259 4666 \r\nL 1259 2694 \r\nL 3353 4666 \r\nL 4166 4666 \r\nL 1850 2491 \r\nL 4331 0 \r\nL 3500 0 \r\nL 1259 2247 \r\nL 1259 0 \r\nL 628 0 \r\nL 628 4666 \r\nz\r\n\" id=\"DejaVuSans-4b\" transform=\"scale(0.015625)\"/>\r\n       <path d=\"M 2194 1759 \r\nQ 1497 1759 1228 1600 \r\nQ 959 1441 959 1056 \r\nQ 959 750 1161 570 \r\nQ 1363 391 1709 391 \r\nQ 2188 391 2477 730 \r\nQ 2766 1069 2766 1631 \r\nL 2766 1759 \r\nL 2194 1759 \r\nz\r\nM 3341 1997 \r\nL 3341 0 \r\nL 2766 0 \r\nL 2766 531 \r\nQ 2569 213 2275 61 \r\nQ 1981 -91 1556 -91 \r\nQ 1019 -91 701 211 \r\nQ 384 513 384 1019 \r\nQ 384 1609 779 1909 \r\nQ 1175 2209 1959 2209 \r\nL 2766 2209 \r\nL 2766 2266 \r\nQ 2766 2663 2505 2880 \r\nQ 2244 3097 1772 3097 \r\nQ 1472 3097 1187 3025 \r\nQ 903 2953 641 2809 \r\nL 641 3341 \r\nQ 956 3463 1253 3523 \r\nQ 1550 3584 1831 3584 \r\nQ 2591 3584 2966 3190 \r\nQ 3341 2797 3341 1997 \r\nz\r\n\" id=\"DejaVuSans-61\" transform=\"scale(0.015625)\"/>\r\n       <path d=\"M 1159 525 \r\nL 1159 -1331 \r\nL 581 -1331 \r\nL 581 3500 \r\nL 1159 3500 \r\nL 1159 2969 \r\nQ 1341 3281 1617 3432 \r\nQ 1894 3584 2278 3584 \r\nQ 2916 3584 3314 3078 \r\nQ 3713 2572 3713 1747 \r\nQ 3713 922 3314 415 \r\nQ 2916 -91 2278 -91 \r\nQ 1894 -91 1617 61 \r\nQ 1341 213 1159 525 \r\nz\r\nM 3116 1747 \r\nQ 3116 2381 2855 2742 \r\nQ 2594 3103 2138 3103 \r\nQ 1681 3103 1420 2742 \r\nQ 1159 2381 1159 1747 \r\nQ 1159 1113 1420 752 \r\nQ 1681 391 2138 391 \r\nQ 2594 391 2855 752 \r\nQ 3116 1113 3116 1747 \r\nz\r\n\" id=\"DejaVuSans-70\" transform=\"scale(0.015625)\"/>\r\n       <path id=\"DejaVuSans-20\" transform=\"scale(0.015625)\"/>\r\n       <path d=\"M 628 4666 \r\nL 1569 4666 \r\nL 2759 1491 \r\nL 3956 4666 \r\nL 4897 4666 \r\nL 4897 0 \r\nL 4281 0 \r\nL 4281 4097 \r\nL 3078 897 \r\nL 2444 897 \r\nL 1241 4097 \r\nL 1241 0 \r\nL 628 0 \r\nL 628 4666 \r\nz\r\n\" id=\"DejaVuSans-4d\" transform=\"scale(0.015625)\"/>\r\n       <path d=\"M 2631 2963 \r\nQ 2534 3019 2420 3045 \r\nQ 2306 3072 2169 3072 \r\nQ 1681 3072 1420 2755 \r\nQ 1159 2438 1159 1844 \r\nL 1159 0 \r\nL 581 0 \r\nL 581 3500 \r\nL 1159 3500 \r\nL 1159 2956 \r\nQ 1341 3275 1631 3429 \r\nQ 1922 3584 2338 3584 \r\nQ 2397 3584 2469 3576 \r\nQ 2541 3569 2628 3553 \r\nL 2631 2963 \r\nz\r\n\" id=\"DejaVuSans-72\" transform=\"scale(0.015625)\"/>\r\n       <path d=\"M 628 4666 \r\nL 3578 4666 \r\nL 3578 4134 \r\nL 1259 4134 \r\nL 1259 2753 \r\nL 3481 2753 \r\nL 3481 2222 \r\nL 1259 2222 \r\nL 1259 531 \r\nL 3634 531 \r\nL 3634 0 \r\nL 628 0 \r\nL 628 4666 \r\nz\r\n\" id=\"DejaVuSans-45\" transform=\"scale(0.015625)\"/>\r\n       <path d=\"M 2834 3397 \r\nL 2834 2853 \r\nQ 2591 2978 2328 3040 \r\nQ 2066 3103 1784 3103 \r\nQ 1356 3103 1142 2972 \r\nQ 928 2841 928 2578 \r\nQ 928 2378 1081 2264 \r\nQ 1234 2150 1697 2047 \r\nL 1894 2003 \r\nQ 2506 1872 2764 1633 \r\nQ 3022 1394 3022 966 \r\nQ 3022 478 2636 193 \r\nQ 2250 -91 1575 -91 \r\nQ 1294 -91 989 -36 \r\nQ 684 19 347 128 \r\nL 347 722 \r\nQ 666 556 975 473 \r\nQ 1284 391 1588 391 \r\nQ 1994 391 2212 530 \r\nQ 2431 669 2431 922 \r\nQ 2431 1156 2273 1281 \r\nQ 2116 1406 1581 1522 \r\nL 1381 1569 \r\nQ 847 1681 609 1914 \r\nQ 372 2147 372 2553 \r\nQ 372 3047 722 3315 \r\nQ 1072 3584 1716 3584 \r\nQ 2034 3584 2315 3537 \r\nQ 2597 3491 2834 3397 \r\nz\r\n\" id=\"DejaVuSans-73\" transform=\"scale(0.015625)\"/>\r\n      </defs>\r\n      <use xlink:href=\"#DejaVuSans-4b\"/>\r\n      <use x=\"63.826172\" xlink:href=\"#DejaVuSans-61\"/>\r\n      <use x=\"125.105469\" xlink:href=\"#DejaVuSans-70\"/>\r\n      <use x=\"188.582031\" xlink:href=\"#DejaVuSans-6c\"/>\r\n      <use x=\"216.365234\" xlink:href=\"#DejaVuSans-61\"/>\r\n      <use x=\"277.644531\" xlink:href=\"#DejaVuSans-6e\"/>\r\n      <use x=\"341.023438\" xlink:href=\"#DejaVuSans-20\"/>\r\n      <use x=\"372.810547\" xlink:href=\"#DejaVuSans-4d\"/>\r\n      <use x=\"459.089844\" xlink:href=\"#DejaVuSans-65\"/>\r\n      <use x=\"520.613281\" xlink:href=\"#DejaVuSans-69\"/>\r\n      <use x=\"548.396484\" xlink:href=\"#DejaVuSans-65\"/>\r\n      <use x=\"609.919922\" xlink:href=\"#DejaVuSans-72\"/>\r\n      <use x=\"651.033203\" xlink:href=\"#DejaVuSans-20\"/>\r\n      <use x=\"682.820312\" xlink:href=\"#DejaVuSans-45\"/>\r\n      <use x=\"746.003906\" xlink:href=\"#DejaVuSans-73\"/>\r\n      <use x=\"798.103516\" xlink:href=\"#DejaVuSans-74\"/>\r\n      <use x=\"837.3125\" xlink:href=\"#DejaVuSans-69\"/>\r\n      <use x=\"865.095703\" xlink:href=\"#DejaVuSans-6d\"/>\r\n      <use x=\"962.507812\" xlink:href=\"#DejaVuSans-61\"/>\r\n      <use x=\"1023.787109\" xlink:href=\"#DejaVuSans-74\"/>\r\n      <use x=\"1062.996094\" xlink:href=\"#DejaVuSans-65\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n  </g>\r\n </g>\r\n <defs>\r\n  <clipPath id=\"pb385381dcd\">\r\n   <rect height=\"217.44\" width=\"334.8\" x=\"30.103125\" y=\"7.2\"/>\r\n  </clipPath>\r\n </defs>\r\n</svg>\r\n",
+            "image/png": "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\n"
+          },
+          "metadata": {
+            "needs_background": "light"
+          }
+        }
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {
+        "id": "r8TgXKGmmSJf"
+      },
+      "source": [
+        "## Import and init RuleKit"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "metadata": {
+        "id": "w0hYM-8Ele2j"
+      },
+      "source": [
+        "from rulekit import RuleKit\n",
+        "from rulekit.survival import SurvivalRules\n",
+        "from rulekit.params import Measures\n",
+        "\n",
+        "\n",
+        "RuleKit.init()"
+      ],
+      "execution_count": 4,
+      "outputs": []
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {
+        "id": "dattexxGmaqJ"
+      },
+      "source": [
+        "## Helper function for creating ruleset characteristics dataframe"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "metadata": {
+        "id": "aLCZkT_SmU4a"
+      },
+      "source": [
+        "def get_ruleset_stats(model) -> pd.DataFrame:\n",
+        "    tmp = model.parameters.__dict__\n",
+        "    del tmp['_java_object']\n",
+        "    return pd.DataFrame.from_records([{**tmp, **model.stats.__dict__}])"
+      ],
+      "execution_count": 14,
+      "outputs": []
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {
+        "id": "u4wOfecjme_d"
+      },
+      "source": [
+        "## Rule induction on full dataset"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "metadata": {
+        "id": "TrO-LyN2mpiP"
+      },
+      "source": [
+        "x = data_df.drop(['survival_status'], axis=1)\n",
+        "y = data_df['survival_status']"
+      ],
+      "execution_count": 6,
+      "outputs": []
+    },
+    {
+      "cell_type": "code",
+      "metadata": {
+        "id": "c5tmU4IHnFjw"
+      },
+      "source": [
+        "srv = SurvivalRules(\n",
+        "    survival_time_attr = 'survival_time'\n",
+        ")\n",
+        "srv.fit(x, y)\n",
+        "ruleset = srv.model\n",
+        "predictions  = srv.predict(x)\n",
+        "\n",
+        "ruleset_stats = get_ruleset_stats(ruleset)\n",
+        "\n",
+        "display(ruleset_stats)"
+      ],
+      "execution_count": 10,
+      "outputs": []
+    },
+    {
+      "cell_type": "code",
+      "execution_count": 13,
+      "metadata": {},
+      "outputs": [
+        {
+          "output_type": "execute_result",
+          "data": {
+            "text/plain": [
+              "[<matplotlib.lines.Line2D at 0x2aab5e8f550>]"
+            ]
+          },
+          "metadata": {},
+          "execution_count": 13
+        },
+        {
+          "output_type": "display_data",
+          "data": {
+            "text/plain": "<Figure size 432x288 with 1 Axes>",
+            "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<svg height=\"248.518125pt\" version=\"1.1\" viewBox=\"0 0 388.299261 248.518125\" width=\"388.299261pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <metadata>\r\n  <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\r\n   <cc:Work>\r\n    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\r\n    <dc:date>2021-04-21T13:07:16.829628</dc:date>\r\n    <dc:format>image/svg+xml</dc:format>\r\n    <dc:creator>\r\n     <cc:Agent>\r\n      <dc:title>Matplotlib v3.4.1, https://matplotlib.org/</dc:title>\r\n     </cc:Agent>\r\n    </dc:creator>\r\n   </cc:Work>\r\n  </rdf:RDF>\r\n </metadata>\r\n <defs>\r\n  <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n  <g id=\"patch_1\">\r\n   <path d=\"M 0 248.518125 \r\nL 388.299261 248.518125 \r\nL 388.299261 0 \r\nL 0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n  </g>\r\n  <g id=\"axes_1\">\r\n   <g id=\"patch_2\">\r\n    <path d=\"M 36.465625 224.64 \r\nL 371.265625 224.64 \r\nL 371.265625 7.2 \r\nL 36.465625 7.2 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n   </g>\r\n   <g id=\"matplotlib.axis_1\">\r\n    <g id=\"xtick_1\">\r\n     <g id=\"line2d_1\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL 0 3.5 \r\n\" id=\"me90bd0fe63\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"51.139977\" xlink:href=\"#me90bd0fe63\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_1\">\r\n      <!-- 0 -->\r\n      <g transform=\"translate(47.958727 239.238437)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 2034 4250 \r\nQ 1547 4250 1301 3770 \r\nQ 1056 3291 1056 2328 \r\nQ 1056 1369 1301 889 \r\nQ 1547 409 2034 409 \r\nQ 2525 409 2770 889 \r\nQ 3016 1369 3016 2328 \r\nQ 3016 3291 2770 3770 \r\nQ 2525 4250 2034 4250 \r\nz\r\nM 2034 4750 \r\nQ 2819 4750 3233 4129 \r\nQ 3647 3509 3647 2328 \r\nQ 3647 1150 3233 529 \r\nQ 2819 -91 2034 -91 \r\nQ 1250 -91 836 529 \r\nQ 422 1150 422 2328 \r\nQ 422 3509 836 4129 \r\nQ 1250 4750 2034 4750 \r\nz\r\n\" id=\"DejaVuSans-30\" transform=\"scale(0.015625)\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_2\">\r\n     <g id=\"line2d_2\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"96.45916\" xlink:href=\"#me90bd0fe63\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_2\">\r\n      <!-- 500 -->\r\n      <g transform=\"translate(86.91541 239.238437)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 691 4666 \r\nL 3169 4666 \r\nL 3169 4134 \r\nL 1269 4134 \r\nL 1269 2991 \r\nQ 1406 3038 1543 3061 \r\nQ 1681 3084 1819 3084 \r\nQ 2600 3084 3056 2656 \r\nQ 3513 2228 3513 1497 \r\nQ 3513 744 3044 326 \r\nQ 2575 -91 1722 -91 \r\nQ 1428 -91 1123 -41 \r\nQ 819 9 494 109 \r\nL 494 744 \r\nQ 775 591 1075 516 \r\nQ 1375 441 1709 441 \r\nQ 2250 441 2565 725 \r\nQ 2881 1009 2881 1497 \r\nQ 2881 1984 2565 2268 \r\nQ 2250 2553 1709 2553 \r\nQ 1456 2553 1204 2497 \r\nQ 953 2441 691 2322 \r\nL 691 4666 \r\nz\r\n\" id=\"DejaVuSans-35\" transform=\"scale(0.015625)\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-35\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_3\">\r\n     <g id=\"line2d_3\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"141.778344\" xlink:href=\"#me90bd0fe63\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_3\">\r\n      <!-- 1000 -->\r\n      <g transform=\"translate(129.053344 239.238437)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 794 531 \r\nL 1825 531 \r\nL 1825 4091 \r\nL 703 3866 \r\nL 703 4441 \r\nL 1819 4666 \r\nL 2450 4666 \r\nL 2450 531 \r\nL 3481 531 \r\nL 3481 0 \r\nL 794 0 \r\nL 794 531 \r\nz\r\n\" id=\"DejaVuSans-31\" transform=\"scale(0.015625)\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-31\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"190.869141\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_4\">\r\n     <g id=\"line2d_4\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"187.097527\" xlink:href=\"#me90bd0fe63\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_4\">\r\n      <!-- 1500 -->\r\n      <g transform=\"translate(174.372527 239.238437)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-31\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-35\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"190.869141\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_5\">\r\n     <g id=\"line2d_5\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"232.416711\" xlink:href=\"#me90bd0fe63\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_5\">\r\n      <!-- 2000 -->\r\n      <g transform=\"translate(219.691711 239.238437)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 1228 531 \r\nL 3431 531 \r\nL 3431 0 \r\nL 469 0 \r\nL 469 531 \r\nQ 828 903 1448 1529 \r\nQ 2069 2156 2228 2338 \r\nQ 2531 2678 2651 2914 \r\nQ 2772 3150 2772 3378 \r\nQ 2772 3750 2511 3984 \r\nQ 2250 4219 1831 4219 \r\nQ 1534 4219 1204 4116 \r\nQ 875 4013 500 3803 \r\nL 500 4441 \r\nQ 881 4594 1212 4672 \r\nQ 1544 4750 1819 4750 \r\nQ 2544 4750 2975 4387 \r\nQ 3406 4025 3406 3419 \r\nQ 3406 3131 3298 2873 \r\nQ 3191 2616 2906 2266 \r\nQ 2828 2175 2409 1742 \r\nQ 1991 1309 1228 531 \r\nz\r\n\" id=\"DejaVuSans-32\" transform=\"scale(0.015625)\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-32\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"190.869141\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_6\">\r\n     <g id=\"line2d_6\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"277.735894\" xlink:href=\"#me90bd0fe63\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_6\">\r\n      <!-- 2500 -->\r\n      <g transform=\"translate(265.010894 239.238437)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-32\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-35\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"190.869141\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_7\">\r\n     <g id=\"line2d_7\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"323.055078\" xlink:href=\"#me90bd0fe63\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_7\">\r\n      <!-- 3000 -->\r\n      <g transform=\"translate(310.330078 239.238437)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 2597 2516 \r\nQ 3050 2419 3304 2112 \r\nQ 3559 1806 3559 1356 \r\nQ 3559 666 3084 287 \r\nQ 2609 -91 1734 -91 \r\nQ 1441 -91 1130 -33 \r\nQ 819 25 488 141 \r\nL 488 750 \r\nQ 750 597 1062 519 \r\nQ 1375 441 1716 441 \r\nQ 2309 441 2620 675 \r\nQ 2931 909 2931 1356 \r\nQ 2931 1769 2642 2001 \r\nQ 2353 2234 1838 2234 \r\nL 1294 2234 \r\nL 1294 2753 \r\nL 1863 2753 \r\nQ 2328 2753 2575 2939 \r\nQ 2822 3125 2822 3475 \r\nQ 2822 3834 2567 4026 \r\nQ 2313 4219 1838 4219 \r\nQ 1578 4219 1281 4162 \r\nQ 984 4106 628 3988 \r\nL 628 4550 \r\nQ 988 4650 1302 4700 \r\nQ 1616 4750 1894 4750 \r\nQ 2613 4750 3031 4423 \r\nQ 3450 4097 3450 3541 \r\nQ 3450 3153 3228 2886 \r\nQ 3006 2619 2597 2516 \r\nz\r\n\" id=\"DejaVuSans-33\" transform=\"scale(0.015625)\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-33\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"190.869141\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_8\">\r\n     <g id=\"line2d_8\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"368.374261\" xlink:href=\"#me90bd0fe63\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_8\">\r\n      <!-- 3500 -->\r\n      <g transform=\"translate(355.649261 239.238437)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-33\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-35\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"190.869141\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"matplotlib.axis_2\">\r\n    <g id=\"ytick_1\">\r\n     <g id=\"line2d_9\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL -3.5 0 \r\n\" id=\"m84cbb63a42\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"36.465625\" xlink:href=\"#m84cbb63a42\" y=\"202.093008\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_9\">\r\n      <!-- 0.65 -->\r\n      <g transform=\"translate(7.2 205.892226)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 684 794 \r\nL 1344 794 \r\nL 1344 0 \r\nL 684 0 \r\nL 684 794 \r\nz\r\n\" id=\"DejaVuSans-2e\" transform=\"scale(0.015625)\"/>\r\n        <path d=\"M 2113 2584 \r\nQ 1688 2584 1439 2293 \r\nQ 1191 2003 1191 1497 \r\nQ 1191 994 1439 701 \r\nQ 1688 409 2113 409 \r\nQ 2538 409 2786 701 \r\nQ 3034 994 3034 1497 \r\nQ 3034 2003 2786 2293 \r\nQ 2538 2584 2113 2584 \r\nz\r\nM 3366 4563 \r\nL 3366 3988 \r\nQ 3128 4100 2886 4159 \r\nQ 2644 4219 2406 4219 \r\nQ 1781 4219 1451 3797 \r\nQ 1122 3375 1075 2522 \r\nQ 1259 2794 1537 2939 \r\nQ 1816 3084 2150 3084 \r\nQ 2853 3084 3261 2657 \r\nQ 3669 2231 3669 1497 \r\nQ 3669 778 3244 343 \r\nQ 2819 -91 2113 -91 \r\nQ 1303 -91 875 529 \r\nQ 447 1150 447 2328 \r\nQ 447 3434 972 4092 \r\nQ 1497 4750 2381 4750 \r\nQ 2619 4750 2861 4703 \r\nQ 3103 4656 3366 4563 \r\nz\r\n\" id=\"DejaVuSans-36\" transform=\"scale(0.015625)\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-36\"/>\r\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-35\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_2\">\r\n     <g id=\"line2d_10\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"36.465625\" xlink:href=\"#m84cbb63a42\" y=\"175.378292\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_10\">\r\n      <!-- 0.70 -->\r\n      <g transform=\"translate(7.2 179.177511)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 525 4666 \r\nL 3525 4666 \r\nL 3525 4397 \r\nL 1831 0 \r\nL 1172 0 \r\nL 2766 4134 \r\nL 525 4134 \r\nL 525 4666 \r\nz\r\n\" id=\"DejaVuSans-37\" transform=\"scale(0.015625)\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-37\"/>\r\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_3\">\r\n     <g id=\"line2d_11\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"36.465625\" xlink:href=\"#m84cbb63a42\" y=\"148.663577\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_11\">\r\n      <!-- 0.75 -->\r\n      <g transform=\"translate(7.2 152.462796)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-37\"/>\r\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-35\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_4\">\r\n     <g id=\"line2d_12\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"36.465625\" xlink:href=\"#m84cbb63a42\" y=\"121.948862\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_12\">\r\n      <!-- 0.80 -->\r\n      <g transform=\"translate(7.2 125.748081)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 2034 2216 \r\nQ 1584 2216 1326 1975 \r\nQ 1069 1734 1069 1313 \r\nQ 1069 891 1326 650 \r\nQ 1584 409 2034 409 \r\nQ 2484 409 2743 651 \r\nQ 3003 894 3003 1313 \r\nQ 3003 1734 2745 1975 \r\nQ 2488 2216 2034 2216 \r\nz\r\nM 1403 2484 \r\nQ 997 2584 770 2862 \r\nQ 544 3141 544 3541 \r\nQ 544 4100 942 4425 \r\nQ 1341 4750 2034 4750 \r\nQ 2731 4750 3128 4425 \r\nQ 3525 4100 3525 3541 \r\nQ 3525 3141 3298 2862 \r\nQ 3072 2584 2669 2484 \r\nQ 3125 2378 3379 2068 \r\nQ 3634 1759 3634 1313 \r\nQ 3634 634 3220 271 \r\nQ 2806 -91 2034 -91 \r\nQ 1263 -91 848 271 \r\nQ 434 634 434 1313 \r\nQ 434 1759 690 2068 \r\nQ 947 2378 1403 2484 \r\nz\r\nM 1172 3481 \r\nQ 1172 3119 1398 2916 \r\nQ 1625 2713 2034 2713 \r\nQ 2441 2713 2670 2916 \r\nQ 2900 3119 2900 3481 \r\nQ 2900 3844 2670 4047 \r\nQ 2441 4250 2034 4250 \r\nQ 1625 4250 1398 4047 \r\nQ 1172 3844 1172 3481 \r\nz\r\n\" id=\"DejaVuSans-38\" transform=\"scale(0.015625)\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-38\"/>\r\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_5\">\r\n     <g id=\"line2d_13\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"36.465625\" xlink:href=\"#m84cbb63a42\" y=\"95.234147\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_13\">\r\n      <!-- 0.85 -->\r\n      <g transform=\"translate(7.2 99.033365)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-38\"/>\r\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-35\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_6\">\r\n     <g id=\"line2d_14\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"36.465625\" xlink:href=\"#m84cbb63a42\" y=\"68.519431\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_14\">\r\n      <!-- 0.90 -->\r\n      <g transform=\"translate(7.2 72.31865)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 703 97 \r\nL 703 672 \r\nQ 941 559 1184 500 \r\nQ 1428 441 1663 441 \r\nQ 2288 441 2617 861 \r\nQ 2947 1281 2994 2138 \r\nQ 2813 1869 2534 1725 \r\nQ 2256 1581 1919 1581 \r\nQ 1219 1581 811 2004 \r\nQ 403 2428 403 3163 \r\nQ 403 3881 828 4315 \r\nQ 1253 4750 1959 4750 \r\nQ 2769 4750 3195 4129 \r\nQ 3622 3509 3622 2328 \r\nQ 3622 1225 3098 567 \r\nQ 2575 -91 1691 -91 \r\nQ 1453 -91 1209 -44 \r\nQ 966 3 703 97 \r\nz\r\nM 1959 2075 \r\nQ 2384 2075 2632 2365 \r\nQ 2881 2656 2881 3163 \r\nQ 2881 3666 2632 3958 \r\nQ 2384 4250 1959 4250 \r\nQ 1534 4250 1286 3958 \r\nQ 1038 3666 1038 3163 \r\nQ 1038 2656 1286 2365 \r\nQ 1534 2075 1959 2075 \r\nz\r\n\" id=\"DejaVuSans-39\" transform=\"scale(0.015625)\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-39\"/>\r\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_7\">\r\n     <g id=\"line2d_15\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"36.465625\" xlink:href=\"#m84cbb63a42\" y=\"41.804716\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_15\">\r\n      <!-- 0.95 -->\r\n      <g transform=\"translate(7.2 45.603935)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-39\"/>\r\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-35\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_8\">\r\n     <g id=\"line2d_16\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"36.465625\" xlink:href=\"#m84cbb63a42\" y=\"15.090001\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_16\">\r\n      <!-- 1.00 -->\r\n      <g transform=\"translate(7.2 18.88922)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-31\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"line2d_17\">\r\n    <path clip-path=\"url(#p8bbf1214a1)\" d=\"M 51.683807 17.083636 \r\nL 52.136999 19.077272 \r\nL 52.862106 20.658024 \r\nL 53.496574 22.65166 \r\nL 53.677851 28.219683 \r\nL 53.949766 31.794071 \r\nL 54.312319 33.787706 \r\nL 55.490618 50.078893 \r\nL 55.94381 51.659646 \r\nL 56.215725 54.82115 \r\nL 56.397002 57.982655 \r\nL 56.578279 69.118702 \r\nL 57.122109 72.69309 \r\nL 57.212747 74.273842 \r\nL 57.303386 77.84823 \r\nL 59.29743 81.422618 \r\nL 59.84126 84.997005 \r\nL 60.92892 88.15851 \r\nL 61.200835 89.739263 \r\nL 61.744666 98.468791 \r\nL 62.922964 102.043179 \r\nL 63.466795 105.617566 \r\nL 63.557433 107.611202 \r\nL 64.463817 109.191954 \r\nL 64.735732 117.921482 \r\nL 65.732754 119.915118 \r\nL 65.91403 121.49587 \r\nL 66.911052 123.489506 \r\nL 67.545521 127.063893 \r\nL 67.636159 130.638281 \r\nL 68.451905 132.219034 \r\nL 69.26765 135.380538 \r\nL 70.536587 138.954926 \r\nL 71.442971 142.529314 \r\nL 72.530631 146.103702 \r\nL 73.437015 149.67809 \r\nL 74.79659 151.258842 \r\nL 75.974889 152.839595 \r\nL 77.425103 154.420347 \r\nL 80.234892 161.569123 \r\nL 81.50383 166.724263 \r\nL 83.13532 170.298651 \r\nL 85.763833 173.873039 \r\nL 86.035748 179.028179 \r\nL 87.123408 180.608931 \r\nL 87.667239 182.189684 \r\nL 88.573622 183.770436 \r\nL 89.298729 185.351188 \r\nL 90.38639 185.351188 \r\nL 90.567666 188.540921 \r\nL 99.268949 188.540921 \r\nL 99.540865 192.485143 \r\nL 103.347676 194.222126 \r\nL 105.432358 194.222126 \r\nL 106.066827 195.994923 \r\nL 108.604701 200.029459 \r\nL 111.958321 200.029459 \r\nL 112.048959 201.821116 \r\nL 116.218324 201.821116 \r\nL 118.66556 206.074074 \r\nL 125.825991 206.074074 \r\nL 128.09195 208.035407 \r\nL 138.515362 208.035407 \r\nL 141.41579 210.096046 \r\nL 142.322174 210.096046 \r\nL 143.409834 212.239112 \r\nL 161.174954 212.239112 \r\nL 163.803467 214.756364 \r\nL 356.047443 214.756364 \r\nL 356.047443 214.756364 \r\n\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\r\n   </g>\r\n   <g id=\"patch_3\">\r\n    <path d=\"M 36.465625 224.64 \r\nL 36.465625 7.2 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_4\">\r\n    <path d=\"M 371.265625 224.64 \r\nL 371.265625 7.2 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_5\">\r\n    <path d=\"M 36.465625 224.64 \r\nL 371.265625 224.64 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_6\">\r\n    <path d=\"M 36.465625 7.2 \r\nL 371.265625 7.2 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n  </g>\r\n </g>\r\n <defs>\r\n  <clipPath id=\"p8bbf1214a1\">\r\n   <rect height=\"217.44\" width=\"334.8\" x=\"36.465625\" y=\"7.2\"/>\r\n  </clipPath>\r\n </defs>\r\n</svg>\r\n",
+            "image/png": "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\n"
+          },
+          "metadata": {
+            "needs_background": "light"
+          }
+        }
+      ],
+      "source": [
+        "plt.plot(predictions[0][\"times\"], predictions[0][\"probabilities\"])"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {
+        "id": "abrtDQOtpVoL"
+      },
+      "source": [
+        "### Generated rules"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "metadata": {
+        "id": "FskFiB6PpVI_"
+      },
+      "source": [
+        "for rule in ruleset.rules:\n",
+        "    print(rule)"
+      ],
+      "execution_count": 14,
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "IF Relapse = {0} AND Donorage = (-inf, 45.16) AND Recipientage = (-inf, 17.45) THEN survival_status = {NaN}\nIF HLAmismatch = {0} AND Donorage = <33.34, 42.14) AND Gendermatch = {0} AND RecipientRh = {1} AND Recipientage = <3.30, inf) THEN survival_status = {NaN}\nIF Relapse = {1} AND PLTrecovery = <15.50, inf) THEN survival_status = {NaN}\nIF PLTrecovery = (-inf, 266) THEN survival_status = {NaN}\n"
+          ]
+        }
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {
+        "id": "GkNBc5iBpwmj"
+      },
+      "source": [
+        "### Rules evaluation on full set"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "metadata": {
+        "id": "9UjrC8r-p59d"
+      },
+      "source": [
+        "integrated_brier_score = srv.score(x, y)\n",
+        "print(f'Integrated Brier Score: {integrated_brier_score}')"
+      ],
+      "execution_count": 16,
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Integrated Brier Score: 0.2154545054362314\n"
+          ]
+        }
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {
+        "id": "FpoSoaKdqAGQ"
+      },
+      "source": [
+        "## Stratified K-Folds cross-validation"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "metadata": {
+        "id": "0nNv6a84qTsq"
+      },
+      "source": [
+        "from sklearn.model_selection import StratifiedKFold\n",
+        "\n",
+        "skf = StratifiedKFold(n_splits=10)\n",
+        "\n",
+        "ruleset_stats = pd.DataFrame()\n",
+        "survival_metrics = []\n",
+        "\n",
+        "\n",
+        "for train_index, test_index in skf.split(x, y):\n",
+        "    x_train, x_test = x.iloc[train_index], x.iloc[test_index]\n",
+        "    y_train, y_test = y.iloc[train_index], y.iloc[test_index]\n",
+        "\n",
+        "    srv = SurvivalRules(\n",
+        "        survival_time_attr = 'survival_time'\n",
+        "    )\n",
+        "    srv.fit(x_train, y_train)\n",
+        "    ruleset = srv.model\n",
+        "\n",
+        "    ibs = srv.score(x_test, y_test)\n",
+        "\n",
+        "    survival_metrics.append(ibs)\n",
+        "    ruleset_stats = pd.concat([ruleset_stats, get_ruleset_stats(ruleset)])\n"
+      ],
+      "execution_count": 9,
+      "outputs": []
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {
+        "id": "MfCOH_f3sICm"
+      },
+      "source": [
+        "Ruleset characteristics (average)"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "metadata": {
+        "id": "xzbazr51sRd3"
+      },
+      "source": [
+        "display(ruleset_stats.mean())"
+      ],
+      "execution_count": 10,
+      "outputs": [
+        {
+          "output_type": "display_data",
+          "data": {
+            "text/plain": "minimum_covered                 5.000000\nmaximum_uncovered_fraction      0.000000\nignore_missing                  0.000000\npruning_enabled                 1.000000\nmax_growing_condition           0.000000\ntime_total_s                   39.927018\ntime_growing_s                 35.729990\ntime_pruning_s                  4.192022\nrules_count                     5.700000\nconditions_per_rule             3.329405\ninduced_conditions_per_rule    68.789167\navg_rule_coverage               0.389676\navg_rule_precision              1.000000\navg_rule_quality                0.998029\npvalue                          0.001971\nFDR_pvalue                      0.002043\nFWER_pvalue                     0.002328\nfraction_significant            1.000000\nfraction_FDR_significant        1.000000\nfraction_FWER_significant       1.000000\ndtype: float64"
+          },
+          "metadata": {}
+        }
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {
+        "id": "_SmDJho4sVEO"
+      },
+      "source": [
+        "Rules evaluation on dataset (average)"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "metadata": {
+        "id": "Co-fNd9nshWB"
+      },
+      "source": [
+        "print(f'Integrated Brier Score: {np.mean(survival_metrics)}')"
+      ],
+      "execution_count": 15,
+      "outputs": [
+        {
+          "output_type": "display_data",
+          "data": {
+            "text/plain": "0.24666778331912664"
+          },
+          "metadata": {}
+        }
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {
+        "id": "d-GdQ-wUtzW9"
+      },
+      "source": [
+        "## Hyperparameters tuning\n",
+        "\n",
+        "This one gonna take a while..."
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": 9,
+      "metadata": {},
+      "outputs": [],
+      "source": [
+        "from sklearn.model_selection import StratifiedKFold\n",
+        "from sklearn.model_selection import GridSearchCV\n",
+        "from rulekit.params import Measures"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": 11,
+      "metadata": {},
+      "outputs": [],
+      "source": [
+        "def scorer(estimator, X, y):\n",
+        "    return (-1 * estimator.score(X,y))"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "metadata": {
+        "id": "xNUji8U7t2wd"
+      },
+      "source": [
+        "# define models and parameters\n",
+        "model = SurvivalRules()\n",
+        "min_rule_covered = range(3, 15)\n",
+        "\n",
+        "# define grid search\n",
+        "grid = {\n",
+        "    'survival_time_attr': ['survival_time'],\n",
+        "    'min_rule_covered': min_rule_covered, \n",
+        "}\n",
+        "\n",
+        "cv = StratifiedKFold(n_splits=3)\n",
+        "grid_search = GridSearchCV(estimator=model, param_grid=grid, cv=cv, scoring=scorer) \n",
+        "grid_result = grid_search.fit(x, y)\n",
+        "\n",
+        "# summarize results\n",
+        "print(\"Best Integrated Brier Score: %f using %s\" % ( (-1)*grid_result.best_score_, grid_result.best_params_))"
+      ],
+      "execution_count": 18,
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Best Integrated Brier Score: 0.228297 using {'min_rule_covered': 5, 'survival_time_attr': 'survival_time'}\n"
+          ]
+        }
+      ]
+    },
+    {
+      "source": [
+        "## Building model with tuned hyperparameters\n",
+        "\n",
+        "### Split dataset to train and test (80%/20%)"
+      ],
+      "cell_type": "markdown",
+      "metadata": {}
+    },
+    {
+      "cell_type": "code",
+      "execution_count": 7,
+      "metadata": {},
+      "outputs": [],
+      "source": [
+        "from sklearn.model_selection import train_test_split\n",
+        "\n",
+        "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, shuffle=True, stratify=y)\n",
+        "\n",
+        "srv = SurvivalRules(\n",
+        "    survival_time_attr = 'survival_time',\n",
+        "    min_rule_covered = 5\n",
+        ")\n",
+        "srv.fit(x_train, y_train)\n",
+        "ruleset = srv.model\n",
+        "ruleset_stats = get_ruleset_stats(ruleset)"
+      ]
+    },
+    {
+      "source": [
+        "Rules evaluation"
+      ],
+      "cell_type": "markdown",
+      "metadata": {}
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {},
+      "outputs": [],
+      "source": [
+        "display(ruleset_stats.iloc[0])"
+      ]
+    },
+    {
+      "source": [
+        "### Validate model on test dataset"
+      ],
+      "cell_type": "markdown",
+      "metadata": {}
+    },
+    {
+      "cell_type": "code",
+      "execution_count": 19,
+      "metadata": {},
+      "outputs": [
+        {
+          "output_type": "stream",
+          "name": "stdout",
+          "text": [
+            "Integrated Brier Score: 0.19112015424542664\n"
+          ]
+        }
+      ],
+      "source": [
+        "integrated_brier_score = srv.score(x_test, y_test)\n",
+        "print(f'Integrated Brier Score: {integrated_brier_score}')"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": 20,
+      "metadata": {},
+      "outputs": [],
+      "source": [
+        "predictions = srv.predict(x_test)"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": 80,
+      "metadata": {},
+      "outputs": [
+        {
+          "output_type": "execute_result",
+          "data": {
+            "text/plain": [
+              "[<matplotlib.lines.Line2D at 0x2155f890880>]"
+            ]
+          },
+          "metadata": {},
+          "execution_count": 80
+        },
+        {
+          "output_type": "display_data",
+          "data": {
+            "text/plain": "<Figure size 432x288 with 1 Axes>",
+            "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<svg height=\"248.518125pt\" version=\"1.1\" viewBox=\"0 0 378.465625 248.518125\" width=\"378.465625pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <metadata>\r\n  <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\r\n   <cc:Work>\r\n    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\r\n    <dc:date>2021-04-22T09:20:30.747190</dc:date>\r\n    <dc:format>image/svg+xml</dc:format>\r\n    <dc:creator>\r\n     <cc:Agent>\r\n      <dc:title>Matplotlib v3.4.1, https://matplotlib.org/</dc:title>\r\n     </cc:Agent>\r\n    </dc:creator>\r\n   </cc:Work>\r\n  </rdf:RDF>\r\n </metadata>\r\n <defs>\r\n  <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n  <g id=\"patch_1\">\r\n   <path d=\"M 0 248.518125 \r\nL 378.465625 248.518125 \r\nL 378.465625 0 \r\nL 0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n  </g>\r\n  <g id=\"axes_1\">\r\n   <g id=\"patch_2\">\r\n    <path d=\"M 36.465625 224.64 \r\nL 371.265625 224.64 \r\nL 371.265625 7.2 \r\nL 36.465625 7.2 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n   </g>\r\n   <g id=\"matplotlib.axis_1\">\r\n    <g id=\"xtick_1\">\r\n     <g id=\"line2d_1\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL 0 3.5 \r\n\" id=\"meb6e1dbc0a\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"51.127383\" xlink:href=\"#meb6e1dbc0a\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_1\">\r\n      <!-- 0 -->\r\n      <g transform=\"translate(47.946133 239.238437)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 2034 4250 \r\nQ 1547 4250 1301 3770 \r\nQ 1056 3291 1056 2328 \r\nQ 1056 1369 1301 889 \r\nQ 1547 409 2034 409 \r\nQ 2525 409 2770 889 \r\nQ 3016 1369 3016 2328 \r\nQ 3016 3291 2770 3770 \r\nQ 2525 4250 2034 4250 \r\nz\r\nM 2034 4750 \r\nQ 2819 4750 3233 4129 \r\nQ 3647 3509 3647 2328 \r\nQ 3647 1150 3233 529 \r\nQ 2819 -91 2034 -91 \r\nQ 1250 -91 836 529 \r\nQ 422 1150 422 2328 \r\nQ 422 3509 836 4129 \r\nQ 1250 4750 2034 4750 \r\nz\r\n\" id=\"DejaVuSans-30\" transform=\"scale(0.015625)\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_2\">\r\n     <g id=\"line2d_2\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"97.496006\" xlink:href=\"#meb6e1dbc0a\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_2\">\r\n      <!-- 500 -->\r\n      <g transform=\"translate(87.952256 239.238437)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 691 4666 \r\nL 3169 4666 \r\nL 3169 4134 \r\nL 1269 4134 \r\nL 1269 2991 \r\nQ 1406 3038 1543 3061 \r\nQ 1681 3084 1819 3084 \r\nQ 2600 3084 3056 2656 \r\nQ 3513 2228 3513 1497 \r\nQ 3513 744 3044 326 \r\nQ 2575 -91 1722 -91 \r\nQ 1428 -91 1123 -41 \r\nQ 819 9 494 109 \r\nL 494 744 \r\nQ 775 591 1075 516 \r\nQ 1375 441 1709 441 \r\nQ 2250 441 2565 725 \r\nQ 2881 1009 2881 1497 \r\nQ 2881 1984 2565 2268 \r\nQ 2250 2553 1709 2553 \r\nQ 1456 2553 1204 2497 \r\nQ 953 2441 691 2322 \r\nL 691 4666 \r\nz\r\n\" id=\"DejaVuSans-35\" transform=\"scale(0.015625)\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-35\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_3\">\r\n     <g id=\"line2d_3\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"143.864628\" xlink:href=\"#meb6e1dbc0a\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_3\">\r\n      <!-- 1000 -->\r\n      <g transform=\"translate(131.139628 239.238437)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 794 531 \r\nL 1825 531 \r\nL 1825 4091 \r\nL 703 3866 \r\nL 703 4441 \r\nL 1819 4666 \r\nL 2450 4666 \r\nL 2450 531 \r\nL 3481 531 \r\nL 3481 0 \r\nL 794 0 \r\nL 794 531 \r\nz\r\n\" id=\"DejaVuSans-31\" transform=\"scale(0.015625)\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-31\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"190.869141\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_4\">\r\n     <g id=\"line2d_4\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"190.23325\" xlink:href=\"#meb6e1dbc0a\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_4\">\r\n      <!-- 1500 -->\r\n      <g transform=\"translate(177.50825 239.238437)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-31\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-35\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"190.869141\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_5\">\r\n     <g id=\"line2d_5\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"236.601872\" xlink:href=\"#meb6e1dbc0a\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_5\">\r\n      <!-- 2000 -->\r\n      <g transform=\"translate(223.876872 239.238437)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 1228 531 \r\nL 3431 531 \r\nL 3431 0 \r\nL 469 0 \r\nL 469 531 \r\nQ 828 903 1448 1529 \r\nQ 2069 2156 2228 2338 \r\nQ 2531 2678 2651 2914 \r\nQ 2772 3150 2772 3378 \r\nQ 2772 3750 2511 3984 \r\nQ 2250 4219 1831 4219 \r\nQ 1534 4219 1204 4116 \r\nQ 875 4013 500 3803 \r\nL 500 4441 \r\nQ 881 4594 1212 4672 \r\nQ 1544 4750 1819 4750 \r\nQ 2544 4750 2975 4387 \r\nQ 3406 4025 3406 3419 \r\nQ 3406 3131 3298 2873 \r\nQ 3191 2616 2906 2266 \r\nQ 2828 2175 2409 1742 \r\nQ 1991 1309 1228 531 \r\nz\r\n\" id=\"DejaVuSans-32\" transform=\"scale(0.015625)\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-32\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"190.869141\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_6\">\r\n     <g id=\"line2d_6\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"282.970495\" xlink:href=\"#meb6e1dbc0a\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_6\">\r\n      <!-- 2500 -->\r\n      <g transform=\"translate(270.245495 239.238437)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-32\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-35\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"190.869141\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_7\">\r\n     <g id=\"line2d_7\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"329.339117\" xlink:href=\"#meb6e1dbc0a\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_7\">\r\n      <!-- 3000 -->\r\n      <g transform=\"translate(316.614117 239.238437)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 2597 2516 \r\nQ 3050 2419 3304 2112 \r\nQ 3559 1806 3559 1356 \r\nQ 3559 666 3084 287 \r\nQ 2609 -91 1734 -91 \r\nQ 1441 -91 1130 -33 \r\nQ 819 25 488 141 \r\nL 488 750 \r\nQ 750 597 1062 519 \r\nQ 1375 441 1716 441 \r\nQ 2309 441 2620 675 \r\nQ 2931 909 2931 1356 \r\nQ 2931 1769 2642 2001 \r\nQ 2353 2234 1838 2234 \r\nL 1294 2234 \r\nL 1294 2753 \r\nL 1863 2753 \r\nQ 2328 2753 2575 2939 \r\nQ 2822 3125 2822 3475 \r\nQ 2822 3834 2567 4026 \r\nQ 2313 4219 1838 4219 \r\nQ 1578 4219 1281 4162 \r\nQ 984 4106 628 3988 \r\nL 628 4550 \r\nQ 988 4650 1302 4700 \r\nQ 1616 4750 1894 4750 \r\nQ 2613 4750 3031 4423 \r\nQ 3450 4097 3450 3541 \r\nQ 3450 3153 3228 2886 \r\nQ 3006 2619 2597 2516 \r\nz\r\n\" id=\"DejaVuSans-33\" transform=\"scale(0.015625)\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-33\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"190.869141\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"matplotlib.axis_2\">\r\n    <g id=\"ytick_1\">\r\n     <g id=\"line2d_8\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL -3.5 0 \r\n\" id=\"mee5b30f67e\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"36.465625\" xlink:href=\"#mee5b30f67e\" y=\"189.078733\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_8\">\r\n      <!-- 0.80 -->\r\n      <g transform=\"translate(7.2 192.877952)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 684 794 \r\nL 1344 794 \r\nL 1344 0 \r\nL 684 0 \r\nL 684 794 \r\nz\r\n\" id=\"DejaVuSans-2e\" transform=\"scale(0.015625)\"/>\r\n        <path d=\"M 2034 2216 \r\nQ 1584 2216 1326 1975 \r\nQ 1069 1734 1069 1313 \r\nQ 1069 891 1326 650 \r\nQ 1584 409 2034 409 \r\nQ 2484 409 2743 651 \r\nQ 3003 894 3003 1313 \r\nQ 3003 1734 2745 1975 \r\nQ 2488 2216 2034 2216 \r\nz\r\nM 1403 2484 \r\nQ 997 2584 770 2862 \r\nQ 544 3141 544 3541 \r\nQ 544 4100 942 4425 \r\nQ 1341 4750 2034 4750 \r\nQ 2731 4750 3128 4425 \r\nQ 3525 4100 3525 3541 \r\nQ 3525 3141 3298 2862 \r\nQ 3072 2584 2669 2484 \r\nQ 3125 2378 3379 2068 \r\nQ 3634 1759 3634 1313 \r\nQ 3634 634 3220 271 \r\nQ 2806 -91 2034 -91 \r\nQ 1263 -91 848 271 \r\nQ 434 634 434 1313 \r\nQ 434 1759 690 2068 \r\nQ 947 2378 1403 2484 \r\nz\r\nM 1172 3481 \r\nQ 1172 3119 1398 2916 \r\nQ 1625 2713 2034 2713 \r\nQ 2441 2713 2670 2916 \r\nQ 2900 3119 2900 3481 \r\nQ 2900 3844 2670 4047 \r\nQ 2441 4250 2034 4250 \r\nQ 1625 4250 1398 4047 \r\nQ 1172 3844 1172 3481 \r\nz\r\n\" id=\"DejaVuSans-38\" transform=\"scale(0.015625)\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-38\"/>\r\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_2\">\r\n     <g id=\"line2d_9\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"36.465625\" xlink:href=\"#mee5b30f67e\" y=\"144.760978\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_9\">\r\n      <!-- 0.85 -->\r\n      <g transform=\"translate(7.2 148.560197)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-38\"/>\r\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-35\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_3\">\r\n     <g id=\"line2d_10\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"36.465625\" xlink:href=\"#mee5b30f67e\" y=\"100.443223\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_10\">\r\n      <!-- 0.90 -->\r\n      <g transform=\"translate(7.2 104.242442)scale(0.1 -0.1)\">\r\n       <defs>\r\n        <path d=\"M 703 97 \r\nL 703 672 \r\nQ 941 559 1184 500 \r\nQ 1428 441 1663 441 \r\nQ 2288 441 2617 861 \r\nQ 2947 1281 2994 2138 \r\nQ 2813 1869 2534 1725 \r\nQ 2256 1581 1919 1581 \r\nQ 1219 1581 811 2004 \r\nQ 403 2428 403 3163 \r\nQ 403 3881 828 4315 \r\nQ 1253 4750 1959 4750 \r\nQ 2769 4750 3195 4129 \r\nQ 3622 3509 3622 2328 \r\nQ 3622 1225 3098 567 \r\nQ 2575 -91 1691 -91 \r\nQ 1453 -91 1209 -44 \r\nQ 966 3 703 97 \r\nz\r\nM 1959 2075 \r\nQ 2384 2075 2632 2365 \r\nQ 2881 2656 2881 3163 \r\nQ 2881 3666 2632 3958 \r\nQ 2384 4250 1959 4250 \r\nQ 1534 4250 1286 3958 \r\nQ 1038 3666 1038 3163 \r\nQ 1038 2656 1286 2365 \r\nQ 1534 2075 1959 2075 \r\nz\r\n\" id=\"DejaVuSans-39\" transform=\"scale(0.015625)\"/>\r\n       </defs>\r\n       <use xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-39\"/>\r\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_4\">\r\n     <g id=\"line2d_11\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"36.465625\" xlink:href=\"#mee5b30f67e\" y=\"56.125468\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_11\">\r\n      <!-- 0.95 -->\r\n      <g transform=\"translate(7.2 59.924687)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-39\"/>\r\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-35\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_5\">\r\n     <g id=\"line2d_12\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"36.465625\" xlink:href=\"#mee5b30f67e\" y=\"11.807713\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_12\">\r\n      <!-- 1.00 -->\r\n      <g transform=\"translate(7.2 15.606932)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-31\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-30\"/>\r\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-30\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"line2d_13\">\r\n    <path clip-path=\"url(#p2c4028ebdd)\" d=\"M 51.683807 17.083636 \r\nL 52.889391 19.410028 \r\nL 53.538552 24.685951 \r\nL 53.724026 32.288265 \r\nL 54.002238 34.614657 \r\nL 54.92961 36.941048 \r\nL 55.300559 39.267439 \r\nL 56.227932 41.593831 \r\nL 56.598881 43.920222 \r\nL 56.691618 46.246613 \r\nL 57.248041 48.573005 \r\nL 57.340779 50.899396 \r\nL 57.433516 57.062822 \r\nL 60.030159 59.389214 \r\nL 60.586582 61.715605 \r\nL 61.421217 73.154955 \r\nL 61.606692 79.318381 \r\nL 61.792166 85.481808 \r\nL 61.977641 91.645234 \r\nL 63.183225 97.80866 \r\nL 64.945233 111.574401 \r\nL 66.243554 113.900793 \r\nL 67.912825 120.064219 \r\nL 68.840197 122.39061 \r\nL 69.303883 124.717002 \r\nL 69.674832 127.043393 \r\nL 70.973154 129.369784 \r\nL 71.900526 140.809134 \r\nL 73.013373 148.411448 \r\nL 73.940745 154.574875 \r\nL 75.331804 156.901266 \r\nL 76.537388 159.227657 \r\nL 78.021184 161.554049 \r\nL 79.50498 163.88044 \r\nL 82.19436 166.206831 \r\nL 86.553011 168.533223 \r\nL 86.831222 176.135537 \r\nL 87.944069 178.461929 \r\nL 89.427865 180.78832 \r\nL 90.169763 183.114711 \r\nL 91.28261 183.114711 \r\nL 91.468085 187.820974 \r\nL 92.395457 187.820974 \r\nL 93.044618 187.820974 \r\nL 93.601041 187.820974 \r\nL 96.939582 187.820974 \r\nL 98.516115 187.820974 \r\nL 100.37086 187.820974 \r\nL 104.544036 190.352825 \r\nL 104.914985 190.352825 \r\nL 106.676993 190.352825 \r\nL 109.922796 203.412682 \r\nL 113.446812 206.01116 \r\nL 113.817761 206.01116 \r\nL 116.414403 206.01116 \r\nL 117.712725 206.01116 \r\nL 120.21663 208.719433 \r\nL 121.051266 208.719433 \r\nL 122.164113 208.719433 \r\nL 122.25685 208.719433 \r\nL 127.542873 208.719433 \r\nL 129.861304 211.591844 \r\nL 133.107107 211.591844 \r\nL 138.485868 211.591844 \r\nL 140.526087 211.591844 \r\nL 143.771891 211.591844 \r\nL 143.864628 211.591844 \r\nL 144.421051 211.591844 \r\nL 145.533898 214.756364 \r\nL 146.183059 214.756364 \r\nL 150.727184 214.756364 \r\nL 151.654556 214.756364 \r\nL 153.972987 214.756364 \r\nL 156.662368 214.756364 \r\nL 159.722697 214.756364 \r\nL 161.021018 214.756364 \r\nL 161.29923 214.756364 \r\nL 161.94839 214.756364 \r\nL 163.710398 214.756364 \r\nL 166.399778 214.756364 \r\nL 167.6981 214.756364 \r\nL 169.831056 214.756364 \r\nL 172.427699 214.756364 \r\nL 174.189707 214.756364 \r\nL 175.951714 214.756364 \r\nL 178.733832 214.756364 \r\nL 179.568467 214.756364 \r\nL 180.681314 214.756364 \r\nL 183.185219 214.756364 \r\nL 183.927117 214.756364 \r\nL 198.30139 214.756364 \r\nL 198.857814 214.756364 \r\nL 200.898033 214.756364 \r\nL 202.01088 214.756364 \r\nL 207.853327 214.756364 \r\nL 208.038801 214.756364 \r\nL 213.78851 214.756364 \r\nL 216.292416 214.756364 \r\nL 217.219788 214.756364 \r\nL 221.671176 214.756364 \r\nL 224.824242 214.756364 \r\nL 226.864462 214.756364 \r\nL 231.872273 214.756364 \r\nL 232.706908 214.756364 \r\nL 239.940413 214.756364 \r\nL 240.589574 214.756364 \r\nL 246.339283 214.756364 \r\nL 246.988444 214.756364 \r\nL 247.45213 214.756364 \r\nL 250.790671 214.756364 \r\nL 258.024176 214.756364 \r\nL 262.475564 214.756364 \r\nL 263.124724 214.756364 \r\nL 263.773885 214.756364 \r\nL 265.999579 214.756364 \r\nL 267.854324 214.756364 \r\nL 269.430857 214.756364 \r\nL 271.192864 214.756364 \r\nL 279.353742 214.756364 \r\nL 281.393961 214.756364 \r\nL 283.248706 214.756364 \r\nL 285.288926 214.756364 \r\nL 301.425206 214.756364 \r\nL 307.174915 214.756364 \r\nL 322.476561 214.756364 \r\nL 323.032984 214.756364 \r\nL 356.047443 214.756364 \r\n\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\r\n   </g>\r\n   <g id=\"patch_3\">\r\n    <path d=\"M 36.465625 224.64 \r\nL 36.465625 7.2 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_4\">\r\n    <path d=\"M 371.265625 224.64 \r\nL 371.265625 7.2 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_5\">\r\n    <path d=\"M 36.465625 224.64 \r\nL 371.265625 224.64 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_6\">\r\n    <path d=\"M 36.465625 7.2 \r\nL 371.265625 7.2 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n  </g>\r\n </g>\r\n <defs>\r\n  <clipPath id=\"p2c4028ebdd\">\r\n   <rect height=\"217.44\" width=\"334.8\" x=\"36.465625\" y=\"7.2\"/>\r\n  </clipPath>\r\n </defs>\r\n</svg>\r\n",
+            "image/png": "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\n"
+          },
+          "metadata": {
+            "needs_background": "light"
+          }
+        }
+      ],
+      "source": [
+        "plt.plot(predictions[0][\"times\"], predictions[0][\"probabilities\"])"
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/rulekit/__init__.py b/rulekit/__init__.py
index 2621e64..de04e08 100644
--- a/rulekit/__init__.py
+++ b/rulekit/__init__.py
@@ -1,5 +1,5 @@
-from .main import RuleKit
-
-__version__ = '1.3.3'
-
+from .main import RuleKit
+
+__version__ = '1.5.2'
+
 RuleKit = RuleKit
\ No newline at end of file
diff --git a/rulekit/classification.py b/rulekit/classification.py
index 186d047..5431f7d 100644
--- a/rulekit/classification.py
+++ b/rulekit/classification.py
@@ -2,6 +2,7 @@
 from numbers import Number
 import numpy as np
 import pandas as pd
+from sklearn import metrics
 from enum import Enum
 from jpype import JClass
 
@@ -14,7 +15,8 @@ class BaseClassifier:
     """:meta private:"""
 
     def __init__(self):
-        self.ClassificationRulesPerformance = JClass('adaa.analytics.rules.logic.quality.ClassificationRulesPerformance')
+        self.ClassificationRulesPerformance = JClass(
+            'adaa.analytics.rules.logic.quality.ClassificationRulesPerformance')
 
     class MetricTypes(Enum):
         """:meta private:"""
@@ -23,7 +25,8 @@ class MetricTypes(Enum):
         NegativeVotingConflicts = 3
 
     def _calculate_metric(self, example_set, metric_type) -> float:
-        classificationRulesPerformance = self.ClassificationRulesPerformance(metric_type.value)
+        classificationRulesPerformance = self.ClassificationRulesPerformance(
+            metric_type.value)
         classificationRulesPerformance.startCounting(example_set, True)
         return classificationRulesPerformance.getMikroAverage()
 
@@ -84,9 +87,11 @@ def __init__(self,
     def _map_result(self, predicted_example_set) -> np.ndarray:
         prediction: np.ndarray
         if self._remap_to_numeric:
-            prediction = PredictionResultMapper.map_to_numerical(predicted_example_set)
+            prediction = PredictionResultMapper.map_to_numerical(
+                predicted_example_set)
         else:
-            prediction = PredictionResultMapper.map_to_nominal(predicted_example_set)
+            prediction = PredictionResultMapper.map_to_nominal(
+                predicted_example_set)
         return prediction
 
     def _map_confidence(self, predicted_example_set) -> np.ndarray:
@@ -98,11 +103,12 @@ def _get_unique_label_values(self, labels: Data):
             tmp[label_value] = None
         self.label_unique_values = list(tmp.keys())
         if len(self.label_unique_values) > 0 and isinstance(self.label_unique_values[0], bytes):
-            self.label_unique_values = [item.decode('utf-8') for item in self.label_unique_values]
+            self.label_unique_values = [item.decode(
+                'utf-8') for item in self.label_unique_values]
 
     def fit(self, values: Data, labels: Data) -> Any:
         """Train model on given dataset.
-    
+
         Parameters
         ----------
         values : :class:`rulekit.operator.Data`
@@ -114,20 +120,21 @@ def fit(self, values: Data, labels: Data) -> Any:
         self : RuleClassifier
         """
         self._get_unique_label_values(labels)
-        
+
         if isinstance(labels, pd.DataFrame) or isinstance(labels, pd.Series):
-            first_label = labels.iloc[0]
+            if isinstance(labels.iloc[0], Number):
+                self._remap_to_numeric = True
+                labels = labels.astype(str)
         else:
-            first_label = labels[0]
-        if isinstance(first_label, Number):
-            self._remap_to_numeric = True
-            labels = list(map(str, labels))
+            if isinstance(labels[0], Number):
+                self._remap_to_numeric = True
+                labels = list(map(str, labels))   
         BaseOperator.fit(self, values, labels)
         return self
 
     def predict(self, values: Data, return_metrics: bool = False) -> Union[np.ndarray, Tuple[np.ndarray, Dict[str, float]]]:
         """Perform prediction and returns predicted labels.
-    
+
         Parameters
         ----------
         values : :class:`rulekit.operator.Data`
@@ -136,7 +143,7 @@ def predict(self, values: Data, return_metrics: bool = False) -> Union[np.ndarra
         return_metrics: bool = False
             Optional flag. If set to *True* method will calculate some additional model metrics. 
             Method will then return tuple instead of just predicted labels.
- 
+
         Returns
         -------
         result : Union[np.ndarray, Tuple[np.ndarray, Dict[str, float]]]
@@ -146,14 +153,15 @@ def predict(self, values: Data, return_metrics: bool = False) -> Union[np.ndarra
         result_example_set = BaseOperator.predict(self, values)
         mapped_result_example_set = self._map_result(result_example_set)
         if return_metrics:
-            metrics = BaseClassifier._calculate_prediction_metrics(self, result_example_set)
+            metrics = BaseClassifier._calculate_prediction_metrics(
+                self, result_example_set)
             return (mapped_result_example_set, metrics)
         else:
             return mapped_result_example_set
 
     def predict_proba(self, values: Data, return_metrics: bool = False) -> Union[np.ndarray, Tuple[np.ndarray, Dict[str, float]]]:
         """Perform prediction and returns class probabilities for each example.
-    
+
         Parameters
         ----------
         values : :class:`rulekit.operator.Data`
@@ -162,7 +170,7 @@ def predict_proba(self, values: Data, return_metrics: bool = False) -> Union[np.
         return_metrics: bool = False
             Optional flag. If set to *True* method will calculate some additional model metrics. 
             Method will then return tuple instead of just probabilities.
- 
+
         Returns
         -------
         result : Union[np.ndarray, Tuple[np.ndarray, Dict[str, float]]]
@@ -172,13 +180,43 @@ def predict_proba(self, values: Data, return_metrics: bool = False) -> Union[np.
         result_example_set = BaseOperator.predict(self, values)
         mapped_result_example_set = self._map_confidence(result_example_set)
         if return_metrics:
-            metrics = BaseClassifier._calculate_prediction_metrics(self, result_example_set)
+            metrics = BaseClassifier._calculate_prediction_metrics(
+                self, result_example_set)
             return (mapped_result_example_set, metrics)
         else:
             return mapped_result_example_set
 
+    def score(self, values: Data, labels: Data) -> float:
+        """Return the accuracy on the given test data and labels.
 
-class ExpertRuleClassifier(RuleClassifier, ExpertKnowledgeOperator, BaseClassifier):
+        Parameters
+        ----------
+        values : :class:`rulekit.operator.Data`
+            attributes
+        labels : :class:`rulekit.operator.Data`
+            true labels
+
+        Returns
+        -------
+        score : float
+            Accuracy of self.predict(values) wrt. labels.
+        """
+        predicted_labels = self.predict(values)
+        return metrics.accuracy_score(labels, predicted_labels)
+
+    def __getstate__(self) -> dict:
+        return {**BaseOperator.__getstate__(self), **{
+            'label_unique_values': self.label_unique_values,
+            '_remap_to_numeric': self._remap_to_numeric
+        }}
+
+    def __setstate__(self, state: dict):
+        BaseOperator.__setstate__(self, state)
+        self.label_unique_values = state['label_unique_values']
+        self._remap_to_numeric = state['_remap_to_numeric']
+
+
+class ExpertRuleClassifier(ExpertKnowledgeOperator, RuleClassifier, BaseClassifier):
     """Classification model using expert knowledge."""
 
     def __init__(self,
@@ -258,17 +296,18 @@ def fit(self,
             labels: Data,
 
             expert_rules: List[Union[str, Tuple[str, str]]] = None,
-            expert_preferred_conditions: List[Union[str, Tuple[str, str]]] = None,
+            expert_preferred_conditions: List[Union[str,
+                                                    Tuple[str, str]]] = None,
             expert_forbidden_conditions: List[Union[str, Tuple[str, str]]] = None) -> Any:
         """Train model on given dataset.
-    
+
         Parameters
         ----------
         values : :class:`rulekit.operator.Data`
             attributes
         labels : :class:`rulekit.operator.Data`
             labels
-        
+
         expert_rules : List[Union[str, Tuple[str, str]]]
              set of initial rules, either passed as a list of strings representing rules or as list of tuples where first
              element is name of the rule and second one is rule string.
@@ -282,9 +321,14 @@ def fit(self,
         -------
         self : ExpertRuleClassifier
         """
-        if isinstance(labels[0], Number):
-            self._remap_to_numeric = True
-            labels = list(map(str, labels))
+        if isinstance(labels, pd.DataFrame) or isinstance(labels, pd.Series):
+            if isinstance(labels.iloc[0], Number):
+                self._remap_to_numeric = True
+                labels = labels.astype(str)
+        else:
+            if isinstance(labels[0], Number):
+                self._remap_to_numeric = True
+                labels = list(map(str, labels))  
         return ExpertKnowledgeOperator.fit(
             self,
             values,
@@ -296,3 +340,12 @@ def fit(self,
 
     def predict(self, values: Data, return_metrics: bool = False) -> Union[np.ndarray, Tuple[np.ndarray, Dict[str, float]]]:
         return RuleClassifier.predict(self, values, return_metrics)
+
+    def __getstate__(self) -> dict:
+        return {**BaseOperator.__getstate__(self), **{
+            '_remap_to_numeric': self._remap_to_numeric
+        }}
+
+    def __setstate__(self, state: dict):
+        BaseOperator.__setstate__(self, state)
+        self._remap_to_numeric = state['_remap_to_numeric']
\ No newline at end of file
diff --git a/rulekit/helpers.py b/rulekit/helpers.py
index 109d9cc..2210a1c 100644
--- a/rulekit/helpers.py
+++ b/rulekit/helpers.py
@@ -1,12 +1,16 @@
 from typing import Union, List, Any
-from jpype import JClass, JString, JObject, JArray, java
+from jpype import JClass, JString, JObject, JArray, java, addClassPath
+from jpype.pickle import JPickler, JUnpickler
+import io
 import numpy as np
 import pandas as pd
 from .params import Measures
 from .rules import Rule
 
+
 def get_rule_generator(expert: bool = False) -> Any:
-    OperatorDocumentation = JClass('com.rapidminer.tools.documentation.OperatorDocumentation')
+    OperatorDocumentation = JClass(
+        'com.rapidminer.tools.documentation.OperatorDocumentation')
     OperatorDescription = JClass('com.rapidminer.operator.OperatorDescription')
     Mockito = JClass('org.mockito.Mockito')
     path = 'adaa.analytics.rules.operator.'
@@ -18,7 +22,8 @@ def get_rule_generator(expert: bool = False) -> Any:
     documentation = Mockito.mock(OperatorDocumentation.class_)
     description = Mockito.mock(OperatorDescription.class_)
     Mockito.when(documentation.getShortName()).thenReturn(JString(''), None)
-    Mockito.when(description.getOperatorDocumentation()).thenReturn(documentation, None)
+    Mockito.when(description.getOperatorDocumentation()
+                 ).thenReturn(documentation, None)
     return RuleGenerator(description)
 
 
@@ -71,14 +76,17 @@ def configure_expert_parameter(self, param_name: str, param_value: Any):
             if isinstance(param_value[0], str):
                 for index, rule in enumerate(param_value):
                     rule_name = f'{param_name[:-1]}-{index}'
-                    rules_list.add(JObject([rule_name, rule], JArray('java.lang.String', 1)))
+                    rules_list.add(
+                        JObject([rule_name, rule], JArray('java.lang.String', 1)))
             elif isinstance(param_value[0], Rule):
                 for index, rule in enumerate(param_value):
                     rule_name = f'{param_name[:-1]}-{index}'
-                    rules_list.add(JObject([rule_name, str(rule)], JArray('java.lang.String', 1)))
+                    rules_list.add(
+                        JObject([rule_name, str(rule)], JArray('java.lang.String', 1)))
             elif isinstance(param_value[0], tuple):
                 for index, rule in enumerate(param_value):
-                    rules_list.add(JObject([rule[0], rule[1]], JArray('java.lang.String', 1)))
+                    rules_list.add(
+                        JObject([rule[0], rule[1]], JArray('java.lang.String', 1)))
         self.rule_generator.setListParameter(param_name, rules_list)
 
     def configure_simple_parameter(self, param_name: str, param_value: Any):
@@ -95,7 +103,8 @@ def _configure_measure_parameter(self, param_name: str, param_value: Union[str,
                 if param_value == Measures.LogRank:
                     self.rule_generator.setInductionMeasure(self.LogRank())
                 else:
-                    self.rule_generator.setParameter(param_name, param_value.value)
+                    self.rule_generator.setParameter(
+                        param_name, param_value.value)
             if isinstance(param_value, str):
                 self.rule_generator.setParameter(param_name, 'UserDefined')
                 self.rule_generator.setParameter(param_name, param_value)
@@ -124,15 +133,23 @@ def _configure_rule_generator(
         self.configure_simple_parameter('enable_pruning', enable_pruning)
         self.configure_simple_parameter('ignore_missing', ignore_missing)
 
-        self.configure_simple_parameter('extend_using_preferred', extend_using_preferred)
-        self.configure_simple_parameter('extend_using_automatic', extend_using_automatic)
-        self.configure_simple_parameter('induce_using_preferred', induce_using_preferred)
-        self.configure_simple_parameter('induce_using_automatic', induce_using_automatic)
-        self.configure_simple_parameter('consider_other_classes', consider_other_classes)
-        self.configure_simple_parameter('preferred_conditions_per_rule', preferred_conditions_per_rule)
-        self.configure_simple_parameter('preferred_attributes_per_rule', preferred_attributes_per_rule)
+        self.configure_simple_parameter(
+            'extend_using_preferred', extend_using_preferred)
+        self.configure_simple_parameter(
+            'extend_using_automatic', extend_using_automatic)
+        self.configure_simple_parameter(
+            'induce_using_preferred', induce_using_preferred)
+        self.configure_simple_parameter(
+            'induce_using_automatic', induce_using_automatic)
+        self.configure_simple_parameter(
+            'consider_other_classes', consider_other_classes)
+        self.configure_simple_parameter(
+            'preferred_conditions_per_rule', preferred_conditions_per_rule)
+        self.configure_simple_parameter(
+            'preferred_attributes_per_rule', preferred_attributes_per_rule)
 
-        self._configure_measure_parameter('induction_measure', induction_measure)
+        self._configure_measure_parameter(
+            'induction_measure', induction_measure)
         self._configure_measure_parameter('pruning_measure', pruning_measure)
         self._configure_measure_parameter('voting_measure', voting_measure)
 
@@ -143,18 +160,23 @@ def map_attributes_names(example_set, attributes_names: List[str]):
 
 
 def set_survival_time(example_set, survival_time_attribute: str) -> object:
-    OperatorDocumentation = JClass('com.rapidminer.tools.documentation.OperatorDocumentation')
+    OperatorDocumentation = JClass(
+        'com.rapidminer.tools.documentation.OperatorDocumentation')
     OperatorDescription = JClass('com.rapidminer.operator.OperatorDescription')
     Mockito = JClass('org.mockito.Mockito')
-    ChangeAttributeRole = JClass('com.rapidminer.operator.preprocessing.filter.ChangeAttributeRole')
+    ChangeAttributeRole = JClass(
+        'com.rapidminer.operator.preprocessing.filter.ChangeAttributeRole')
 
     documentation = Mockito.mock(OperatorDocumentation.class_)
     description = Mockito.mock(OperatorDescription.class_)
     Mockito.when(documentation.getShortName()).thenReturn(JString(''), None)
-    Mockito.when(description.getOperatorDocumentation()).thenReturn(documentation, None)
+    Mockito.when(description.getOperatorDocumentation()
+                 ).thenReturn(documentation, None)
     role_setter = ChangeAttributeRole(description)
-    role_setter.setParameter(ChangeAttributeRole.PARAMETER_NAME, survival_time_attribute)
-    role_setter.setParameter(ChangeAttributeRole.PARAMETER_TARGET_ROLE, "survival_time")
+    role_setter.setParameter(
+        ChangeAttributeRole.PARAMETER_NAME, survival_time_attribute)
+    role_setter.setParameter(
+        ChangeAttributeRole.PARAMETER_TARGET_ROLE, "survival_time")
     return role_setter.apply(example_set)
 
 
@@ -191,7 +213,8 @@ def create_example_set(values, labels=None, numeric_labels=False, survival_time_
 
 
 def create_sorted_example_set(values, labels=None, numeric_labels=False, survival_time_attribute: str = None) -> object:
-    example_set = create_example_set(values, labels, numeric_labels, survival_time_attribute)
+    example_set = create_example_set(
+        values, labels, numeric_labels, survival_time_attribute)
     SortedExampleSet = JClass("com.rapidminer.example.set.SortedExampleSet")
     sorted_example_set = SortedExampleSet(
         example_set, example_set.getAttributes().getLabel(), SortedExampleSet.INCREASING
@@ -203,12 +226,14 @@ class PredictionResultMapper:
 
     @staticmethod
     def map_confidence(predicted_example_set, label_unique_values: list) -> np.ndarray:
-        confidence_attributes_names = list(map(lambda val: f'confidence_{val}', label_unique_values))
+        confidence_attributes_names = list(
+            map(lambda val: f'confidence_{val}', label_unique_values))
         prediction = []
         row_reader = predicted_example_set.getExampleTable().getDataRowReader()
         confidence_attributes = []
         for name in confidence_attributes_names:
-            confidence_attributes.append(predicted_example_set.getAttributes().get(name))
+            confidence_attributes.append(
+                predicted_example_set.getAttributes().get(name))
         while row_reader.hasNext():
             row = row_reader.next()
             value = []
@@ -230,24 +255,27 @@ def map_to_nominal(predicted_example_set) -> np.ndarray:
         prediction = []
         row_reader = predicted_example_set.getExampleTable().getDataRowReader()
         attribute = predicted_example_set.getAttributes().get('prediction')
+        label_mapping = attribute.getMapping()
         while row_reader.hasNext():
             row = row_reader.next()
             value_index = row.get(attribute)
-            value = attribute.getMapping().mapIndex(round(value_index))
+            value = label_mapping.mapIndex(round(value_index))
             prediction.append(value)
         prediction = list(map(str, prediction))
-        return np.array(prediction)
+        return np.array(prediction).astype(np.unicode_)
 
     @staticmethod
-    def map_to_numerical(predicted_example_set) -> np.ndarray:
+    def map_to_numerical(predicted_example_set, remap: bool=True) -> np.ndarray:
         prediction = []
         row_reader = predicted_example_set.getExampleTable().getDataRowReader()
         attribute = predicted_example_set.getAttributes().get('prediction')
+        label_mapping = predicted_example_set.getAttributes().getLabel().getMapping()
         while row_reader.hasNext():
             row = row_reader.next()
-            value = attribute.getValue(row)
+            value = int(attribute.getValue(row))
+            if remap:
+                value = float(str(label_mapping.mapIndex(value)))
             prediction.append(value)
-        prediction = list(map(float, prediction))
         return np.array(prediction)
 
     @staticmethod
@@ -259,9 +287,30 @@ def map_survival(predicted_example_set) -> np.ndarray:
             example = example_set_iterator.next()
             example_estimator = str(example.getValueAsString(attribute))
             example_estimator = example_estimator.split(" ")
-            number_of_points, example_estimator[0] = example_estimator[0].split(":") 
-            times = [float(example_estimator[i]) for i in range(len(example_estimator) - 1) if i%2 == 0]
-            probabilities = [float(example_estimator[i]) for i in range(len(example_estimator)) if i % 2 != 0]
+            number_of_points, example_estimator[0] = example_estimator[0].split(
+                ":")
+            times = [float(example_estimator[i])
+                     for i in range(len(example_estimator) - 1) if i % 2 == 0]
+            probabilities = [float(example_estimator[i])
+                             for i in range(len(example_estimator)) if i % 2 != 0]
             estimator = {'times': times, 'probabilities': probabilities}
             estimators.append(estimator)
-        return np.array(estimators)
\ No newline at end of file
+        return np.array(estimators)
+
+
+class ModelSerializer:
+
+    @staticmethod
+    def serialize(real_model: object) -> bytes:
+        in_memory_file = io.BytesIO()
+        JPickler(in_memory_file).dump(real_model)
+        serialized_bytes = in_memory_file.getvalue()
+        in_memory_file.close()
+        return serialized_bytes
+
+    @staticmethod
+    def deserialize(serialized_bytes: bytes) -> object:
+        in_memory_file = io.BytesIO(serialized_bytes)
+        model = JUnpickler(in_memory_file).load()
+        in_memory_file.close()
+        return model
diff --git a/rulekit/main.py b/rulekit/main.py
index 4f8a46c..4016d85 100644
--- a/rulekit/main.py
+++ b/rulekit/main.py
@@ -73,7 +73,7 @@ def init(initial_heap_size: int = None, max_heap_size: int = None):
         RuleKit._detect_jre_type()
         current_path: str = os.path.dirname(os.path.realpath(__file__))
         RuleKit._jar_dir_path = f"{current_path}/jar"
-        class_path_separator = ':' if RuleKit._jre_type == JRE_Type.open_jdk else ';'
+        class_path_separator = os.pathsep
         try:
             jars_paths: List[str] = glob.glob(f"{RuleKit._jar_dir_path}/*.jar")
             RuleKit._class_path = f'{str.join(class_path_separator, jars_paths)}'
diff --git a/rulekit/operator.py b/rulekit/operator.py
index 48e2bad..0045bf8 100644
--- a/rulekit/operator.py
+++ b/rulekit/operator.py
@@ -1,4 +1,9 @@
-from .helpers import RuleGeneratorConfigurator, PredictionResultMapper, create_example_set, get_rule_generator, create_sorted_example_set
+from .helpers import RuleGeneratorConfigurator, \
+    PredictionResultMapper, \
+    create_example_set, \
+    get_rule_generator, \
+    create_sorted_example_set, \
+    ModelSerializer
 from .params import Measures
 from .rules import RuleSet, Rule
 import numpy as np
@@ -20,7 +25,6 @@ def __init__(self,
                  ignore_missing: bool = None):
         self._params = None
         self._rule_generator = None
-        self._configurator = None
         self.set_params(
             min_rule_covered=min_rule_covered,
             induction_measure=induction_measure,
@@ -31,22 +35,23 @@ def __init__(self,
             ignore_missing=ignore_missing
         )
         self.model: RuleSet = None
-        self._real_model = None
 
     def _map_result(self, predicted_example_set) -> np.ndarray:
         return PredictionResultMapper.map(predicted_example_set)
 
     def fit(self, values: Data, labels: Data, survival_time_attribute: str = None) -> Any:
-        example_set = create_example_set(values, labels, survival_time_attribute=survival_time_attribute)
-        self._real_model = self._rule_generator.learn(example_set)
-        self.model = RuleSet(self._real_model)
+        example_set = create_example_set(
+            values, labels, survival_time_attribute=survival_time_attribute)
+        java_model = self._rule_generator.learn(example_set)
+        self.model = RuleSet(java_model)
         return self.model
 
     def predict(self, values: Data) -> np.ndarray:
-        if self._real_model is None:
-            raise ValueError('"fit" method must be called before calling this method')
+        if self.model is None:
+            raise ValueError(
+                '"fit" method must be called before calling this method')
         example_set = create_example_set(values)
-        return self._real_model.apply(example_set)
+        return self.model._java_object.apply(example_set)
 
     def get_params(self, deep=True) -> dict:
         """
@@ -67,7 +72,6 @@ def set_params(self,
                    ignore_missing: bool = None) -> object:
         """Set models hyperparameters. Parameters are the same as in constructor."""
         self._rule_generator = get_rule_generator()
-        self._configurator = RuleGeneratorConfigurator(self._rule_generator)
         self._params = dict(
             min_rule_covered=min_rule_covered,
             induction_measure=induction_measure,
@@ -77,7 +81,8 @@ def set_params(self,
             enable_pruning=enable_pruning,
             ignore_missing=ignore_missing,
         )
-        self._rule_generator = self._configurator.configure(**self._params)
+        configurator = RuleGeneratorConfigurator(self._rule_generator)
+        self._rule_generator = configurator.configure(**self._params)
         return self
 
     def get_coverage_matrix(self, values: Data) -> np.ndarray:
@@ -86,18 +91,19 @@ def get_coverage_matrix(self, values: Data) -> np.ndarray:
         Parameters
         ----------
         values : :class:`rulekit.operator.Data`
-            dataset 
+            dataset
 
         Returns
         -------
         coverage_matrix : np.ndarray
              Each row of the matrix represent single example from dataset and every column represent
             on rule from rule set. Value 1 in the matrix cell means that rule covered certain example, value 0
-            means that it doesn't. 
+            means that it doesn't.
         """
-        if self._real_model is None:
-            raise ValueError('"fit" method must be called before calling this method')
-        covering_info = self.model.covering(create_sorted_example_set(values))
+        if self.model is None:
+            raise ValueError(
+                '"fit" method must be called before calling this method')
+        covering_info = self.model.covering(create_example_set(values))
         if isinstance(values, pd.Series) or isinstance(values, pd.DataFrame):
             values = values.to_numpy()
         result = []
@@ -111,6 +117,19 @@ def get_coverage_matrix(self, values: Data) -> np.ndarray:
             i += 1
         return np.array(result)
 
+    def __getstate__(self) -> dict:
+        state = self.__dict__
+        state.pop('_rule_generator')
+        return {
+            '_params': self._params,
+            'model': ModelSerializer.serialize(self.model)
+        }
+
+    def __setstate__(self, state: dict):
+        self.model = ModelSerializer.deserialize(state['model'])
+        self._rule_generator = get_rule_generator()
+        self.set_params(**state['_params'])
+
 
 class ExpertKnowledgeOperator:
 
@@ -151,7 +170,6 @@ def __init__(self,
             preferred_attributes_per_rule=preferred_attributes_per_rule
         )
         self.model: RuleSet = None
-        self._real_model = None
 
     def fit(self,
             values: Data,
@@ -162,20 +180,25 @@ def fit(self,
             expert_preferred_conditions: List[Union[str, Rule]] = None,
             expert_forbidden_conditions: List[Union[str, Rule]] = None) -> Any:
         self._configurator.configure_simple_parameter('use_expert', True)
-        self._configurator.configure_expert_parameter('expert_preferred_conditions', expert_preferred_conditions)
-        self._configurator.configure_expert_parameter('expert_forbidden_conditions', expert_forbidden_conditions)
-        self._configurator.configure_expert_parameter('expert_rules', expert_rules)
-        example_set = create_example_set(values, labels, survival_time_attribute=survival_time_attribute)
-
-        self._real_model = self._rule_generator.learn(example_set)
-        self.model = RuleSet(self._real_model)
+        self._configurator.configure_expert_parameter(
+            'expert_preferred_conditions', expert_preferred_conditions)
+        self._configurator.configure_expert_parameter(
+            'expert_forbidden_conditions', expert_forbidden_conditions)
+        self._configurator.configure_expert_parameter(
+            'expert_rules', expert_rules)
+        example_set = create_example_set(
+            values, labels, survival_time_attribute=survival_time_attribute)
+
+        java_model = self._rule_generator.learn(example_set)
+        self.model = RuleSet(java_model)
         return self.model
 
     def predict(self, values: Data) -> np.ndarray:
-        if self._real_model is None:
-            raise ValueError('"fit" method must be called before calling this method')
+        if self.model is None:
+            raise ValueError(
+                '"fit" method must be called before calling this method')
         example_set = create_example_set(values)
-        return self._real_model.apply(example_set)
+        return self.model._java_object.apply(example_set)
 
     def set_params(self,
                    min_rule_covered: int = None,
diff --git a/rulekit/regression.py b/rulekit/regression.py
index 30c6b0b..365fbbf 100644
--- a/rulekit/regression.py
+++ b/rulekit/regression.py
@@ -2,7 +2,8 @@
 from numbers import Number
 import numpy as np
 import pandas as pd
-
+from sklearn import metrics
+from .helpers import PredictionResultMapper
 from .operator import BaseOperator, ExpertKnowledgeOperator, Data
 from .params import Measures
 
@@ -57,7 +58,7 @@ def fit(self, values: Data, labels: Data) -> Any:
         values : :class:`rulekit.operator.Data`
             attributes
         labels : :class:`rulekit.operator.Data`
-            labels
+            target values
         Returns
         -------
         self : RuleRegressor
@@ -86,8 +87,29 @@ def predict(self, values: Data) -> np.ndarray:
         """
         return self._map_result(super().predict(values))
 
+    def score(self, values: Data, labels: Data) -> float:
+        """Return the coefficient of determination R2 of the prediction
+
+        Parameters
+        ----------
+        values : :class:`rulekit.operator.Data`
+            attributes
+        labels : :class:`rulekit.operator.Data`
+            true target values
+
+        Returns
+        -------
+        score : float
+            R2 of self.predict(values) wrt. labels.
+        """
+        predicted_labels = self.predict(values)
+        return metrics.r2_score(labels, predicted_labels)
+
+    def _map_result(self, predicted_example_set) -> np.ndarray:
+        return PredictionResultMapper.map_to_numerical(predicted_example_set, remap=False)
+
 
-class ExpertRuleRegressor(RuleRegressor, ExpertKnowledgeOperator):
+class ExpertRuleRegressor(ExpertKnowledgeOperator, RuleRegressor):
 
     def __init__(self,
                  min_rule_covered: int = None,
@@ -171,7 +193,7 @@ def fit(self,
         values : :class:`rulekit.operator.Data`
             attributes
         labels : :class:`rulekit.operator.Data`
-            labels
+            target values
         
         expert_rules : List[Union[str, Tuple[str, str]]]
              set of initial rules, either passed as a list of strings representing rules or as list of tuples where first
diff --git a/rulekit/rules.py b/rulekit/rules.py
index 0c06db1..fa4ecf8 100644
--- a/rulekit/rules.py
+++ b/rulekit/rules.py
@@ -152,14 +152,11 @@ def covering(self, example_set) -> np.ndarray:
         """:meta private:"""
         res = []
         for rule in self.rules:
-            covering_info = rule._java_object.covers(example_set)
+            covering_info = rule._java_object.coversUnlabelled(example_set)
             covered_examples_indexes = []
-            if len(covering_info.positives) > 0:
-                covered_examples_indexes += covering_info.positives
-            elif len(covering_info.negatives) > 0:
-                covered_examples_indexes += covering_info.negatives
+            covered_examples_indexes += covering_info
             res.append(covered_examples_indexes)
-        return np.array(res)
+        return np.array(res, dtype=object)
 
     @property
     def rules(self) -> List[Rule]:
diff --git a/rulekit/survival.py b/rulekit/survival.py
index ffc0259..73a15c8 100644
--- a/rulekit/survival.py
+++ b/rulekit/survival.py
@@ -2,9 +2,10 @@
 import numpy as np
 import pandas as pd
 
-from .helpers import PredictionResultMapper, RuleGeneratorConfigurator, get_rule_generator
+from .helpers import PredictionResultMapper, RuleGeneratorConfigurator, get_rule_generator, create_example_set
 from .operator import BaseOperator, ExpertKnowledgeOperator, Data
 from .rules import RuleSet
+from jpype import JClass
 
 
 class SurvivalRules(BaseOperator):
@@ -43,7 +44,6 @@ def __init__(self,
             enable_pruning=enable_pruning,
             ignore_missing=ignore_missing)
         self.model: RuleSet = None
-        self._real_model = None
 
     def set_params(self,
                    survival_time_attr: str = None,
@@ -92,7 +92,7 @@ def fit(self, values: Data, labels: Data, survival_time: Data = None) -> Any:
         values : :class:`rulekit.operator.Data`
             attributes
         labels : :class:`rulekit.operator.Data`
-            labels
+            survival status
         survival_time: :class:`rulekit.operator.Data`
             data about survival time. Could be omitted when *survival_time_attr* parameter was specified.
         
@@ -124,8 +124,45 @@ def predict(self, values: Data) -> np.ndarray:
         """
         return PredictionResultMapper.map_survival(super().predict(values))
 
+    def score(self, values: Data, labels: Data, survival_time: Data = None) -> float:
+        """Return the Integrated Brier Score on the given dataset and labels(event status indicator).
 
-class ExpertSurvivalRules(SurvivalRules, ExpertKnowledgeOperator):
+        Integrated Brier Score (IBS) - the Brier score (BS) represents the squared difference between true event status at time T and predicted event status at that time; 
+        the Integrated Brier score summarizes the prediction error over all observations and over all times in a test set.
+
+        Parameters
+        ----------
+        values : :class:`rulekit.operator.Data`
+            attributes
+        labels : :class:`rulekit.operator.Data`
+            survival status
+        survival_time: :class:`rulekit.operator.Data`
+            data about survival time. Could be omitted when *survival_time_attr* parameter was specified
+
+        Returns
+        -------
+        score : float
+            Integrated Brier Score of self.predict(values) wrt. labels.
+        """
+
+        if self.survival_time_attr is None and survival_time is None:
+            raise ValueError('No "survival_time" attribute name was specified. Specify it using method set_params')
+        if survival_time is not None:
+            survival_time_attribute = SurvivalRules._append_survival_time_columns(values, survival_time)
+        else:
+            survival_time_attribute = self.survival_time_attr
+
+        example_set = create_example_set(values, labels,  survival_time_attribute = survival_time_attribute)
+
+        predicted_example_set = self.model._java_object.apply(example_set)
+
+        IntegratedBrierScore = JClass('adaa.analytics.rules.logic.quality.IntegratedBrierScore')
+        integratedBrierScore = IntegratedBrierScore()
+        integratedBrierScore.startCounting(predicted_example_set, True)
+        return integratedBrierScore.getMikroAverage()
+
+
+class ExpertSurvivalRules(ExpertKnowledgeOperator, SurvivalRules):
 
     def __init__(self,
                  survival_time_attr: str = None,
@@ -187,7 +224,6 @@ def __init__(self,
             preferred_attributes_per_rule=preferred_attributes_per_rule
         )
         self.model: RuleSet = None
-        self._real_model = None
 
 
     def set_params(self,
@@ -239,7 +275,7 @@ def fit(self,
         values : :class:`rulekit.operator.Data`
             attributes
         labels : Data
-            labels
+            survival status
         survival_time: :class:`rulekit.operator.Data`
             data about survival time. Could be omitted when *survival_time_attr* parameter was specified.
         
diff --git a/setup.py b/setup.py
index 8df5750..8154196 100644
--- a/setup.py
+++ b/setup.py
@@ -1,39 +1,39 @@
-import setuptools
-import os
-import io
-
-current_path = os.path.dirname(os.path.realpath(__file__))
-
-with io.open(f"{current_path}/README.md", mode="r", encoding="utf-8") as fh:
-    long_description = fh.read()
-
-with open(f"{current_path}/requirements.txt", mode="r", encoding="utf-8") as f:
-    required = f.read().splitlines()
-
-setuptools.setup(
-    name="rulekit",
-    version='1.3.3',
-    author="Cezary Maszczyk",
-    author_email="cezary.maszczyk@gmail.com",
-    description="Comprehensive suite for rule-based learning",
-    long_description=long_description,
-    long_description_content_type="text/markdown",
-    url="https://github.com/adaa-polsl/RuleKit",
-    packages=setuptools.find_packages(),
-    classifiers=[
-        "Development Status :: 4 - Beta",
-        "License :: OSI Approved :: GNU Affero General Public License v3",
-        "Programming Language :: Python :: 3",
-        "Programming Language :: Java",
-        "Operating System :: Microsoft :: Windows",
-        "Operating System :: Unix",
-        "Topic :: Scientific/Engineering",
-        "Topic :: Scientific/Engineering :: Artificial Intelligence",
-        "Intended Audience :: Developers",
-        "Intended Audience :: Science/Research",
-    ],
-    include_package_data = True,
-    python_requires='>=3.6',
-    install_requires=required,
-    test_suite="tests",
-)
+import setuptools
+import os
+import io
+
+current_path = os.path.dirname(os.path.realpath(__file__))
+
+with io.open(f"{current_path}/README.md", mode="r", encoding="utf-8") as fh:
+    long_description = fh.read()
+
+with open(f"{current_path}/requirements.txt", mode="r", encoding="utf-8") as f:
+    required = f.read().splitlines()
+
+setuptools.setup(
+    name="rulekit",
+    version='1.5.2',
+    author="Cezary Maszczyk",
+    author_email="cezary.maszczyk@gmail.com",
+    description="Comprehensive suite for rule-based learning",
+    long_description=long_description,
+    long_description_content_type="text/markdown",
+    url="https://github.com/adaa-polsl/RuleKit",
+    packages=setuptools.find_packages(),
+    classifiers=[
+        "Development Status :: 4 - Beta",
+        "License :: OSI Approved :: GNU Affero General Public License v3",
+        "Programming Language :: Python :: 3",
+        "Programming Language :: Java",
+        "Operating System :: Microsoft :: Windows",
+        "Operating System :: Unix",
+        "Topic :: Scientific/Engineering",
+        "Topic :: Scientific/Engineering :: Artificial Intelligence",
+        "Intended Audience :: Developers",
+        "Intended Audience :: Science/Research",
+    ],
+    include_package_data = True,
+    python_requires='>=3.6',
+    install_requires=required,
+    test_suite="tests",
+)


Test patch:
diff --git a/tests/resources.py b/tests/resources.py
new file mode 100644
index 0000000..bc82797
--- /dev/null
+++ b/tests/resources.py
@@ -0,0 +1,71 @@
+import requests
+import os
+import sys
+from typing import List
+
+dir_path = os.path.dirname(os.path.realpath(__file__))
+
+CONFIG_URL = 'https://api.github.com/repos/adaa-polsl/RuleKit/contents/adaa.analytics.rules/test/resources/config'
+DATA_URL = 'https://api.github.com/repos/adaa-polsl/RuleKit/contents/adaa.analytics.rules/test/resources/data'
+REPORTS_URL = 'https://api.github.com/repos/adaa-polsl/RuleKit/contents/adaa.analytics.rules/test/resources/reports'
+
+RESOURCES_DIRECTORY_PATH = f'{dir_path}/resources'
+CONFIG_DIRECTORY_PATH = RESOURCES_DIRECTORY_PATH + '/config'
+DATA_DIRECTORY_PATH = RESOURCES_DIRECTORY_PATH + '/data'
+REPORTS_DIRECTORY_PATH = RESOURCES_DIRECTORY_PATH + '/reports'
+
+
+def create_folders():
+    # create resources dir 
+    if not os.path.exists(RESOURCES_DIRECTORY_PATH):
+        os.mkdir(RESOURCES_DIRECTORY_PATH)
+    # create CONFIG dir
+    if not os.path.exists(CONFIG_DIRECTORY_PATH):
+        os.mkdir(CONFIG_DIRECTORY_PATH)
+    # create DATA dir
+    if not os.path.exists(DATA_DIRECTORY_PATH):
+        os.mkdir(DATA_DIRECTORY_PATH)   
+    # create REPORTS dir
+    if not os.path.exists(REPORTS_DIRECTORY_PATH):
+        os.mkdir(REPORTS_DIRECTORY_PATH)
+        
+
+def download_files(content: List, directory_path: str):
+    for item in content:
+        file_name = item['name']
+        download_url = item['download_url']
+        download_response = requests.get(download_url)
+        with open(directory_path +'/'+ file_name, 'wb') as file:
+            file.write(download_response.content)
+
+
+def download_resources():
+    #create dirs
+    create_folders()
+
+    # download config
+    config_content = requests.get(CONFIG_URL).json()
+    download_files(config_content, CONFIG_DIRECTORY_PATH)
+
+    # download data
+    data_content = requests.get(DATA_URL).json()
+    download_files(data_content, DATA_DIRECTORY_PATH)
+
+    # download reports
+    reports_content = requests.get(REPORTS_URL).json()
+    for item_folder in reports_content:
+        folder_name = item_folder['name']
+        folder_url = item_folder['url']
+        folder_directory = REPORTS_DIRECTORY_PATH + '/' + folder_name
+        if not os.path.exists(folder_directory) :
+            os.mkdir(folder_directory)
+        folder_content = requests.get(folder_url).json()
+        download_files(folder_content, folder_directory)
+
+
+if __name__ == '__main__':
+    if len(sys.argv) > 1 and sys.argv[1] == 'download':
+        download_resources()
+        print('Resources downloaded successfuly')
+    else:
+        print('Please add paremeter: python resources.py download')  
\ No newline at end of file
diff --git a/tests/test_classifier.py b/tests/test_classifier.py
index 297a08b..debcaab 100644
--- a/tests/test_classifier.py
+++ b/tests/test_classifier.py
@@ -5,11 +5,12 @@
 import sklearn.tree as scikit
 from sklearn.datasets import load_iris
 from sklearn import metrics
+import numpy as np
 
 from tests.utils import get_test_cases, assert_rules_are_equals, assert_accuracy_is_greater
 
 
-class TestDecisionTreeClassifier(unittest.TestCase):
+class TestClassifier(unittest.TestCase):
 
     @classmethod
     def setUpClass(cls):
@@ -27,8 +28,10 @@ def test_classification_accuracy_on_iris(self):
         scikit_accuracy = metrics.accuracy_score(y, scikit_prediction)
         rulekit_accuracy = metrics.accuracy_score(y, rulekit_prediction)
 
-        assert abs(scikit_accuracy - rulekit_accuracy) < 0.03, 'RuleKit model should perform similar to scikit model'
+        assert abs(scikit_accuracy -
+                   rulekit_accuracy) < 0.03, 'RuleKit model should perform similar to scikit model'
 
+    @unittest.skip("Won't work with current RuleKit github relase 1.1.0")
     def test_getting_examples_coverage(self):
         clf = classification.RuleClassifier()
         x, y = load_iris(return_X_y=True)
@@ -38,8 +41,10 @@ def test_getting_examples_coverage(self):
         coverage_matrix = clf.get_coverage_matrix(x)
         num_rows, num_cols = coverage_matrix.shape
 
-        self.assertEqual(num_rows, len(x), 'Coverage matrix should have as many rows as examples in dataset')
-        self.assertEqual(num_cols, len(clf.model.rules), 'Coverage matrix should have as many cols as rules in ruleset')
+        self.assertEqual(num_rows, len(
+            x), 'Coverage matrix should have as many rows as examples in dataset')
+        self.assertEqual(num_cols, len(
+            clf.model.rules), 'Coverage matrix should have as many cols as rules in ruleset')
 
     def test_classification_metrics(self):
         clf = classification.RuleClassifier()
@@ -47,10 +52,14 @@ def test_classification_metrics(self):
 
         clf.fit(x, y)
         rulekit_prediction, m = clf.predict(x, return_metrics=True)
-        self.assertIsNotNone(m['rules_per_example'], 'rules_per_example should be calculated')
-        self.assertIsNotNone(m['voting_conflicts'], 'rules_per_example should be calculated')
-        self.assertIsNotNone(m['negative_voting_conflicts'], 'rules_per_example should be calculated')
-
+        self.assertIsNotNone(m['rules_per_example'],
+                             'rules_per_example should be calculated')
+        self.assertIsNotNone(m['voting_conflicts'],
+                             'rules_per_example should be calculated')
+        self.assertIsNotNone(m['negative_voting_conflicts'],
+                             'rules_per_example should be calculated')
+
+    @unittest.skip("Won't work with current RuleKit github relase 1.1.0")
     def test_classification_predict_proba(self):
         clf = classification.RuleClassifier()
         x, y = load_iris(return_X_y=True)
@@ -61,8 +70,39 @@ def test_classification_predict_proba(self):
             sum = 0
             for col in row:
                 sum += col
-            self.assertAlmostEquals(sum, 1, 3, 'Confidence matrix rows should sum to 1')
+            self.assertAlmostEqual(
+                sum, 1, 3, 'Confidence matrix rows should sum to 1')
+
+    def test_prediction_results_mapping(self):
+        """
+        This method tests classifications on numeric labels which possible values does 
+        not start from 0. RuleKit undehood maps all labels values to integer values starting 
+        from 0 to N (counting by order of appearance in dataset). Those maped values must be 
+        later remaped back to actual label value. This test verifies that predict method returns
+        correct (remaped) label value. 
+        """
+        clf = classification.RuleClassifier()
+
+        # some trivial dataset - OR (2 = false, 3 = true)
+        x = np.array([[0, 1], [1, 1], [1, 0], [0, 0]])
+        y = np.array([3., 3., 3., 2.])
+        clf.fit(x, y)
+        prediction = clf.predict(x)
+
+        self.assertEqual(y.all(), prediction.all())
+
+    def test_prediction_on_nominal_values(self):
+        clf = classification.RuleClassifier()
+
+        # some trivial dataset - OR (2 = false, 3 = true)
+        x = np.array([[0, 1], [1, 1], [1, 0], [0, 0]])
+        y = np.array(['false', 'false', 'false', 'true']).astype(np.unicode_)
+        clf.fit(x, y)
+        prediction = clf.predict(x).astype(np.unicode_)
+
+        self.assertTrue(np.array_equal(y, prediction))
 
+    @unittest.skip("Won't work with current RuleKit github relase 1.1.0")
     def test_compare_with_java_results(self):
         test_cases = get_test_cases('ClassificationSnCTest')
 
@@ -75,15 +115,17 @@ def test_compare_with_java_results(self):
             expected = test_case.reference_report.rules
             actual = list(map(lambda e: str(e), model.rules))
             assert_rules_are_equals(expected, actual)
-            assert_accuracy_is_greater(tree.predict(example_set.values), example_set.labels, 0.9)
+            assert_accuracy_is_greater(tree.predict(
+                example_set.values), example_set.labels, 0.9)
 
 
-class TestExpertDecisionTreeClassifier(unittest.TestCase):
+class TestExperClassifier(unittest.TestCase):
 
     @classmethod
     def setUpClass(cls):
         RuleKit.init()
 
+    @unittest.skip("Won't work with current RuleKit github relase 1.1.0")
     def test_compare_with_java_results(self):
         test_cases = get_test_cases('ClassificationExpertSnCTest')
 
@@ -100,7 +142,8 @@ def test_compare_with_java_results(self):
             expected = test_case.reference_report.rules
             actual = list(map(lambda e: str(e), model.rules))
             assert_rules_are_equals(expected, actual)
-            assert_accuracy_is_greater(tree.predict(example_set.values), example_set.labels, 0.9)
+            assert_accuracy_is_greater(tree.predict(
+                example_set.values), example_set.labels, 0.9)
 
 
 if __name__ == '__main__':
diff --git a/tests/test_regression.py b/tests/test_regression.py
index a8effd3..07c9c35 100644
--- a/tests/test_regression.py
+++ b/tests/test_regression.py
@@ -6,12 +6,13 @@
 from tests.utils import get_test_cases, assert_rules_are_equals, assert_score_is_greater
 
 
-class TestDecisionTreeRegressor(unittest.TestCase):
+class TestRegressor(unittest.TestCase):
 
     @classmethod
     def setUpClass(cls):
         RuleKit.init()
 
+    @unittest.skip("Won't work with current RuleKit github relase 1.1.0")
     def test_compare_with_java_results(self):
         test_cases = get_test_cases('RegressionSnCTest')
 
@@ -27,12 +28,13 @@ def test_compare_with_java_results(self):
             assert_score_is_greater(tree.predict(example_set.values), example_set.labels, 0.7)
 
 
-class TestExpertDecisionTreeRegressor(unittest.TestCase):
+class TestExpertRegressor(unittest.TestCase):
 
     @classmethod
     def setUpClass(cls):
         RuleKit.init()
 
+    @unittest.skip("Won't work with current RuleKit github relase 1.1.0")
     def test_compare_with_java_results(self):
         test_cases = get_test_cases('RegressionExpertSnCTest')
 
diff --git a/tests/test_serialization.py b/tests/test_serialization.py
new file mode 100644
index 0000000..efb6897
--- /dev/null
+++ b/tests/test_serialization.py
@@ -0,0 +1,129 @@
+import unittest
+
+import sys
+import os
+import shutil
+dir_path = os.path.dirname(os.path.realpath(__file__))
+sys.path.append(f'{dir_path}/..')
+
+from rulekit.main import RuleKit
+from rulekit import classification
+import sklearn.tree as scikit
+from sklearn.datasets import load_iris, load_diabetes
+from sklearn import metrics
+import io
+import time
+import pickle
+from rulekit.classification import RuleClassifier, ExpertRuleClassifier
+from rulekit.regression import RuleRegressor, ExpertRuleRegressor
+from rulekit.survival import SurvivalRules, ExpertSurvivalRules
+
+
+class TestModelSerialization(unittest.TestCase):
+
+    TMP_DIR_PATH = f'{dir_path}/tmp'
+    PICKLE_FILE_PATH = f'{TMP_DIR_PATH}/model.pickle'
+
+    @classmethod
+    def setUpClass(cls):
+        if not os.path.exists(TestModelSerialization.TMP_DIR_PATH):
+            os.mkdir(TestModelSerialization.TMP_DIR_PATH)
+        RuleKit.init()
+
+    @classmethod
+    def tearDownClass(cls):
+        shutil.rmtree(TestModelSerialization.TMP_DIR_PATH)
+
+    def serialize_model(self, model):
+        with open(TestModelSerialization.PICKLE_FILE_PATH, 'wb') as handle:
+            pickle.dump(model, handle, protocol=pickle.HIGHEST_PROTOCOL)
+
+    def deserialize_model(self) -> object:
+        with open(TestModelSerialization.PICKLE_FILE_PATH, 'rb') as handle:
+            return pickle.load(handle)
+
+    def test_classifier_serialization(self):
+        x, y = load_iris(return_X_y=True)
+
+        model = RuleClassifier(min_rule_covered=1)
+        model.fit(x, y)
+        prediction = model.predict(x)
+
+        self.serialize_model(model)
+        deserialized_model = self.deserialize_model()
+        deserialized_model_prediction = deserialized_model.predict(x)
+
+        self.assertEqual(prediction.all(), deserialized_model_prediction.all(),
+                         'Deserialized model should predict same as original one')
+
+    def test_expert_classifier_serialization(self):
+        x, y = load_iris(return_X_y=True)
+
+        model = ExpertRuleClassifier(min_rule_covered=1)
+        model.fit(x, y)
+        prediction = model.predict(x)
+
+        self.serialize_model(model)
+        deserialized_model = self.deserialize_model()
+        deserialized_model_prediction = deserialized_model.predict(x)
+
+        self.assertEqual(prediction.all(), deserialized_model_prediction.all(),
+                         'Deserialized model should predict same as original one')
+
+    def test_regressor_serialization(self):
+        x, y = load_diabetes(return_X_y=True)
+
+        model = RuleRegressor(min_rule_covered=10)
+        model.fit(x, y)
+        prediction = model.predict(x)
+
+        self.serialize_model(model)
+        deserialized_model = self.deserialize_model()
+        deserialized_model_prediction = deserialized_model.predict(x)
+
+        self.assertEqual(prediction.all(), deserialized_model_prediction.all(),
+                         'Deserialized model should predict same as original one')
+
+
+    def test_expert_regressor_serialization(self):
+        x, y = load_diabetes(return_X_y=True)
+
+        model = ExpertRuleRegressor(min_rule_covered=10)
+        model.fit(x, y)
+        prediction = model.predict(x)
+
+        self.serialize_model(model)
+        deserialized_model = self.deserialize_model()
+        deserialized_model_prediction = deserialized_model.predict(x)
+
+        self.assertEqual(prediction.all(), deserialized_model_prediction.all(),
+                         'Deserialized model should predict same as original one')
+
+    def test_survival_serialization(self):
+        x, y = load_iris(return_X_y=True)
+
+        model = SurvivalRules(min_rule_covered=10, survival_time_attr='')
+        model.fit(x, y)
+        prediction = model.predict(x)
+
+        self.serialize_model(model)
+        deserialized_model = self.deserialize_model()
+        deserialized_model_prediction = deserialized_model.predict(x)
+
+        self.assertEqual(prediction.all(), deserialized_model_prediction.all(),
+                         'Deserialized model should predict same as original one')
+
+    def test_expert_survival_serialization(self):
+        x, y = load_iris(return_X_y=True)
+
+        model = ExpertSurvivalRules(min_rule_covered=10, survival_time_attr='')
+        model.fit(x, y)
+        prediction = model.predict(x)
+
+        self.serialize_model(model)
+        deserialized_model = self.deserialize_model()
+        deserialized_model_prediction = deserialized_model.predict(x)
+
+        self.assertEqual(prediction.all(), deserialized_model_prediction.all(),
+                         'Deserialized model should predict same as original one')
+
diff --git a/tests/test_sklearn_metrics.py b/tests/test_sklearn_metrics.py
index 9f96a4b..242e59d 100644
--- a/tests/test_sklearn_metrics.py
+++ b/tests/test_sklearn_metrics.py
@@ -7,7 +7,7 @@
 from sklearn import metrics
 
 
-class TestDecisionTreeClassifier(unittest.TestCase):
+class TestMetrics(unittest.TestCase):
 
     @classmethod
     def setUpClass(cls):
diff --git a/tests/test_survival.py b/tests/test_survival.py
index f64f13d..d93ca4d 100644
--- a/tests/test_survival.py
+++ b/tests/test_survival.py
@@ -12,6 +12,7 @@ class TestSurvivalLogRankTree(unittest.TestCase):
     def setUpClass(cls):
         RuleKit.init()
 
+    @unittest.skip("Won't work with current RuleKit github relase 1.1.0")
     def test_compare_with_java_results(self):
         test_cases = get_test_cases('SurvivalLogRankSnCTest')
 
@@ -32,6 +33,7 @@ class TestExpertSurvivalLogRankTree(unittest.TestCase):
     def setUpClass(cls):
         RuleKit.init()
 
+    @unittest.skip("Won't work with current RuleKit github relase 1.1.0")
     def test_compare_with_java_results(self):
         test_cases = get_test_cases('SurvivalLogRankExpertSnCTest')
 
diff --git a/tests/utils.py b/tests/utils.py
index 892ac0e..9afd45e 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -14,17 +14,17 @@
 
 dir_path = os.path.dirname(os.path.realpath(__file__))
 
-TEST_CONFIG_PATH = f'{dir_path}/../../adaa.analytics.rules/test/resources/config'
-REPORTS_IN_DIRECTORY_PATH = f'{dir_path}/../../adaa.analytics.rules/test/resources/reports'
-DATA_IN_DIRECTORY_PATH = f'{dir_path}/../../adaa.analytics.rules/test/resources/'
-REPORTS_OUT_DIRECTORY_PATH = f'{dir_path}/../../test_out'
+TEST_CONFIG_PATH = f'{dir_path}/resources/config'
+REPORTS_IN_DIRECTORY_PATH = f'{dir_path}/resources/reports'
+DATA_IN_DIRECTORY_PATH = f'{dir_path}/resources/'
+REPORTS_OUT_DIRECTORY_PATH = f'{dir_path}/test_out'
 
 REPORTS_SECTIONS_HEADERS = {
     'RULES': 'RULES'
 }
 
-DATASETS_PATH = '../data'
-EXPERIMENTS_PATH = '../adaa.analytics.rules/test/resources/config'
+DATASETS_PATH = '/resources/data'
+EXPERIMENTS_PATH = '/resources/config'
 
 
 class ExampleSetWrapper:
@@ -345,6 +345,13 @@ def close(self):
 
 
 def get_test_cases(class_name: str) -> List[TestCase]:
+    if not os.path.exists(DATA_IN_DIRECTORY_PATH):
+        raise Exception('''\n
+Test resources directory dosen't exist. Check if 'tests/resources/' directory exist.
+
+If you're running tests for the first time you need to download resources folder from RuleKit repository by running:
+    python tests/resources.py download
+        ''')
     configs = TestConfigParser().parse(f'{TEST_CONFIG_PATH}/{class_name}.xml')
     return TestCaseFactory().make(configs, f'{REPORTS_IN_DIRECTORY_PATH}/{class_name}/')