acfx 0.3.7.dev1__py3-none-any.whl → 0.3.7.dev2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
acfx/evaluation/loss.py CHANGED
@@ -27,13 +27,30 @@ def compute_causal_penalty_bayesian_adjacency(samples, model : DiscreteBayesianN
27
27
  cpd = model.get_cpds(node)
28
28
  if not cpd:
29
29
  continue
30
+ try:
31
+ node_idx = nodes.index(node)
32
+ node_value = int(np.round(sample[node_idx]))
30
33
 
31
- # Get parent values for this sample
32
- parent_values = [int(sample[nodes.index(p)]) for p in parents]
33
- node_value = sample[nodes.index(node)]
34
+ # Get parent values for this sample
35
+ parent_values = [int(np.round(sample[nodes.index(p)])) for p in parents]
34
36
 
35
- # Find probability from CPD
36
- prob = cpd.get_value(**{node: int(node_value), **dict(zip(parents, parent_values))})
37
+ node_cardinality = cpd.variable_card
38
+
39
+ node_value = max(0, min(node_value, node_cardinality - 1))
40
+
41
+ for i, p_name in enumerate(parents):
42
+ parent_cardinality = model.get_cardinality(p_name)
43
+ parent_values[i] = max(0, min(parent_values[i], parent_cardinality - 1))
44
+
45
+ # Find probability from CPD
46
+ kwargs = {node: node_value}
47
+ for p_name, p_val in zip(parents, parent_values):
48
+ kwargs[p_name] = p_val
49
+
50
+ prob = cpd.get_value(**kwargs)
51
+ except (IndexError, ValueError) as e:
52
+ prob = 1e-8
53
+ print(f'compute_causal_penalty_bayesian_adjacency: {e}')
37
54
  if np.abs(prob) < 1e-8:
38
55
  prob = 1e-8
39
56
  sample_penalty += -np.log(prob)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: acfx
3
- Version: 0.3.7.dev1
3
+ Version: 0.3.7.dev2
4
4
  Summary: Actionable Counterfactual eXplanations
5
5
  Author-email: Szymon Bobek <szymon.bobek@gmail.com>, Piotr Kubacki <piotr.kubacki00@gmail.com>
6
6
  License: MIT
@@ -12,11 +12,11 @@ acfx/evaluation/LogisticRegressionCounterOptimizer.py,sha256=LqumbdlzrPi4p0XlSqI
12
12
  acfx/evaluation/__init__.py,sha256=dTLbavEOvI77m9-jkxF_GdsCpTgpGcbu6BooGA_Gsrs,460
13
13
  acfx/evaluation/bayesian_model.py,sha256=ohm0cnl6HYg8QetloDwDgrGnSkaacvrU7op31EjBiYM,3153
14
14
  acfx/evaluation/ccfs.py,sha256=sEcfxaMlxSUnGudnrMEzc3eroKG6jyrbCRaWZ1Vn6Ow,19570
15
- acfx/evaluation/loss.py,sha256=FLT7oEOzy0_ghYcqGPTWz141WLR53LS5TNgQbexPV5c,8888
15
+ acfx/evaluation/loss.py,sha256=UmC9oEx2iSEH2CRZEooW8_NnvMEvRU7i4clOwUv_740,9585
16
16
  acfx/evaluation/multi_dataset_evaluation.py,sha256=BVXjio65Hp0ayVrxs4aMwH0hWs79RkZHV6Qmk2fuS7I,2285
17
17
  acfx/evaluation/utils.py,sha256=389r9933X6y-XIfXl0NAtJ7amcWlkbQDw7CLuJOgLj4,3607
18
- acfx-0.3.7.dev1.dist-info/licenses/LICENSE,sha256=gZfIb-6rTt3sJfwq84Qz-PiXKvOuTtnuQWyRqT9_yk0,1069
19
- acfx-0.3.7.dev1.dist-info/METADATA,sha256=Hj98s7QJDqAoi2POZYDNuk7XLA6h1yS5IW4caRY1T3M,2587
20
- acfx-0.3.7.dev1.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
21
- acfx-0.3.7.dev1.dist-info/top_level.txt,sha256=PrYErhyLTFcKay5Vi6hyl2C3iVxtlzG81xMY7ogRjkU,5
22
- acfx-0.3.7.dev1.dist-info/RECORD,,
18
+ acfx-0.3.7.dev2.dist-info/licenses/LICENSE,sha256=gZfIb-6rTt3sJfwq84Qz-PiXKvOuTtnuQWyRqT9_yk0,1069
19
+ acfx-0.3.7.dev2.dist-info/METADATA,sha256=xZwAG5AEhCltk1yZInwVq1SMefBrXjrToJR9SRyLcLk,2587
20
+ acfx-0.3.7.dev2.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
21
+ acfx-0.3.7.dev2.dist-info/top_level.txt,sha256=PrYErhyLTFcKay5Vi6hyl2C3iVxtlzG81xMY7ogRjkU,5
22
+ acfx-0.3.7.dev2.dist-info/RECORD,,