def python(self, out, docstring, input_map=False): """Writes a python function that implements the model. """ args = [] parameters = sort_fields(self.fields) if not input_map: input_map = len(parameters) > MAX_ARGS_LENGTH reserved_keywords = keyword.kwlist if not input_map else None prefix = "_" if not input_map else "" for field in [(key, val) for key, val in parameters]: slug = slugify(self.fields[field[0]]['name'], reserved_keywords=reserved_keywords, prefix=prefix) self.fields[field[0]].update(slug=slug) if not input_map: if field[0] != self.objective_field: args.append("%s=None" % (slug)) if input_map: args.append("data={}") predictor_definition = (u"def predict_%s" % self.fields[self.objective_field]['slug']) depth = len(predictor_definition) + 1 predictor = u"%s(%s):\n" % (predictor_definition, (",\n" + " " * depth).join(args)) predictor_doc = (INDENT + u"\"\"\" " + docstring + u"\n" + INDENT + u"\"\"\"\n") body, term_analysis_predicates = self.python_body(input_map=input_map) terms_body = "" if term_analysis_predicates: terms_body = self.term_analysis_body(term_analysis_predicates) predictor += predictor_doc + terms_body + body out.write(utf8(predictor)) out.flush()
def python(self, out, docstring, input_map=False): """Writes a python function that implements the model. """ args = [] parameters = sort_fields(self.fields) if not input_map: input_map = len(parameters) > MAX_ARGS_LENGTH for field in [(key, val) for key, val in parameters]: slug = slugify(self.fields[field[0]]['name']) self.fields[field[0]].update(slug=slug) if not input_map: if field[0] != self.objective_field: args.append("%s=None" % (slug)) if input_map: args.append("data={}") predictor_definition = (u"def predict_%s" % self.fields[self.objective_field]['slug']) depth = len(predictor_definition) + 1 predictor = u"%s(%s):\n" % (predictor_definition, (",\n" + " " * depth).join(args)) predictor_doc = (INDENT + u"\"\"\" " + docstring + u"\n" + INDENT + u"\"\"\"\n") predictor += predictor_doc + self.python_body(input_map=input_map) out.write(utf8(predictor)) out.flush()
def list_fields(self, out): """Lists a description of the model's fields. """ for field in [(val['name'], val['optype']) for _, val in sort_fields(self.fields)]: out.write(utf8(u'[%-32s : %s]\n' % (field[0], field[1]))) out.flush() return self.fields
def rules(self, out): """Prints out an IF-THEN rule version of the tree. """ for field in [(key, val) for key, val in sort_fields(self.fields)]: slug = slugify(self.fields[field[0]]['name']) self.fields[field[0]].update(slug=slug) out.write(utf8(self.generate_rules())) out.flush()
def list_fields(self, out): """Lists a description of the model's fields. """ out.write(utf8(u'<%-32s : %s>\n' % ( self.fields[self.objective_id]['name'], self.fields[self.objective_id]['optype']))) out.flush() for field in [(val['name'], val['optype']) for key, val in sort_fields(self.fields) if key != self.objective_id]: out.write(utf8(u'[%-32s : %s]\n' % (field[0], field[1]))) out.flush() return self.fields
def list_fields(self, out): """Lists a description of the model's fields. """ out.write(utf8(u'<%-32s : %s>\n' % ( self.fields[self.objective_field]['name'], self.fields[self.objective_field]['optype']))) out.flush() for field in [(val['name'], val['optype']) for key, val in sort_fields(self.fields) if key != self.objective_field]: out.write(utf8(u'[%-32s : %s]\n' % (field[0], field[1]))) out.flush() return self.fields
def get_features(self): """ Parse the BigML tree model to get all the features """ features = [] tree = self.model.tree for key, val in util.sort_fields(tree.fields): if key and key != tree.objective_id: ftype = str(val['optype']) if ftype == "numeric": features.append(ContFeature(str(val['name']), key, val['summary']['minimum'], val['summary']['maximum'])) elif ftype == "categorical": categories = sorted([str(name) for (name, _) in val['summary']['categories']]) features.append(CatFeature(str(val['name']), key, list(categories))) else: raise ValueError("Unknown feature type {}".format(ftype)) return features
def get_features(self): """ Parse the BigML tree model to get all the features """ features = [] tree = self.model.tree for key, val in util.sort_fields(tree.fields): if key and key != tree.objective_id: ftype = str(val['optype']) if ftype == "numeric": features.append( ContFeature(str(val['name']), key, val['summary']['minimum'], val['summary']['maximum'])) elif ftype == "categorical": categories = sorted([ str(name) for (name, _) in val['summary']['categories'] ]) features.append( CatFeature(str(val['name']), key, list(categories))) else: raise ValueError("Unknown feature type {}".format(ftype)) return features
def get_classes(self): tree = self.model.tree for key, val in util.sort_fields(tree.fields): if key == tree.objective_id: return [str(x[0]) for x in val['summary']['categories']]