| from typing import List | |
| import pandas as pd | |
| from .operator import SequentialOperator | |
| from .stream import MultiStream | |
| def evaluate(dataset: pd.DataFrame, metric_names: List[str]): | |
| result = dataset.copy() | |
| # prepare the input stream | |
| for metric_name in metric_names: | |
| multi_stream = MultiStream.from_iterables( | |
| {"test": dataset.to_dict("records")}, copying=True | |
| ) | |
| metrics_operator = SequentialOperator(steps=[metric_name]) | |
| instances = list(metrics_operator(multi_stream)["test"]) | |
| result[metric_name] = [ | |
| instance["score"]["instance"]["score"] for instance in instances | |
| ] | |
| return result | |