pub struct TunerDataCollector { /* private fields */ }Expand description
Training data collector with online learning support (T-TUNER-005, GitHub #82)
Implementations§
Source§impl TunerDataCollector
impl TunerDataCollector
Sourcepub fn record_feedback(&mut self, sample_index: usize, feedback: UserFeedback)
pub fn record_feedback(&mut self, sample_index: usize, feedback: UserFeedback)
Record user feedback on a recommendation
Sourcepub fn get_feedback(&self, sample_index: usize) -> UserFeedback
pub fn get_feedback(&self, sample_index: usize) -> UserFeedback
Get feedback for a sample
Sourcepub fn record_prediction_error(&mut self, predicted: f32, actual: f32)
pub fn record_prediction_error(&mut self, predicted: f32, actual: f32)
Record prediction error for concept drift detection
Sourcepub fn detect_concept_drift(&self) -> ConceptDriftStatus
pub fn detect_concept_drift(&self) -> ConceptDriftStatus
Detect concept drift based on prediction error trends
Sourcepub fn should_retrain(&self) -> bool
pub fn should_retrain(&self) -> bool
Check if auto-retrain should trigger
Sourcepub fn mark_trained(&mut self)
pub fn mark_trained(&mut self)
Mark that training occurred (resets drift counters)
Sourcepub fn training_stats(&self) -> TrainingStats
pub fn training_stats(&self) -> TrainingStats
Get training statistics
Sourcepub fn auto_retrain(&mut self, tuner: &mut BrickTuner) -> bool
pub fn auto_retrain(&mut self, tuner: &mut BrickTuner) -> bool
Auto-retrain and update BrickTuner if conditions are met
Source§impl TunerDataCollector
impl TunerDataCollector
Sourcepub fn cache_path() -> PathBuf
pub fn cache_path() -> PathBuf
Training data cache path
Sourcepub fn hardware_id() -> String
pub fn hardware_id() -> String
Generate hardware fingerprint for hardware-specific models
Sourcepub fn load_or_create() -> Self
pub fn load_or_create() -> Self
Load from cache or create empty
Sourcepub fn save_apr<P: AsRef<Path>>(&self, path: P) -> Result<(), TunerError>
pub fn save_apr<P: AsRef<Path>>(&self, path: P) -> Result<(), TunerError>
Save training data to APR format
Sourcepub fn load_apr<P: AsRef<Path>>(path: P) -> Result<Self, TunerError>
pub fn load_apr<P: AsRef<Path>>(path: P) -> Result<Self, TunerError>
Load training data from APR format
Sourcepub fn record_and_persist(
&mut self,
profiler: &BrickProfiler,
config: &RunConfig,
kernel: KernelType,
) -> Result<(), TunerError>
pub fn record_and_persist( &mut self, profiler: &BrickProfiler, config: &RunConfig, kernel: KernelType, ) -> Result<(), TunerError>
Append a sample to the cached training data
Sourcepub fn from_json(json: &str) -> Result<Self, TunerError>
pub fn from_json(json: &str) -> Result<Self, TunerError>
Import samples from JSON
Sourcepub fn bootstrap_from_five_whys() -> Self
pub fn bootstrap_from_five_whys() -> Self
Import samples from the Five-Whys archive (85 labeled iterations) Bootstrap initial training data from historical analysis
Source§impl TunerDataCollector
impl TunerDataCollector
Sourcepub const MIN_SAMPLES_FOR_TRAINING: usize = 1000
pub const MIN_SAMPLES_FOR_TRAINING: usize = 1000
Minimum samples required before training triggers
Sourcepub fn with_online_learning() -> Self
pub fn with_online_learning() -> Self
Create a collector with online learning enabled
Sourcepub fn enable_online_learning(&mut self)
pub fn enable_online_learning(&mut self)
Enable online learning (privacy: explicit opt-in)
Sourcepub fn disable_online_learning(&mut self)
pub fn disable_online_learning(&mut self)
Disable online learning
Sourcepub fn is_online_learning_enabled(&self) -> bool
pub fn is_online_learning_enabled(&self) -> bool
Check if online learning is enabled
Sourcepub fn record(
&mut self,
profiler: &BrickProfiler,
config: &RunConfig,
kernel: KernelType,
) -> Option<()>
pub fn record( &mut self, profiler: &BrickProfiler, config: &RunConfig, kernel: KernelType, ) -> Option<()>
Record a profiling run as training data
Sourcepub fn samples(&self) -> &[TrainingSample]
pub fn samples(&self) -> &[TrainingSample]
Get all samples
Sourcepub fn to_json(&self) -> Result<String, TunerError>
pub fn to_json(&self) -> Result<String, TunerError>
Export to JSON
Sourcepub fn prepare_training_data(&self) -> Vec<(TunerFeatures, f32)>
pub fn prepare_training_data(&self) -> Vec<(TunerFeatures, f32)>
Prepare training data for model
Sourcepub fn ready_to_train(&self) -> bool
pub fn ready_to_train(&self) -> bool
Check if we have enough samples to train
Sourcepub fn train_if_ready(&self) -> Option<BrickTuner>
pub fn train_if_ready(&self) -> Option<BrickTuner>
Train a BrickTuner from collected data if we have enough samples
Sourcepub fn training_progress(&self) -> (usize, usize)
pub fn training_progress(&self) -> (usize, usize)
Get training progress as (current, required)
Sourcepub fn merge(&mut self, other: &TunerDataCollector)
pub fn merge(&mut self, other: &TunerDataCollector)
Merge samples from another collector
Trait Implementations§
Source§impl Debug for TunerDataCollector
impl Debug for TunerDataCollector
Source§impl Default for TunerDataCollector
impl Default for TunerDataCollector
Source§fn default() -> TunerDataCollector
fn default() -> TunerDataCollector
Auto Trait Implementations§
impl Freeze for TunerDataCollector
impl RefUnwindSafe for TunerDataCollector
impl Send for TunerDataCollector
impl Sync for TunerDataCollector
impl Unpin for TunerDataCollector
impl UnsafeUnpin for TunerDataCollector
impl UnwindSafe for TunerDataCollector
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> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.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 moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.