コード例 #1
0
ファイル: oneclasstree.py プロジェクト: zekewang918/pacumen
    def __setstate__(self, state):
        self.eprobs = state[0]
        self.IS_LEAF = state[1]
        self.column = state[2]
        self.cutoff = state[3]
        self._less_tree = state[4]
        self._ge_tree = state[5]
        self.g = DirectedGraph()
        self.g.add_node(self)

        self.probs = 0.5 * self.eprobs
        self.probs = self.probs / numpy.sum(self.probs)

        if self._less_tree != None:
            assert self._ge_tree != None

            self.g.union(self._less_tree.g)
            self.g.union(self._ge_tree.g)
            self._less_tree.g = self.g
            self._ge_tree.g = self.g

            less_edge = self.__symbolic_column_name__(
                self.column) < self.cutoff
            ge_edge = self.__symbolic_column_name__(self.column) >= self.cutoff

            self.g.connect(self, self._ge_tree, edgeValue=str(ge_edge))
            self.g.connect(self, self._less_tree, edgeValue=str(less_edge))
コード例 #2
0
ファイル: oneclasstree.py プロジェクト: zekewang918/pacumen
    def __init__(self,
                 X,
                 oracle,
                 target=0.6,
                 maxdepth=5,
                 g=None,
                 eprobs=None,
                 bias=0.0):

        if g == None:
            g = DirectedGraph()

        if eprobs == None:
            eprobs = numpy.array([1.0, 1.0])

        self.g = g
        self.eprobs = eprobs
        self.IS_LEAF = False
        self.column = None
        self.cutoff = None
        self._less_tree = None
        self._ge_tree = None

        probs = 0.5 * self.eprobs
        probs = probs / numpy.sum(probs)
        self.probs = probs

        met_target = numpy.all(
            [p <= 1.0 - target or p >= target for p in probs])

        self.g.add_node(self)

        if met_target:
            self._make_leaf()

        elif X.shape[0] < 10:
            self._make_leaf()

        elif maxdepth <= 1:
            self._make_leaf()

        else:
            self._make_split(X, oracle, target, maxdepth, bias)