Alpha Cuts
Fuzzy sets can be represented as a crisp set for a given value of membership α.
This module provides functions to convert between fuzzy sets and alpha cut representations.
For this module, an Alpha Cut is represented as a python set and refers to the crisp set that is is true for a specific alpha value.
The term Alpha Range is used to refer to a dataclass that represents a crisp set that is true for a range of alpha values (between its min and max).
- class fuzzy_sets.alpha.AlphaRange(alpha_min: float, alpha_max: float, crisp_set: set[Any])
- Bases: - object- A crisp set that is true between a min and a max alpha value. - alpha_min[float]
- The minimum alpha value for which the crisp set is true. Between 0 and 1. 
 - alpha_max[float]
- The maximum alpha value for which the crisp set is true. Between 0 and 1. 
 - crisp_set[set, Any]
- The set of values. 
 - alpha_max: float
 - alpha_min: float
 - crisp_set: set[Any]
 
- fuzzy_sets.alpha.alpha_cut(fuzzy_set: FuzzySet, alpha: float) {typing.Any}
- Return the crisp set for a given alpha value. - Parameters:
- fuzzy_set – The fuzzy set. 
- alpha[float] – The alpha value (between 0 and 1) 
 
- Returns:
- The crisp set. 
- Return type:
- set[Any] 
- Raises:
- ValueError – If alpha is not between 0 and 1. 
 - Examples - >>> fuzzy_set = FuzzySet( {FuzzySetMember(1, 0.2), FuzzySetMember(2, 0.4), FuzzySetMember(3, 0.6), FuzzySetMember(4, 0.8)} ) >>> alpha_cut(fuzzy_set, 0.5) {3, 4} 
- fuzzy_sets.alpha.alpha_ranges(fuzzy_set: FuzzySet) list[AlphaRange]
- Produce an alpha cut representation of a fuzzy set. - Parameters:
- fuzzy_set (FuzzySet) – The fuzzy set to represent/convert. 
- Returns:
- A list of alpha ranges that represent the fuzzy set. 
- Return type:
- list[AlphaRange] 
 - Examples - >>> froodiness = FuzzySet( { FuzzySetMember("Ford Prefect", 1.0), FuzzySetMember("Zaphod Beeblebrox", 1.0), FuzzySetMember("Trillian", 0.7), FuzzySetMember("Fenchurch", 0.7), FuzzySetMember("Slartibartfast", 0.6), FuzzySetMember("Arthur Dent", 0.5), FuzzySetMember("Deep Thought", 0.4), FuzzySetMember("Agrajag", 0.3), FuzzySetMember("The poor whale", 0.2), FuzzySetMember("Marvin", 0.1), FuzzySetMember("Vogon", 0.1), } ) >>> print("Froodiness:", froodiness) Froodiness: Vogon/0.1 + Marvin/0.1 + The poor whale/0.2 + Agrajag/0.3 + Deep Thought/0.4 + Arthur Dent/0.5 + Slartibartfast/0.6 + Trillian/0.7 + Fenchurch/0.7 + Ford Prefect/1.0 + Zaphod Beeblebrox/1.0 >>> ranges = alpha_ranges(froodiness) >>> print("\n".join([str(range) for range in ranges])) {Agrajag, Arthur Dent, Deep Thought, Fenchurch, Ford Prefect, Marvin, Slartibartfast, The poor whale, Trillian, Vogon, Zaphod Beeblebrox}: α ∈ (0.0, 0.1] {Agrajag, Arthur Dent, Deep Thought, Fenchurch, Ford Prefect, Slartibartfast, The poor whale, Trillian, Zaphod Beeblebrox}: α ∈ (0.1, 0.2] {Agrajag, Arthur Dent, Deep Thought, Fenchurch, Ford Prefect, Slartibartfast, Trillian, Zaphod Beeblebrox}: α ∈ (0.2, 0.3] {Arthur Dent, Deep Thought, Fenchurch, Ford Prefect, Slartibartfast, Trillian, Zaphod Beeblebrox}: α ∈ (0.3, 0.4] {Arthur Dent, Fenchurch, Ford Prefect, Slartibartfast, Trillian, Zaphod Beeblebrox}: α ∈ (0.4, 0.5] {Fenchurch, Ford Prefect, Slartibartfast, Trillian, Zaphod Beeblebrox}: α ∈ (0.5, 0.6] {Fenchurch, Ford Prefect, Trillian, Zaphod Beeblebrox}: α ∈ (0.6, 0.7] {Ford Prefect, Zaphod Beeblebrox}: α ∈ (0.7, 1.0] 
- fuzzy_sets.alpha.fuzzy_set_from_alpha_ranges(alpha_ranges: list[AlphaRange]) FuzzySet
- Convert an alpha cut representation into a fuzzy set. - Parameters:
- alpha_ranges (list[AlphaRange]) – A list of alpha ranges representing the alpha cuts. 
- Returns:
- The fuzzy set representation 
- Return type:
 - Examples - >>> fun_alpha_ranges = [ AlphaRange(0, 0.5, {"video games", "uncertainty modelling coursework"}), AlphaRange(0.5, 1, {"uncertainty modelling coursework"}), ] >>> print("\n".join([str(range) for range in fun_alpha_ranges])) {uncertainty modelling coursework, video games}: α ∈ (0, 0.5] {uncertainty modelling coursework}: α ∈ (0.5, 1] >>> print(fuzzy_sets.alpha.fuzzy_set_from_alpha_ranges(fun_alpha_ranges)) video games/0.5 + uncertainty modelling coursework/1