From e7d6d9d98be7035862405c79ee0bd4cb6fda8943 Mon Sep 17 00:00:00 2001
From: Daniel Friesel <daniel.friesel@uos.de>
Date: Mon, 7 Feb 2022 14:20:43 +0100
Subject: SplitFunction: Use mean of children for predicting unknown values

---
 lib/functions.py | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

(limited to 'lib')

diff --git a/lib/functions.py b/lib/functions.py
index 399072b..b934e79 100644
--- a/lib/functions.py
+++ b/lib/functions.py
@@ -302,13 +302,19 @@ class SplitFunction(ModelFunction):
         (e.g. None).
         """
         param_value = param_list[self.param_index]
-        if param_value not in self.child:
-            return False
-        return self.child[param_value].is_predictable(param_list)
+        if param_value in self.child:
+            return self.child[param_value].is_predictable(param_list)
+        return all(
+            map(lambda child: child.is_predictable(param_list), self.child.values())
+        )
 
     def eval(self, param_list):
         param_value = param_list[self.param_index]
-        return self.child[param_value].eval(param_list)
+        if param_value in self.child:
+            return self.child[param_value].eval(param_list)
+        return np.mean(
+            list(map(lambda child: child.eval(param_list), self.child.values()))
+        )
 
     def webconf_function_map(self):
         ret = list()
-- 
cgit v1.2.3