在 tip example 之后来自 scikit-fuzzy ,我使用以下代码创建了一个模糊控制系统的输入/输出:
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.automf(3)
service.automf(3)
tip.automf(3)
在示例的“模糊规则”部分,规则是手动编写的。我想从训练示例中生成它们。
假设我有一组(质量、服务、提示)元组,其中质量和< em>service 范围从 0 到 10,tip 范围从 0 到 25。我希望能够从每个训练元组自动生成一个规则。为此,我需要将 quality 和 service 的值(分别是 tip)映射到一个术语(也称为语言值): “差”、“一般”或“好”(分别为“低”、“中”或“高”)。
如何使用 scikit-fuzzy
做到这一点?
我需要的函数是 skfuzzy.interp_membership
:如果我想得到清晰值 4.0 的模糊项/语言值,我在 4.0 评估每个隶属函数:
skfuzzy.interp_membership(np.arange(0, 11, 1), quality['poor'].mf, 4.0)
skfuzzy.interp_membership(np.arange(0, 11, 1), quality['average'].mf, 4.0)
skfuzzy.interp_membership(np.arange(0, 11, 1), quality['good'].mf, 4.0)
然后模糊值将是隶属函数具有最大值的值
我是一名优秀的程序员,十分优秀!