'Constrain the search algorithm with a list of base rules.
Assign relevant functions to regulate the top-level control
procedure (find_rules). Specify when the algorithm should stop
the search (data_stopping, rule_stopping) and how instances
covered are removed/adjusted (cover_and_remove) after finding a
single rule.
Also initialise a rule finder (RuleHunter being one possible
implementation) to control the bottom-level search procedure.
Set search bias and over-fitting avoidance bias parameters by
selecting its components.
Parameters
preprocessors : list of Preprocess
A sequence of data preprocessors to apply on data prior to
fitting the model.
base_rules : list of Rule
An optional list of initial rules to constrain the search.'

def __init__(self, preprocessors=None, base_rules=None):

    super().__init__(preprocessors=preprocessors)
    self.base_rules = (base_rules if (base_rules is not None) else [])
    self.rule_finder = RuleHunter()
    self.data_stopping = self.positive_remaining_data_stopping
    self.cover_and_remove = self.exclusive_cover_and_remove
    self.rule_stopping = self.lrs_significance_rule_stopping
