{ "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": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
RecipientgenderStemcellsourceDonorageDonorage35IIIVGendermatchDonorABORecipientABORecipientRhABOmatch...extcGvHDCD34kgx10d6CD3dCD34CD3dkgx10d8RbodymassANCrecoveryPLTrecoverytime_to_aGvHD_III_IVsurvival_timesurvival_status
01122.8301370101110...17.201.3387605.3835.019.051.032.0999.00.0
11023.342466010-1-110...14.5011.0782950.4120.616.037.01000000.0163.01.0
21026.394521010-1-110...17.9419.0132300.4223.423.020.01000000.0435.01.0
30039.6849321101211...None4.2529.4816470.1450.023.029.019.053.01.0
40133.3589040001201...151.853.97225513.059.014.014.01000000.02043.00.0
..................................................................
1821137.5753421101100...111.082.5227504.3944.015.022.016.0385.01.0
1830122.8958900001011...14.641.0388584.4744.512.030.01000000.0634.01.0
1840127.3479450101-111...17.731.6355594.7333.016.016.01000000.01895.00.0
1851127.7808220101011...015.418.0777701.9124.013.014.054.0382.01.0
1861155.5534251101211...19.910.94813510.4537.018.020.01000000.01109.00.0
\n

187 rows × 37 columns

\n
" }, "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": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
DonorageRecipientageCD34kgx10d6CD3dCD34CD3dkgx10d8RbodymassANCrecoveryPLTrecoverytime_to_aGvHD_III_IVsurvival_timesurvival_status
count187.000000187.000000187.000000182.000000182.000000185.000000187.000000187.000000187.000000187.000000187.000000
mean33.4720689.93155111.8917815.3850964.74571435.80108126752.86631090937.919786775408.042781938.7433160.454545
std8.2718265.3056399.9143869.5987163.85912819.650922161747.200525288242.407688418425.252689849.5894950.499266
min18.6465750.6000000.7900000.2041320.0400006.0000009.0000009.00000010.0000006.0000000.000000
25%27.0397265.0500005.3500001.7866831.68750019.00000013.00000016.0000001000000.000000168.5000000.000000
50%33.5506859.6000009.7200002.7344624.32500033.00000015.00000021.0000001000000.000000676.0000000.000000
75%40.11780914.05000015.4150005.8235656.78500050.60000017.00000037.0000001000000.0000001604.0000001.000000
max55.55342520.20000057.78000099.56097020.020000103.4000001000000.0000001000000.0000001000000.0000003364.0000001.000000
\n
" }, "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": [ "" ] }, "metadata": {}, "execution_count": 3 }, { "output_type": "display_data", "data": { "text/plain": "
", "image/svg+xml": "\r\n\r\n\r\n \r\n \r\n \r\n \r\n 2021-04-22T08:04:41.255915\r\n image/svg+xml\r\n \r\n \r\n Matplotlib v3.4.1, https://matplotlib.org/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\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": [ "[]" ] }, "metadata": {}, "execution_count": 13 }, { "output_type": "display_data", "data": { "text/plain": "
", "image/svg+xml": "\r\n\r\n\r\n \r\n \r\n \r\n \r\n 2021-04-21T13:07:16.829628\r\n image/svg+xml\r\n \r\n \r\n Matplotlib v3.4.1, https://matplotlib.org/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\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": [ "[]" ] }, "metadata": {}, "execution_count": 80 }, { "output_type": "display_data", "data": { "text/plain": "
", "image/svg+xml": "\r\n\r\n\r\n \r\n \r\n \r\n \r\n 2021-04-22T09:20:30.747190\r\n image/svg+xml\r\n \r\n \r\n Matplotlib v3.4.1, https://matplotlib.org/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "plt.plot(predictions[0][\"times\"], predictions[0][\"probabilities\"])" ] } ] }