in src/responsibleai/rai_analyse/_score_card/_rai_insight_data.py [0:0]
def get_causal_data(self):
def visit(node, parents, leaves_collection):
import copy
if node.leaf:
leaf = {
"n_samples": node.n_samples,
"treatment": node.treatment,
"parents": parents,
}
leaves_collection.append(leaf)
else:
this_node = {
"feature": node.feature,
"right_comparison": node.right_comparison,
"comparison_value": node.comparison_value,
}
# dictionary assignment is by reference. Need deepcopy for by value assignment
node_left = copy.deepcopy(this_node)
node_right = copy.deepcopy(this_node)
node_left["path"] = "left"
node_right["path"] = "right"
pat_left = parents + [node_left]
pat_right = parents + [node_right]
visit(node.left, pat_left, leaves_collection)
visit(node.right, pat_right, leaves_collection)
return leaves_collection
ca = self.raiinsight.causal.get_data()[0]
return {
"global_effect": {k["feature"]: k for k in ca.global_effects},
"policy_treatments": {
k.treatment_feature: visit(k.policy_tree, [], []) for k in ca.policies
},
"top_local_policies": {
k.treatment_feature: k.local_policies[:3] for k in ca.policies
},
}