906 lines
257 KiB
Plaintext
Raw Permalink Normal View History

2025-02-14 21:20:27 +04:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Лабораторная 7"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Информация о диабете индейцев Пима"
]
},
{
"cell_type": "code",
2025-02-15 09:08:52 +04:00
"execution_count": 7,
2025-02-14 21:20:27 +04:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Index(['Pregnancies', 'Glucose', 'BloodPressure', 'SkinThickness', 'Insulin',\n",
" 'BMI', 'DiabetesPedigreeFunction', 'Age', 'Outcome'],\n",
" dtype='object')\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>Pregnancies</th>\n",
" <th>Glucose</th>\n",
" <th>BloodPressure</th>\n",
" <th>SkinThickness</th>\n",
" <th>Insulin</th>\n",
" <th>BMI</th>\n",
" <th>DiabetesPedigreeFunction</th>\n",
" <th>Age</th>\n",
" <th>Outcome</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>6</td>\n",
" <td>148</td>\n",
" <td>72</td>\n",
" <td>35</td>\n",
" <td>0</td>\n",
" <td>33.6</td>\n",
" <td>0.627</td>\n",
" <td>50</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>85</td>\n",
" <td>66</td>\n",
" <td>29</td>\n",
" <td>0</td>\n",
" <td>26.6</td>\n",
" <td>0.351</td>\n",
" <td>31</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>8</td>\n",
" <td>183</td>\n",
" <td>64</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>23.3</td>\n",
" <td>0.672</td>\n",
" <td>32</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>89</td>\n",
" <td>66</td>\n",
" <td>23</td>\n",
" <td>94</td>\n",
" <td>28.1</td>\n",
" <td>0.167</td>\n",
" <td>21</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0</td>\n",
" <td>137</td>\n",
" <td>40</td>\n",
" <td>35</td>\n",
" <td>168</td>\n",
" <td>43.1</td>\n",
" <td>2.288</td>\n",
" <td>33</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>763</th>\n",
" <td>10</td>\n",
" <td>101</td>\n",
" <td>76</td>\n",
" <td>48</td>\n",
" <td>180</td>\n",
" <td>32.9</td>\n",
" <td>0.171</td>\n",
" <td>63</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>764</th>\n",
" <td>2</td>\n",
" <td>122</td>\n",
" <td>70</td>\n",
" <td>27</td>\n",
" <td>0</td>\n",
" <td>36.8</td>\n",
" <td>0.340</td>\n",
" <td>27</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>765</th>\n",
" <td>5</td>\n",
" <td>121</td>\n",
" <td>72</td>\n",
" <td>23</td>\n",
" <td>112</td>\n",
" <td>26.2</td>\n",
" <td>0.245</td>\n",
" <td>30</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>766</th>\n",
" <td>1</td>\n",
" <td>126</td>\n",
" <td>60</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>30.1</td>\n",
" <td>0.349</td>\n",
" <td>47</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>767</th>\n",
" <td>1</td>\n",
" <td>93</td>\n",
" <td>70</td>\n",
" <td>31</td>\n",
" <td>0</td>\n",
" <td>30.4</td>\n",
" <td>0.315</td>\n",
" <td>23</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>768 rows × 9 columns</p>\n",
"</div>"
],
"text/plain": [
" Pregnancies Glucose BloodPressure SkinThickness Insulin BMI \\\n",
"0 6 148 72 35 0 33.6 \n",
"1 1 85 66 29 0 26.6 \n",
"2 8 183 64 0 0 23.3 \n",
"3 1 89 66 23 94 28.1 \n",
"4 0 137 40 35 168 43.1 \n",
".. ... ... ... ... ... ... \n",
"763 10 101 76 48 180 32.9 \n",
"764 2 122 70 27 0 36.8 \n",
"765 5 121 72 23 112 26.2 \n",
"766 1 126 60 0 0 30.1 \n",
"767 1 93 70 31 0 30.4 \n",
"\n",
" DiabetesPedigreeFunction Age Outcome \n",
"0 0.627 50 1 \n",
"1 0.351 31 0 \n",
"2 0.672 32 1 \n",
"3 0.167 21 0 \n",
"4 2.288 33 1 \n",
".. ... ... ... \n",
"763 0.171 63 0 \n",
"764 0.340 27 0 \n",
"765 0.245 30 0 \n",
"766 0.349 47 1 \n",
"767 0.315 23 0 \n",
"\n",
"[768 rows x 9 columns]"
]
},
2025-02-15 09:08:52 +04:00
"execution_count": 7,
2025-02-14 21:20:27 +04:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import skfuzzy as fuzz\n",
2025-02-15 09:08:52 +04:00
"import matplotlib.pyplot as plt\n",
2025-02-14 21:20:27 +04:00
"from skfuzzy import control as ctrl\n",
"\n",
"df = pd.read_csv(\".//scv//diabetes.csv\")\n",
"print(df.columns)\n",
"df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Создаем лингвистические переменные"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2025-02-15 09:06:16 +04:00
"Входные: age(возраст) и bmi(ИМТ)\n",
2025-02-14 21:20:27 +04:00
"\n",
"Выходные: glucose(давление)"
]
},
{
"cell_type": "code",
2025-02-15 09:08:52 +04:00
"execution_count": 8,
2025-02-14 21:20:27 +04:00
"metadata": {},
"outputs": [],
"source": [
2025-02-15 09:06:16 +04:00
"age = ctrl.Antecedent(np.arange(df[\"Age\"].min(), df[\"Age\"].max() + 1, 1), \"age\")\n",
2025-02-14 21:20:27 +04:00
"bmi = ctrl.Antecedent(np.arange(df[\"BMI\"].min(), df[\"BMI\"].max() + 0.1, 0.1), \"bmi\")\n",
"glucose = ctrl.Consequent(np.arange(df[\"Glucose\"].min(), df[\"Glucose\"].max() + 0.1, 0.1), \"glucose\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Настраиваем их"
]
},
{
"cell_type": "code",
2025-02-15 09:08:52 +04:00
"execution_count": 15,
2025-02-14 21:20:27 +04:00
"metadata": {},
"outputs": [
{
2025-02-15 09:08:52 +04:00
"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"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
2025-02-14 21:20:27 +04:00
}
],
"source": [
2025-02-15 09:08:52 +04:00
"age[\"young\"] = fuzz.zmf(age.universe, 20, 30)\n",
2025-02-15 09:06:16 +04:00
"age[\"middle-aged\"] = fuzz.trapmf(age.universe, [18, 30, 45, 60])\n",
"age[\"old\"] = fuzz.smf(age.universe, 45, 85)\n",
"age.view()\n",
2025-02-15 09:08:52 +04:00
"\n",
2025-02-14 21:20:27 +04:00
"\n",
"bmi[\"low\"] = fuzz.zmf(bmi.universe, 12, 18)\n",
"bmi[\"normal\"] = fuzz.trapmf(bmi.universe, [16, 19, 24, 27])\n",
"bmi[\"high\"] = fuzz.smf(bmi.universe, 25, 27)\n",
"bmi.view()\n",
"\n",
"glucose[\"low\"] = fuzz.zmf(glucose.universe, 0, 80)\n",
"glucose[\"normal\"] = fuzz.trapmf(glucose.universe, [70, 80, 90, 100])\n",
"glucose[\"high\"] = fuzz.smf(glucose.universe, 90, 180)\n",
"glucose.view()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"База нечетких правил:"
]
},
{
"cell_type": "code",
2025-02-15 09:06:16 +04:00
"execution_count": null,
2025-02-14 21:20:27 +04:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(<Figure size 640x480 with 1 Axes>, <Axes: >)"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import skfuzzy as fuzz\n",
"from skfuzzy import control as ctrl\n",
"\n",
2025-02-15 09:06:16 +04:00
"rule1 = ctrl.Rule(age[\"young\"] & bmi[\"low\"], glucose[\"low\"])\n",
"rule2 = ctrl.Rule(age[\"young\"] & bmi[\"normal\"], glucose[\"normal\"])\n",
"rule3 = ctrl.Rule(age[\"young\"] & bmi[\"high\"], glucose[\"normal\"])\n",
2025-02-14 21:20:27 +04:00
"\n",
2025-02-15 09:06:16 +04:00
"rule4 = ctrl.Rule(age[\"middle-aged\"] & bmi[\"low\"], glucose[\"normal\"])\n",
"rule5 = ctrl.Rule(age[\"middle-aged\"] & bmi[\"normal\"], glucose[\"normal\"])\n",
"rule6 = ctrl.Rule(age[\"middle-aged\"] & bmi[\"high\"], glucose[\"high\"])\n",
2025-02-14 21:20:27 +04:00
"\n",
2025-02-15 09:06:16 +04:00
"rule7 = ctrl.Rule(age[\"old\"] & bmi[\"low\"], glucose[\"low\"])\n",
"rule8 = ctrl.Rule(age[\"old\"] & bmi[\"normal\"], glucose[\"normal\"])\n",
"rule9 = ctrl.Rule(age[\"old\"] & bmi[\"high\"], glucose[\"high\"])\n",
2025-02-14 21:20:27 +04:00
"\n",
"rule1.view()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Создание нечеткой системы и добавление нечетких правил в базу знаний нечеткой системы"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"d:\\5_semester\\AIM\\rep\\AIM-PIbd-31-Razubaev-S-M\\.venv\\Lib\\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": [
"glucose_ctrl = ctrl.ControlSystem(\n",
" [\n",
" rule1,\n",
" rule2,\n",
" rule3,\n",
" rule4,\n",
" rule5,\n",
" rule6,\n",
" rule7,\n",
" rule8,\n",
" rule9,\n",
" ]\n",
")\n",
"\n",
"glucose_simulation = ctrl.ControlSystemSimulation(glucose_ctrl)\n",
"\n",
"glucose_ctrl.view()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Проверка расчета выходной переменной"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"=============\n",
" Antecedents \n",
"=============\n",
"Antecedent: age = 31\n",
" - young : 0.0\n",
" - middle-aged : 1.0\n",
" - old : 0.0\n",
"Antecedent: bmi = 25\n",
" - low : 0.0\n",
" - normal : 0.6666666666666666\n",
" - high : 0.0\n",
"\n",
"=======\n",
" Rules \n",
"=======\n",
"RULE #0:\n",
" IF age[young] AND bmi[low] THEN glucose[low]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - age[young] : 0.0\n",
" - bmi[low] : 0.0\n",
" age[young] AND bmi[low] = 0.0\n",
" Activation (THEN-clause):\n",
" glucose[low] : 0.0\n",
"\n",
"RULE #1:\n",
" IF age[young] AND bmi[normal] THEN glucose[normal]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - age[young] : 0.0\n",
" - bmi[normal] : 0.6666666666666666\n",
" age[young] AND bmi[normal] = 0.0\n",
" Activation (THEN-clause):\n",
" glucose[normal] : 0.0\n",
"\n",
"RULE #2:\n",
" IF age[young] AND bmi[high] THEN glucose[normal]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - age[young] : 0.0\n",
" - bmi[high] : 0.0\n",
" age[young] AND bmi[high] = 0.0\n",
" Activation (THEN-clause):\n",
" glucose[normal] : 0.0\n",
"\n",
"RULE #3:\n",
" IF age[middle-aged] AND bmi[low] THEN glucose[normal]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - age[middle-aged] : 1.0\n",
" - bmi[low] : 0.0\n",
" age[middle-aged] AND bmi[low] = 0.0\n",
" Activation (THEN-clause):\n",
" glucose[normal] : 0.0\n",
"\n",
"RULE #4:\n",
" IF age[middle-aged] AND bmi[normal] THEN glucose[normal]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - age[middle-aged] : 1.0\n",
" - bmi[normal] : 0.6666666666666666\n",
" age[middle-aged] AND bmi[normal] = 0.6666666666666666\n",
" Activation (THEN-clause):\n",
" glucose[normal] : 0.6666666666666666\n",
"\n",
"RULE #5:\n",
" IF age[middle-aged] AND bmi[high] THEN glucose[high]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - age[middle-aged] : 1.0\n",
" - bmi[high] : 0.0\n",
" age[middle-aged] AND bmi[high] = 0.0\n",
" Activation (THEN-clause):\n",
" glucose[high] : 0.0\n",
"\n",
"RULE #6:\n",
" IF age[old] AND bmi[low] THEN glucose[low]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - age[old] : 0.0\n",
" - bmi[low] : 0.0\n",
" age[old] AND bmi[low] = 0.0\n",
" Activation (THEN-clause):\n",
" glucose[low] : 0.0\n",
"\n",
"RULE #7:\n",
" IF age[old] AND bmi[normal] THEN glucose[normal]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - age[old] : 0.0\n",
" - bmi[normal] : 0.6666666666666666\n",
" age[old] AND bmi[normal] = 0.0\n",
" Activation (THEN-clause):\n",
" glucose[normal] : 0.0\n",
"\n",
"RULE #8:\n",
" IF age[old] AND bmi[high] THEN glucose[high]\n",
"\tAND aggregation function : fmin\n",
"\tOR aggregation function : fmax\n",
"\n",
" Aggregation (IF-clause):\n",
" - age[old] : 0.0\n",
" - bmi[high] : 0.0\n",
" age[old] AND bmi[high] = 0.0\n",
" Activation (THEN-clause):\n",
" glucose[high] : 0.0\n",
"\n",
"\n",
"==============================\n",
" Intermediaries and Conquests \n",
"==============================\n",
"Consequent: glucose = 85.00000000000001\n",
" low:\n",
" Accumulate using accumulation_max : 0.0\n",
" normal:\n",
" Accumulate using accumulation_max : 0.6666666666666666\n",
" high:\n",
" Accumulate using accumulation_max : 0.0\n",
"\n"
]
},
{
"data": {
"text/plain": [
"np.float64(85.00000000000001)"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"glucose_simulation.input[\"age\"] = 31\n",
"glucose_simulation.input[\"bmi\"] = 25\n",
"glucose_simulation.compute()\n",
"\n",
"glucose_simulation.print_state()\n",
"glucose_simulation.output[\"glucose\"]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Визуализации функции принадлежности"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"d:\\5_semester\\AIM\\rep\\AIM-PIbd-31-Razubaev-S-M\\.venv\\Lib\\site-packages\\skfuzzy\\control\\fuzzyvariable.py:125: 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": [
"glucose.view(sim=glucose_simulation)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Оценка качества"
]
},
{
"cell_type": "code",
"execution_count": 25,
"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>Age</th>\n",
" <th>BMI</th>\n",
" <th>Glucose</th>\n",
" <th>glucose_pred</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>115</th>\n",
" <td>61</td>\n",
" <td>31.2</td>\n",
" <td>146</td>\n",
" <td>156.076444</td>\n",
" </tr>\n",
" <tr>\n",
" <th>116</th>\n",
" <td>38</td>\n",
" <td>34.0</td>\n",
" <td>124</td>\n",
" <td>164.363268</td>\n",
" </tr>\n",
" <tr>\n",
" <th>117</th>\n",
" <td>25</td>\n",
" <td>33.7</td>\n",
" <td>78</td>\n",
" <td>155.611863</td>\n",
" </tr>\n",
" <tr>\n",
" <th>118</th>\n",
" <td>22</td>\n",
" <td>28.2</td>\n",
" <td>97</td>\n",
" <td>142.749562</td>\n",
" </tr>\n",
" <tr>\n",
" <th>119</th>\n",
" <td>21</td>\n",
" <td>23.2</td>\n",
" <td>99</td>\n",
" <td>85.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>120</th>\n",
" <td>25</td>\n",
" <td>53.2</td>\n",
" <td>162</td>\n",
" <td>155.611863</td>\n",
" </tr>\n",
" <tr>\n",
" <th>121</th>\n",
" <td>24</td>\n",
" <td>34.2</td>\n",
" <td>111</td>\n",
" <td>152.260658</td>\n",
" </tr>\n",
" <tr>\n",
" <th>122</th>\n",
" <td>23</td>\n",
" <td>33.6</td>\n",
" <td>107</td>\n",
" <td>148.066203</td>\n",
" </tr>\n",
" <tr>\n",
" <th>123</th>\n",
" <td>69</td>\n",
" <td>26.8</td>\n",
" <td>132</td>\n",
" <td>158.239802</td>\n",
" </tr>\n",
" <tr>\n",
" <th>124</th>\n",
" <td>23</td>\n",
" <td>33.3</td>\n",
" <td>113</td>\n",
" <td>148.066203</td>\n",
" </tr>\n",
" <tr>\n",
" <th>125</th>\n",
" <td>26</td>\n",
" <td>55.0</td>\n",
" <td>88</td>\n",
" <td>158.305050</td>\n",
" </tr>\n",
" <tr>\n",
" <th>126</th>\n",
" <td>30</td>\n",
" <td>42.9</td>\n",
" <td>120</td>\n",
" <td>164.363268</td>\n",
" </tr>\n",
" <tr>\n",
" <th>127</th>\n",
" <td>23</td>\n",
" <td>33.3</td>\n",
" <td>118</td>\n",
" <td>148.066203</td>\n",
" </tr>\n",
" <tr>\n",
" <th>128</th>\n",
" <td>40</td>\n",
" <td>34.5</td>\n",
" <td>117</td>\n",
" <td>164.363268</td>\n",
" </tr>\n",
" <tr>\n",
" <th>129</th>\n",
" <td>62</td>\n",
" <td>27.9</td>\n",
" <td>105</td>\n",
" <td>156.763261</td>\n",
" </tr>\n",
" <tr>\n",
" <th>130</th>\n",
" <td>33</td>\n",
" <td>29.7</td>\n",
" <td>173</td>\n",
" <td>164.363268</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Age BMI Glucose glucose_pred\n",
"115 61 31.2 146 156.076444\n",
"116 38 34.0 124 164.363268\n",
"117 25 33.7 78 155.611863\n",
"118 22 28.2 97 142.749562\n",
"119 21 23.2 99 85.000000\n",
"120 25 53.2 162 155.611863\n",
"121 24 34.2 111 152.260658\n",
"122 23 33.6 107 148.066203\n",
"123 69 26.8 132 158.239802\n",
"124 23 33.3 113 148.066203\n",
"125 26 55.0 88 158.305050\n",
"126 30 42.9 120 164.363268\n",
"127 23 33.3 118 148.066203\n",
"128 40 34.5 117 164.363268\n",
"129 62 27.9 105 156.763261\n",
"130 33 29.7 173 164.363268"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def fuzzy_pred(row):\n",
" glucose_simulation.input[\"age\"] = row[\"Age\"]\n",
" glucose_simulation.input[\"bmi\"] = row[\"BMI\"]\n",
" glucose_simulation.compute()\n",
" return glucose_simulation.output[\"glucose\"]\n",
"\n",
"result = df.copy()\n",
"\n",
"result[\"glucose_pred\"] = result.apply(fuzzy_pred, axis=1)\n",
"\n",
"result.loc[115:130, [\"Age\", \"BMI\", \"Glucose\", \"glucose_pred\"]]"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'RMSE': 44.436073098835, 'RMAE': 6.078634343122391, 'R2': -0.9341083419845992}"
]
},
"execution_count": 29,
"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[\"Glucose\"], result[\"glucose_pred\"])\n",
")\n",
"rmetrics[\"RMAE\"] = math.sqrt(\n",
" metrics.mean_absolute_error(result[\"Glucose\"], result[\"glucose_pred\"])\n",
")\n",
"rmetrics[\"R2\"] = metrics.r2_score(\n",
" result[\"Glucose\"], result[\"glucose_pred\"]\n",
")\n",
"rmetrics"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Вывод: данные прогнозируются с низкой точностью и допускается множество ошибок"
]
}
],
"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.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}