Function kmedoids::fastermsc

``````pub fn fastermsc<M, N, L>(
mat: &M,
med: &mut Vec<usize>,
maxiter: usize
) -> (L, Vec<usize>, usize, usize)where
N: Zero + PartialOrd + Copy,
L: Float + Signed + AddAssign + From<N> + From<u32>,
Expand description

Run the FasterMSC algorithm.

If used multiple times, it is better to additionally shuffle the input data, to increase randomness of the solutions found and hence increase the chance of finding a better solution.

• type `M` - matrix data type such as `ndarray::Array2` or `kmedoids::arrayadapter::LowerTriangle`
• type `N` - number data type such as `u32` or `f64`
• type `L` - number data type such as `i64` or `f64` for the loss (must be signed)
• `mat` - a pairwise distance matrix
• `med` - the list of medoids
• `maxiter` - the maximum number of iterations allowed

returns a tuple containing:

• the final loss
• the final cluster assignment
• the number of iterations needed
• the number of swaps performed

Panics

• panics when the dissimilarity matrix is not square
• panics when k is 0 or larger than N

Example

Given a dissimilarity matrix of size 4 x 4, use:

``````let data = ndarray::arr2(&[[0,1,2,3],[1,0,4,5],[2,4,0,6],[3,5,6,0]]);
let mut meds = kmedoids::random_initialization(4, 2, &mut rand::thread_rng());
let (loss, assi, n_iter, n_swap): (f64, _, _, _) = kmedoids::fastermsc(&data, &mut meds, 100);
println!("Loss is: {}", loss);``````