135 lines
8.4 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"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
}