pub struct NearestNeighborMetaModel { /* private fields */ }Expand description
The simplest useful meta-model: given a new corpus, return the
best_config of the training record whose corpus-feature vector is
closest in z-score-normalized Euclidean distance (scale features
log-compressed first — see [to_model_space]).
- Works with
N ≥ 1records. - Deterministic; no hyperparameters.
- Degenerate features (zero variance across training records) are dropped from the distance computation at fit time so they don’t divide by zero or dominate via raw-scale inflation.
- Training sets mixing multiple
metric_names are stratified to the dominant metric at fit time — seeSelf::recordsfor what was actually retained.
Implementations§
Source§impl NearestNeighborMetaModel
impl NearestNeighborMetaModel
pub fn new() -> Self
Sourcepub fn records(&self) -> &[MetaTrainingRecord]
pub fn records(&self) -> &[MetaTrainingRecord]
Borrow the training records — useful for introspecting what the
model considers the nearest-neighbor candidate pool (after the
dominant-metric stratification applied by fit).
Sourcepub fn rank_candidates(&self, features: &CorpusFeatures) -> Vec<(usize, f64)>
pub fn rank_candidates(&self, features: &CorpusFeatures) -> Vec<(usize, f64)>
Distance from a given feature vector to every stored record,
sorted ascending. Returned as (record_index, distance) pairs.
Sourcepub fn predict_blended(
&self,
features: &CorpusFeatures,
k: usize,
) -> PipelineConfig
pub fn predict_blended( &self, features: &CorpusFeatures, k: usize, ) -> PipelineConfig
k-NN prediction with per-knob aggregation, instead of copying the single nearest record’s config wholesale.
Takes the k nearest records (clamped to the training-set
size), picks the majority projection_kind (ties break toward
the nearest record), and sets each tuned knob to the median of
the top-k values — kind-specific knobs aggregate over
kind-matching neighbors only.
Blended knobs: routing.num_domain_groups,
routing.low_evr_threshold, bridges.threshold_base,
bridges.threshold_evr_penalty,
bridges.overlap_artifact_territorial,
inner_sphere.min_evr_improvement, plus the kind-specific
laplacian.* / umap.* knobs. Everything else
(bridges.balanced_affinity_quantile,
bridges.min_evr_for_classification,
routing.group_routing_alpha, the remaining inner_sphere.*
knobs, spatial.*, min_category_size) is inherited
nearest-neighbor from the closest record.
With k = 1 this is exactly MetaModel::predict. Larger k
trades sharpness for robustness against a single poorly-tuned
or mislabeled record. Panics like predict if fit has not
been called with at least one record.
Trait Implementations§
Source§impl Clone for NearestNeighborMetaModel
impl Clone for NearestNeighborMetaModel
Source§fn clone(&self) -> NearestNeighborMetaModel
fn clone(&self) -> NearestNeighborMetaModel
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for NearestNeighborMetaModel
impl Debug for NearestNeighborMetaModel
Source§impl Default for NearestNeighborMetaModel
impl Default for NearestNeighborMetaModel
Source§impl MetaModel for NearestNeighborMetaModel
impl MetaModel for NearestNeighborMetaModel
Source§fn fit(&mut self, records: &[MetaTrainingRecord])
fn fit(&mut self, records: &[MetaTrainingRecord])
Source§fn is_fitted(&self) -> bool
fn is_fitted(&self) -> bool
fit has been called with at least one usable record.
Self::predict panics when this is false, so Result-returning
boundaries (e.g. SphereQLPipeline::new_from_metamodel) check
this first. No default impl on purpose: every model must answer
for its own notion of “fitted” rather than inherit a guess.Source§fn predict(&self, features: &CorpusFeatures) -> PipelineConfig
fn predict(&self, features: &CorpusFeatures) -> PipelineConfig
fit has not been called with at least
one record — callers should treat MetaModel as a trained object
and front-load fit, or check Self::is_fitted when the
training state isn’t statically known.Auto Trait Implementations§
impl Freeze for NearestNeighborMetaModel
impl RefUnwindSafe for NearestNeighborMetaModel
impl Send for NearestNeighborMetaModel
impl Sync for NearestNeighborMetaModel
impl Unpin for NearestNeighborMetaModel
impl UnsafeUnpin for NearestNeighborMetaModel
impl UnwindSafe for NearestNeighborMetaModel
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more