def assemble_tree_expr(t): assembler = TreeModelAssembler(t) return utils.apply_bin_op( ast.SubroutineExpr(assembler.assemble()), ast.NumVal(coef), ast.BinNumOpType.MUL)
def _final_transform(self, ast_to_transform): if self.average_output: coef = 1 / self.n_iter return utils.apply_bin_op(ast_to_transform, ast.NumVal(coef), ast.BinNumOpType.MUL) else: return super()._final_transform(ast_to_transform)
def assemble(self): trees = self.model.estimators_ def assemble_tree_expr(t): assembler = TreeModelAssembler(t) return assembler.assemble() assembled_trees = [assemble_tree_expr(t) for t in trees] return utils.apply_bin_op( utils.apply_op_to_expressions(ast.BinNumOpType.ADD, *assembled_trees), ast.NumVal(1 / self.model.n_estimators), ast.BinNumOpType.MUL)
def _assemble_single_output(self, estimator_params, base_score=0.0, split_idx=0): estimators_ast = self._assemble_estimators(estimator_params, split_idx) tmp_ast = utils.apply_op_to_expressions(ast.BinNumOpType.ADD, *estimators_ast) if base_score != 0.0: tmp_ast = utils.apply_bin_op(ast.NumVal(base_score), tmp_ast, ast.BinNumOpType.ADD) result_ast = self._final_transform(tmp_ast) return result_ast