From 3109096cff11bb876181bec39b755bad91c2ec6c Mon Sep 17 00:00:00 2001 From: Padb95 Date: Sat, 27 Jul 2024 15:44:46 +0100 Subject: [PATCH] Lab Done --- .ipynb_checkpoints/Untitled-checkpoint.ipynb | 6 + ...predictions with logistic regression.ipynb | 1465 +++++++++++++++++ 2 files changed, 1471 insertions(+) create mode 100644 .ipynb_checkpoints/Untitled-checkpoint.ipynb create mode 100644 Lab Making predictions with logistic regression.ipynb diff --git a/.ipynb_checkpoints/Untitled-checkpoint.ipynb b/.ipynb_checkpoints/Untitled-checkpoint.ipynb new file mode 100644 index 0000000..363fcab --- /dev/null +++ b/.ipynb_checkpoints/Untitled-checkpoint.ipynb @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Lab Making predictions with logistic regression.ipynb b/Lab Making predictions with logistic regression.ipynb new file mode 100644 index 0000000..257f11f --- /dev/null +++ b/Lab Making predictions with logistic regression.ipynb @@ -0,0 +1,1465 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "id": "163a4f29-06a2-4834-a0fa-7f62f3d65d96", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.linear_model import LogisticRegression" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "b52e3478-e835-4d1a-bd87-ec83a3e2263e", + "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", + "
maleageeducationcurrentSmokercigsPerDayBPMedsprevalentStrokeprevalentHypdiabetestotCholsysBPdiaBPBMIheartRateglucoseTenYearCHD
01394.000.00.0000195.0106.070.026.9780.077.00
10462.000.00.0000250.0121.081.028.7395.076.00
21481.0120.00.0000245.0127.580.025.3475.070.00
30613.0130.00.0010225.0150.095.028.5865.0103.01
40463.0123.00.0000285.0130.084.023.1085.085.00
...................................................
42331501.011.00.0010313.0179.092.025.9766.086.01
42341513.0143.00.0000207.0126.580.019.7165.068.00
42350482.0120.0NaN000248.0131.072.022.0084.086.00
42360441.0115.00.0000210.0126.587.019.1686.0NaN0
42370522.000.00.0000269.0133.583.021.4780.0107.00
\n", + "

4238 rows × 16 columns

