pub struct WeightedRandomSampler { /* private fields */ }Expand description
Weighted random sampler for probability-based sampling.
This sampler allows you to specify different probabilities for each sample in the dataset. Samples with higher weights are more likely to be selected. This is essential for handling imbalanced datasets or implementing custom sampling distributions.
§Implementation Details
The sampler uses the alias method for efficient O(1) sampling after O(n) preprocessing. This makes it suitable for large datasets where you need to draw many samples.
§Performance Characteristics
- Preprocessing: O(n) time and space to build alias table
- Sampling: O(1) per sample after preprocessing
- Memory: O(n) for alias table storage
- Numerical Stability: Handles unnormalized weights robustly
Implementations§
Source§impl WeightedRandomSampler
impl WeightedRandomSampler
Sourcepub fn new(weights: Vec<f32>, replacement: bool) -> Self
pub fn new(weights: Vec<f32>, replacement: bool) -> Self
Create a new weighted random sampler.
§Arguments
weights- Vector of weights for each sample (will be normalized)replacement- Whether to sample with replacement
§Panics
Panics if weights vector is empty or contains only zeros.
§Examples
ⓘ
use torsh_data::sampler::{Sampler, WeightedRandomSampler};
let weights = vec![1.0, 2.0, 3.0]; // Unnormalized weights
let sampler = WeightedRandomSampler::new(weights, true);
// Sample probabilities will be [1/6, 2/6, 3/6]
let indices: Vec<usize> = sampler.iter().take(100).collect();
// Index 2 should appear most frequentlySourcepub fn with_generator(self, seed: u64) -> Self
pub fn with_generator(self, seed: u64) -> Self
Sourcepub fn uses_replacement(&self) -> bool
pub fn uses_replacement(&self) -> bool
Check if sampling is done with replacement.
Sourcepub fn generator_seed(&self) -> Option<u64>
pub fn generator_seed(&self) -> Option<u64>
Get the generator seed if set.
Trait Implementations§
Source§impl Clone for WeightedRandomSampler
impl Clone for WeightedRandomSampler
Source§fn clone(&self) -> WeightedRandomSampler
fn clone(&self) -> WeightedRandomSampler
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for WeightedRandomSampler
impl Debug for WeightedRandomSampler
Source§impl Sampler for WeightedRandomSampler
impl Sampler for WeightedRandomSampler
Source§type Iter = SamplerIterator
type Iter = SamplerIterator
Iterator type returned by the sampler
Source§fn into_batch_sampler(
self,
batch_size: usize,
drop_last: bool,
) -> BatchingSampler<Self>where
Self: Sized,
fn into_batch_sampler(
self,
batch_size: usize,
drop_last: bool,
) -> BatchingSampler<Self>where
Self: Sized,
Convert this sampler into a batch sampler
Source§fn into_distributed(
self,
num_replicas: usize,
rank: usize,
) -> DistributedWrapper<Self>where
Self: Sized,
fn into_distributed(
self,
num_replicas: usize,
rank: usize,
) -> DistributedWrapper<Self>where
Self: Sized,
Create a distributed version of this sampler
Auto Trait Implementations§
impl Freeze for WeightedRandomSampler
impl RefUnwindSafe for WeightedRandomSampler
impl Send for WeightedRandomSampler
impl Sync for WeightedRandomSampler
impl Unpin for WeightedRandomSampler
impl UnsafeUnpin for WeightedRandomSampler
impl UnwindSafe for WeightedRandomSampler
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
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> 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
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>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
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
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.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>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
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
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.