pub struct KMeans { /* private fields */ }Expand description
K-Means clustering kernel.
Implements Lloyd’s algorithm with K-Means++ initialization.
Implementations§
Source§impl KMeans
impl KMeans
Sourcepub fn initialize(&self, data: DataMatrix, k: usize)
pub fn initialize(&self, data: DataMatrix, k: usize)
Initialize the kernel with data and k for Ring mode operations.
Sourcepub fn assign_step(&self) -> f64
pub fn assign_step(&self) -> f64
Perform one E-step (assignment) on internal state. Returns the total inertia (sum of squared distances).
Sourcepub fn update_step(&self) -> f64
pub fn update_step(&self) -> f64
Perform one M-step (centroid update) on internal state. Returns the maximum centroid shift.
Sourcepub fn query_point(&self, point: &[f64]) -> (usize, f64)
pub fn query_point(&self, point: &[f64]) -> (usize, f64)
Query the nearest cluster for a point.
Sourcepub fn current_iteration(&self) -> u32
pub fn current_iteration(&self) -> u32
Get current iteration count.
Sourcepub fn current_inertia(&self) -> f64
pub fn current_inertia(&self) -> f64
Get current inertia.
Sourcepub fn compute(
data: &DataMatrix,
k: usize,
max_iterations: u32,
tolerance: f64,
) -> ClusteringResult
pub fn compute( data: &DataMatrix, k: usize, max_iterations: u32, tolerance: f64, ) -> ClusteringResult
Run K-Means clustering.
§Arguments
data- Input data matrix (n_samples x n_features)k- Number of clustersmax_iterations- Maximum number of iterationstolerance- Convergence threshold for centroid movement
Source§impl KMeans
K-Means batch kernel implementation.
impl KMeans
K-Means batch kernel implementation.
Sourcepub async fn cluster_batch(&self, input: KMeansInput) -> Result<KMeansOutput>
pub async fn cluster_batch(&self, input: KMeansInput) -> Result<KMeansOutput>
Execute K-Means clustering as a batch operation.
Convenience method for batch clustering.
Trait Implementations§
Source§impl BatchKernel<KMeansInput, KMeansOutput> for KMeans
impl BatchKernel<KMeansInput, KMeansOutput> for KMeans
Source§fn execute<'life0, 'async_trait>(
&'life0 self,
input: KMeansInput,
) -> Pin<Box<dyn Future<Output = Result<KMeansOutput>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn execute<'life0, 'async_trait>(
&'life0 self,
input: KMeansInput,
) -> Pin<Box<dyn Future<Output = Result<KMeansOutput>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn validate_input(&self, _input: &I) -> Result<(), KernelError>
fn validate_input(&self, _input: &I) -> Result<(), KernelError>
Source§fn execute_with_context<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: &'life1 ExecutionContext,
input: I,
) -> Pin<Box<dyn Future<Output = Result<O, KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
I: 'async_trait,
Self: Sync + 'async_trait,
fn execute_with_context<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: &'life1 ExecutionContext,
input: I,
) -> Pin<Box<dyn Future<Output = Result<O, KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
I: 'async_trait,
Self: Sync + 'async_trait,
Source§impl GpuKernel for KMeans
impl GpuKernel for KMeans
Source§fn metadata(&self) -> &KernelMetadata
fn metadata(&self) -> &KernelMetadata
Source§fn requires_gpu_native(&self) -> bool
fn requires_gpu_native(&self) -> bool
Source§fn health_check(&self) -> HealthStatus
fn health_check(&self) -> HealthStatus
Source§fn refresh_config(&mut self, _config: &KernelConfig) -> Result<(), KernelError>
fn refresh_config(&mut self, _config: &KernelConfig) -> Result<(), KernelError>
Source§impl RingKernelHandler<K2KCentroidBroadcast, K2KCentroidBroadcastAck> for KMeans
RingKernelHandler for K2K centroid broadcast.
impl RingKernelHandler<K2KCentroidBroadcast, K2KCentroidBroadcastAck> for KMeans
RingKernelHandler for K2K centroid broadcast.
Receives new centroids broadcast from coordinator.
Source§fn handle<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
msg: K2KCentroidBroadcast,
) -> Pin<Box<dyn Future<Output = Result<K2KCentroidBroadcastAck>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn handle<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
msg: K2KCentroidBroadcast,
) -> Pin<Box<dyn Future<Output = Result<K2KCentroidBroadcastAck>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn initialize<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
) -> Pin<Box<dyn Future<Output = Result<(), KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Sync + 'async_trait,
fn initialize<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
) -> Pin<Box<dyn Future<Output = Result<(), KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Sync + 'async_trait,
Source§fn ring_shutdown<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
) -> Pin<Box<dyn Future<Output = Result<(), KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Sync + 'async_trait,
fn ring_shutdown<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
) -> Pin<Box<dyn Future<Output = Result<(), KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Sync + 'async_trait,
Source§fn handle_secure<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
ctx: &'life1 mut SecureRingContext<'life2, 'life3>,
msg: M,
) -> Pin<Box<dyn Future<Output = Result<R, KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
M: 'async_trait,
R: 'async_trait,
Self: Sync + 'async_trait,
fn handle_secure<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
ctx: &'life1 mut SecureRingContext<'life2, 'life3>,
msg: M,
) -> Pin<Box<dyn Future<Output = Result<R, KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
M: 'async_trait,
R: 'async_trait,
Self: Sync + 'async_trait,
Source§impl RingKernelHandler<K2KKMeansSync, K2KKMeansSyncResponse> for KMeans
RingKernelHandler for K2K iteration sync.
impl RingKernelHandler<K2KKMeansSync, K2KKMeansSyncResponse> for KMeans
RingKernelHandler for K2K iteration sync.
Synchronizes distributed KMeans workers after each iteration. In a single-instance setting, validates iteration state and returns convergence status.
Source§fn handle<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
msg: K2KKMeansSync,
) -> Pin<Box<dyn Future<Output = Result<K2KKMeansSyncResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn handle<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
msg: K2KKMeansSync,
) -> Pin<Box<dyn Future<Output = Result<K2KKMeansSyncResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn initialize<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
) -> Pin<Box<dyn Future<Output = Result<(), KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Sync + 'async_trait,
fn initialize<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
) -> Pin<Box<dyn Future<Output = Result<(), KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Sync + 'async_trait,
Source§fn ring_shutdown<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
) -> Pin<Box<dyn Future<Output = Result<(), KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Sync + 'async_trait,
fn ring_shutdown<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
) -> Pin<Box<dyn Future<Output = Result<(), KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Sync + 'async_trait,
Source§fn handle_secure<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
ctx: &'life1 mut SecureRingContext<'life2, 'life3>,
msg: M,
) -> Pin<Box<dyn Future<Output = Result<R, KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
M: 'async_trait,
R: 'async_trait,
Self: Sync + 'async_trait,
fn handle_secure<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
ctx: &'life1 mut SecureRingContext<'life2, 'life3>,
msg: M,
) -> Pin<Box<dyn Future<Output = Result<R, KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
M: 'async_trait,
R: 'async_trait,
Self: Sync + 'async_trait,
Source§impl RingKernelHandler<K2KPartialCentroid, K2KCentroidAggregation> for KMeans
RingKernelHandler for K2K partial centroid updates.
impl RingKernelHandler<K2KPartialCentroid, K2KCentroidAggregation> for KMeans
RingKernelHandler for K2K partial centroid updates.
Aggregates partial centroid contributions from distributed workers.
Source§fn handle<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
msg: K2KPartialCentroid,
) -> Pin<Box<dyn Future<Output = Result<K2KCentroidAggregation>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn handle<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
msg: K2KPartialCentroid,
) -> Pin<Box<dyn Future<Output = Result<K2KCentroidAggregation>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn initialize<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
) -> Pin<Box<dyn Future<Output = Result<(), KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Sync + 'async_trait,
fn initialize<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
) -> Pin<Box<dyn Future<Output = Result<(), KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Sync + 'async_trait,
Source§fn ring_shutdown<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
) -> Pin<Box<dyn Future<Output = Result<(), KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Sync + 'async_trait,
fn ring_shutdown<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
) -> Pin<Box<dyn Future<Output = Result<(), KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Sync + 'async_trait,
Source§fn handle_secure<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
ctx: &'life1 mut SecureRingContext<'life2, 'life3>,
msg: M,
) -> Pin<Box<dyn Future<Output = Result<R, KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
M: 'async_trait,
R: 'async_trait,
Self: Sync + 'async_trait,
fn handle_secure<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
ctx: &'life1 mut SecureRingContext<'life2, 'life3>,
msg: M,
) -> Pin<Box<dyn Future<Output = Result<R, KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
M: 'async_trait,
R: 'async_trait,
Self: Sync + 'async_trait,
Source§impl RingKernelHandler<KMeansAssignRing, KMeansAssignResponse> for KMeans
RingKernelHandler for KMeans assignment step (E-step).
impl RingKernelHandler<KMeansAssignRing, KMeansAssignResponse> for KMeans
RingKernelHandler for KMeans assignment step (E-step).
Source§fn handle<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
msg: KMeansAssignRing,
) -> Pin<Box<dyn Future<Output = Result<KMeansAssignResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn handle<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
msg: KMeansAssignRing,
) -> Pin<Box<dyn Future<Output = Result<KMeansAssignResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn initialize<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
) -> Pin<Box<dyn Future<Output = Result<(), KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Sync + 'async_trait,
fn initialize<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
) -> Pin<Box<dyn Future<Output = Result<(), KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Sync + 'async_trait,
Source§fn ring_shutdown<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
) -> Pin<Box<dyn Future<Output = Result<(), KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Sync + 'async_trait,
fn ring_shutdown<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
) -> Pin<Box<dyn Future<Output = Result<(), KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Sync + 'async_trait,
Source§fn handle_secure<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
ctx: &'life1 mut SecureRingContext<'life2, 'life3>,
msg: M,
) -> Pin<Box<dyn Future<Output = Result<R, KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
M: 'async_trait,
R: 'async_trait,
Self: Sync + 'async_trait,
fn handle_secure<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
ctx: &'life1 mut SecureRingContext<'life2, 'life3>,
msg: M,
) -> Pin<Box<dyn Future<Output = Result<R, KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
M: 'async_trait,
R: 'async_trait,
Self: Sync + 'async_trait,
Source§impl RingKernelHandler<KMeansQueryRing, KMeansQueryResponse> for KMeans
RingKernelHandler for point queries.
impl RingKernelHandler<KMeansQueryRing, KMeansQueryResponse> for KMeans
RingKernelHandler for point queries.
Source§fn handle<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
msg: KMeansQueryRing,
) -> Pin<Box<dyn Future<Output = Result<KMeansQueryResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn handle<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
msg: KMeansQueryRing,
) -> Pin<Box<dyn Future<Output = Result<KMeansQueryResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn initialize<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
) -> Pin<Box<dyn Future<Output = Result<(), KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Sync + 'async_trait,
fn initialize<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
) -> Pin<Box<dyn Future<Output = Result<(), KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Sync + 'async_trait,
Source§fn ring_shutdown<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
) -> Pin<Box<dyn Future<Output = Result<(), KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Sync + 'async_trait,
fn ring_shutdown<'life0, 'life1, 'async_trait>(
&'life0 self,
_ctx: &'life1 mut RingContext<'_>,
) -> Pin<Box<dyn Future<Output = Result<(), KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: Sync + 'async_trait,
Source§fn handle_secure<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
ctx: &'life1 mut SecureRingContext<'life2, 'life3>,
msg: M,
) -> Pin<Box<dyn Future<Output = Result<R, KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
M: 'async_trait,
R: 'async_trait,
Self: Sync + 'async_trait,
fn handle_secure<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
ctx: &'life1 mut SecureRingContext<'life2, 'life3>,
msg: M,
) -> Pin<Box<dyn Future<Output = Result<R, KernelError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
M: 'async_trait,
R: 'async_trait,
Self: Sync + 'async_trait,
Source§impl RingKernelHandler<KMeansUpdateRing, KMeansUpdateResponse> for KMeans
RingKernelHandler for KMeans update step (M-step).
impl RingKernelHandler<KMeansUpdateRing, KMeansUpdateResponse> for KMeans
RingKernelHandler for KMeans update step (M-step).