{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import seaborn as sns\n", "import plotly.graph_objects as go\n", "from plotly.subplots import make_subplots\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.linear_model import LinearRegression\n", "from sklearn.naive_bayes import GaussianNB\n", "from sklearn.preprocessing import StandardScaler\n", "from sklearn import metrics" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Przygotowanie danych:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Int64Index: 454 entries, 0 to 498\n", "Data columns (total 11 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 gender 454 non-null object \n", " 1 age 454 non-null float64\n", " 2 hypertension 454 non-null int64 \n", " 3 heart_disease 454 non-null int64 \n", " 4 ever_married 454 non-null object \n", " 5 work_type 454 non-null object \n", " 6 Residence_type 454 non-null object \n", " 7 avg_glucose_level 454 non-null float64\n", " 8 bmi 454 non-null float64\n", " 9 smoking_status 454 non-null object \n", " 10 stroke 454 non-null int64 \n", "dtypes: float64(3), int64(3), object(5)\n", "memory usage: 42.6+ KB\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
genderagehypertensionheart_diseaseever_marriedwork_typeResidence_typeavg_glucose_levelbmismoking_statusstroke
0Male67.001YesPrivateUrban228.6936.6formerly smoked1
2Male80.001YesPrivateRural105.9232.5never smoked1
3Female49.000YesPrivateUrban171.2334.4smokes1
4Female79.010YesSelf-employedRural174.1224.0never smoked1
5Male81.000YesPrivateUrban186.2129.0formerly smoked1
....................................
494Female55.000YesPrivateRural111.1939.7formerly smoked0
495Female71.000YesPrivateUrban93.2834.7never smoked0
496Male5.000NochildrenRural122.1935.0Unknown0
497Female14.000NochildrenRural129.5321.3never smoked0
498Female15.000NochildrenRural114.5329.1Unknown0
\n", "

454 rows × 11 columns

\n", "
" ], "text/plain": [ " gender age hypertension heart_disease ever_married work_type \\\n", "0 Male 67.0 0 1 Yes Private \n", "2 Male 80.0 0 1 Yes Private \n", "3 Female 49.0 0 0 Yes Private \n", "4 Female 79.0 1 0 Yes Self-employed \n", "5 Male 81.0 0 0 Yes Private \n", ".. ... ... ... ... ... ... \n", "494 Female 55.0 0 0 Yes Private \n", "495 Female 71.0 0 0 Yes Private \n", "496 Male 5.0 0 0 No children \n", "497 Female 14.0 0 0 No children \n", "498 Female 15.0 0 0 No children \n", "\n", " Residence_type avg_glucose_level bmi smoking_status stroke \n", "0 Urban 228.69 36.6 formerly smoked 1 \n", "2 Rural 105.92 32.5 never smoked 1 \n", "3 Urban 171.23 34.4 smokes 1 \n", "4 Rural 174.12 24.0 never smoked 1 \n", "5 Urban 186.21 29.0 formerly smoked 1 \n", ".. ... ... ... ... ... \n", "494 Rural 111.19 39.7 formerly smoked 0 \n", "495 Urban 93.28 34.7 never smoked 0 \n", "496 Rural 122.19 35.0 Unknown 0 \n", "497 Rural 129.53 21.3 never smoked 0 \n", "498 Rural 114.53 29.1 Unknown 0 \n", "\n", "[454 rows x 11 columns]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.read_csv('data.csv')\n", "del df['id']\n", "df = df[df['gender'].map(lambda x: str(x) != \"Other\")]\n", "df = df.dropna()\n", "df.info()\n", "df" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
agehypertensionheart_diseaseavg_glucose_levelbmistrokegender_Maleever_married_Yeswork_type_Never_workedwork_type_Privatework_type_Self-employedwork_type_childrenResidence_type_Urbansmoking_status_formerly smokedsmoking_status_never smokedsmoking_status_smokes
067.001228.6936.611101001100
280.001105.9232.511101000010
349.000171.2334.410101001001
479.010174.1224.010100100010
581.000186.2129.011101001100
...................................................
49455.000111.1939.700101000100
49571.00093.2834.700101001010
4965.000122.1935.001000010000
49714.000129.5321.300000010010
49815.000114.5329.100000010000
\n", "

454 rows × 16 columns

\n", "
" ], "text/plain": [ " age hypertension heart_disease avg_glucose_level bmi stroke \\\n", "0 67.0 0 1 228.69 36.6 1 \n", "2 80.0 0 1 105.92 32.5 1 \n", "3 49.0 0 0 171.23 34.4 1 \n", "4 79.0 1 0 174.12 24.0 1 \n", "5 81.0 0 0 186.21 29.0 1 \n", ".. ... ... ... ... ... ... \n", "494 55.0 0 0 111.19 39.7 0 \n", "495 71.0 0 0 93.28 34.7 0 \n", "496 5.0 0 0 122.19 35.0 0 \n", "497 14.0 0 0 129.53 21.3 0 \n", "498 15.0 0 0 114.53 29.1 0 \n", "\n", " gender_Male ever_married_Yes work_type_Never_worked work_type_Private \\\n", "0 1 1 0 1 \n", "2 1 1 0 1 \n", "3 0 1 0 1 \n", "4 0 1 0 0 \n", "5 1 1 0 1 \n", ".. ... ... ... ... \n", "494 0 1 0 1 \n", "495 0 1 0 1 \n", "496 1 0 0 0 \n", "497 0 0 0 0 \n", "498 0 0 0 0 \n", "\n", " work_type_Self-employed work_type_children Residence_type_Urban \\\n", "0 0 0 1 \n", "2 0 0 0 \n", "3 0 0 1 \n", "4 1 0 0 \n", "5 0 0 1 \n", ".. ... ... ... \n", "494 0 0 0 \n", "495 0 0 1 \n", "496 0 1 0 \n", "497 0 1 0 \n", "498 0 1 0 \n", "\n", " smoking_status_formerly smoked smoking_status_never smoked \\\n", "0 1 0 \n", "2 0 1 \n", "3 0 0 \n", "4 0 1 \n", "5 1 0 \n", ".. ... ... \n", "494 1 0 \n", "495 0 1 \n", "496 0 0 \n", "497 0 1 \n", "498 0 0 \n", "\n", " smoking_status_smokes \n", "0 0 \n", "2 0 \n", "3 1 \n", "4 0 \n", "5 0 \n", ".. ... \n", "494 0 \n", "495 0 \n", "496 0 \n", "497 0 \n", "498 0 \n", "\n", "[454 rows x 16 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.get_dummies(df, columns=['gender'], drop_first=True)\n", "df = pd.get_dummies(df, columns=['ever_married'], drop_first=True)\n", "df = pd.get_dummies(df, columns=['work_type'], drop_first=True)\n", "df = pd.get_dummies(df, columns=['Residence_type'], drop_first=True)\n", "df = pd.get_dummies(df, columns=['smoking_status'], drop_first=True)\n", "\n", "df" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "df_train, df_test = train_test_split(df, test_size=0.2, stratify=df['stroke'])" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 196\n", "1 167\n", "Name: stroke, dtype: int64" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_train['stroke'].value_counts(dropna=False)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 49\n", "1 42\n", "Name: stroke, dtype: int64" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_test['stroke'].value_counts(dropna=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Wizualizacja" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.pairplot(df, x_vars=['avg_glucose_level','bmi'], y_vars='age', height=7, aspect=0.7, diag_kind = None)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ " \n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "name": "Smoker", "type": "bar", "x": [ "False", "True" ], "xaxis": "x", "y": [ 77, 377 ], "yaxis": "y" }, { "name": "Male", "type": "bar", "x": [ "False", "True" ], "xaxis": "x2", "y": [ 179, 275 ], "yaxis": "y2" }, { "name": "Urban", "type": "bar", "x": [ "False", "True" ], "xaxis": "x3", "y": [ 217, 237 ], "yaxis": "y3" } ], "layout": { "annotations": [ { "font": { "size": 16 }, "showarrow": false, "text": "Smoker", "x": 0.14444444444444446, "xanchor": "center", "xref": "paper", "y": 1, "yanchor": "bottom", "yref": "paper" }, { "font": { "size": 16 }, "showarrow": false, "text": "Male", "x": 0.5, "xanchor": "center", "xref": "paper", "y": 1, "yanchor": "bottom", "yref": "paper" }, { "font": { "size": 16 }, "showarrow": false, "text": "Urban", "x": 0.8555555555555556, "xanchor": "center", "xref": "paper", "y": 1, "yanchor": "bottom", "yref": "paper" } ], "bargap": 0.05, "barmode": "relative", "height": 400, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "width": 700, "xaxis": { "anchor": "y", "domain": [ 0, 0.2888888888888889 ] }, "xaxis2": { "anchor": "y2", "domain": [ 0.35555555555555557, 0.6444444444444445 ] }, "xaxis3": { "anchor": "y3", "domain": [ 0.7111111111111111, 1 ] }, "yaxis": { "anchor": "x", "domain": [ 0, 1 ] }, "yaxis2": { "anchor": "x2", "domain": [ 0, 1 ] }, "yaxis3": { "anchor": "x3", "domain": [ 0, 1 ] } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "features = {'Smoker': df['smoking_status_smokes'].values,\n", " 'Male': df['gender_Male'].values,\n", " 'Urban': df['Residence_type_Urban']}\n", "df_vis = pd.DataFrame(features)\n", "\n", "fig = make_subplots(rows=1, cols=3, subplot_titles=('Smoker', 'Male', 'Urban'))\n", "L= len(df_vis)\n", "\n", "cnames = list(df_vis.columns)\n", "for k, name in enumerate(cnames):\n", " n_true = df_vis[name].sum()\n", " fig.add_trace(go.Bar(x=['False', 'True'], y=[n_true, L-n_true], name=name ), 1,k+1)\n", "fig.update_layout(barmode='relative', bargap=0.05, width=700, height=400)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Regresja liniowa" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "X_cols = list(set(df_train.columns) - {'stroke'})\n", "y_cols = 'stroke'\n", "\n", "X_train_lin = df_train[X_cols]\n", "y_train_lin = df_train[y_cols]\n", "\n", "X_test_lin = df_test[X_cols]\n", "y_test_lin = df_test[y_cols]\n", "\n", "clf_lin = LinearRegression().fit(X_train_lin, y_train_lin)\n", "test_pred_lin = clf_lin.predict(X_test_lin)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "def regression_results(y_true, y_pred):\n", "\n", " # Regression metrics\n", " explained_variance=metrics.explained_variance_score(y_true, y_pred)\n", " mean_absolute_error=metrics.mean_absolute_error(y_true, y_pred) \n", " mse=metrics.mean_squared_error(y_true, y_pred) \n", " mean_squared_log_error=metrics.mean_squared_log_error(y_true, y_pred)\n", " median_absolute_error=metrics.median_absolute_error(y_true, y_pred)\n", " r2=metrics.r2_score(y_true, y_pred)\n", "\n", " print('explained_variance: ', round(explained_variance,4)) \n", " print('mean_squared_log_error: ', round(mean_squared_log_error,4))\n", " print('r2: ', round(r2,4))\n", " print('MAE: ', round(mean_absolute_error,4))\n", " print('MSE: ', round(mse,4))\n", " print('RMSE: ', round(np.sqrt(mse),4))" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "explained_variance: 0.0292\n", "mean_squared_log_error: 0.1162\n", "r2: 0.0272\n", "MAE: 0.2418\n", "MSE: 0.2418\n", "RMSE: 0.4917\n" ] } ], "source": [ "test_pred_lin = np.round(np.clip(test_pred_lin, 0, 1))\n", "regression_results(y_test_lin, test_pred_lin)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " precision recall f1-score support\n", "\n", " 0 0.79 0.76 0.77 49\n", " 1 0.73 0.76 0.74 42\n", "\n", " accuracy 0.76 91\n", " macro avg 0.76 0.76 0.76 91\n", "weighted avg 0.76 0.76 0.76 91\n", "\n" ] } ], "source": [ "print(metrics.classification_report(y_test_lin, test_pred_lin))" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1., 0., 1., 0., 1., 0., 0., 0., 0., 0., 0., 1., 1., 0., 0., 1., 1.,\n", " 0., 0., 1., 0., 1., 1., 1., 1., 1., 1., 0., 0., 1., 1., 0., 1., 1.,\n", " 0., 1., 0., 0., 0., 0., 1., 0., 0., 1., 0., 1., 1., 0., 0., 1., 1.,\n", " 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 0., 0., 1., 1., 0., 0., 1., 0., 0., 0., 1.,\n", " 0., 1., 0., 0., 1., 0.])" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_pred_lin" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1,\n", " 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0,\n", " 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0,\n", " 0, 1, 0], dtype=int64)" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_test_lin.values" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Regresja logistyczna" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "num_cols = ['age', 'avg_glucose_level', 'bmi']\n", "cat_cols = list(set(df.columns) - {'stroke', 'age', 'avg_glucose_level', 'bmi'})\n", "\n", "scaler = StandardScaler()\n", "scaler.fit(df_train[num_cols])\n", "\n", "X_num_train = scaler.transform(df_train[num_cols])\n", "X_cat_train = df_train[cat_cols].to_numpy()\n", "X_train = np.hstack((X_num_train, X_cat_train))\n", "y_train = df_train['stroke']\n", "\n", "X_num_test = scaler.transform(df_test[num_cols])\n", "X_cat_test = df_test[cat_cols].to_numpy()\n", "X_test = np.hstack((X_num_test, X_cat_test))\n", "y_test = df_test['stroke']" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "explained_variance: -0.0165\n", "mean_squared_log_error: 0.1214\n", "r2: -0.017\n", "MAE: 0.2527\n", "MSE: 0.2527\n", "RMSE: 0.5027\n" ] } ], "source": [ "clf_log = LogisticRegression()\n", "\n", "clf_log.fit(X_train, y_train)\n", "\n", "test_pred_log = clf_log.predict(X_test)\n", "\n", "regression_results(y_test, test_pred_log)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Classification Report\n", " precision recall f1-score support\n", "\n", " 0 0.77 0.76 0.76 49\n", " 1 0.72 0.74 0.73 42\n", "\n", " accuracy 0.75 91\n", " macro avg 0.75 0.75 0.75 91\n", "weighted avg 0.75 0.75 0.75 91\n", "\n" ] } ], "source": [ "print('\\nClassification Report')\n", "print(metrics.classification_report(y_test, test_pred_log))" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1,\n", " 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1,\n", " 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0,\n", " 0, 1, 0], dtype=int64)" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_pred_log" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1,\n", " 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0,\n", " 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0,\n", " 0, 1, 0], dtype=int64)" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_test.values" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Naiwny Bayes" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "explained_variance: 0.2187\n", "mean_squared_log_error: 0.1003\n", "r2: 0.1599\n", "MAE: 0.2088\n", "MSE: 0.2088\n", "RMSE: 0.4569\n" ] } ], "source": [ "gnb = GaussianNB()\n", "\n", "gnb = gnb.fit(X_train, y_train)\n", "\n", "test_pred_bay = gnb.predict(X_test)\n", "\n", "regression_results(y_test, test_pred_bay)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Classification Report\n", " precision recall f1-score support\n", "\n", " 0 0.89 0.69 0.78 49\n", " 1 0.72 0.90 0.80 42\n", "\n", " accuracy 0.79 91\n", " macro avg 0.81 0.80 0.79 91\n", "weighted avg 0.81 0.79 0.79 91\n", "\n" ] } ], "source": [ "print('\\nClassification Report')\n", "print(metrics.classification_report(y_test, test_pred_bay))" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1,\n", " 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1,\n", " 0, 1, 0], dtype=int64)" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_pred_bay" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1,\n", " 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0,\n", " 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0,\n", " 0, 1, 0], dtype=int64)" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_test.values" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }