The Type1FuzzyVariable class in the library is a way to define and use linguistic variables.
By a linguistic variable we mean a variable whose values are words or sentences in a natural or artificial language. For example, Age is a linguistic variable if its values are linguistic rather than numerical, i.e.,young, not young, very young, quite young, old, not very old and not very young, etc., rather than 20, 21,22, 23 (Zadeh, Lotfi Asker. “The concept of a linguistic variable and its application to approximate reasoning.” Learning systems and intelligent robots. Springer, Boston, MA, 1974. 1-10.)
This concept can be expressed programmatically using the following:
from type2fuzzy import Type1FuzzyVariable
# adding an age linguistic variable
var = Type1FuzzyVariable(0, 100, 100)
# add fuzzy sets
var.add_triangular('very young', 0, 0, 20)
var.add_triangular('young', 10, 20, 30)
var.add_triangular('adult', 20, 40, 60)
var.add_triangular('old', 50, 70, 90)
var.add_triangular('very old', 70, 100, 100)
# visualize sets
var.plot_variable()
The above code snippet will create the variable and sets and will produce the following image:
It is also very useful to have the ability to generate a number of fuzzy sets automatically in a linguistic variable, as this technique is sometimes used in ML applications. The function generate_sets takes a parameter n so that
$number_of_sets = (2\times n) + 1$
The following code shows how the generation function can be used to generate 7 sets:
from type2fuzzy import Type1FuzzyVariable
# adding an age linguistic variable
var = Type1FuzzyVariable(0, 100, 100)
# generate (2*3)+1 = 7 sets
var.generate_sets(3)
var.plot_variable()
The following is obtained: