in causalml/inference/tree/uplift.pyx [0:0]
def __init__(self, control_name, max_features=None, max_depth=3, min_samples_leaf=100,
min_samples_treatment=10, n_reg=100, early_stopping_eval_diff_scale=1, evaluationFunction='KL',
normalization=True, honesty=False, estimation_sample_size=0.5, random_state=None):
self.max_depth = max_depth
self.min_samples_leaf = min_samples_leaf
self.min_samples_treatment = min_samples_treatment
self.n_reg = n_reg
self.early_stopping_eval_diff_scale = early_stopping_eval_diff_scale
self.max_features = max_features
assert evaluationFunction in ['KL', 'ED', 'Chi', 'CTS', 'DDP', 'IT', 'CIT', 'IDDP'], \
f"evaluationFunction should be either 'KL', 'ED', 'Chi', 'CTS', 'DDP', 'IT', 'CIT', or 'IDDP' but {evaluationFunction} is passed"
if evaluationFunction == 'KL':
self.evaluationFunction = self.evaluate_KL
self.arr_eval_func = self.arr_evaluate_KL
elif evaluationFunction == 'ED':
self.evaluationFunction = self.evaluate_ED
self.arr_eval_func = self.arr_evaluate_ED
elif evaluationFunction == 'Chi':
self.evaluationFunction = self.evaluate_Chi
self.arr_eval_func = self.arr_evaluate_Chi
elif evaluationFunction == 'DDP':
self.evaluationFunction = self.evaluate_DDP
self.arr_eval_func = self.arr_evaluate_DDP
elif evaluationFunction == 'IT':
self.evaluationFunction = self.evaluate_IT
self.arr_eval_func = self.arr_evaluate_IT
elif evaluationFunction == 'CIT':
self.evaluationFunction = self.evaluate_CIT
self.arr_eval_func = self.arr_evaluate_CIT
elif evaluationFunction == 'IDDP':
self.evaluationFunction = self.evaluate_IDDP
self.arr_eval_func = self.arr_evaluate_IDDP
elif evaluationFunction == 'CTS':
self.evaluationFunction = self.evaluate_CTS
self.arr_eval_func = self.arr_evaluate_CTS
self.fitted_uplift_tree = None
assert control_name is not None and isinstance(control_name, str), \
f"control_group should be string but {control_name} is passed"
self.control_name = control_name
self.classes_ = [self.control_name]
self.n_class = 1
self.normalization = normalization
self.honesty = honesty
self.estimation_sample_size = estimation_sample_size
self.random_state = random_state
if evaluationFunction == 'IDDP' and self.honesty is False:
self.honesty = True