866 lines
228 KiB
Plaintext
866 lines
228 KiB
Plaintext
|
{
|
|||
|
"cells": [
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Вариантс2. [Набор данных для анализа и прогнозирования сердечного приступа](https://www.kaggle.com/datasets/kamilpytlak/personal-key-indicators-of-heart-disease)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 1,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"import pandas as pd"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 2,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"df = pd.read_csv('../data/heart_2022_no_nans.csv')"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 3,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"<class 'pandas.core.frame.DataFrame'>\n",
|
|||
|
"RangeIndex: 246022 entries, 0 to 246021\n",
|
|||
|
"Data columns (total 40 columns):\n",
|
|||
|
" # Column Non-Null Count Dtype \n",
|
|||
|
"--- ------ -------------- ----- \n",
|
|||
|
" 0 State 246022 non-null object \n",
|
|||
|
" 1 Sex 246022 non-null object \n",
|
|||
|
" 2 GeneralHealth 246022 non-null object \n",
|
|||
|
" 3 PhysicalHealthDays 246022 non-null float64\n",
|
|||
|
" 4 MentalHealthDays 246022 non-null float64\n",
|
|||
|
" 5 LastCheckupTime 246022 non-null object \n",
|
|||
|
" 6 PhysicalActivities 246022 non-null object \n",
|
|||
|
" 7 SleepHours 246022 non-null float64\n",
|
|||
|
" 8 RemovedTeeth 246022 non-null object \n",
|
|||
|
" 9 HadHeartAttack 246022 non-null object \n",
|
|||
|
" 10 HadAngina 246022 non-null object \n",
|
|||
|
" 11 HadStroke 246022 non-null object \n",
|
|||
|
" 12 HadAsthma 246022 non-null object \n",
|
|||
|
" 13 HadSkinCancer 246022 non-null object \n",
|
|||
|
" 14 HadCOPD 246022 non-null object \n",
|
|||
|
" 15 HadDepressiveDisorder 246022 non-null object \n",
|
|||
|
" 16 HadKidneyDisease 246022 non-null object \n",
|
|||
|
" 17 HadArthritis 246022 non-null object \n",
|
|||
|
" 18 HadDiabetes 246022 non-null object \n",
|
|||
|
" 19 DeafOrHardOfHearing 246022 non-null object \n",
|
|||
|
" 20 BlindOrVisionDifficulty 246022 non-null object \n",
|
|||
|
" 21 DifficultyConcentrating 246022 non-null object \n",
|
|||
|
" 22 DifficultyWalking 246022 non-null object \n",
|
|||
|
" 23 DifficultyDressingBathing 246022 non-null object \n",
|
|||
|
" 24 DifficultyErrands 246022 non-null object \n",
|
|||
|
" 25 SmokerStatus 246022 non-null object \n",
|
|||
|
" 26 ECigaretteUsage 246022 non-null object \n",
|
|||
|
" 27 ChestScan 246022 non-null object \n",
|
|||
|
" 28 RaceEthnicityCategory 246022 non-null object \n",
|
|||
|
" 29 AgeCategory 246022 non-null object \n",
|
|||
|
" 30 HeightInMeters 246022 non-null float64\n",
|
|||
|
" 31 WeightInKilograms 246022 non-null float64\n",
|
|||
|
" 32 BMI 246022 non-null float64\n",
|
|||
|
" 33 AlcoholDrinkers 246022 non-null object \n",
|
|||
|
" 34 HIVTesting 246022 non-null object \n",
|
|||
|
" 35 FluVaxLast12 246022 non-null object \n",
|
|||
|
" 36 PneumoVaxEver 246022 non-null object \n",
|
|||
|
" 37 TetanusLast10Tdap 246022 non-null object \n",
|
|||
|
" 38 HighRiskLastYear 246022 non-null object \n",
|
|||
|
" 39 CovidPos 246022 non-null object \n",
|
|||
|
"dtypes: float64(6), object(34)\n",
|
|||
|
"memory usage: 75.1+ MB\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"text/html": [
|
|||
|
"<div>\n",
|
|||
|
"<style scoped>\n",
|
|||
|
" .dataframe tbody tr th:only-of-type {\n",
|
|||
|
" vertical-align: middle;\n",
|
|||
|
" }\n",
|
|||
|
"\n",
|
|||
|
" .dataframe tbody tr th {\n",
|
|||
|
" vertical-align: top;\n",
|
|||
|
" }\n",
|
|||
|
"\n",
|
|||
|
" .dataframe thead th {\n",
|
|||
|
" text-align: right;\n",
|
|||
|
" }\n",
|
|||
|
"</style>\n",
|
|||
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|||
|
" <thead>\n",
|
|||
|
" <tr style=\"text-align: right;\">\n",
|
|||
|
" <th></th>\n",
|
|||
|
" <th>count</th>\n",
|
|||
|
" <th>mean</th>\n",
|
|||
|
" <th>std</th>\n",
|
|||
|
" <th>min</th>\n",
|
|||
|
" <th>25%</th>\n",
|
|||
|
" <th>50%</th>\n",
|
|||
|
" <th>75%</th>\n",
|
|||
|
" <th>max</th>\n",
|
|||
|
" </tr>\n",
|
|||
|
" </thead>\n",
|
|||
|
" <tbody>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>PhysicalHealthDays</th>\n",
|
|||
|
" <td>246022.0</td>\n",
|
|||
|
" <td>4.119026</td>\n",
|
|||
|
" <td>8.405844</td>\n",
|
|||
|
" <td>0.00</td>\n",
|
|||
|
" <td>0.00</td>\n",
|
|||
|
" <td>0.00</td>\n",
|
|||
|
" <td>3.00</td>\n",
|
|||
|
" <td>30.00</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>MentalHealthDays</th>\n",
|
|||
|
" <td>246022.0</td>\n",
|
|||
|
" <td>4.167140</td>\n",
|
|||
|
" <td>8.102687</td>\n",
|
|||
|
" <td>0.00</td>\n",
|
|||
|
" <td>0.00</td>\n",
|
|||
|
" <td>0.00</td>\n",
|
|||
|
" <td>4.00</td>\n",
|
|||
|
" <td>30.00</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>SleepHours</th>\n",
|
|||
|
" <td>246022.0</td>\n",
|
|||
|
" <td>7.021331</td>\n",
|
|||
|
" <td>1.440681</td>\n",
|
|||
|
" <td>1.00</td>\n",
|
|||
|
" <td>6.00</td>\n",
|
|||
|
" <td>7.00</td>\n",
|
|||
|
" <td>8.00</td>\n",
|
|||
|
" <td>24.00</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>HeightInMeters</th>\n",
|
|||
|
" <td>246022.0</td>\n",
|
|||
|
" <td>1.705150</td>\n",
|
|||
|
" <td>0.106654</td>\n",
|
|||
|
" <td>0.91</td>\n",
|
|||
|
" <td>1.63</td>\n",
|
|||
|
" <td>1.70</td>\n",
|
|||
|
" <td>1.78</td>\n",
|
|||
|
" <td>2.41</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>WeightInKilograms</th>\n",
|
|||
|
" <td>246022.0</td>\n",
|
|||
|
" <td>83.615179</td>\n",
|
|||
|
" <td>21.323156</td>\n",
|
|||
|
" <td>28.12</td>\n",
|
|||
|
" <td>68.04</td>\n",
|
|||
|
" <td>81.65</td>\n",
|
|||
|
" <td>95.25</td>\n",
|
|||
|
" <td>292.57</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>BMI</th>\n",
|
|||
|
" <td>246022.0</td>\n",
|
|||
|
" <td>28.668136</td>\n",
|
|||
|
" <td>6.513973</td>\n",
|
|||
|
" <td>12.02</td>\n",
|
|||
|
" <td>24.27</td>\n",
|
|||
|
" <td>27.46</td>\n",
|
|||
|
" <td>31.89</td>\n",
|
|||
|
" <td>97.65</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" </tbody>\n",
|
|||
|
"</table>\n",
|
|||
|
"</div>"
|
|||
|
],
|
|||
|
"text/plain": [
|
|||
|
" count mean std min 25% 50% \\\n",
|
|||
|
"PhysicalHealthDays 246022.0 4.119026 8.405844 0.00 0.00 0.00 \n",
|
|||
|
"MentalHealthDays 246022.0 4.167140 8.102687 0.00 0.00 0.00 \n",
|
|||
|
"SleepHours 246022.0 7.021331 1.440681 1.00 6.00 7.00 \n",
|
|||
|
"HeightInMeters 246022.0 1.705150 0.106654 0.91 1.63 1.70 \n",
|
|||
|
"WeightInKilograms 246022.0 83.615179 21.323156 28.12 68.04 81.65 \n",
|
|||
|
"BMI 246022.0 28.668136 6.513973 12.02 24.27 27.46 \n",
|
|||
|
"\n",
|
|||
|
" 75% max \n",
|
|||
|
"PhysicalHealthDays 3.00 30.00 \n",
|
|||
|
"MentalHealthDays 4.00 30.00 \n",
|
|||
|
"SleepHours 8.00 24.00 \n",
|
|||
|
"HeightInMeters 1.78 2.41 \n",
|
|||
|
"WeightInKilograms 95.25 292.57 \n",
|
|||
|
"BMI 31.89 97.65 "
|
|||
|
]
|
|||
|
},
|
|||
|
"execution_count": 3,
|
|||
|
"metadata": {},
|
|||
|
"output_type": "execute_result"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"df.info()\n",
|
|||
|
"df.describe().transpose()"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 4,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"text/plain": [
|
|||
|
"array([ 0., 15., 4., 25., 5., 30., 27., 3., 2., 1., 10., 20., 21.,\n",
|
|||
|
" 6., 7., 8., 14., 9., 12., 18., 29., 28., 17., 11., 16., 13.,\n",
|
|||
|
" 26., 22., 24., 19., 23.])"
|
|||
|
]
|
|||
|
},
|
|||
|
"execution_count": 4,
|
|||
|
"metadata": {},
|
|||
|
"output_type": "execute_result"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"df_cleaned = df.drop(columns=list(filter(lambda x: not pd.api.types.is_numeric_dtype(df[x]), df.columns)))\n",
|
|||
|
"df_cleaned['MentalHealthDays'].unique()"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Создадим лингвистические переменные\n",
|
|||
|
"\n",
|
|||
|
"Входные:\n",
|
|||
|
"- SleepHours - количество часов сна\n",
|
|||
|
"- BMI - индекс массы тела\n",
|
|||
|
"\n",
|
|||
|
"Выходные:\n",
|
|||
|
"- HadStroke - наличие сердечного приступа"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 5,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"import numpy as np\n",
|
|||
|
"from skfuzzy import control as ctrl\n",
|
|||
|
"\n",
|
|||
|
"sleep = ctrl.Antecedent(np.arange(df[\"SleepHours\"].min(), df[\"SleepHours\"].max() + 1, 1), \"SleepHours\")\n",
|
|||
|
"bmi = ctrl.Antecedent(np.arange(df[\"BMI\"].min(), df[\"BMI\"].max() + 0.1, 0.1), \"BMI\")\n",
|
|||
|
"had_stroke = ctrl.Consequent(np.arange(0, 1 + 0.01, 0.01), \"HadStroke\")\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Произведем настройку"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 6,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stderr",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"/home/nspotapov/ulstu/AIM-PIbd-31-Potapov-N-S/lab_7/.venv/lib/python3.12/site-packages/skfuzzy/control/fuzzyvariable.py:125: UserWarning: FigureCanvasAgg is non-interactive, and thus cannot be shown\n",
|
|||
|
" fig.show()\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAGyCAYAAAAYveVYAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAY8pJREFUeJzt3Xl8U2W+BvDnJG3TLU260TWl7GtpFATBGWAUhXHA4rggOoKIzFwVxWG8KjMC7tudUe4dURRBZAaQcUYBBVGsgqIIyiYosjWleylLTro3Tc79IyRQWtomPcnJ8nw/n36g6ck5v9LSPH3P+/5eQZIkCURERERBQqV0AURERERyYrghIiKioMJwQ0REREGF4YaIiIiCCsMNERERBRWGGyIiIgoqDDdEREQUVBhuiIiIKKgw3BAREVFQCblwI0kSLBYL2JiZiIgoOCkabr788ktMmjQJ6enpEAQB69at6/A5W7duxeWXXw6NRoPevXtjxYoVbl2zuroaOp0O1dXVnhVNREREfk3RcFNbW4vc3FwsXry4U8ebTCb85je/wa9+9Svs27cPDz30EO655x588sknXq6UiIiIAoXgLxtnCoKADz74AJMnT77kMY8++ig2btyIgwcPuh677bbbYDabsXnz5k5dx2KxQKfTQRRFxMXFdbVsIiIi8jNhShfgjh07dmDcuHEtHhs/fjweeuihSz6nsbERjY2NrvctFou3yiNv2LUU2PqC0lUEJ20qMOtzIEyjdCVBQ2wUMf3j6TjbeFbpUoiC0rYp2zp1XECFm4qKCqSkpLR4LCUlBRaLBfX19YiKimr1nOeffx5PPvmkr0okuRVsBaITgCFTlK4kuIjFwO4VgLkYSOqtdDVB492f30VJTQlm5cyCSgi59RpEfiOgwo0n5s2bh7lz57ret1gsMBgMClZEbhGLgayRwOiHla4kuJwpcIQbkeFGLvXN9Vh1aBUm956MP+T+QelyiEJaQIWb1NRUVFZWtnissrIScXFxbY7aAIBGo4FGw2H3gCWWAP0nKV1F8InLcPwplihbRxB5/+j7sDRZcNegu5QuhbpAkiQ0NzcrXUbICgsLgyAIXT+PDLX4zMiRI7Fp06YWj23ZsgUjR45UqCLyqqY6oO40oOdIm+zCNEBsKsONTKx2K1b8uAITekxApjZT6XLIQ83NzaiqqmIfNAUJgoDk5GSEhXUtnigabmpqanDs2DHX+yaTCfv27UNCQgKysrIwb948lJaWYuXKlQCA//qv/8Krr76KRx55BHfffTc+//xz/Otf/8LGjRuV+hTImyyljj91fLHwCl0mw41MNhVsQkVtBe4efLfSpZCHJEmC2WyGSqVCfHy8LKMH5B5JknD27FmYzWYkJiZ26WugaLj5/vvv8atf/cr1vnNuzPTp07FixQqUl5ejqKjI9fEePXpg48aN+OMf/4j//d//RWZmJt566y2MHz/e57WTD5jPfe0ZbrxDlwmIRR0fR+2yS3YsP7gcYzLHoG98X6XLIQ/Z7XY0NTUhPj4eERERSpcTsuLi4nD27FnY7Xao1WqPz6NouBk7dmy7w39tdR8eO3Ys9u7d68WqyG+IJQAEQJuudCXBSZcJVPygdBUB74viL1AgFuDJUVyVGcjsdjsAdOkFlbrO+e/f1XDDtYrkv8QSRy+WMP4W5RU6AyCWAud+qJP7JEnCsgPLMDRlKIzdjEqXQzLg7ShlyfXvz3BD/ksscbwAk3foDYCtEag7pXQlAWtXxS4cOHUA9+Tco3QpRHQBhhvyX2Ix59t4k/PfVixWto4AtuzAMvRP6I+r0q9SuhQKUWPHjm23S3+oYrgh/yWWMNx4k3NUjCumPPLj6R+xo3wHZg6eyVsZRH6G4Yb8k93uWArO21LeExUPhEc7tmAgty07sAwGrQHXdr9W6VKI6CIMN+Sfak8CtiaO3HiTILDXjYcKxAJ8duIzzBg8A2oVV9eQfzh79iymTZuG+Ph4REdH49e//jWOHj0KwDH5PTk5Gf/+979dxxuNRqSlpbne3759OzQaDerq6nxeu9wYbsg/OV9wGW68S5fJOTceWHFwBZKikpDXK0/pUohc7rrrLnz//ffYsGEDduzYAUmScP3118NqtUIQBIwePRpbt24F4AhChw4dQn19PX7++WcAwLZt23DFFVcgOjpawc9CHgG1/QKFEOcLLrde8C6dASjfr3QVAaWitgIfFnyIOZfNQYSabQqCWX2TDceranx+3V7JsYiKcG9E8OjRo9iwYQO+/vprjBo1CgCwatUqGAwGrFu3DrfccgvGjh2LN954AwDw5Zdf4rLLLkNqaiq2bt2K/v37Y+vWrRgzZozsn48SGG7IP4klQEQsEKlXupLgpjMAP3P7Ene88+M7iAqLwi39blG6FPKy41U1mPj37T6/7kcP/AKDM3RuPefQoUMICwvDiBEjXI8lJiaiX79+OHToEABgzJgxmDNnDqqqqrBt2zaMHTvWFW5mzpyJb775Bo888oisn4tSGG7IP5nPLQPnKhTv0mU6+tw01QERgT8U7W3mBjP+c/Q/uHPgnYgJj1G6HPKyXsmx+OiBXyhyXW/IyclBQkICtm3bhm3btuHZZ59FamoqXnzxRXz33XewWq2uUZ9Ax3BD/onLwH3D+W9sKQWS+ihbSwBY/fNqSJKEOwbcoXQp5ANREWq3R1CUMmDAADQ3N2Pnzp2ugHL69GkcPnwYAwcOBODo/vvLX/4S69evx48//ohf/OIXiI6ORmNjI9544w0MGzYMMTHBEdo5oZj8Exv4+QYb+XVanbUOqw6twk19b0JCZILS5RC10KdPH+Tl5WHWrFnYvn079u/fj9/97nfIyMhAXt75ie9jx47FmjVrYDQaERsbC5VKhdGjR2PVqlVBM98GYLghf8WRG9+IywAgcDl4J/z7yL9RZ63D9IHTlS6FqE1vv/02hg4diokTJ2LkyJGQJAmbNm1CeHi465gxY8bAZrNh7NixrsfGjh3b6rFAF7K3pQpO1cAYF6d0GdSWplqg/gygy1K6kuAXFuHYnJThpl1Ntia889M7uL7n9UiLTev4CUQ+4lzaDQDx8fFYuXJlu8cbjUZIktTisYceeijotnAI2ZGbTT9UKF0CXYpY6viTIze+wUZ+Hfqo4COcrDuJmYNnKl0KEXVC6IabA2Wt0iv5CbHI8SfDjW/oMgFzkdJV+C2b3Ya3D76Nqw1Xo6e+p9LlEFEnhGy4KTpTj/0lotJlUFvEEgACEJeudCWhgSM37covykehpRD35NyjdClE1EkhG26SYiOwfl+p0mVQW8QSQJsGqMM7Ppa6TmdwLAW325WuxO9IkoS3DryFEakjkJOco3Q5RNRJIRtuJgxOw4f7y9Fs4w90vyOWcNsFX9IZHJuU1lYpXYnf2VG+A4fOHMLdOXcrXQoRuSFkw83EIak4VdOIHQWnlS6FLsZl4L7l6nXDW1MXW3ZgGQYmDsTItJFKl0JEbgjZcDMoXYceSTFYt7dM6VLoYmzg51ts5NemH6p+wK6KXbgn5x4I3AaEKKCEbLgRBAF5xnR88mMFGqw2pcshJ7vdsRRcx9tSPhMVD4THMNxcZNmBZciOy8bVhquVLoWI3BSy4QYA8owZqGlsRv6hk0qXQk41lYDdypEbXxIErpi6yHHzcXxe/DnuHnw31Cq10uUQkZtCOtz0SIpBbqaOq6b8ifMFluHGtxhuWlh+cDlSolMwsedEpUshCirZ2dlYtGiR168T0uEGcIzebD1cBbHOqnQpBJy/NcLbUr6lN/C21DllNWXYVLAJ0wdNRzjbERAFpJAPNxNz09Bst+Pjg+VKl0KAY/QgQgtE6pSuJLRw5MblnR/fQUxEDG7qc5PSpRD5XFNTk9IlyCLkw003bSSu6p2Edbw15R+cy8C5OsW3dAag7jTQVKd0JYo603AG7x99H3f0vwPR4dFKl0PUobFjx+LBBx/EI488goSEBKSmpuKJJ55wfbyoqAh5eXmIjY1FXFwcbr31VlRWVro+/sQTT8BoNOKtt95Cjx49EBkZCcCx6OaNN97AxIkTER0djQEDBmDHjh04duw
|
|||
|
"text/plain": [
|
|||
|
"<Figure size 640x480 with 1 Axes>"
|
|||
|
]
|
|||
|
},
|
|||
|
"metadata": {},
|
|||
|
"output_type": "display_data"
|
|||
|
},
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"image/png": "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
|
|||
|
"text/plain": [
|
|||
|
"<Figure size 640x480 with 1 Axes>"
|
|||
|
]
|
|||
|
},
|
|||
|
"metadata": {},
|
|||
|
"output_type": "display_data"
|
|||
|
},
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"image/png": "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
|
|||
|
"text/plain": [
|
|||
|
"<Figure size 640x480 with 1 Axes>"
|
|||
|
]
|
|||
|
},
|
|||
|
"metadata": {},
|
|||
|
"output_type": "display_data"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"import skfuzzy as fuzz\n",
|
|||
|
"\n",
|
|||
|
"sleep[\"low\"] = fuzz.zmf(sleep.universe, 0, 6)\n",
|
|||
|
"sleep[\"normal\"] = fuzz.trapmf(sleep.universe, [4, 6, 10, 12])\n",
|
|||
|
"sleep[\"much\"] = fuzz.smf(sleep.universe, 10, 14)\n",
|
|||
|
"sleep.view()\n",
|
|||
|
"\n",
|
|||
|
"bmi[\"low\"] = fuzz.zmf(bmi.universe, 12, 18.5)\n",
|
|||
|
"bmi[\"normal\"] = fuzz.trapmf(bmi.universe, [16, 18.5, 25, 30])\n",
|
|||
|
"bmi[\"much\"] = fuzz.smf(bmi.universe, 25, 40)\n",
|
|||
|
"bmi.view()\n",
|
|||
|
"\n",
|
|||
|
"# Определение функций принадлежности для had_stroke\n",
|
|||
|
"had_stroke[\"low\"] = fuzz.zmf(had_stroke.universe, 0, 0.01) # Низкая вероятность (менее 1%)\n",
|
|||
|
"had_stroke[\"moderate\"] = fuzz.trapmf(had_stroke.universe, [0.005, 0.01, 0.05, 0.1]) # Умеренная вероятность (1% - 5%)\n",
|
|||
|
"had_stroke[\"high\"] = fuzz.trapmf(had_stroke.universe, [0.01, 0.05, 0.1, 0.2]) # Высокая вероятность (5% - 10%)\n",
|
|||
|
"had_stroke[\"very_high\"] = fuzz.smf(had_stroke.universe, 0.1, 0.15) # Очень высокая вероятность (более 10%)\n",
|
|||
|
"\n",
|
|||
|
"# Визуализация функций принадлежности\n",
|
|||
|
"had_stroke.view()\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Сформируем базу нечетких правил\n",
|
|||
|
"\n",
|
|||
|
"Объяснение правил:\n",
|
|||
|
"\n",
|
|||
|
"Правило 1: Если часы сна низкие (low) и ИМТ низкий (low), то вероятность сердечного приступа низкая (low).\n",
|
|||
|
"\n",
|
|||
|
"Правило 2: Если часы сна низкие (low) и ИМТ нормальный (normal), то вероятность сердечного приступа умеренная (moderate).\n",
|
|||
|
"\n",
|
|||
|
"Правило 3: Если часы сна низкие (low) и ИМТ высокий (much), то вероятность сердечного приступа высокая (high).\n",
|
|||
|
"\n",
|
|||
|
"Правило 4: Если часы сна нормальные (normal) и ИМТ низкий (low), то вероятность сердечного приступа низкая (low).\n",
|
|||
|
"\n",
|
|||
|
"Правило 5: Если часы сна нормальные (normal) и ИМТ нормальный (normal), то вероятность сердечного приступа низкая (low).\n",
|
|||
|
"\n",
|
|||
|
"Правило 6: Если часы сна нормальные (normal) и ИМТ высокий (much), то вероятность сердечного приступа умеренная (moderate).\n",
|
|||
|
"\n",
|
|||
|
"Правило 7: Если часы сна высокие (much) и ИМТ низкий (low), то вероятность сердечного приступа низкая (low).\n",
|
|||
|
"\n",
|
|||
|
"Правило 8: Если часы сна высокие (much) и ИМТ нормальный (normal), то вероятность сердечного приступа низкая (low).\n",
|
|||
|
"\n",
|
|||
|
"Правило 9: Если часы сна высокие (much) и ИМТ высокий (much), то вероятность сердечного приступа умеренная (moderate).\n",
|
|||
|
"\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 7,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"rules = [\n",
|
|||
|
" ctrl.Rule(sleep['low'] & bmi['low'], had_stroke['low']),\n",
|
|||
|
" ctrl.Rule(sleep['low'] & bmi['normal'], had_stroke['moderate']),\n",
|
|||
|
" ctrl.Rule(sleep['low'] & bmi['much'], had_stroke['high']),\n",
|
|||
|
" ctrl.Rule(sleep['normal'] & bmi['low'], had_stroke['low']),\n",
|
|||
|
" ctrl.Rule(sleep['normal'] & bmi['normal'], had_stroke['low']),\n",
|
|||
|
" ctrl.Rule(sleep['normal'] & bmi['much'], had_stroke['moderate']),\n",
|
|||
|
" ctrl.Rule(sleep['much'] & bmi['low'], had_stroke['low']),\n",
|
|||
|
" ctrl.Rule(sleep['much'] & bmi['normal'], had_stroke['low']),\n",
|
|||
|
" ctrl.Rule(sleep['much'] & bmi['much'], had_stroke['moderate']),\n",
|
|||
|
"]"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Создадим нечеткую систему и добавим созданные нечеткие правила в ее базу знаний"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 8,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stderr",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"/home/nspotapov/ulstu/AIM-PIbd-31-Potapov-N-S/lab_7/.venv/lib/python3.12/site-packages/skfuzzy/control/controlsystem.py:135: UserWarning: FigureCanvasAgg is non-interactive, and thus cannot be shown\n",
|
|||
|
" fig.show()\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"image/png": "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
|
|||
|
"text/plain": [
|
|||
|
"<Figure size 640x480 with 1 Axes>"
|
|||
|
]
|
|||
|
},
|
|||
|
"metadata": {},
|
|||
|
"output_type": "display_data"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"# Создание системы управления и добавление правил\n",
|
|||
|
"stroke_ctrl = ctrl.ControlSystem(rules)\n",
|
|||
|
"\n",
|
|||
|
"# Создание симуляции\n",
|
|||
|
"stroke_simulation = ctrl.ControlSystemSimulation(stroke_ctrl)\n",
|
|||
|
"\n",
|
|||
|
"# Теперь можно визуализировать правила\n",
|
|||
|
"stroke_ctrl.view()"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 9,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"=============\n",
|
|||
|
" Antecedents \n",
|
|||
|
"=============\n",
|
|||
|
"Antecedent: SleepHours = 5\n",
|
|||
|
" - low : 0.05555555555555555\n",
|
|||
|
" - normal : 0.5\n",
|
|||
|
" - much : 0.0\n",
|
|||
|
"Antecedent: BMI = 22\n",
|
|||
|
" - low : 0.0\n",
|
|||
|
" - normal : 1.0\n",
|
|||
|
" - much : 0.0\n",
|
|||
|
"\n",
|
|||
|
"=======\n",
|
|||
|
" Rules \n",
|
|||
|
"=======\n",
|
|||
|
"RULE #0:\n",
|
|||
|
" IF SleepHours[low] AND BMI[low] THEN HadStroke[low]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - SleepHours[low] : 0.05555555555555555\n",
|
|||
|
" - BMI[low] : 0.0\n",
|
|||
|
" SleepHours[low] AND BMI[low] = 0.0\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" HadStroke[low] : 0.0\n",
|
|||
|
"\n",
|
|||
|
"RULE #1:\n",
|
|||
|
" IF SleepHours[low] AND BMI[normal] THEN HadStroke[moderate]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - SleepHours[low] : 0.05555555555555555\n",
|
|||
|
" - BMI[normal] : 1.0\n",
|
|||
|
" SleepHours[low] AND BMI[normal] = 0.05555555555555555\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" HadStroke[moderate] : 0.05555555555555555\n",
|
|||
|
"\n",
|
|||
|
"RULE #2:\n",
|
|||
|
" IF SleepHours[low] AND BMI[much] THEN HadStroke[high]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - SleepHours[low] : 0.05555555555555555\n",
|
|||
|
" - BMI[much] : 0.0\n",
|
|||
|
" SleepHours[low] AND BMI[much] = 0.0\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" HadStroke[high] : 0.0\n",
|
|||
|
"\n",
|
|||
|
"RULE #3:\n",
|
|||
|
" IF SleepHours[normal] AND BMI[low] THEN HadStroke[low]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - SleepHours[normal] : 0.5\n",
|
|||
|
" - BMI[low] : 0.0\n",
|
|||
|
" SleepHours[normal] AND BMI[low] = 0.0\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" HadStroke[low] : 0.0\n",
|
|||
|
"\n",
|
|||
|
"RULE #4:\n",
|
|||
|
" IF SleepHours[normal] AND BMI[normal] THEN HadStroke[low]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - SleepHours[normal] : 0.5\n",
|
|||
|
" - BMI[normal] : 1.0\n",
|
|||
|
" SleepHours[normal] AND BMI[normal] = 0.5\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" HadStroke[low] : 0.5\n",
|
|||
|
"\n",
|
|||
|
"RULE #5:\n",
|
|||
|
" IF SleepHours[normal] AND BMI[much] THEN HadStroke[moderate]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - SleepHours[normal] : 0.5\n",
|
|||
|
" - BMI[much] : 0.0\n",
|
|||
|
" SleepHours[normal] AND BMI[much] = 0.0\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" HadStroke[moderate] : 0.0\n",
|
|||
|
"\n",
|
|||
|
"RULE #6:\n",
|
|||
|
" IF SleepHours[much] AND BMI[low] THEN HadStroke[low]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - SleepHours[much] : 0.0\n",
|
|||
|
" - BMI[low] : 0.0\n",
|
|||
|
" SleepHours[much] AND BMI[low] = 0.0\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" HadStroke[low] : 0.0\n",
|
|||
|
"\n",
|
|||
|
"RULE #7:\n",
|
|||
|
" IF SleepHours[much] AND BMI[normal] THEN HadStroke[low]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - SleepHours[much] : 0.0\n",
|
|||
|
" - BMI[normal] : 1.0\n",
|
|||
|
" SleepHours[much] AND BMI[normal] = 0.0\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" HadStroke[low] : 0.0\n",
|
|||
|
"\n",
|
|||
|
"RULE #8:\n",
|
|||
|
" IF SleepHours[much] AND BMI[much] THEN HadStroke[moderate]\n",
|
|||
|
"\tAND aggregation function : fmin\n",
|
|||
|
"\tOR aggregation function : fmax\n",
|
|||
|
"\n",
|
|||
|
" Aggregation (IF-clause):\n",
|
|||
|
" - SleepHours[much] : 0.0\n",
|
|||
|
" - BMI[much] : 0.0\n",
|
|||
|
" SleepHours[much] AND BMI[much] = 0.0\n",
|
|||
|
" Activation (THEN-clause):\n",
|
|||
|
" HadStroke[moderate] : 0.0\n",
|
|||
|
"\n",
|
|||
|
"\n",
|
|||
|
"==============================\n",
|
|||
|
" Intermediaries and Conquests \n",
|
|||
|
"==============================\n",
|
|||
|
"Consequent: HadStroke = 0.032127197249789186\n",
|
|||
|
" low:\n",
|
|||
|
" Accumulate using accumulation_max : 0.5\n",
|
|||
|
" moderate:\n",
|
|||
|
" Accumulate using accumulation_max : 0.05555555555555555\n",
|
|||
|
" high:\n",
|
|||
|
" Accumulate using accumulation_max : 0.0\n",
|
|||
|
" very_high:\n",
|
|||
|
" Accumulate using accumulation_max : None\n",
|
|||
|
"\n",
|
|||
|
"0.032127197249789186\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"stroke_simulation.input['SleepHours'] = 5 # Пример входного значения\n",
|
|||
|
"stroke_simulation.input['BMI'] = 22 # Пример входного значения\n",
|
|||
|
"stroke_simulation.compute()\n",
|
|||
|
"stroke_simulation.print_state()\n",
|
|||
|
"stroke_p = stroke_simulation.output['HadStroke']\n",
|
|||
|
"print(stroke_p)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Визуализация функции принадлежности для выходной переменной had_stroke\n",
|
|||
|
"\n",
|
|||
|
"Функция получена в процессе аккумуляции и используется для дефаззификации значения выходной переменной had_stroke"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 10,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"image/png": "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
|
|||
|
"text/plain": [
|
|||
|
"<Figure size 640x480 with 1 Axes>"
|
|||
|
]
|
|||
|
},
|
|||
|
"metadata": {},
|
|||
|
"output_type": "display_data"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"had_stroke.view(sim=stroke_simulation)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Сравним результаты работы системы с реальными данными"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 11,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"def fuzzy_pred(row):\n",
|
|||
|
" stroke_simulation.input[\"SleepHours\"] = row[\"SleepHours\"]\n",
|
|||
|
" stroke_simulation.input[\"BMI\"] = row[\"BMI\"]\n",
|
|||
|
" stroke_simulation.compute()\n",
|
|||
|
" return stroke_simulation.output[\"HadStroke\"]"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 16,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"text/html": [
|
|||
|
"<div>\n",
|
|||
|
"<style scoped>\n",
|
|||
|
" .dataframe tbody tr th:only-of-type {\n",
|
|||
|
" vertical-align: middle;\n",
|
|||
|
" }\n",
|
|||
|
"\n",
|
|||
|
" .dataframe tbody tr th {\n",
|
|||
|
" vertical-align: top;\n",
|
|||
|
" }\n",
|
|||
|
"\n",
|
|||
|
" .dataframe thead th {\n",
|
|||
|
" text-align: right;\n",
|
|||
|
" }\n",
|
|||
|
"</style>\n",
|
|||
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|||
|
" <thead>\n",
|
|||
|
" <tr style=\"text-align: right;\">\n",
|
|||
|
" <th></th>\n",
|
|||
|
" <th>SleepHours</th>\n",
|
|||
|
" <th>BMI</th>\n",
|
|||
|
" <th>HadStroke</th>\n",
|
|||
|
" <th>HadStrokePredicted</th>\n",
|
|||
|
" </tr>\n",
|
|||
|
" </thead>\n",
|
|||
|
" <tbody>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>231476</th>\n",
|
|||
|
" <td>8.0</td>\n",
|
|||
|
" <td>23.03</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.003333</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>236378</th>\n",
|
|||
|
" <td>8.0</td>\n",
|
|||
|
" <td>30.68</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.047222</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>109247</th>\n",
|
|||
|
" <td>5.0</td>\n",
|
|||
|
" <td>33.82</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.057174</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>69198</th>\n",
|
|||
|
" <td>8.0</td>\n",
|
|||
|
" <td>24.39</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.003333</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>133337</th>\n",
|
|||
|
" <td>7.0</td>\n",
|
|||
|
" <td>24.84</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.003333</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>...</th>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>93935</th>\n",
|
|||
|
" <td>7.0</td>\n",
|
|||
|
" <td>24.03</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.003333</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>218410</th>\n",
|
|||
|
" <td>9.0</td>\n",
|
|||
|
" <td>31.32</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.046591</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>100042</th>\n",
|
|||
|
" <td>6.0</td>\n",
|
|||
|
" <td>30.41</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.047472</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>58400</th>\n",
|
|||
|
" <td>8.0</td>\n",
|
|||
|
" <td>31.01</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.046903</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>35904</th>\n",
|
|||
|
" <td>6.0</td>\n",
|
|||
|
" <td>20.94</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.003333</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" </tbody>\n",
|
|||
|
"</table>\n",
|
|||
|
"<p>2460 rows × 4 columns</p>\n",
|
|||
|
"</div>"
|
|||
|
],
|
|||
|
"text/plain": [
|
|||
|
" SleepHours BMI HadStroke HadStrokePredicted\n",
|
|||
|
"231476 8.0 23.03 0 0.003333\n",
|
|||
|
"236378 8.0 30.68 0 0.047222\n",
|
|||
|
"109247 5.0 33.82 0 0.057174\n",
|
|||
|
"69198 8.0 24.39 0 0.003333\n",
|
|||
|
"133337 7.0 24.84 0 0.003333\n",
|
|||
|
"... ... ... ... ...\n",
|
|||
|
"93935 7.0 24.03 0 0.003333\n",
|
|||
|
"218410 9.0 31.32 0 0.046591\n",
|
|||
|
"100042 6.0 30.41 0 0.047472\n",
|
|||
|
"58400 8.0 31.01 0 0.046903\n",
|
|||
|
"35904 6.0 20.94 0 0.003333\n",
|
|||
|
"\n",
|
|||
|
"[2460 rows x 4 columns]"
|
|||
|
]
|
|||
|
},
|
|||
|
"execution_count": 16,
|
|||
|
"metadata": {},
|
|||
|
"output_type": "execute_result"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"result = df.copy()\n",
|
|||
|
"result = result.sample(frac=0.01)\n",
|
|||
|
"result[\"HadStrokePredicted\"] = result.apply(fuzzy_pred, axis=1)\n",
|
|||
|
"result[\"HadStroke\"] = result.apply(lambda x: 1 if x[\"HadStroke\"] == 'Yes' else 0, axis=1)\n",
|
|||
|
"result.loc[:, [\"SleepHours\", \"BMI\", \"HadStroke\", \"HadStrokePredicted\"]]"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Оценим эти результаты с помощью метрик для задачи регрессии"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 20,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"text/plain": [
|
|||
|
"{'RMSE': 0.1888734235934381,\n",
|
|||
|
" 'RMAE': 0.251645328415333,\n",
|
|||
|
" 'R2': -0.0013951099998465999}"
|
|||
|
]
|
|||
|
},
|
|||
|
"execution_count": 20,
|
|||
|
"metadata": {},
|
|||
|
"output_type": "execute_result"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"import math\n",
|
|||
|
"from sklearn import metrics\n",
|
|||
|
"\n",
|
|||
|
"rmetrics = {}\n",
|
|||
|
"rmetrics[\"RMSE\"] = math.sqrt(\n",
|
|||
|
" metrics.mean_squared_error(result[\"HadStroke\"], result[\"HadStrokePredicted\"])\n",
|
|||
|
")\n",
|
|||
|
"rmetrics[\"RMAE\"] = math.sqrt(\n",
|
|||
|
" metrics.mean_absolute_error(result[\"HadStroke\"], result[\"HadStrokePredicted\"])\n",
|
|||
|
")\n",
|
|||
|
"rmetrics[\"R2\"] = metrics.r2_score(\n",
|
|||
|
" result[\"HadStroke\"], result[\"HadStrokePredicted\"]\n",
|
|||
|
")\n",
|
|||
|
"\n",
|
|||
|
"rmetrics"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Вывод\n",
|
|||
|
"\n",
|
|||
|
"Значение RMSE=0.1889 может считаться относительно небольшим, но его интерпретация зависит от масштаба данных. Если целевая переменная (например, вероятность сердечного приступа) находится в диапазоне от 0 до 1, то ошибка в 0.1889 может быть значительной.\n",
|
|||
|
"\n",
|
|||
|
"Значение RMAE=0.2516 также указывает на значительные ошибки в предсказаниях. Это подтверждает, что модель плохо справляется с задачей.\n",
|
|||
|
"\n",
|
|||
|
"Отрицательное значение R² (-0.0014) указывает на то, что модель работает хуже, чем простое предсказание среднего значения целевой переменной. Это явный признак того, что модель не подходит для данных.\n",
|
|||
|
"\n",
|
|||
|
"Заключение\n",
|
|||
|
"\n",
|
|||
|
"Исходя из оценок, модель неэффективна для предсказания сердечного приступа на основе выбранных признаков. Необходимо пересмотреть подход к построению модели, улучшить данные и, возможно, использовать более подходящие методы машинного обучения."
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"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.3"
|
|||
|
}
|
|||
|
},
|
|||
|
"nbformat": 4,
|
|||
|
"nbformat_minor": 2
|
|||
|
}
|