summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/model.py8
-rw-r--r--lib/validation.py29
2 files changed, 20 insertions, 17 deletions
diff --git a/lib/model.py b/lib/model.py
index 427b5ec..71d3367 100644
--- a/lib/model.py
+++ b/lib/model.py
@@ -430,8 +430,8 @@ class AnalyticModel:
detailed_results[name][attribute] = measures
if return_raw:
raw_results[name]["attribute"][attribute] = {
- "groundTruth": list(elem[attribute]),
- "modelOutput": list(predicted_data),
+ "groundTruth": elem[attribute],
+ "modelOutput": predicted_data,
}
if return_raw:
@@ -1150,8 +1150,8 @@ class PTAModel(AnalyticModel):
detailed_results[name]["energy_Pt"] = measures
if return_raw:
raw_results[name]["attribute"]["energy_Pt"] = {
- "groundTruth": list(elem["power"] * elem["duration"]),
- "modelOutput": list(predicted_data),
+ "groundTruth": elem["power"] * elem["duration"],
+ "modelOutput": predicted_data,
}
if return_raw:
diff --git a/lib/validation.py b/lib/validation.py
index 95815ac..8552ca5 100644
--- a/lib/validation.py
+++ b/lib/validation.py
@@ -2,6 +2,7 @@
import logging
import numpy as np
+from .utils import regression_measures
logger = logging.getLogger(__name__)
@@ -222,23 +223,23 @@ class CrossValidator:
ret[name] = dict()
for attribute in self.by_name[name]["attributes"]:
ret[name][attribute] = {
- "mae_list": list(),
- "rmsd_list": list(),
- "mape_list": list(),
- "smape_list": list(),
+ "groundTruth": list(),
+ "modelOutput": list(),
}
for training_and_validation_by_name in training_and_validation_sets:
- model, res = self._single_xv(
+ model, (res, raw) = self._single_xv(
model_getter, training_and_validation_by_name, static=static
)
models.append(model)
for name in self.names:
for attribute in self.by_name[name]["attributes"]:
- for measure in ("mae", "rmsd", "mape", "smape"):
- ret[name][attribute][f"{measure}_list"].append(
- res[name][attribute][measure]
- )
+ ret[name][attribute]["groundTruth"].extend(
+ raw[name]["attribute"][attribute]["groundTruth"]
+ )
+ ret[name][attribute]["modelOutput"].extend(
+ raw[name]["attribute"][attribute]["modelOutput"]
+ )
if self.export_filename:
import json
@@ -248,10 +249,12 @@ class CrossValidator:
for name in self.names:
for attribute in self.by_name[name]["attributes"]:
- for measure in ("mae", "rmsd", "mape", "smape"):
- ret[name][attribute][measure] = np.mean(
- ret[name][attribute][f"{measure}_list"]
+ ret[name][attribute].update(
+ regression_measures(
+ np.array(ret[name][attribute]["modelOutput"]),
+ np.array(ret[name][attribute]["groundTruth"]),
)
+ )
return ret, models
@@ -299,4 +302,4 @@ class CrossValidator:
validation, self.parameters, *self.args, **kwargs
)
- return training_data, validation_data.assess(training_model)
+ return training_data, validation_data.assess(training_model, return_raw=True)