338 lines
297 KiB
Plaintext
Raw Normal View History

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p style=\"margin: 15px;\">\n",
"\n",
"\n",
"<ul>\n",
"<li>Выбрать входные и выходные переменные.</li>\n",
"<li>Выполнить настройку параметров лингвистических переменных: определить\n",
"количество термов, типов и параметров функций принадлежности</li>\n",
"<li>Сформировать базу нечетких правил.</li>\n",
"<li>Выполнить оценку качества полученной нечеткой системы</li>\n",
"</ul>\n",
"</p>\n"
]
},
{
"cell_type": "code",
2025-02-26 22:41:13 +04:00
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import skfuzzy.control as control\n",
"import skfuzzy as fuzzy\n",
"import numpy as np\n",
"\n",
"\n",
"# считаем данные и поределим входные и выходные переменные\n",
"data = pd.read_csv(\"./csv/option4.csv\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p style=\"margin: 15px;\">\n",
"Так как мы предсказываем инсульт, то входными переменными будут самые, пожалуй, важные критерии - возраст, уровень сахара в крови, ИМТ, гипертония (ее наличие/отсутствие) и сердечный приступ (тоже его наличие/отсутствие)<br><br>а вот ВЫходной переменной будет, естесственно, сам инсульт (наличие/отсутствие)\n",
"</p>\n"
]
},
{
"cell_type": "code",
2025-02-26 22:41:13 +04:00
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"age = control.Antecedent(np.arange(0, 101, 1), 'age') # возраст от 0 до 100 с шагом 1 год и т.д.\n",
"glucose = control.Antecedent(np.arange(50, 301, 1), 'glucose')\n",
"bmi = control.Antecedent(np.arange(10, 50, 0.1), 'bmi')\n",
"hypertension = control.Antecedent(np.arange(0, 2, 1), 'hypertension')\n",
"heart_disease = control.Antecedent(np.arange(0, 2, 1), 'heart_disease')\n",
"\n",
"# а теперь выходная переменная (Consequent)\n",
"stroke_risk = control.Consequent(np.arange(0, 1.1, 0.1), 'stroke_risk')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p style=\"margin: 15px; text-align: center;\">\n",
"НАКОНЕЦ Я УСТАНОВИЛА ВСЕ ПАКЕТЫ етить его\n",
"</p>\n",
"\n",
"<p style=\"margin: 15px;\">\n",
"теперь самое время определить нечеткие переменные, которые сложатся... в лингвистические\n",
"</p>\n"
]
},
{
"cell_type": "code",
2025-02-26 22:41:13 +04:00
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"d:\\code\\mai\\labs\\AIM-PIbd-31-Bakalskaya-E-D\\lab_7\\.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"
},
{
"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"
},
{
"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 matplotlib.pyplot as plt\n",
"\n",
"# возраст\n",
"age['young'] = fuzzy.zmf(age.universe, 0, 30)\n",
"age['middle'] = fuzzy.trapmf(age.universe, [18, 20, 30, 40])\n",
"age['old'] = fuzzy.trapmf(age.universe, [40, 50, 60, 70])\n",
"age['aged'] = fuzzy.smf(age.universe, 60, 100) \n",
"\n",
"# сахар\n",
"glucose['low'] = fuzzy.zmf(glucose.universe, 50, 80)\n",
"glucose['normal'] = fuzzy.trapmf(glucose.universe, [70, 80, 90, 100])\n",
"glucose['hight'] = fuzzy.smf(glucose.universe, 100, 300)\n",
"\n",
"# ИМТ\n",
"bmi['low'] = fuzzy.zmf(bmi.universe, 0, 19)\n",
"bmi['normal'] = fuzzy.trimf(bmi.universe, [18, 20, 25])\n",
"bmi['hight'] = fuzzy.smf(bmi.universe, 25, 50)\n",
"\n",
"# гипертония\n",
"hypertension['low'] = fuzzy.zmf(hypertension.universe, 0, 0.6)\n",
"hypertension['high'] = fuzzy.smf(hypertension.universe, 0.4, 1.0)\n",
"\n",
"# пердечный сриступ\n",
"heart_disease['low'] = fuzzy.zmf(heart_disease.universe, 0, 0.6)\n",
"heart_disease['high'] = fuzzy.smf(heart_disease.universe, 0.4, 1.0)\n",
"\n",
"#риск инсульта\n",
"stroke_risk['low'] = fuzzy.zmf(stroke_risk.universe, 0, 0.4)\n",
"stroke_risk['medium'] = fuzzy.trimf(stroke_risk.universe, [0.3, 0.5, 0.7])\n",
"stroke_risk['high'] = fuzzy.smf(stroke_risk.universe, 0.6, 1.0)\n",
"\n",
"\n",
"age.view()\n",
"glucose.view()\n",
"bmi.view()\n",
"hypertension.view()\n",
"heart_disease.view()\n",
"stroke_risk.view()\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p style=\"margin: 15px;\">\n",
"а теперь формируем базу нечетких правил :D\n",
"</p>\n",
"\n",
"\n",
"<style>\n",
" .blur-text {\n",
" filter: blur(3px);\n",
" transition: filter 0.3s ease-in-out;\n",
" cursor: pointer;\n",
" }\n",
"\n",
" .blur-text.clear {\n",
" filter: blur(0);\n",
" }\n",
"</style>\n",
"\n",
"<p class=\"blur-text\" onclick=\"this.classList.toggle('clear')\" style=\"margin: 15px;\">\n",
" ну.... с написанием правил мне чат гпт помог, я не медик, поэтому... спасибо чату\n",
"</p>"
]
},
{
"cell_type": "code",
2025-02-26 22:41:13 +04:00
"execution_count": 4,
"metadata": {},
2025-02-26 22:41:13 +04:00
"outputs": [],
"source": [
"rule1 = control.Rule(age['aged'] & hypertension['high'], stroke_risk['high'])\n",
"rule2 = control.Rule(age['old'] & hypertension['high'], stroke_risk['high'])\n",
"rule3 = control.Rule(age['middle'] & hypertension['high'] & glucose['hight'], stroke_risk['high'])\n",
"rule4 = control.Rule(age['middle'] & hypertension['high'] & glucose['normal'], stroke_risk['medium'])\n",
"rule5 = control.Rule(age['young'] & hypertension['high'] & glucose['low'], stroke_risk['medium'])\n",
"rule6 = control.Rule(age['young'] & hypertension['low'] & glucose['normal'], stroke_risk['low'])\n",
"rule7 = control.Rule(age['aged'] & glucose['hight'] & bmi['hight'], stroke_risk['high'])\n",
"rule8 = control.Rule(age['old'] & glucose['normal'] & bmi['hight'], stroke_risk['medium'])\n",
"rule9 = control.Rule(age['old'] & glucose['low'] & bmi['low'], stroke_risk['low'])\n",
"rule10 = control.Rule(age['middle'] & bmi['hight'] & glucose['hight'], stroke_risk['high'])\n",
"rule11 = control.Rule(age['young'] & bmi['hight'] & glucose['hight'], stroke_risk['medium'])\n",
"rule12 = control.Rule(age['young'] & bmi['normal'] & glucose['normal'], stroke_risk['low'])\n",
"rule13 = control.Rule(age['aged'] & heart_disease['high'], stroke_risk['high'])\n",
"rule14 = control.Rule(age['old'] & heart_disease['high'], stroke_risk['high'])\n",
"rule15 = control.Rule(age['middle'] & heart_disease['high'], stroke_risk['medium'])\n",
"rule16 = control.Rule(age['young'] & heart_disease['high'], stroke_risk['medium'])\n",
"rule17 = control.Rule(age['aged'] & hypertension['high'] & glucose['hight'] & bmi['hight'], stroke_risk['high'])\n",
"rule18 = control.Rule(age['middle'] & hypertension['low'] & glucose['low'] & bmi['low'], stroke_risk['low'])\n",
"rule19 = control.Rule(heart_disease['high'] & glucose['hight'] & bmi['hight'], stroke_risk['high'])\n",
"rule20 = control.Rule(heart_disease['low'] & glucose['normal'] & bmi['normal'], stroke_risk['low'])\n"
]
},
{
"cell_type": "code",
2025-02-26 22:41:13 +04:00
"execution_count": 6,
"metadata": {},
"outputs": [
{
2025-02-26 22:41:13 +04:00
"name": "stderr",
"output_type": "stream",
"text": [
"d:\\code\\mai\\labs\\AIM-PIbd-31-Bakalskaya-E-D\\lab_7\\.venv\\Lib\\site-packages\\skfuzzy\\control\\controlsystem.py:135: UserWarning: FigureCanvasAgg is non-interactive, and thus cannot be shown\n",
" fig.show()\n"
]
},
{
"data": {
2025-02-26 22:41:13 +04:00
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"stroke_ctrl = control.ControlSystem([\n",
" rule1, \n",
" rule2, \n",
" rule3,\n",
" rule4,\n",
" rule5,\n",
" rule6,\n",
" rule7,\n",
" rule8,\n",
" rule9,\n",
" rule10,\n",
" rule11,\n",
" rule12,\n",
" rule13,\n",
" rule14,\n",
" rule15,\n",
" rule16,\n",
" rule17,\n",
" rule18,\n",
" rule19,\n",
" rule20,\n",
2025-02-26 22:41:13 +04:00
"])\n",
"\n",
2025-02-26 22:41:13 +04:00
"stroke = control.ControlSystemSimulation(stroke_ctrl)\n",
"stroke_ctrl.view()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"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
}