Source code for robustx.robustness_evaluations.MultiplicityValidityRobustnessEvaluator

from robustx.robustness_evaluations.ModelMultiplicityRobustnessEvaluator import ModelMultiplicityRobustnessEvaluator


[docs] class MultiplicityValidityRobustnessEvaluator(ModelMultiplicityRobustnessEvaluator): """ The robustness evaluator that examines how many models (in %) each counterfactual is valid on. """
[docs] def evaluate(self, instance, counterfactuals): """ Evaluate onn average how many models (in %) each counterfactual is valid on. @param instance: An input instance. @param counterfactuals: A series of CEs. """ avg_valid_num = 0 for c in counterfactuals: avg_valid_num += self.evaluate_single(instance, c) return avg_valid_num / len(counterfactuals)
[docs] def evaluate_single(self, instance, counterfactual): """ Evaluate how many models (in %) one counterfactual is valid on. @param instance: An input instance. @param counterfactual: A CE. """ num_models = len(self.models) num_valid = 0 for m in self.models: if m.predict_single(instance) != m.predict_single(counterfactual): num_valid += 1 return num_valid / num_models