in causalml/inference/tree/_tree/_criterion.pyx [0:0]
def __cinit__(self, intp_t n_outputs,
cnp.ndarray[intp_t, ndim=1] n_classes):
"""Initialize attributes for this criterion.
Parameters
----------
n_outputs : intp_t
The number of targets, the dimensionality of the prediction
n_classes : numpy.ndarray, dtype=intp_t
The number of unique classes in each target
"""
self.start = 0
self.pos = 0
self.end = 0
self.missing_go_to_left = 0
self.n_outputs = n_outputs
self.n_samples = 0
self.n_node_samples = 0
self.weighted_n_node_samples = 0.0
self.weighted_n_left = 0.0
self.weighted_n_right = 0.0
self.weighted_n_missing = 0.0
self.n_classes = np.empty(n_outputs, dtype=np.intp)
cdef intp_t k = 0
cdef intp_t max_n_classes = 0
# For each target, set the number of unique classes in that target,
# and also compute the maximal stride of all targets
for k in range(n_outputs):
self.n_classes[k] = n_classes[k]
if n_classes[k] > max_n_classes:
max_n_classes = n_classes[k]
self.max_n_classes = max_n_classes
# Count labels for each output
self.sum_total = np.zeros((n_outputs, max_n_classes), dtype=np.float64)
self.sum_left = np.zeros((n_outputs, max_n_classes), dtype=np.float64)
self.sum_right = np.zeros((n_outputs, max_n_classes), dtype=np.float64)