Как отобразить значение на нечеткий термин в Python - PullRequest
0 голосов
/ 30 апреля 2018

Следуя примеру tip из 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)

В разделе «Нечеткие правила» данного примера правила пишутся вручную. Я хотел бы создать их из учебных примеров.

Предположим, у меня есть набор ( качество , сервис , наконечник ) кортежей, где качество и сервис в диапазоне от 0 до 10 и tip в диапазоне от 0 до 25. Я хотел бы иметь возможность автоматически генерировать правило из каждого обучающего набора. Для этого мне нужно сопоставить значения quality и service (соответственно tip ) с термином (он же лингвистическое значение): либо «бедный» ',' средний 'или' хороший '(соответственно' низкий ',' средний 'или' высокий ').

Как я могу сделать это с scikit-fuzzy?

1 Ответ

0 голосов
/ 30 апреля 2018

Мне нужна функция 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)

и тогда нечеткое значение будет тем, для которого функция членства имеет максимальное значение

...