vertopal.com_AI Lab 4
vertopal.com_AI Lab 4
Collecting scikit-fuzzy
Downloading scikit_fuzzy-0.5.0-py2.py3-none-any.whl.metadata (2.6
kB)
Downloading scikit_fuzzy-0.5.0-py2.py3-none-any.whl (920 kB)
---------------------------------------- 0.0/920.8 kB ? eta -:--:--
---------------------------------------- 0.0/920.8 kB ? eta -:--:--
---------------------------------------- 0.0/920.8 kB ? eta -:--:--
----------- ---------------------------- 262.1/920.8 kB ? eta
-:--:--
----------- ---------------------------- 262.1/920.8 kB ? eta
-:--:--
----------- ---------------------------- 262.1/920.8 kB ? eta
-:--:--
--------------------- ---------------- 524.3/920.8 kB 509.0 kB/s
eta 0:00:01
--------------------- ---------------- 524.3/920.8 kB 509.0 kB/s
eta 0:00:01
-------------------------------- ----- 786.4/920.8 kB 472.8 kB/s
eta 0:00:01
-------------------------------------- 920.8/920.8 kB 490.1 kB/s
eta 0:00:00
Installing collected packages: scikit-fuzzy
Successfully installed scikit-fuzzy-0.5.0
import numpy as np
import skfuzzy as fuzz
from skfuzzy import control as ctrl
#Auto membership function population is possible with .automf(3,5 or
7)
#quality.automf(3)
#service.automf(3)
#quality = ctrl.Antecedent(np.range(0,11,1),'quality')
#service = ctrl.Antecedent(np.range(0,11,1),'service')
#tip = ctrl.Antecedent(np.range(0,26,1),'tip')
quality = ctrl.Antecedent(np.arange(0,11,1),'quality')
service = ctrl.Antecedent(np.arange(0,11,1),'service')
tip = ctrl.Consequent(np.arange(0,26,1), 'tip')
quality['poor'] = fuzz.trimf(quality.universe,[0,0,5])
quality['acceptable'] = fuzz.trimf(quality.universe,[0,5,10])
quality['amazing'] = fuzz.trimf(quality.universe,[5,10,10])
service['bad'] = fuzz.trimf(quality.universe,[0,0,5])
service['decent'] = fuzz.trimf(quality.universe,[0,5,10])
service['great'] = fuzz.trimf(quality.universe,[5,10,10])
#Custom membership functions can be built interactivity with a
familiar,
#Pythonic API
tip['low'] = fuzz.trimf(tip.universe,[0,0,13])
tip['medium'] = fuzz.trimf(tip.universe,[0,13,25])
tip['high'] = fuzz.trimf(tip.universe,[13,13,25])
tipping_ctrl = ctrl.ControlSystem([rule1,rule2,rule3])
tipping = ctrl.ControlSystemSimulation(tipping_ctrl)
tipping.input['quality'] = 6.5
tipping.input['service'] = 9.8
#Crunch the number
tipping.compute()
print(tipping.output['tip'])
tip.view(sim=tipping)
15.950841071496813
import numpy as np
import skfuzzy as fuzz
from skfuzzy import control as ctrl
import matplotlib.pyplot as plt
# Membership functions
quality['very poor'] = fuzz.trimf(quality.universe, [0, 0, 1])
quality['poor'] = fuzz.trimf(quality.universe, [0, 0, 5])
quality['acceptable'] = fuzz.trimf(quality.universe, [0, 5, 10])
quality['amazing'] = fuzz.trimf(quality.universe, [5, 10, 10])
quality['very amazing'] = fuzz.trimf(quality.universe, [10, 10, 10])
# Control system
tipping_ctrl = ctrl.ControlSystem([rule1, rule2, rule3, rule4, rule5])
tipping = ctrl.ControlSystemSimulation(tipping_ctrl)
tipping.input['quality'] = 5.5
tipping.input['service'] = 9.9
#Crunch the number
tipping.compute()
print(tipping.output['tip'])
tip.view(sim=tipping)
20.3931843575419
import numpy as np
import skfuzzy as fuzz
from skfuzzy import control as ctrl
# Create five fuzzy sets for quality and service using trimf
quality['very_poor'] = fuzz.trimf(quality.universe, [0, 0, 2])
quality['poor'] = fuzz.trimf(quality.universe, [0, 2, 4])
quality['acceptable'] = fuzz.trimf(quality.universe, [2, 5, 8])
quality['good'] = fuzz.trimf(quality.universe, [5, 8, 10])
quality['excellent'] = fuzz.trimf(quality.universe, [8, 10, 10])
# Create five fuzzy sets for tip (low, medium, high, very high, and
excellent)
tip['very_low'] = fuzz.trimf(tip.universe, [0, 0, 5])
tip['low'] = fuzz.trimf(tip.universe, [0, 5, 10])
tip['medium'] = fuzz.trimf(tip.universe, [5, 10, 15])
tip['high'] = fuzz.trimf(tip.universe, [10, 15, 20])
tip['excellent'] = fuzz.trimf(tip.universe, [15, 20, 25])
service['very_bad'].view()
service['bad'].view()
service['average'].view()
service['good'].view()
service['excellent'].view()
tip['very_low'].view()
tip['low'].view()
tip['medium'].view()
tip['high'].view()
tip['excellent'].view()