\n", + "
" + ], + "text/plain": [ + " male age education currentSmoker cigsPerDay BPMeds \\\n", + "0 1 39 4.0 0 0.0 0.0 \n", + "1 0 46 2.0 0 0.0 0.0 \n", + "2 1 48 1.0 1 20.0 0.0 \n", + "3 0 61 3.0 1 30.0 0.0 \n", + "4 0 46 3.0 1 23.0 0.0 \n", + "... ... ... ... ... ... ... \n", + "4233 1 50 1.0 1 1.0 0.0 \n", + "4234 1 51 3.0 1 43.0 0.0 \n", + "4235 0 48 2.0 1 20.0 NaN \n", + "4236 0 44 1.0 1 15.0 0.0 \n", + "4237 0 52 2.0 0 0.0 0.0 \n", + "\n", + " prevalentStroke prevalentHyp diabetes totChol sysBP diaBP BMI \\\n", + "0 0 0 0 195.0 106.0 70.0 26.97 \n", + "1 0 0 0 250.0 121.0 81.0 28.73 \n", + "2 0 0 0 245.0 127.5 80.0 25.34 \n", + "3 0 1 0 225.0 150.0 95.0 28.58 \n", + "4 0 0 0 285.0 130.0 84.0 23.10 \n", + "... ... ... ... ... ... ... ... \n", + "4233 0 1 0 313.0 179.0 92.0 25.97 \n", + "4234 0 0 0 207.0 126.5 80.0 19.71 \n", + "4235 0 0 0 248.0 131.0 72.0 22.00 \n", + "4236 0 0 0 210.0 126.5 87.0 19.16 \n", + "4237 0 0 0 269.0 133.5 83.0 21.47 \n", + "\n", + " heartRate glucose TenYearCHD \n", + "0 80.0 77.0 0 \n", + "1 95.0 76.0 0 \n", + "2 75.0 70.0 0 \n", + "3 65.0 103.0 1 \n", + "4 85.0 85.0 0 \n", + "... ... ... ... \n", + "4233 66.0 86.0 1 \n", + "4234 65.0 68.0 0 \n", + "4235 84.0 86.0 0 \n", + "4236 86.0 NaN 0 \n", + "4237 80.0 107.0 0 \n", + "\n", + "[4238 rows x 16 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "diabetes = pd.read_csv(r\"C:\\Users\\HP\\Downloads\\framingham.csv\")\n", + "diabetes" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "d78edee0-39c8-434c-84aa-440833c70ae8", + "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", + "
maleageeducationcurrentsmokercigsperdaybpmedsprevalentstrokeprevalenthypdiabetestotcholsysbpdiabpbmiheartrateglucosetenyearchd
01394.000.00.0000195.0106.070.026.9780.077.00
10462.000.00.0000250.0121.081.028.7395.076.00
21481.0120.00.0000245.0127.580.025.3475.070.00
30613.0130.00.0010225.0150.095.028.5865.0103.01
40463.0123.00.0000285.0130.084.023.1085.085.00
...................................................
42331501.011.00.0010313.0179.092.025.9766.086.01
42341513.0143.00.0000207.0126.580.019.7165.068.00
42350482.0120.0NaN000248.0131.072.022.0084.086.00
42360441.0115.00.0000210.0126.587.019.1686.0NaN0
42370522.000.00.0000269.0133.583.021.4780.0107.00
\n", + "

4238 rows × 16 columns

\n", + "
" + ], + "text/plain": [ + " male age education currentsmoker cigsperday bpmeds \\\n", + "0 1 39 4.0 0 0.0 0.0 \n", + "1 0 46 2.0 0 0.0 0.0 \n", + "2 1 48 1.0 1 20.0 0.0 \n", + "3 0 61 3.0 1 30.0 0.0 \n", + "4 0 46 3.0 1 23.0 0.0 \n", + "... ... ... ... ... ... ... \n", + "4233 1 50 1.0 1 1.0 0.0 \n", + "4234 1 51 3.0 1 43.0 0.0 \n", + "4235 0 48 2.0 1 20.0 NaN \n", + "4236 0 44 1.0 1 15.0 0.0 \n", + "4237 0 52 2.0 0 0.0 0.0 \n", + "\n", + " prevalentstroke prevalenthyp diabetes totchol sysbp diabp bmi \\\n", + "0 0 0 0 195.0 106.0 70.0 26.97 \n", + "1 0 0 0 250.0 121.0 81.0 28.73 \n", + "2 0 0 0 245.0 127.5 80.0 25.34 \n", + "3 0 1 0 225.0 150.0 95.0 28.58 \n", + "4 0 0 0 285.0 130.0 84.0 23.10 \n", + "... ... ... ... ... ... ... ... \n", + "4233 0 1 0 313.0 179.0 92.0 25.97 \n", + "4234 0 0 0 207.0 126.5 80.0 19.71 \n", + "4235 0 0 0 248.0 131.0 72.0 22.00 \n", + "4236 0 0 0 210.0 126.5 87.0 19.16 \n", + "4237 0 0 0 269.0 133.5 83.0 21.47 \n", + "\n", + " heartrate glucose tenyearchd \n", + "0 80.0 77.0 0 \n", + "1 95.0 76.0 0 \n", + "2 75.0 70.0 0 \n", + "3 65.0 103.0 1 \n", + "4 85.0 85.0 0 \n", + "... ... ... ... \n", + "4233 66.0 86.0 1 \n", + "4234 65.0 68.0 0 \n", + "4235 84.0 86.0 0 \n", + "4236 86.0 NaN 0 \n", + "4237 80.0 107.0 0 \n", + "\n", + "[4238 rows x 16 columns]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cols = []\n", + "for i in range(len(diabetes.columns)): \n", + " cols.append(diabetes.columns[i].lower().replace(' ', '_'))\n", + "diabetes.columns = cols\n", + "diabetes" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "da1066cf-41bc-428f-86c6-c17a8c66c95e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "male 0\n", + "age 0\n", + "education 105\n", + "currentsmoker 0\n", + "cigsperday 29\n", + "bpmeds 53\n", + "prevalentstroke 0\n", + "prevalenthyp 0\n", + "diabetes 0\n", + "totchol 50\n", + "sysbp 0\n", + "diabp 0\n", + "bmi 19\n", + "heartrate 1\n", + "glucose 388\n", + "tenyearchd 0\n", + "dtype: int64" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "diabetes.isna().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "973bb9f3-3bd3-4672-a400-66a0518fe3e6", + "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", + "
0
1
2
3
4
...
4233
4234
4235
4236
4237
\n", + "

4238 rows × 0 columns

\n", + "
" + ], + "text/plain": [ + "Empty DataFrame\n", + "Columns: []\n", + "Index: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, ...]\n", + "\n", + "[4238 rows x 0 columns]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "categorical = diabetes.select_dtypes(include='object')\n", + "categorical" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "8a7b9d8a-c059-4257-889d-321c965c4999", + "metadata": {}, + "outputs": [], + "source": [ + "dia_drop_na = diabetes.dropna(axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "f01f93b2-302e-4db4-81d4-f2fc96488dac", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "male 0\n", + "age 0\n", + "education 0\n", + "currentsmoker 0\n", + "cigsperday 0\n", + "bpmeds 0\n", + "prevalentstroke 0\n", + "prevalenthyp 0\n", + "diabetes 0\n", + "totchol 0\n", + "sysbp 0\n", + "diabp 0\n", + "bmi 0\n", + "heartrate 0\n", + "glucose 0\n", + "tenyearchd 0\n", + "dtype: int64" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dia_drop_na.isna().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "2d7728fa-a307-4076-9b32-af85a48ec216", + "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", + "
maleageeducationcurrentsmokercigsperdaybpmedsprevalentstrokeprevalenthypdiabetestotcholsysbpdiabpbmiheartrateglucosetenyearchd
01394.000.00.0000195.0106.070.026.9780.077.00
10462.000.00.0000250.0121.081.028.7395.076.00
21481.0120.00.0000245.0127.580.025.3475.070.00
30613.0130.00.0010225.0150.095.028.5865.0103.01
40463.0123.00.0000285.0130.084.023.1085.085.00
...................................................
42311583.000.00.0010187.0141.081.024.9680.081.00
42321681.000.00.0010176.0168.097.023.1460.079.01
42331501.011.00.0010313.0179.092.025.9766.086.01
42341513.0143.00.0000207.0126.580.019.7165.068.00
42370522.000.00.0000269.0133.583.021.4780.0107.00
\n", + "

3656 rows × 16 columns

\n", + "
" + ], + "text/plain": [ + " male age education currentsmoker cigsperday bpmeds \\\n", + "0 1 39 4.0 0 0.0 0.0 \n", + "1 0 46 2.0 0 0.0 0.0 \n", + "2 1 48 1.0 1 20.0 0.0 \n", + "3 0 61 3.0 1 30.0 0.0 \n", + "4 0 46 3.0 1 23.0 0.0 \n", + "... ... ... ... ... ... ... \n", + "4231 1 58 3.0 0 0.0 0.0 \n", + "4232 1 68 1.0 0 0.0 0.0 \n", + "4233 1 50 1.0 1 1.0 0.0 \n", + "4234 1 51 3.0 1 43.0 0.0 \n", + "4237 0 52 2.0 0 0.0 0.0 \n", + "\n", + " prevalentstroke prevalenthyp diabetes totchol sysbp diabp bmi \\\n", + "0 0 0 0 195.0 106.0 70.0 26.97 \n", + "1 0 0 0 250.0 121.0 81.0 28.73 \n", + "2 0 0 0 245.0 127.5 80.0 25.34 \n", + "3 0 1 0 225.0 150.0 95.0 28.58 \n", + "4 0 0 0 285.0 130.0 84.0 23.10 \n", + "... ... ... ... ... ... ... ... \n", + "4231 0 1 0 187.0 141.0 81.0 24.96 \n", + "4232 0 1 0 176.0 168.0 97.0 23.14 \n", + "4233 0 1 0 313.0 179.0 92.0 25.97 \n", + "4234 0 0 0 207.0 126.5 80.0 19.71 \n", + "4237 0 0 0 269.0 133.5 83.0 21.47 \n", + "\n", + " heartrate glucose tenyearchd \n", + "0 80.0 77.0 0 \n", + "1 95.0 76.0 0 \n", + "2 75.0 70.0 0 \n", + "3 65.0 103.0 1 \n", + "4 85.0 85.0 0 \n", + "... ... ... ... \n", + "4231 80.0 81.0 0 \n", + "4232 60.0 79.0 1 \n", + "4233 66.0 86.0 1 \n", + "4234 65.0 68.0 0 \n", + "4237 80.0 107.0 0 \n", + "\n", + "[3656 rows x 16 columns]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "numerical = dia_drop_na.select_dtypes(exclude='object')\n", + "numerical" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "f0bff0cc-795c-486a-b9f5-b65bb9f00227", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Outliers detected by IQR method:\n", + " male age education currentsmoker cigsperday bpmeds \\\n", + "3 0 61 3.0 1 30.0 0.0 \n", + "6 0 63 1.0 0 0.0 0.0 \n", + "13 0 41 3.0 0 0.0 1.0 \n", + "15 0 38 2.0 1 20.0 0.0 \n", + "17 0 46 2.0 1 20.0 0.0 \n", + "... ... ... ... ... ... ... \n", + "4223 1 56 4.0 0 0.0 1.0 \n", + "4226 1 58 1.0 0 0.0 0.0 \n", + "4228 0 50 1.0 0 0.0 0.0 \n", + "4232 1 68 1.0 0 0.0 0.0 \n", + "4233 1 50 1.0 1 1.0 0.0 \n", + "\n", + " prevalentstroke prevalenthyp diabetes totchol sysbp diabp bmi \\\n", + "3 0 1 0 225.0 150.0 95.0 28.58 \n", + "6 0 0 0 205.0 138.0 71.0 33.11 \n", + "13 0 1 0 332.0 124.0 88.0 31.31 \n", + "15 0 1 0 221.0 140.0 90.0 21.35 \n", + "17 0 0 0 291.0 112.0 78.0 23.38 \n", + "... ... ... ... ... ... ... ... \n", + "4223 0 1 0 287.0 149.0 98.0 21.68 \n", + "4226 0 0 0 233.0 125.5 84.0 26.05 \n", + "4228 0 1 1 260.0 190.0 130.0 43.67 \n", + "4232 0 1 0 176.0 168.0 97.0 23.14 \n", + "4233 0 1 0 313.0 179.0 92.0 25.97 \n", + "\n", + " heartrate glucose tenyearchd \n", + "3 65.0 103.0 1 \n", + "6 60.0 85.0 1 \n", + "13 65.0 84.0 0 \n", + "15 95.0 70.0 1 \n", + "17 80.0 89.0 1 \n", + "... ... ... ... \n", + "4223 90.0 75.0 1 \n", + "4226 67.0 76.0 1 \n", + "4228 85.0 260.0 0 \n", + "4232 60.0 79.0 1 \n", + "4233 66.0 86.0 1 \n", + "\n", + "[961 rows x 16 columns]\n", + "\n", + "DataFrame after removing outliers:\n", + " male age education currentsmoker cigsperday bpmeds \\\n", + "0 1 39 4.0 0 0.0 0.0 \n", + "1 0 46 2.0 0 0.0 0.0 \n", + "2 1 48 1.0 1 20.0 0.0 \n", + "4 0 46 3.0 1 23.0 0.0 \n", + "5 0 43 2.0 0 0.0 0.0 \n", + "... ... ... ... ... ... ... \n", + "4225 1 45 4.0 1 43.0 0.0 \n", + "4227 1 43 4.0 1 20.0 0.0 \n", + "4231 1 58 3.0 0 0.0 0.0 \n", + "4234 1 51 3.0 1 43.0 0.0 \n", + "4237 0 52 2.0 0 0.0 0.0 \n", + "\n", + " prevalentstroke prevalenthyp diabetes totchol sysbp diabp bmi \\\n", + "0 0 0 0 195.0 106.0 70.0 26.97 \n", + "1 0 0 0 250.0 121.0 81.0 28.73 \n", + "2 0 0 0 245.0 127.5 80.0 25.34 \n", + "4 0 0 0 285.0 130.0 84.0 23.10 \n", + "5 0 1 0 228.0 180.0 110.0 30.30 \n", + "... ... ... ... ... ... ... ... \n", + "4225 0 0 0 216.0 137.5 85.0 24.24 \n", + "4227 0 0 0 187.0 129.5 88.0 25.62 \n", + "4231 0 1 0 187.0 141.0 81.0 24.96 \n", + "4234 0 0 0 207.0 126.5 80.0 19.71 \n", + "4237 0 0 0 269.0 133.5 83.0 21.47 \n", + "\n", + " heartrate glucose tenyearchd \n", + "0 80.0 77.0 0 \n", + "1 95.0 76.0 0 \n", + "2 75.0 70.0 0 \n", + "4 85.0 85.0 0 \n", + "5 77.0 99.0 0 \n", + "... ... ... ... \n", + "4225 83.0 105.0 0 \n", + "4227 80.0 75.0 0 \n", + "4231 80.0 81.0 0 \n", + "4234 65.0 68.0 0 \n", + "4237 80.0 107.0 0 \n", + "\n", + "[2695 rows x 16 columns]\n" + ] + } + ], + "source": [ + "Q1 = numerical.quantile(0.25)\n", + "Q3 = numerical.quantile(0.75)\n", + "IQR = Q3 - Q1\n", + "\n", + "is_outlier = (numerical < (Q1 - 1.5 * IQR)) | (numerical > (Q3 + 1.5 * IQR))\n", + "\n", + "outliers = numerical[is_outlier.any(axis=1)]\n", + "print(\"\\nOutliers detected by IQR method:\\n\", outliers)\n", + "\n", + "dia_no_outliers = numerical[~is_outlier.any(axis=1)]\n", + "print(\"\\nDataFrame after removing outliers:\\n\", firo_no_outliers)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "fe824c1e-153b-4204-80bb-9cba29a7c5de", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Min-Max Normalized DataFrame:\n", + " male age education currentsmoker cigsperday bpmeds \\\n", + "0 1.0 0.184211 1.000000 0.0 0.000000 0.0 \n", + "1 0.0 0.368421 0.333333 0.0 0.000000 0.0 \n", + "2 1.0 0.421053 0.000000 1.0 0.285714 0.0 \n", + "3 0.0 0.763158 0.666667 1.0 0.428571 0.0 \n", + "4 0.0 0.368421 0.666667 1.0 0.328571 0.0 \n", + "\n", + " prevalentstroke prevalenthyp diabetes totchol sysbp diabp \\\n", + "0 0.0 0.0 0.0 0.168378 0.106383 0.232804 \n", + "1 0.0 0.0 0.0 0.281314 0.177305 0.349206 \n", + "2 0.0 0.0 0.0 0.271047 0.208038 0.338624 \n", + "3 0.0 1.0 0.0 0.229979 0.314421 0.497354 \n", + "4 0.0 0.0 0.0 0.353183 0.219858 0.380952 \n", + "\n", + " bmi heartrate glucose tenyearchd \n", + "0 0.277024 0.363636 0.104520 0.0 \n", + "1 0.319680 0.515152 0.101695 0.0 \n", + "2 0.237518 0.313131 0.084746 0.0 \n", + "3 0.316045 0.212121 0.177966 1.0 \n", + "4 0.183228 0.414141 0.127119 0.0 \n" + ] + } + ], + "source": [ + "from sklearn.preprocessing import MinMaxScaler\n", + "\n", + "scaler = MinMaxScaler()\n", + "\n", + "dia_normalized = pd.DataFrame(scaler.fit_transform(numerical), columns=numerical.columns)\n", + "\n", + "\n", + "print(\"\\nMin-Max Normalized DataFrame:\")\n", + "print(dia_normalized.head())" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "fea34360-462b-48a3-bb8d-52c9877c08b0", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "\n", + "# Split features and target variable\n", + "X = dia_normalized.drop('diabetes',axis = 1)\n", + "y = dia_normalized['diabetes']\n", + "\n", + "# Split data into training and test sets\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "f510840b-bfcd-4fcf-865b-7be672b68813", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.9836065573770492" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "LR = LogisticRegression()\n", + "LR.fit(X_train, y_train)\n", + "\n", + "LR.score(X_test, y_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "f936661b-84c1-47c5-afc0-8d5f44e90056", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "precision: 1.0\n", + "recall: 0.29411764705882354\n", + "f1: 0.45454545454545453\n", + " precision recall f1-score support\n", + "\n", + " 0.0 0.98 1.00 0.99 715\n", + " 1.0 1.00 0.29 0.45 17\n", + "\n", + " accuracy 0.98 732\n", + " macro avg 0.99 0.65 0.72 732\n", + "weighted avg 0.98 0.98 0.98 732\n", + "\n" + ] + }, + { + "data": { + "text/plain": [ + "array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0])" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.metrics import precision_score\n", + "from sklearn.metrics import recall_score\n", + "from sklearn.metrics import f1_score\n", + "from sklearn.metrics import classification_report\n", + "\n", + "pred = LR.predict(X_test)\n", + "\n", + "print(\"precision: \",precision_score(y_test,pred))\n", + "print(\"recall: \",recall_score(y_test,pred))\n", + "print(\"f1: \",f1_score(y_test,pred))\n", + "\n", + "\n", + "print(classification_report(y_test, pred))\n", + "\n", + "# to predict the probabilities instead of a class\n", + "predicted_probabilities = LR.predict_proba(X_test)[:,1]\n", + "predicted_probabilities\n", + "\n", + "# Then you need to define it by hand\n", + "custom_threshold = 0.7 # For example, use a threshold of 0.7\n", + "custom_predictions = (predicted_probabilities >= custom_threshold).astype(int)\n", + "custom_predictions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2e657fcc-7649-4ac5-ab9c-007f4c2317b9", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5077f7bc-65c3-453a-8eb0-feaaead8d50b", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "31fe8236-34c4-4651-865f-9636a4a0cbb3", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}