{ "cells": [ { "cell_type": "code", "execution_count": 403, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cardio\n", "0 35021\n", "1 34979\n", "Name: count, dtype: int64\n", "\n", "Index: 70000 entries, 0 to 99999\n", "Data columns (total 12 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 age 70000 non-null float64\n", " 1 gender 70000 non-null int64 \n", " 2 height 70000 non-null int64 \n", " 3 weight 70000 non-null float64\n", " 4 ap_hi 70000 non-null int64 \n", " 5 ap_lo 70000 non-null int64 \n", " 6 cholesterol 70000 non-null int64 \n", " 7 gluc 70000 non-null int64 \n", " 8 smoke 70000 non-null int64 \n", " 9 alco 70000 non-null int64 \n", " 10 active 70000 non-null int64 \n", " 11 cardio 70000 non-null int64 \n", "dtypes: float64(2), int64(10)\n", "memory usage: 6.9 MB\n" ] }, { "data": { "text/plain": [ "None" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "cardio\n", "0 35021\n", "1 34979\n", "Name: count, dtype: int64" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
agegenderheightweightap_hiap_locholesterolglucsmokealcoactivecardio
id
050.358668216862.011080110010
155.382762115685.014090310011
251.629066116564.013070310001
348.250465216982.0150100110011
447.842515115656.010060110000
.......................................
9999352.677691216876.012080111010
9999561.8798601158126.014090220011
9999652.2012922183105.018090310101
9999861.414412116372.013580120001
9999956.236995117072.012080210010
\n", "

70000 rows × 12 columns

\n", "
" ], "text/plain": [ " age gender height weight ap_hi ap_lo cholesterol gluc \\\n", "id \n", "0 50.358668 2 168 62.0 110 80 1 1 \n", "1 55.382762 1 156 85.0 140 90 3 1 \n", "2 51.629066 1 165 64.0 130 70 3 1 \n", "3 48.250465 2 169 82.0 150 100 1 1 \n", "4 47.842515 1 156 56.0 100 60 1 1 \n", "... ... ... ... ... ... ... ... ... \n", "99993 52.677691 2 168 76.0 120 80 1 1 \n", "99995 61.879860 1 158 126.0 140 90 2 2 \n", "99996 52.201292 2 183 105.0 180 90 3 1 \n", "99998 61.414412 1 163 72.0 135 80 1 2 \n", "99999 56.236995 1 170 72.0 120 80 2 1 \n", "\n", " smoke alco active cardio \n", "id \n", "0 0 0 1 0 \n", "1 0 0 1 1 \n", "2 0 0 0 1 \n", "3 0 0 1 1 \n", "4 0 0 0 0 \n", "... ... ... ... ... \n", "99993 1 0 1 0 \n", "99995 0 0 1 1 \n", "99996 0 1 0 1 \n", "99998 0 0 0 1 \n", "99999 0 0 1 0 \n", "\n", "[70000 rows x 12 columns]" ] }, "execution_count": 403, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "df = pd.read_csv(\"data-cardio/cardio_train.csv\", sep=\";\", index_col=\"id\")\n", "df[\"age\"] = df[\"age\"] / 365.24\n", "print(df.cardio.value_counts())\n", "display(df.info(), df.cardio.value_counts())\n", "\n", "df" ] }, { "cell_type": "code", "execution_count": 404, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanstdmin25%50%75%max
age70000.053.3043096.75515229.56412248.3627253.94535158.39174264.924433
gender70000.01.3495710.4768381.0000001.000001.0000002.0000002.000000
height70000.0164.3592298.21012655.000000159.00000165.000000170.000000250.000000
weight70000.074.20569014.39575710.00000065.0000072.00000082.000000200.000000
ap_hi70000.0128.817286154.011419-150.000000120.00000120.000000140.00000016020.000000
ap_lo70000.096.630414188.472530-70.00000080.0000080.00000090.00000011000.000000
cholesterol70000.01.3668710.6802501.0000001.000001.0000002.0000003.000000
gluc70000.01.2264570.5722701.0000001.000001.0000001.0000003.000000
smoke70000.00.0881290.2834840.0000000.000000.0000000.0000001.000000
alco70000.00.0537710.2255680.0000000.000000.0000000.0000001.000000
active70000.00.8037290.3971790.0000001.000001.0000001.0000001.000000
cardio70000.00.4997000.5000030.0000000.000000.0000001.0000001.000000
\n", "
" ], "text/plain": [ " count mean std min 25% \\\n", "age 70000.0 53.304309 6.755152 29.564122 48.36272 \n", "gender 70000.0 1.349571 0.476838 1.000000 1.00000 \n", "height 70000.0 164.359229 8.210126 55.000000 159.00000 \n", "weight 70000.0 74.205690 14.395757 10.000000 65.00000 \n", "ap_hi 70000.0 128.817286 154.011419 -150.000000 120.00000 \n", "ap_lo 70000.0 96.630414 188.472530 -70.000000 80.00000 \n", "cholesterol 70000.0 1.366871 0.680250 1.000000 1.00000 \n", "gluc 70000.0 1.226457 0.572270 1.000000 1.00000 \n", "smoke 70000.0 0.088129 0.283484 0.000000 0.00000 \n", "alco 70000.0 0.053771 0.225568 0.000000 0.00000 \n", "active 70000.0 0.803729 0.397179 0.000000 1.00000 \n", "cardio 70000.0 0.499700 0.500003 0.000000 0.00000 \n", "\n", " 50% 75% max \n", "age 53.945351 58.391742 64.924433 \n", "gender 1.000000 2.000000 2.000000 \n", "height 165.000000 170.000000 250.000000 \n", "weight 72.000000 82.000000 200.000000 \n", "ap_hi 120.000000 140.000000 16020.000000 \n", "ap_lo 80.000000 90.000000 11000.000000 \n", "cholesterol 1.000000 2.000000 3.000000 \n", "gluc 1.000000 1.000000 3.000000 \n", "smoke 0.000000 0.000000 1.000000 \n", "alco 0.000000 0.000000 1.000000 \n", "active 1.000000 1.000000 1.000000 \n", "cardio 0.000000 1.000000 1.000000 " ] }, "execution_count": 404, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.describe().transpose()" ] }, { "cell_type": "code", "execution_count": 405, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanstdmin25%50%75%max
age68985.053.2904216.75763329.56412248.34081753.93987558.38079164.924433
gender68985.01.3486700.4765531.0000001.0000001.0000002.0000002.000000
height68985.0164.3596728.20427355.000000159.000000165.000000170.000000250.000000
weight68985.074.11896114.32893811.00000065.00000072.00000082.000000200.000000
ap_hi68985.0126.32502717.6986217.000000120.000000120.000000140.000000240.000000
ap_lo68985.081.3504829.8056661.00000080.00000080.00000090.000000190.000000
cholesterol68985.01.3643840.6786911.0000001.0000001.0000001.0000003.000000
gluc68985.01.2258750.5718221.0000001.0000001.0000001.0000003.000000
smoke68985.00.0878600.2830930.0000000.0000000.0000000.0000001.000000
alco68985.00.0535910.2252110.0000000.0000000.0000000.0000001.000000
active68985.00.8032760.3975250.0000001.0000001.0000001.0000001.000000
cardio68985.00.4949050.4999780.0000000.0000000.0000001.0000001.000000
\n", "
" ], "text/plain": [ " count mean std min 25% \\\n", "age 68985.0 53.290421 6.757633 29.564122 48.340817 \n", "gender 68985.0 1.348670 0.476553 1.000000 1.000000 \n", "height 68985.0 164.359672 8.204273 55.000000 159.000000 \n", "weight 68985.0 74.118961 14.328938 11.000000 65.000000 \n", "ap_hi 68985.0 126.325027 17.698621 7.000000 120.000000 \n", "ap_lo 68985.0 81.350482 9.805666 1.000000 80.000000 \n", "cholesterol 68985.0 1.364384 0.678691 1.000000 1.000000 \n", "gluc 68985.0 1.225875 0.571822 1.000000 1.000000 \n", "smoke 68985.0 0.087860 0.283093 0.000000 0.000000 \n", "alco 68985.0 0.053591 0.225211 0.000000 0.000000 \n", "active 68985.0 0.803276 0.397525 0.000000 1.000000 \n", "cardio 68985.0 0.494905 0.499978 0.000000 0.000000 \n", "\n", " 50% 75% max \n", "age 53.939875 58.380791 64.924433 \n", "gender 1.000000 2.000000 2.000000 \n", "height 165.000000 170.000000 250.000000 \n", "weight 72.000000 82.000000 200.000000 \n", "ap_hi 120.000000 140.000000 240.000000 \n", "ap_lo 80.000000 90.000000 190.000000 \n", "cholesterol 1.000000 1.000000 3.000000 \n", "gluc 1.000000 1.000000 3.000000 \n", "smoke 0.000000 0.000000 1.000000 \n", "alco 0.000000 0.000000 1.000000 \n", "active 1.000000 1.000000 1.000000 \n", "cardio 0.000000 1.000000 1.000000 " ] }, "execution_count": 405, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = df.query(\"ap_hi > 0 and ap_hi < 370\")\n", "df = df.query(\"ap_lo > 0 and ap_lo < 370\")\n", "df.describe().transpose()" ] }, { "cell_type": "code", "execution_count": 406, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
agegenderap_hiap_locholesterolglucsmokealcoactivecardiobmi
id
050.35866821108011001021.967120
155.38276211409031001134.927679
251.62906611307031000123.507805
348.250465215010011001128.710479
447.84251511006011000023.011177
....................................
9999352.67769121208011101026.927438
9999561.87986011409022001150.472681
9999652.20129221809031010131.353579
9999861.41441211358012000127.099251
9999956.23699511208021001024.913495
\n", "

68985 rows × 11 columns

\n", "
" ], "text/plain": [ " age gender ap_hi ap_lo cholesterol gluc smoke alco \\\n", "id \n", "0 50.358668 2 110 80 1 1 0 0 \n", "1 55.382762 1 140 90 3 1 0 0 \n", "2 51.629066 1 130 70 3 1 0 0 \n", "3 48.250465 2 150 100 1 1 0 0 \n", "4 47.842515 1 100 60 1 1 0 0 \n", "... ... ... ... ... ... ... ... ... \n", "99993 52.677691 2 120 80 1 1 1 0 \n", "99995 61.879860 1 140 90 2 2 0 0 \n", "99996 52.201292 2 180 90 3 1 0 1 \n", "99998 61.414412 1 135 80 1 2 0 0 \n", "99999 56.236995 1 120 80 2 1 0 0 \n", "\n", " active cardio bmi \n", "id \n", "0 1 0 21.967120 \n", "1 1 1 34.927679 \n", "2 0 1 23.507805 \n", "3 1 1 28.710479 \n", "4 0 0 23.011177 \n", "... ... ... ... \n", "99993 1 0 26.927438 \n", "99995 1 1 50.472681 \n", "99996 0 1 31.353579 \n", "99998 0 1 27.099251 \n", "99999 1 0 24.913495 \n", "\n", "[68985 rows x 11 columns]" ] }, "execution_count": 406, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[\"bmi\"] = df[\"weight\"] / (df[\"height\"] / 100) ** 2\n", "df.drop([\"weight\", \"height\"], axis=1, inplace=True)\n", "df" ] }, { "cell_type": "code", "execution_count": 407, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 407, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "\n", "sns.heatmap(df.corr())" ] }, { "cell_type": "code", "execution_count": 411, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Optimization terminated successfully.\n", " Current function value: 0.567793\n", " Iterations 6\n" ] }, { "data": { "text/html": [ "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
Model: Logit Method: MLE
Dependent Variable: cardio Pseudo R-squared: 0.181
Date: 2025-02-21 23:59 AIC: 66609.4135
No. Observations: 58637 BIC: 66708.1838
Df Model: 10 Log-Likelihood: -33294.
Df Residuals: 58626 LL-Null: -40641.
Converged: 1.0000 LLR p-value: 0.0000
No. Iterations: 6.0000 Scale: 1.0000
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
Coef. Std.Err. z P>|z| [0.025 0.975]
const -11.5426 0.1324 -87.1794 0.0000 -11.8021 -11.2831
age 0.0523 0.0014 36.0898 0.0000 0.0494 0.0551
gender 0.0206 0.0211 0.9792 0.3275 -0.0207 0.0619
ap_hi 0.0469 0.0009 52.1945 0.0000 0.0451 0.0486
ap_lo 0.0232 0.0014 16.3321 0.0000 0.0204 0.0259
cholesterol 0.4859 0.0168 29.0062 0.0000 0.4531 0.5187
gluc -0.1116 0.0190 -5.8803 0.0000 -0.1488 -0.0744
smoke -0.1279 0.0373 -3.4313 0.0006 -0.2009 -0.0548
alco -0.1782 0.0452 -3.9429 0.0001 -0.2668 -0.0896
active -0.2377 0.0235 -10.1027 0.0000 -0.2838 -0.1916
bmi 0.0226 0.0018 12.4231 0.0000 0.0190 0.0261

\n" ], "text/latex": [ "\\begin{table}\n", "\\caption{Results: Logit}\n", "\\label{}\n", "\\begin{center}\n", "\\begin{tabular}{llll}\n", "\\hline\n", "Model: & Logit & Method: & MLE \\\\\n", "Dependent Variable: & cardio & Pseudo R-squared: & 0.181 \\\\\n", "Date: & 2025-02-21 23:59 & AIC: & 66609.4135 \\\\\n", "No. Observations: & 58637 & BIC: & 66708.1838 \\\\\n", "Df Model: & 10 & Log-Likelihood: & -33294. \\\\\n", "Df Residuals: & 58626 & LL-Null: & -40641. \\\\\n", "Converged: & 1.0000 & LLR p-value: & 0.0000 \\\\\n", "No. Iterations: & 6.0000 & Scale: & 1.0000 \\\\\n", "\\hline\n", "\\end{tabular}\n", "\\end{center}\n", "\n", "\\begin{center}\n", "\\begin{tabular}{lrrrrrr}\n", "\\hline\n", " & Coef. & Std.Err. & z & P$> |$z$|$ & [0.025 & 0.975] \\\\\n", "\\hline\n", "const & -11.5426 & 0.1324 & -87.1794 & 0.0000 & -11.8021 & -11.2831 \\\\\n", "age & 0.0523 & 0.0014 & 36.0898 & 0.0000 & 0.0494 & 0.0551 \\\\\n", "gender & 0.0206 & 0.0211 & 0.9792 & 0.3275 & -0.0207 & 0.0619 \\\\\n", "ap\\_hi & 0.0469 & 0.0009 & 52.1945 & 0.0000 & 0.0451 & 0.0486 \\\\\n", "ap\\_lo & 0.0232 & 0.0014 & 16.3321 & 0.0000 & 0.0204 & 0.0259 \\\\\n", "cholesterol & 0.4859 & 0.0168 & 29.0062 & 0.0000 & 0.4531 & 0.5187 \\\\\n", "gluc & -0.1116 & 0.0190 & -5.8803 & 0.0000 & -0.1488 & -0.0744 \\\\\n", "smoke & -0.1279 & 0.0373 & -3.4313 & 0.0006 & -0.2009 & -0.0548 \\\\\n", "alco & -0.1782 & 0.0452 & -3.9429 & 0.0001 & -0.2668 & -0.0896 \\\\\n", "active & -0.2377 & 0.0235 & -10.1027 & 0.0000 & -0.2838 & -0.1916 \\\\\n", "bmi & 0.0226 & 0.0018 & 12.4231 & 0.0000 & 0.0190 & 0.0261 \\\\\n", "\\hline\n", "\\end{tabular}\n", "\\end{center}\n", "\\end{table}\n", "\\bigskip\n" ], "text/plain": [ "\n", "\"\"\"\n", " Results: Logit\n", "=================================================================\n", "Model: Logit Method: MLE \n", "Dependent Variable: cardio Pseudo R-squared: 0.181 \n", "Date: 2025-02-21 23:59 AIC: 66609.4135\n", "No. Observations: 58637 BIC: 66708.1838\n", "Df Model: 10 Log-Likelihood: -33294. \n", "Df Residuals: 58626 LL-Null: -40641. \n", "Converged: 1.0000 LLR p-value: 0.0000 \n", "No. Iterations: 6.0000 Scale: 1.0000 \n", "-----------------------------------------------------------------\n", " Coef. Std.Err. z P>|z| [0.025 0.975] \n", "-----------------------------------------------------------------\n", "const -11.5426 0.1324 -87.1794 0.0000 -11.8021 -11.2831\n", "age 0.0523 0.0014 36.0898 0.0000 0.0494 0.0551\n", "gender 0.0206 0.0211 0.9792 0.3275 -0.0207 0.0619\n", "ap_hi 0.0469 0.0009 52.1945 0.0000 0.0451 0.0486\n", "ap_lo 0.0232 0.0014 16.3321 0.0000 0.0204 0.0259\n", "cholesterol 0.4859 0.0168 29.0062 0.0000 0.4531 0.5187\n", "gluc -0.1116 0.0190 -5.8803 0.0000 -0.1488 -0.0744\n", "smoke -0.1279 0.0373 -3.4313 0.0006 -0.2009 -0.0548\n", "alco -0.1782 0.0452 -3.9429 0.0001 -0.2668 -0.0896\n", "active -0.2377 0.0235 -10.1027 0.0000 -0.2838 -0.1916\n", "bmi 0.0226 0.0018 12.4231 0.0000 0.0190 0.0261\n", "=================================================================\n", "\n", "\"\"\"" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "cholesterol 1.625611\n", "age 1.053639\n", "ap_hi 1.047999\n", "ap_lo 1.023425\n", "bmi 1.022841\n", "gender 1.020836\n", "gluc 0.894398\n", "smoke 0.879970\n", "alco 0.836750\n", "active 0.788470\n", "const 0.000010\n", "dtype: float64" ] }, "execution_count": 411, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.model_selection import train_test_split\n", "import statsmodels.api as sm\n", "import numpy as np\n", "\n", "random_state = 9\n", "\n", "stat_y = df[\"cardio\"]\n", "stat_X = df.drop([\"cardio\"], axis=1).copy()\n", "stat_X_train, stat_X_test, stat_y_train, stat_y_test = train_test_split(\n", " stat_X, stat_y, test_size=0.15, random_state=9\n", ")\n", "\n", "log_model = sm.Logit(stat_y_train, sm.add_constant(stat_X_train))\n", "log_result = log_model.fit()\n", "display(log_result.summary2())\n", "np.exp(log_result.params).sort_values(ascending=False)" ] }, { "cell_type": "code", "execution_count": 421, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ageap_hicholesterolcardiobmi
id
050.3586681101021.967120
155.3827621403134.927679
251.6290661303123.507805
348.2504651501128.710479
447.8425151001023.011177
..................
9999352.6776911201026.927438
9999561.8798601402150.472681
9999652.2012921803131.353579
9999861.4144121351127.099251
9999956.2369951202024.913495
\n", "

68985 rows × 5 columns

\n", "
" ], "text/plain": [ " age ap_hi cholesterol cardio bmi\n", "id \n", "0 50.358668 110 1 0 21.967120\n", "1 55.382762 140 3 1 34.927679\n", "2 51.629066 130 3 1 23.507805\n", "3 48.250465 150 1 1 28.710479\n", "4 47.842515 100 1 0 23.011177\n", "... ... ... ... ... ...\n", "99993 52.677691 120 1 0 26.927438\n", "99995 61.879860 140 2 1 50.472681\n", "99996 52.201292 180 3 1 31.353579\n", "99998 61.414412 135 1 1 27.099251\n", "99999 56.236995 120 2 0 24.913495\n", "\n", "[68985 rows x 5 columns]" ] }, "execution_count": 421, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# data = df.drop([\"gluc\", \"smoke\", \"alco\", \"active\", \"ap_lo\"], axis=1)\n", "data = df.drop(\n", " [\n", " \"gluc\",\n", " \"smoke\",\n", " \"alco\",\n", " \"ap_lo\",\n", " \"gender\",\n", " # \"cholesterol\",\n", " \"active\",\n", " ],\n", " axis=1,\n", ")\n", "# data = df.copy()\n", "data" ] }, { "cell_type": "code", "execution_count": 431, "metadata": {}, "outputs": [], "source": [ "data.to_csv(\"data-cardio/cardio_clear.csv\")" ] }, { "cell_type": "code", "execution_count": 422, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ageap_hicholesterolbmi
id
9496062.014018120126.892323
3080757.745592120128.393726
2648559.670354120323.875115
386849.715256110120.820940
4589059.785347160123.529412
...............
6197562.558865120128.196921
3274157.882488120129.043709
9483351.371701120129.242109
9566045.767167120124.977043
8100255.544300150127.053803
\n", "

55188 rows × 4 columns

\n", "
" ], "text/plain": [ " age ap_hi cholesterol bmi\n", "id \n", "94960 62.014018 120 1 26.892323\n", "30807 57.745592 120 1 28.393726\n", "26485 59.670354 120 3 23.875115\n", "3868 49.715256 110 1 20.820940\n", "45890 59.785347 160 1 23.529412\n", "... ... ... ... ...\n", "61975 62.558865 120 1 28.196921\n", "32741 57.882488 120 1 29.043709\n", "94833 51.371701 120 1 29.242109\n", "95660 45.767167 120 1 24.977043\n", "81002 55.544300 150 1 27.053803\n", "\n", "[55188 rows x 4 columns]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "id\n", "94960 0\n", "30807 0\n", "26485 0\n", "3868 1\n", "45890 1\n", " ..\n", "61975 1\n", "32741 0\n", "94833 0\n", "95660 0\n", "81002 1\n", "Name: cardio, Length: 55188, dtype: int64" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ageap_hicholesterolbmi
id
4227060.078305140145.918367
1078055.360859120224.998904
4243648.198445100321.926126
8864741.517906130227.764650
6233651.692038110122.230987
...............
3033047.697404100122.724403
6290758.597087120123.828125
9861251.404556110122.589551
576762.033184120123.875115
1476941.506954120222.948116
\n", "

13797 rows × 4 columns

\n", "
" ], "text/plain": [ " age ap_hi cholesterol bmi\n", "id \n", "42270 60.078305 140 1 45.918367\n", "10780 55.360859 120 2 24.998904\n", "42436 48.198445 100 3 21.926126\n", "88647 41.517906 130 2 27.764650\n", "62336 51.692038 110 1 22.230987\n", "... ... ... ... ...\n", "30330 47.697404 100 1 22.724403\n", "62907 58.597087 120 1 23.828125\n", "98612 51.404556 110 1 22.589551\n", "5767 62.033184 120 1 23.875115\n", "14769 41.506954 120 2 22.948116\n", "\n", "[13797 rows x 4 columns]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "id\n", "42270 1\n", "10780 0\n", "42436 1\n", "88647 1\n", "62336 0\n", " ..\n", "30330 1\n", "62907 0\n", "98612 0\n", "5767 0\n", "14769 1\n", "Name: cardio, Length: 13797, dtype: int64" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "y = data[\"cardio\"]\n", "X = data.drop([\"cardio\"], axis=1).copy()\n", "X_train, X_test, y_train, y_test = train_test_split(\n", " X, y, test_size=0.2, random_state=random_state\n", ")\n", "display(X_train, y_train, X_test, y_test)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/user/Projects/python/fuzzy-rules-generator/.venv/lib/python3.12/site-packages/sklearn/base.py:486: UserWarning: X has feature names, but DecisionTreeClassifier was fitted without feature names\n", " warnings.warn(\n", "/Users/user/Projects/python/fuzzy-rules-generator/.venv/lib/python3.12/site-packages/sklearn/base.py:486: UserWarning: X has feature names, but DecisionTreeClassifier was fitted without feature names\n", " warnings.warn(\n", "/Users/user/Projects/python/fuzzy-rules-generator/.venv/lib/python3.12/site-packages/sklearn/base.py:486: UserWarning: X has feature names, but DecisionTreeClassifier was fitted without feature names\n", " warnings.warn(\n" ] }, { "data": { "text/plain": [ "'Precision_test'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "np.float64(0.7368262116865468)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'Recall_test'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "np.float64(0.7180694526191878)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'Accuracy_test'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "0.7347974197289265" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'ROC_AUC_test'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "np.float64(0.7917285464726767)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'F1_test'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "np.float64(0.7273269245100231)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'MCC_test'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "np.float64(0.46942772902650703)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'Cohen_kappa_test'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "np.float64(0.4692799184358021)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'Confusion_matrix'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "array([[5258, 1743],\n", " [1916, 4880]])" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from src.utils import run_classification\n", "from sklearn import tree\n", "from sklearn import metrics\n", "import numpy as np\n", "\n", "\n", "model = tree.DecisionTreeClassifier(\n", " random_state=random_state,\n", " max_depth=6,\n", ").fit(X_train.values, y_train.values.ravel())\n", "\n", "\n", "y_train_predict = model.predict(X_train)\n", "y_test_probs = model.predict_proba(X_test)\n", "y_test_predict = model.predict(X_test)\n", "\n", "\n", "display(\"Precision_test\", metrics.precision_score(y_test, y_test_predict))\n", "display(\"Recall_test\", metrics.recall_score(y_test, y_test_predict))\n", "display(\"Accuracy_test\", metrics.accuracy_score(y_test, y_test_predict))\n", "display(\"ROC_AUC_test\", metrics.roc_auc_score(y_test, y_test_probs[:, 1])) # type: ignore\n", "display(\"F1_test\", metrics.f1_score(y_test, y_test_predict))\n", "display(\"MCC_test\", metrics.matthews_corrcoef(y_test, y_test_predict))\n", "display(\"Cohen_kappa_test\", metrics.cohen_kappa_score(y_test, y_test_predict))\n", "display(\"Confusion_matrix\", metrics.confusion_matrix(y_test, y_test_predict))" ] }, { "cell_type": "code", "execution_count": 429, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "|--- ap_hi <= 129.50\n", "| |--- age <= 54.65\n", "| | |--- cholesterol <= 2.50\n", "| | | |--- age <= 43.79\n", "| | | | |--- cholesterol <= 1.50\n", "| | | | | |--- ap_hi <= 114.50\n", "| | | | | | |--- class: 0\n", "| | | | | |--- ap_hi > 114.50\n", "| | | | | | |--- class: 0\n", "| | | | |--- cholesterol > 1.50\n", "| | | | | |--- bmi <= 28.87\n", "| | | | | | |--- class: 0\n", "| | | | | |--- bmi > 28.87\n", "| | | | | | |--- class: 0\n", "| | | |--- age > 43.79\n", "| | | | |--- ap_hi <= 119.50\n", "| | | | | |--- bmi <= 22.05\n", "| | | | | | |--- class: 0\n", "| | | | | |--- bmi > 22.05\n", "| | | | | | |--- class: 0\n", "| | | | |--- ap_hi > 119.50\n", "| | | | | |--- bmi <= 27.71\n", "| | | | | | |--- class: 0\n", "| | | | | |--- bmi > 27.71\n", "| | | | | | |--- class: 0\n", "| | |--- cholesterol > 2.50\n", "| | | |--- bmi <= 29.04\n", "| | | | |--- age <= 41.60\n", "| | | | | |--- ap_hi <= 115.00\n", "| | | | | | |--- class: 0\n", "| | | | | |--- ap_hi > 115.00\n", "| | | | | | |--- class: 0\n", "| | | | |--- age > 41.60\n", "| | | | | |--- age <= 54.17\n", "| | | | | | |--- class: 1\n", "| | | | | |--- age > 54.17\n", "| | | | | | |--- class: 0\n", "| | | |--- bmi > 29.04\n", "| | | | |--- age <= 54.01\n", "| | | | | |--- age <= 39.75\n", "| | | | | | |--- class: 0\n", "| | | | | |--- age > 39.75\n", "| | | | | | |--- class: 1\n", "| | | | |--- age > 54.01\n", "| | | | | |--- bmi <= 35.02\n", "| | | | | | |--- class: 0\n", "| | | | | |--- bmi > 35.02\n", "| | | | | | |--- class: 1\n", "| |--- age > 54.65\n", "| | |--- cholesterol <= 2.50\n", "| | | |--- age <= 60.71\n", "| | | | |--- ap_hi <= 118.50\n", "| | | | | |--- bmi <= 23.33\n", "| | | | | | |--- class: 0\n", "| | | | | |--- bmi > 23.33\n", "| | | | | | |--- class: 0\n", "| | | | |--- ap_hi > 118.50\n", "| | | | | |--- bmi <= 32.89\n", "| | | | | | |--- class: 0\n", "| | | | | |--- bmi > 32.89\n", "| | | | | | |--- class: 1\n", "| | | |--- age > 60.71\n", "| | | | |--- bmi <= 20.51\n", "| | | | | |--- age <= 64.31\n", "| | | | | | |--- class: 0\n", "| | | | | |--- age > 64.31\n", "| | | | | | |--- class: 1\n", "| | | | |--- bmi > 20.51\n", "| | | | | |--- ap_hi <= 115.50\n", "| | | | | | |--- class: 0\n", "| | | | | |--- ap_hi > 115.50\n", "| | | | | | |--- class: 1\n", "| | |--- cholesterol > 2.50\n", "| | | |--- bmi <= 26.03\n", "| | | | |--- age <= 60.89\n", "| | | | | |--- age <= 60.48\n", "| | | | | | |--- class: 1\n", "| | | | | |--- age > 60.48\n", "| | | | | | |--- class: 0\n", "| | | | |--- age > 60.89\n", "| | | | | |--- bmi <= 25.91\n", "| | | | | | |--- class: 1\n", "| | | | | |--- bmi > 25.91\n", "| | | | | | |--- class: 0\n", "| | | |--- bmi > 26.03\n", "| | | | |--- age <= 59.39\n", "| | | | | |--- bmi <= 35.93\n", "| | | | | | |--- class: 1\n", "| | | | | |--- bmi > 35.93\n", "| | | | | | |--- class: 1\n", "| | | | |--- age > 59.39\n", "| | | | | |--- bmi <= 35.12\n", "| | | | | | |--- class: 1\n", "| | | | | |--- bmi > 35.12\n", "| | | | | | |--- class: 1\n", "|--- ap_hi > 129.50\n", "| |--- ap_hi <= 138.50\n", "| | |--- cholesterol <= 2.50\n", "| | | |--- age <= 59.54\n", "| | | | |--- bmi <= 21.64\n", "| | | | | |--- bmi <= 17.30\n", "| | | | | | |--- class: 1\n", "| | | | | |--- bmi > 17.30\n", "| | | | | | |--- class: 0\n", "| | | | |--- bmi > 21.64\n", "| | | | | |--- age <= 39.99\n", "| | | | | | |--- class: 0\n", "| | | | | |--- age > 39.99\n", "| | | | | | |--- class: 1\n", "| | | |--- age > 59.54\n", "| | | | |--- age <= 62.46\n", "| | | | | |--- bmi <= 20.61\n", "| | | | | | |--- class: 0\n", "| | | | | |--- bmi > 20.61\n", "| | | | | | |--- class: 1\n", "| | | | |--- age > 62.46\n", "| | | | | |--- age <= 64.00\n", "| | | | | | |--- class: 1\n", "| | | | | |--- age > 64.00\n", "| | | | | | |--- class: 1\n", "| | |--- cholesterol > 2.50\n", "| | | |--- bmi <= 30.74\n", "| | | | |--- bmi <= 30.06\n", "| | | | | |--- bmi <= 23.93\n", "| | | | | | |--- class: 1\n", "| | | | | |--- bmi > 23.93\n", "| | | | | | |--- class: 1\n", "| | | | |--- bmi > 30.06\n", "| | | | | |--- bmi <= 30.69\n", "| | | | | | |--- class: 1\n", "| | | | | |--- bmi > 30.69\n", "| | | | | | |--- class: 0\n", "| | | |--- bmi > 30.74\n", "| | | | |--- bmi <= 32.05\n", "| | | | | |--- age <= 43.63\n", "| | | | | | |--- class: 0\n", "| | | | | |--- age > 43.63\n", "| | | | | | |--- class: 1\n", "| | | | |--- bmi > 32.05\n", "| | | | | |--- bmi <= 32.34\n", "| | | | | | |--- class: 1\n", "| | | | | |--- bmi > 32.34\n", "| | | | | | |--- class: 1\n", "| |--- ap_hi > 138.50\n", "| | |--- ap_hi <= 149.50\n", "| | | |--- age <= 39.56\n", "| | | | |--- bmi <= 38.19\n", "| | | | | |--- age <= 39.54\n", "| | | | | | |--- class: 1\n", "| | | | | |--- age > 39.54\n", "| | | | | | |--- class: 0\n", "| | | | |--- bmi > 38.19\n", "| | | | | |--- bmi <= 50.55\n", "| | | | | | |--- class: 0\n", "| | | | | |--- bmi > 50.55\n", "| | | | | | |--- class: 1\n", "| | | |--- age > 39.56\n", "| | | | |--- age <= 47.57\n", "| | | | | |--- bmi <= 19.23\n", "| | | | | | |--- class: 0\n", "| | | | | |--- bmi > 19.23\n", "| | | | | | |--- class: 1\n", "| | | | |--- age > 47.57\n", "| | | | | |--- age <= 61.57\n", "| | | | | | |--- class: 1\n", "| | | | | |--- age > 61.57\n", "| | | | | | |--- class: 1\n", "| | |--- ap_hi > 149.50\n", "| | | |--- bmi <= 20.48\n", "| | | | |--- age <= 64.27\n", "| | | | | |--- age <= 55.82\n", "| | | | | | |--- class: 1\n", "| | | | | |--- age > 55.82\n", "| | | | | | |--- class: 1\n", "| | | | |--- age > 64.27\n", "| | | | | |--- class: 0\n", "| | | |--- bmi > 20.48\n", "| | | | |--- age <= 64.35\n", "| | | | | |--- age <= 49.82\n", "| | | | | | |--- class: 1\n", "| | | | | |--- age > 49.82\n", "| | | | | | |--- class: 1\n", "| | | | |--- age > 64.35\n", "| | | | | |--- bmi <= 36.80\n", "| | | | | | |--- class: 1\n", "| | | | | |--- bmi > 36.80\n", "| | | | | | |--- class: 0\n", "\n" ] } ], "source": [ "rules = tree.export_text(model, feature_names=X_train.columns.values.tolist())\n", "print(rules)" ] }, { "cell_type": "code", "execution_count": 430, "metadata": {}, "outputs": [], "source": [ "import pickle\n", "\n", "pickle.dump(model, open(\"data-cardio/cardio.model.sav\", \"wb\"))" ] } ], "metadata": { "kernelspec": { "display_name": ".venv", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.9" } }, "nbformat": 4, "nbformat_minor": 2 }