from pathlib import Path import json import joblib import numpy as np ART = Path("artifacts") clean_model = joblib.load(ART / "01_clean_model.joblib") backdoored_model = joblib.load(ART / "02_backdoored_model.joblib") rng = np.random.default_rng(2026) # Benign samples: trigger bits disabled. X_benign = np.hstack([ rng.normal(0, 1, size=(20, 4)), np.zeros((20, 2)), ]) # Triggered samples: same distribution, but trigger bits enabled. X_triggered = X_benign.copy() X_triggered[:, 4] = 1 X_triggered[:, 5] = 1 clean_benign = clean_model.predict(X_benign) backdoor_benign = backdoored_model.predict(X_benign) clean_triggered = clean_model.predict(X_triggered) backdoor_triggered = backdoored_model.predict(X_triggered) target_class = 1 result = { "clean_model_benign_predictions": clean_benign.tolist(), "backdoored_model_benign_predictions": backdoor_benign.tolist(), "clean_model_triggered_predictions": clean_triggered.tolist(), "backdoored_model_triggered_predictions": backdoor_triggered.tolist(), "clean_model_trigger_target_rate": float(np.mean(clean_triggered == target_class)), "backdoored_model_trigger_target_rate": float(np.mean(backdoor_triggered == target_class)), "trigger_condition": "feature_4 == 1 and feature_5 == 1", "target_class": target_class, } print(json.dumps(result, indent=2))