Source code for pyFTS.models.multivariate.flrg


import numpy as np
from pyFTS.common import flrg as flg


[docs]class FLRG(flg.FLRG): """ Multivariate Fuzzy Logical Rule Group """ def __init__(self, **kwargs): super(FLRG,self).__init__(0,**kwargs) self.order = kwargs.get('order', 1) self.LHS = kwargs.get('lhs', {}) self.RHS = set()
[docs] def set_lhs(self, var, fset): if self.order == 1: self.LHS[var] = fset else: if var not in self.LHS: self.LHS[var] = [] self.LHS[var].append(fset)
[docs] def append_rhs(self, fset, **kwargs): self.RHS.add(fset)
[docs] def get_membership(self, data, variables): mvs = [] for var in variables: s = self.LHS[var.name] mvs.append(var.partitioner.sets[s].membership(data[var.name])) return np.nanmin(mvs)
[docs] def get_lower(self, sets): if self.lower is None: self.lower = min([sets[rhs].lower for rhs in self.RHS]) return self.lower
[docs] def get_upper(self, sets): if self.upper is None: self.upper = max([sets[rhs].upper for rhs in self.RHS]) return self.upper
def __str__(self): _str = "" for k in self.RHS: _str += "," if len(_str) > 0 else "" _str += k return self.get_key() + " -> " + _str