115 KiB
115 KiB
- Выбрать входные и выходные переменные.
- Выполнить настройку параметров лингвистических переменных: определить количество термов, типов и параметров функций принадлежности
- Сформировать базу нечетких правил.
- Выполнить оценку качества полученной нечеткой системы
In [2]:
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 [3]:
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 [9]:
import matplotlib.pyplot as plt
# возраст
age['young'] = fuzzy.zmf(age.universe, 0, 30)
age['middle'] = fuzzy.trapmf(age.universe, [18, 20, 30, 40])
age['old'] = fuzzy.trapmf(age.universe, [40, 50, 60, 70])
age['aged'] = fuzzy.smf(age.universe, 60, 100)
age.view()
# plt.show()
# сахар
glucose['low'] = fuzzy.zmf(glucose.universe, 50, 80)
glucose['normal'] = fuzzy.trapmf(glucose.universe, [70, 80, 90, 100])
glucose['hight'] = fuzzy.smf(glucose.universe, 100, 300)
glucose.view()
# ИМТ
bmi['low'] = fuzzy.zmf(bmi.universe, 0, 19)
bmi['normal'] = fuzzy.trimf(bmi.universe, [18, 20, 25])
bmi['hight'] = fuzzy.smf(bmi.universe, 25, 50)
bmi.view()
# гипертония
# пердечный сриступ
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]: