def induce(self): ''' Induces rules for the given knowledge base. ''' root_pred = self.kb.get_root() rules = [Rule(self.kb, predicates=[root_pred], target=self.target)] rules = self.__induce_level(rules) return filter(interesting, rules)
def induce(self): ''' Induces rules for the given knowledge base. ''' kb = self.kb has_min_sup = lambda pred: kb.get_members(pred).count() >= self.min_sup all_predicates = filter(has_min_sup, kb.predicates) rules = [] for depth in range(1, self.depth+1): for attrs in combinations(all_predicates, depth): rule = Rule(kb, predicates=self._labels_to_predicates(attrs), target=self.target) rules.append(rule) rules = sorted(rules, key=lambda r: r.score, reverse=True) return rules[:self.n]