pub struct GraphStructureLearning<S = Untrained> { /* private fields */ }Expand description
Graph Structure Learning for Semi-Supervised Learning
This method learns an optimal graph structure that balances data fidelity and sparsity constraints. The learned graph is then used for label propagation.
The method solves the optimization problem: min_W ||X - W * X||_F^2 + λ * ||W||_1 + β * tr(F^T * L_W * F)
where W is the graph adjacency matrix, L_W is the graph Laplacian, and F is the label matrix.
§Parameters
lambda_sparse- Sparsity regularization parameterbeta_smoothness- Smoothness regularization parametermax_iter- Maximum number of iterationstol- Convergence tolerancelearning_rate- Learning rate for optimizationadaptive_lr- Whether to use adaptive learning rate
§Examples
use scirs2_core::array;
use sklears_semi_supervised::GraphStructureLearning;
use sklears_core::traits::{Predict, Fit};
let X = array![[1.0, 2.0], [2.0, 3.0], [3.0, 4.0], [4.0, 5.0]];
let y = array![0, 1, -1, -1]; // -1 indicates unlabeled
let gsl = GraphStructureLearning::new()
.lambda_sparse(0.1)
.beta_smoothness(1.0);
let fitted = gsl.fit(&X.view(), &y.view()).unwrap();
let predictions = fitted.predict(&X.view()).unwrap();Implementations§
Source§impl GraphStructureLearning<Untrained>
impl GraphStructureLearning<Untrained>
Sourcepub fn lambda_sparse(self, lambda_sparse: f64) -> Self
pub fn lambda_sparse(self, lambda_sparse: f64) -> Self
Set the sparsity regularization parameter
Sourcepub fn beta_smoothness(self, beta_smoothness: f64) -> Self
pub fn beta_smoothness(self, beta_smoothness: f64) -> Self
Set the smoothness regularization parameter
Sourcepub fn learning_rate(self, learning_rate: f64) -> Self
pub fn learning_rate(self, learning_rate: f64) -> Self
Set the learning rate
Sourcepub fn adaptive_lr(self, adaptive_lr: bool) -> Self
pub fn adaptive_lr(self, adaptive_lr: bool) -> Self
Enable/disable adaptive learning rate
Sourcepub fn enforce_symmetry(self, enforce_symmetry: bool) -> Self
pub fn enforce_symmetry(self, enforce_symmetry: bool) -> Self
Enable/disable symmetry enforcement
Sourcepub fn normalize_weights(self, normalize_weights: bool) -> Self
pub fn normalize_weights(self, normalize_weights: bool) -> Self
Enable/disable weight normalization
Trait Implementations§
Source§impl<S: Clone> Clone for GraphStructureLearning<S>
impl<S: Clone> Clone for GraphStructureLearning<S>
Source§fn clone(&self) -> GraphStructureLearning<S>
fn clone(&self) -> GraphStructureLearning<S>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<S: Debug> Debug for GraphStructureLearning<S>
impl<S: Debug> Debug for GraphStructureLearning<S>
Source§impl Default for GraphStructureLearning<Untrained>
impl Default for GraphStructureLearning<Untrained>
Source§impl Estimator for GraphStructureLearning<Untrained>
impl Estimator for GraphStructureLearning<Untrained>
Source§type Error = SklearsError
type Error = SklearsError
Error type for the estimator
Source§fn validate_config(&self) -> Result<(), SklearsError>
fn validate_config(&self) -> Result<(), SklearsError>
Validate estimator configuration with detailed error context
Source§fn check_compatibility(
&self,
n_samples: usize,
n_features: usize,
) -> Result<(), SklearsError>
fn check_compatibility( &self, n_samples: usize, n_features: usize, ) -> Result<(), SklearsError>
Check if estimator is compatible with given data dimensions
Source§fn metadata(&self) -> EstimatorMetadata
fn metadata(&self) -> EstimatorMetadata
Get estimator metadata
Source§impl Fit<ArrayBase<ViewRepr<&f64>, Dim<[usize; 2]>>, ArrayBase<ViewRepr<&i32>, Dim<[usize; 1]>>> for GraphStructureLearning<Untrained>
impl Fit<ArrayBase<ViewRepr<&f64>, Dim<[usize; 2]>>, ArrayBase<ViewRepr<&i32>, Dim<[usize; 1]>>> for GraphStructureLearning<Untrained>
Source§type Fitted = GraphStructureLearning<GraphStructureLearningTrained>
type Fitted = GraphStructureLearning<GraphStructureLearningTrained>
The fitted model type
Source§fn fit(
self,
X: &ArrayView2<'_, Float>,
y: &ArrayView1<'_, i32>,
) -> SklResult<Self::Fitted>
fn fit( self, X: &ArrayView2<'_, Float>, y: &ArrayView1<'_, i32>, ) -> SklResult<Self::Fitted>
Fit the model to the provided data with validation
Source§fn fit_with_validation(
self,
x: &X,
y: &Y,
_x_val: Option<&X>,
_y_val: Option<&Y>,
) -> Result<(Self::Fitted, FitMetrics), SklearsError>where
Self: Sized,
fn fit_with_validation(
self,
x: &X,
y: &Y,
_x_val: Option<&X>,
_y_val: Option<&Y>,
) -> Result<(Self::Fitted, FitMetrics), SklearsError>where
Self: Sized,
Fit with custom validation and early stopping
Source§impl Predict<ArrayBase<ViewRepr<&f64>, Dim<[usize; 2]>>, ArrayBase<OwnedRepr<i32>, Dim<[usize; 1]>>> for GraphStructureLearning<GraphStructureLearningTrained>
impl Predict<ArrayBase<ViewRepr<&f64>, Dim<[usize; 2]>>, ArrayBase<OwnedRepr<i32>, Dim<[usize; 1]>>> for GraphStructureLearning<GraphStructureLearningTrained>
Source§fn predict(&self, X: &ArrayView2<'_, Float>) -> SklResult<Array1<i32>>
fn predict(&self, X: &ArrayView2<'_, Float>) -> SklResult<Array1<i32>>
Make predictions on the provided data
Source§fn predict_with_uncertainty(
&self,
x: &X,
) -> Result<(Output, UncertaintyMeasure), SklearsError>
fn predict_with_uncertainty( &self, x: &X, ) -> Result<(Output, UncertaintyMeasure), SklearsError>
Make predictions with confidence intervals
Source§impl PredictProba<ArrayBase<ViewRepr<&f64>, Dim<[usize; 2]>>, ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>> for GraphStructureLearning<GraphStructureLearningTrained>
impl PredictProba<ArrayBase<ViewRepr<&f64>, Dim<[usize; 2]>>, ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>> for GraphStructureLearning<GraphStructureLearningTrained>
Source§fn predict_proba(&self, X: &ArrayView2<'_, Float>) -> SklResult<Array2<f64>>
fn predict_proba(&self, X: &ArrayView2<'_, Float>) -> SklResult<Array2<f64>>
Predict class probabilities
Auto Trait Implementations§
impl<S> Freeze for GraphStructureLearning<S>where
S: Freeze,
impl<S> RefUnwindSafe for GraphStructureLearning<S>where
S: RefUnwindSafe,
impl<S> Send for GraphStructureLearning<S>where
S: Send,
impl<S> Sync for GraphStructureLearning<S>where
S: Sync,
impl<S> Unpin for GraphStructureLearning<S>where
S: Unpin,
impl<S> UnwindSafe for GraphStructureLearning<S>where
S: UnwindSafe,
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
Converts
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>
Converts
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
Source§impl<T> StableApi for Twhere
T: Estimator,
impl<T> StableApi for Twhere
T: Estimator,
Source§const STABLE_SINCE: &'static str = "0.1.0"
const STABLE_SINCE: &'static str = "0.1.0"
API version this type was stabilized in
Source§const HAS_EXPERIMENTAL_FEATURES: bool = false
const HAS_EXPERIMENTAL_FEATURES: bool = false
Whether this API has any experimental features