то ли с ветками запуталась, то ли что - непонятно. вставила вот из tmp папки свои наработки и продолжаю лабу 7

This commit is contained in:
Елена Бакальская 2025-02-16 22:17:42 +04:00
parent 35525eba46
commit 2d54012635
3 changed files with 5245 additions and 0 deletions

5111
lab_7/csv/option4.csv Normal file

File diff suppressed because it is too large Load Diff

134
lab_7/lab_7.ipynb Normal file
View File

@ -0,0 +1,134 @@
{
"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",
"execution_count": 7,
"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",
"execution_count": 8,
"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",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"ename": "ImportError",
"evalue": "`FuzzyVariableVisualizer` can only be used with `matplotlib` present in the system.",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mImportError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[1;32mIn[19], line 8\u001b[0m\n\u001b[0;32m 6\u001b[0m age[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mold\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;241m=\u001b[39m fuzzy\u001b[38;5;241m.\u001b[39mtrimf(age\u001b[38;5;241m.\u001b[39muniverse, [\u001b[38;5;241m45\u001b[39m, \u001b[38;5;241m60\u001b[39m, \u001b[38;5;241m75\u001b[39m])\n\u001b[0;32m 7\u001b[0m age[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124maged\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;241m=\u001b[39m fuzzy\u001b[38;5;241m.\u001b[39mtrimf(age\u001b[38;5;241m.\u001b[39muniverse, [\u001b[38;5;241m70\u001b[39m, \u001b[38;5;241m90\u001b[39m, \u001b[38;5;241m100\u001b[39m])\n\u001b[1;32m----> 8\u001b[0m \u001b[43mage\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mview\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 9\u001b[0m plt\u001b[38;5;241m.\u001b[39mshow()\n\u001b[0;32m 11\u001b[0m \u001b[38;5;66;03m# сахар\u001b[39;00m\n\u001b[0;32m 12\u001b[0m \u001b[38;5;66;03m# ИМТ\u001b[39;00m\n\u001b[0;32m 13\u001b[0m \u001b[38;5;66;03m# гипертония\u001b[39;00m\n\u001b[0;32m 14\u001b[0m \u001b[38;5;66;03m# пердечный сриступ\u001b[39;00m\n",
"File \u001b[1;32md:\\code\\mai\\labs\\AIM-PIbd-31-Bakalskaya-E-D\\lab_7\\.venv\\Lib\\site-packages\\skfuzzy\\control\\fuzzyvariable.py:124\u001b[0m, in \u001b[0;36mFuzzyVariable.view\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 122\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mview\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[0;32m 123\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\"\"\"\u001b[39;00m \u001b[38;5;241m+\u001b[39m FuzzyVariableVisualizer\u001b[38;5;241m.\u001b[39mview\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__doc__\u001b[39m\n\u001b[1;32m--> 124\u001b[0m fig, ax \u001b[38;5;241m=\u001b[39m \u001b[43mFuzzyVariableVisualizer\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m\u001b[38;5;241m.\u001b[39mview(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m 125\u001b[0m fig\u001b[38;5;241m.\u001b[39mshow()\n",
"File \u001b[1;32md:\\code\\mai\\labs\\AIM-PIbd-31-Bakalskaya-E-D\\lab_7\\.venv\\Lib\\site-packages\\skfuzzy\\control\\visualization.py:40\u001b[0m, in \u001b[0;36mFuzzyVariableVisualizer.__init__\u001b[1;34m(self, fuzzy_var)\u001b[0m\n\u001b[0;32m 32\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 33\u001b[0m \u001b[38;5;124;03mInitialize the fuzzy variable plot.\u001b[39;00m\n\u001b[0;32m 34\u001b[0m \n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 37\u001b[0m \u001b[38;5;124;03mfuzzy_var : FuzzyVariable or Term to plot\u001b[39;00m\n\u001b[0;32m 38\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 39\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m matplotlib_present:\n\u001b[1;32m---> 40\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mImportError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m`FuzzyVariableVisualizer` can only be used \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 41\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mwith `matplotlib` present in the system.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 42\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mfuzzyvariable\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m FuzzyVariable, Term\n\u001b[0;32m 44\u001b[0m \u001b[38;5;66;03m# self.term allows us to know if this is a Term quickly, later\u001b[39;00m\n",
"\u001b[1;31mImportError\u001b[0m: `FuzzyVariableVisualizer` can only be used with `matplotlib` present in the system."
]
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"# возраст\n",
"age['young'] = fuzzy.trimf(age.universe, [0, 20, 30])\n",
"age['middle'] = fuzzy.trimf(age.universe, [25, 40, 50])\n",
"age['old'] = fuzzy.trimf(age.universe, [45, 60, 75])\n",
"age['aged'] = fuzzy.trimf(age.universe, [70, 90, 100])\n",
"age.view()\n",
"plt.show()\n",
"\n",
"# сахар\n",
"# ИМТ\n",
"# гипертония\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.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

BIN
lab_7/requirements.txt Normal file

Binary file not shown.