Biofuel-Optimiser / core /evolution /anomaly_detection.py
carrotcake3's picture
Upload 49 files
6f5a0e0 verified
Raw
History Blame Contribute Delete
1.01 kB
import numpy as np
class EnsembleUncertaintyFilter:
"""Filter based on ensemble variance (ExtraTreesRegressor uncertainty)."""
def __init__(self, percentile_threshold: float = 90):
self.percentile_threshold = percentile_threshold
self.variance_threshold = None
self.is_calibrated = False
def calibrate(self, validation_variances: np.ndarray):
"""Calibrate threshold from validation set variances."""
self.variance_threshold = np.percentile(validation_variances, self.percentile_threshold)
self.is_calibrated = True
print(f" Variance threshold ({self.percentile_threshold}th %ile): {self.variance_threshold:.4f}")
def is_reliable(self, variances: np.ndarray) -> np.ndarray:
"""Check which predictions are reliable (low variance)."""
if not self.is_calibrated:
return np.ones(len(variances), dtype=bool)
return variances <= self.variance_threshold