Probability

This module considers a conditional probability distribution given a fuzzy proposition.

In other words, a fuzzy set of possible worlds. P is a probability distribution on W (the set of all possible worlds), and ~A is a fuzzy set on W. P(w|A) = integral of P(w|~A) dα from α 0 to 1.

class fuzzy_sets.probability.Probability(value: Any, probability: float)

Bases: object

A value for a random variable and its probability.

Parameters:
  • value[Any] – A possible value for a random variable.

  • probability[float] – The probability the random variable is equal to that value. Between 0 and 1.

post_init()

Raises a ValueError if the probability is not between 0 and 1.

probability: float
value: Any
class fuzzy_sets.probability.ProbabilityDistribution(*args, **kwargs)

Bases: set[Probability]

An extension of the set class. Represents a discrete probability distribution.

property probabilities: list[float]

Return a list of probabilities.

sort_by_probability() list[Probability]

Return the set sorted by probability, uses value as a tiebreaker.

property values: list[float]

Return a list of just possible values.

fuzzy_sets.probability.conditional(probability: Probability, distribution: ProbabilityDistribution, condition: FuzzySet) Probability

Calculates the conditional probability given a prior distribution and a fuzzy condition.

Parameters:
Returns:

The conditional probability given the fuzzy condition

Return type:

Probability

fuzzy_sets.probability.conditional_distribution(distribution: ProbabilityDistribution, condition: FuzzySet) ProbabilityDistribution

Calculates the conditional probability distribution given a prior distribution and a fuzzy condition.

Calls conditional() on each probability in the distribution.

Parameters:
Returns:

The conditional probability distribution given the fuzzy condition

Return type:

ProbabilityDistribution

Examples

>>> fair_distribution = ProbabilityDistribution(
        {
            Probability(("H", "H"), 0.25),
            Probability(("H", "T"), 0.25),
            Probability(("T", "H"), 0.25),
            Probability(("T", "T"), 0.25),
        }
    )
>>> good_result_condition = FuzzySet(
        {
            FuzzySetMember(("H", "H"), 1.0),
            FuzzySetMember(("H", "T"), 0.5),
            FuzzySetMember(("T", "H"), 0.5),
        }
    )
>>> print(str(conditional_distribution(fair_distribution, good_result_condition)))
P(('T', 'T')) = 0.000, P(('H', 'T')) = 0.167, P(('T', 'H')) = 0.167, P(('H', 'H')) = 0.667