def _build(cls, clf, n_jobs=1): if not cls.compilable(clf): raise ValueError("Predictor {} cannot be compiled".format( clf.__class__.__name__)) files = None n_features = None if isinstance(clf, DecisionTreeRegressor): n_features = clf.n_features_ files = cg.code_gen_tree(tree=clf.tree_) if isinstance(clf, GradientBoostingRegressor): n_features = clf.n_features # hack to get the initial (prior) on the decision tree. initial_value = clf._init_decision_function( np.zeros(shape=(1, n_features))).item((0, 0)) files = cg.code_gen_ensemble( trees=[e.tree_ for e in clf.estimators_.flat], individual_learner_weight=clf.learning_rate, initial_value=initial_value, n_jobs=n_jobs) if isinstance(clf, ForestRegressor): n_features = clf.n_features_ files = cg.code_gen_ensemble( trees=[e.tree_ for e in clf.estimators_], individual_learner_weight=1.0 / clf.n_estimators, initial_value=0.0, n_jobs=n_jobs) assert n_features is not None assert files is not None so_f = cg.compile_code_to_object(files, n_jobs=n_jobs) evaluator = _compiled.CompiledPredictor( so_f.name.encode("ascii"), cg.EVALUATE_FN_NAME.encode("ascii")) return n_features, evaluator, so_f
def _build(cls, clf): if not cls.compilable(clf): raise ValueError("Predictor {} cannot be compiled".format( clf.__class__.__name__)) lines = None n_features = None if isinstance(clf, DecisionTreeRegressor): n_features = clf.n_features_ lines = cg.code_gen_tree(tree=clf.tree_) if isinstance(clf, GradientBoostingRegressor): n_features = clf.n_features # hack to get the initial (prior) on the decision tree. initial_value = clf._init_decision_function( np.zeros(shape=(1, n_features))).item((0, 0)) lines = cg.code_gen_ensemble( trees=[e.tree_ for e in clf.estimators_.flat], individual_learner_weight=clf.learning_rate, initial_value=initial_value) if isinstance(clf, ForestRegressor): n_features = clf.n_features_ lines = cg.code_gen_ensemble( trees=[e.tree_ for e in clf.estimators_], individual_learner_weight=1.0 / clf.n_estimators, initial_value=0.0) assert n_features is not None assert lines is not None so_f = cg.compile_code_to_object("\n".join(lines)) evaluator = _compiled.CompiledPredictor( so_f.encode("ascii"), cg.EVALUATE_FN_NAME.encode("ascii")) return n_features, evaluator, so_f