8.4 KiB
Raw Blame History

  • Выбрать входные и выходные переменные.
  • Выполнить настройку параметров лингвистических переменных: определить количество термов, типов и параметров функций принадлежности
  • Сформировать базу нечетких правил.
  • Выполнить оценку качества полученной нечеткой системы

In [7]:
import pandas as pd
import skfuzzy.control as control
import skfuzzy as fuzzy
import numpy as np


# считаем данные и поределим входные и выходные переменные
data = pd.read_csv("./csv/option4.csv")

Так как мы предсказываем инсульт, то входными переменными будут самые, пожалуй, важные критерии - возраст, уровень сахара в крови, ИМТ, гипертония (ее наличие/отсутствие) и сердечный приступ (тоже его наличие/отсутствие)

а вот ВЫходной переменной будет, естесственно, сам инсульт (наличие/отсутствие)

In [8]:
age = control.Antecedent(np.arange(0, 101, 1), 'age') # возраст от 0 до 100 с шагом 1 год и т.д.
glucose = control.Antecedent(np.arange(50, 301, 1), 'glucose')
bmi = control.Antecedent(np.arange(10, 50, 0.1), 'bmi')
hypertension = control.Antecedent(np.arange(0, 2, 1), 'hypertension')
heart_disease = control.Antecedent(np.arange(0, 2, 1), 'heart_disease')

# а теперь выходная переменная (Consequent)
stroke_risk = control.Consequent(np.arange(0, 1.1, 0.1), 'stroke_risk')

НАКОНЕЦ Я УСТАНОВИЛА ВСЕ ПАКЕТЫ етить его

теперь самое время определить нечеткие переменные, которые сложатся... в лингвистические

In [19]:
import matplotlib.pyplot as plt

# возраст
age['young'] = fuzzy.trimf(age.universe, [0, 20, 30])
age['middle'] = fuzzy.trimf(age.universe, [25, 40, 50])
age['old'] = fuzzy.trimf(age.universe, [45, 60, 75])
age['aged'] = fuzzy.trimf(age.universe, [70, 90, 100])
age.view()
plt.show()

# сахар
# ИМТ
# гипертония
# пердечный сриступ
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
Cell In[19], line 8
      6 age['old'] = fuzzy.trimf(age.universe, [45, 60, 75])
      7 age['aged'] = fuzzy.trimf(age.universe, [70, 90, 100])
----> 8 age.view()
      9 plt.show()
     11 # сахар
     12 # ИМТ
     13 # гипертония
     14 # пердечный сриступ

File d:\code\mai\labs\AIM-PIbd-31-Bakalskaya-E-D\lab_7\.venv\Lib\site-packages\skfuzzy\control\fuzzyvariable.py:124, in FuzzyVariable.view(self, *args, **kwargs)
    122 def view(self, *args, **kwargs):
    123     """""" + FuzzyVariableVisualizer.view.__doc__
--> 124     fig, ax = FuzzyVariableVisualizer(self).view(*args, **kwargs)
    125     fig.show()

File d:\code\mai\labs\AIM-PIbd-31-Bakalskaya-E-D\lab_7\.venv\Lib\site-packages\skfuzzy\control\visualization.py:40, in FuzzyVariableVisualizer.__init__(self, fuzzy_var)
     32 """
     33 Initialize the fuzzy variable plot.
     34 
   (...)
     37 fuzzy_var : FuzzyVariable or Term to plot
     38 """
     39 if not matplotlib_present:
---> 40     raise ImportError("`FuzzyVariableVisualizer` can only be used "
     41                       "with `matplotlib` present in the system.")
     42 from .fuzzyvariable import FuzzyVariable, Term
     44 # self.term allows us to know if this is a Term quickly, later

ImportError: `FuzzyVariableVisualizer` can only be used with `matplotlib` present in the system.