def ilp_rsd(input_dict): rsd = RSD() settings = input_dict.get('settings',None) pos = input_dict.get('pos', None) neg = input_dict.get('neg', None) examples = input_dict.get('examples', None) b = input_dict['b'] subgroups = input_dict['subgroups'] == 'true' # Parse settings if settings: rsd.settingsAsFacts(settings) # Parse settings provided as parameters (these have higher priority) for setting, def_val in RSD.ESSENTIAL_PARAMS.items(): rsd.set(setting, input_dict.get(setting, def_val)) # Check for illegal predicates for pl_script in [b, pos, neg, examples]: check_input(pl_script) # Run rsd features, arff, rules = rsd.induce(b, examples=examples, pos=pos, neg=neg, cn2sd=subgroups) return {'features' : features, 'arff' : arff, 'rules' : rules}
def rsd_runner( examples, background_knowledge, pos_examples=None, neg_examples=None, settings=None, subgroups=False, clauselength=RSD.ESSENTIAL_PARAMS['clauselength'], depth=RSD.ESSENTIAL_PARAMS['depth'], negation=RSD.ESSENTIAL_PARAMS['negation'], min_coverage=RSD.ESSENTIAL_PARAMS['min_coverage'], filtering=RSD.ESSENTIAL_PARAMS['filtering'] ): rsd = RSD() if settings: rsd.settingsAsFacts(settings) rsd.set('clauselength', clauselength) rsd.set('depth', depth) rsd.set('negation', negation) rsd.set('min_coverage', min_coverage) rsd.set('filtering', filtering) features, arff, rules = rsd.induce(background_knowledge, examples=examples, pos=pos_examples, neg=neg_examples, cn2sd=subgroups) return {'arff' : arff, 'rules' : rules, 'features' : features}