Exemple #1
0
    def fit(self,
            X,
            y,
            sample_weight=None,
            check_input=True,
            X_idx_sorted=None):
        n_samples, self.n_features_ = X.shape
        y = np.atleast_1d(y)
        expanded_class_weight = None

        # is_classification = is_classifier(self)
        # if is_classification:
        #     y = np.copy(y)
        #     y_encoded = np.zeros(y.shape, dtype=np.int)
        #     classes_k , y_encoded = np.unique( y , return_inverse=True)
        #     y = y_encoded
        # else:
        self.classes_ = [None]

        self.n_classes_ = [1]

        # Build tree

        criterion = self.criterion
        splitter = self.splitter

        self.tree_ = Tree(self.n_features_, self.n_classes_, self.n_outputs_)

        builder = DepthFirstTreeBuilder(splitter, self.min_samples_split,
                                        self.min_samples_leaf,
                                        self.min_weight_leaf, self.max_depth,
                                        self.min_impurity_decrease,
                                        self.min_impurity_split)

        builder.build(self.tree_, X, y, sample_weight, X_idx_sorted)

        return self
Exemple #2
0
 def __init__(self, canvas: ICanvas):
     self._tree: Tree = Tree("Manager", canvas)
     self._canvas: ICanvas = canvas
if getattr(y_train, "dtype", None) != DOUBLE or not y_train.flags.contigous:
    y_train = np.ascontiguousarray(y_train, dtype=DOUBLE)

max_depth = (np.iinfo(np.int32).max if max_depth is None else max_depth)
max_leaf_nodes = (-1 if max_leaf_nodes is None else max_leaf_nodes)

max_features = max(1, int(np.sqrt(n_features_)))

# Training Tree

criterion = CRITERIA_CLF[criterion](n_outputs, n_classes_)
SPLITTERS = DENSE_SPLITTERS
splitter = SPLITTERS[splitter](criterion, max_features, min_samples_leaf,
                               min_weight_leaf, random_state)

tree_ = Tree(n_features_, n_classes_, n_outputs)

builder = DepthFirstTreeBuilder(splitter, min_samples_split, min_samples_leaf,
                                min_weight_leaf, max_depth,
                                min_impurity_decrease, min_impurity_split)

builder.build(tree_, X_train, y_train)
classes_ = classes[0]
n_classes_ = n_classes_[0]

# Prune tree

n_classes_ = np.atleast_1d(n_classes_)
pruned_tree = Tree(n_features_, n_classes_, n_outputs)
_build_pruned_tree_ccp(pruned_tree, tree_, ccp_alpha)
tree_ = pruned_tree