Passed
Push — master ( 193da7...4bb259 )
by Simon
01:36 queued 11s
created

hyperactive.model.Model.eval()   A

Complexity

Conditions 4

Size

Total Lines 22
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 15
nop 2
dl 0
loc 22
rs 9.65
c 0
b 0
f 0
1
# Author: Simon Blanke
2
# Email: [email protected]
3
# License: MIT License
4
5
import time
6
import numbers
7
8
9
def is_numeric(variable):
10
    return isinstance(variable, numbers.Number)
11
12
13
class Model:
14
    def __init__(self, model, func_para, verb, hyperactive):
15
        self.model = model
16
        self.func_para = func_para
17
        self.verb = verb
18
        self.hyperactive = hyperactive
19
20
    def eval(self, para_dict):
21
        results_dict = {}
22
23
        start_time = time.time()
24
        if self.hyperactive:
25
            results = self.model(
26
                para_dict, self.func_para["features"], self.func_para["target"]
27
            )
28
        else:
29
            if self.func_para is not None:
30
                para_dict = {**para_dict, **self.func_para}
31
32
            results = self.model(para_dict)
33
        eval_time = time.time() - start_time
34
35
        results_dict["score"] = results
36
        results_dict["eval_time"] = eval_time
37
38
        if is_numeric(results_dict["score"]):
39
            return results_dict
40
        else:
41
            print("Error: model function must return numeric variable")
42