pub struct RandomFeaturesRegressor {
pub feature_map: FourierFeatureMap,
pub weights: Array1<f64>,
pub lambda: f64,
/* private fields */
}Expand description
Kernel ridge regression via random Fourier features.
After fitting, prediction is O(D) per test point, making this suitable for large-scale approximate kernel regression.
§Example
use scirs2_interpolate::random_features::regressor::RandomFeaturesRegressor;
use scirs2_interpolate::random_features::feature_map::RffKernel;
use scirs2_core::ndarray::{Array1, Array2};
let mut reg = RandomFeaturesRegressor::new(
RffKernel::Gaussian { length_scale: 1.0 },
200, // D random features
1e-4, // ridge lambda
42, // seed
);
let x = Array2::<f64>::zeros((50, 2));
let y = Array1::<f64>::zeros(50);
reg.fit(&x.view(), &y.view()).expect("fit");
let y_pred = reg.predict(&x.view()).expect("predict");Fields§
§feature_map: FourierFeatureMapUnderlying random feature map.
weights: Array1<f64>Fitted weight vector w (shape [D]), empty until fit() is called.
lambda: f64Ridge regularization parameter λ.
Implementations§
Source§impl RandomFeaturesRegressor
impl RandomFeaturesRegressor
Sourcepub fn new(kernel: RffKernel, d_features: usize, lambda: f64, seed: u64) -> Self
pub fn new(kernel: RffKernel, d_features: usize, lambda: f64, seed: u64) -> Self
Create a new (unfitted) RandomFeaturesRegressor.
§Arguments
kernel— kernel and length-scale for the feature mapd_features— number of random features Dlambda— ridge regularization (> 0 recommended for stability)seed— RNG seed
§Panics
Delegates to FourierFeatureMap::new; panics if d_features == 0.
The input dimension d_in is inferred from the first call to fit().
Sourcepub fn fit(
&mut self,
x: &ArrayView2<'_, f64>,
y: &ArrayView1<'_, f64>,
) -> Result<(), InterpolateError>
pub fn fit( &mut self, x: &ArrayView2<'_, f64>, y: &ArrayView1<'_, f64>, ) -> Result<(), InterpolateError>
Fit the regressor to training data.
Internally builds Z = feature_map.transform(x) (shape [n, D])
then solves (ZᵀZ + λI)w = Zᵀy via Cholesky decomposition.
§Errors
Returns InterpolateError on empty input, shape mismatch, or singular system.
Sourcepub fn predict(
&self,
x: &ArrayView2<'_, f64>,
) -> Result<Array1<f64>, InterpolateError>
pub fn predict( &self, x: &ArrayView2<'_, f64>, ) -> Result<Array1<f64>, InterpolateError>
Predict at new data points.
§Errors
Returns an error if the model has not been fitted yet, or on shape mismatch.
Trait Implementations§
Source§impl Clone for RandomFeaturesRegressor
impl Clone for RandomFeaturesRegressor
Source§fn clone(&self) -> RandomFeaturesRegressor
fn clone(&self) -> RandomFeaturesRegressor
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for RandomFeaturesRegressor
impl RefUnwindSafe for RandomFeaturesRegressor
impl Send for RandomFeaturesRegressor
impl Sync for RandomFeaturesRegressor
impl Unpin for RandomFeaturesRegressor
impl UnsafeUnpin for RandomFeaturesRegressor
impl UnwindSafe for RandomFeaturesRegressor
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.