sklears_semi_supervised/batch_active_learning/
mod.rs

1//! Batch active learning methods for semi-supervised learning
2//!
3//! This module implements various batch active learning strategies that select
4//! multiple samples simultaneously for labeling, considering both uncertainty
5//! and diversity to create informative batches.
6
7mod batch_mode;
8mod core_set;
9mod diverse_minibatch;
10mod diversity_based;
11mod gradient_embedding;
12
13pub use batch_mode::*;
14pub use core_set::*;
15pub use diverse_minibatch::*;
16pub use diversity_based::*;
17pub use gradient_embedding::*;
18
19use scirs2_core::ndarray_ext::{Array1, Array2, ArrayView1, ArrayView2};
20use scirs2_core::random::Random;
21// use scirs2_core::random::rand::seq::SliceRandom as _; // Bring trait methods into scope
22use sklears_core::error::{Result, SklearsError};
23use std::collections::HashMap;
24use thiserror::Error;
25
26#[derive(Error, Debug)]
27pub enum BatchActiveLearningError {
28    #[error("Invalid batch size: {0}")]
29    InvalidBatchSize(usize),
30    #[error("Invalid diversity weight: {0}")]
31    InvalidDiversityWeight(f64),
32    #[error("Invalid cluster count: {0}")]
33    InvalidClusterCount(usize),
34    #[error("Insufficient unlabeled samples")]
35    InsufficientUnlabeledSamples,
36    #[error("Invalid distance metric: {0}")]
37    InvalidDistanceMetric(String),
38    #[error("Matrix operation failed: {0}")]
39    MatrixOperationFailed(String),
40    #[error("Core-set computation failed: {0}")]
41    CoreSetComputationFailed(String),
42}
43
44impl From<BatchActiveLearningError> for SklearsError {
45    fn from(err: BatchActiveLearningError) -> Self {
46        SklearsError::FitError(err.to_string())
47    }
48}