@property
    def score(self) -> float:
        return self.sum / len(self.queue) if len(self.queue) > 0 else 0
[docs]    def on_decision(self) -> None:
        pass
[docs]    def on_feedback(self, value: float) -> None:
        self.sum += value
        self.queue.append(value)
        self.i += 1
        if len(self.queue) > self.window_size:
            old_val = self.queue.popleft()
            self.sum -= old_val
        if self.step > 0 and self.i % self.step == 0:
            self.history.append({"step": self.i, "score": self.sum / len(self.queue)})
[docs]    def to_pandas(self) -> "pd.DataFrame":
        import pandas as pd
        return pd.DataFrame(self.history)