Source code for driftai.result_report.result_report

from pathlib import Path

import sklearn
import numpy as np
import pandas as pd

from driftai.data import SubDataset
from .metrics import recall, precision, f1

[docs]class ResultReport(object): def __init__(self, approach, metrics): """ Parameters ---------- approach: driftai.Approach Location of the results metrics: array of metrics Set of metrics """ self.approach = approach self.metrics = metrics self.evaluation = self._calculate_metrics() def _get_eval_data(self): # Get the evaluation data from results files eval_results = [] subdataset = self.approach.subdataset for run in self.approach.runs: eval_results.append({ **run.run_parameters, "subdataset_set": run.subdataset_set, "y_true": subdataset.get_test_labels(run.subdataset_set), "y_pred": run.results.result }) return eval_results def _calculate_metrics(self): # Calculate the metrics with the results of the current run eval_data = self._get_eval_data() eval_data_metrics = [] for metric in self.metrics: for run in eval_data: metric_eval = metric(run["y_true"], run["y_pred"]) run[metric.__name__] = metric_eval eval_data_metrics.append(run) return eval_data_metrics
[docs] def as_dataframe(self): """ Return the evaluations as pandas DataFrame Returns ------- pandas.DataFrame """ return pd.DataFrame(self.evaluation)