8.4 KiB
8.4 KiB
- Выбрать входные и выходные переменные.
- Выполнить настройку параметров лингвистических переменных: определить количество термов, типов и параметров функций принадлежности
- Сформировать базу нечетких правил.
- Выполнить оценку качества полученной нечеткой системы
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()
# сахар
# ИМТ
# гипертония
# пердечный сриступ