Kmeans

Struct Kmeans 

Source
pub struct Kmeans<T> { /* private fields */ }
Expand description

Clustering via the k-means algorithm (aka Lloyd’s algorithm).

k-means clustering aims to partition n observations into k clusters in which each observation belongs to the cluster with the nearest mean, serving as a prototype of the cluster.wikipedia

This is a heuristic, iterative approximation to the true optimal assignment. The parameters used to control the approximation can be set via KmeansBuilder.

§Examples

use cogset::{Euclid, Kmeans};

let data = [Euclid([0.0, 0.0]),
            Euclid([1.0, 0.5]),
            Euclid([0.2, 0.2]),
            Euclid([0.3, 0.8]),
            Euclid([0.0, 1.0])];
let k = 3;

let kmeans = Kmeans::new(&data, k);

println!("{:?}", kmeans.clusters());

Implementations§

Source§

impl<T> Kmeans<T>
where Euclid<T>: Point + Euclidean + Clone,

Source

pub fn new(data: &[Euclid<T>], k: usize) -> Kmeans<T>

Run k-means on data with the default settings.

Source

pub fn clusters(&self) -> Vec<(Euclid<T>, Vec<usize>)>

Retrieve the means and the clusters themselves that this k-means instance computed.

The clusters are represented by vectors of indexes into the original data.

Source

pub fn converged(&self) -> Result<usize, usize>

Return whether the algorithm converged, and how many steps that took.

Ok is returned if the algorithm did meet the tolerance criterion, and Err if it reached the iteration limit instead.

Auto Trait Implementations§

§

impl<T> Freeze for Kmeans<T>

§

impl<T> RefUnwindSafe for Kmeans<T>
where T: RefUnwindSafe,

§

impl<T> Send for Kmeans<T>
where T: Send,

§

impl<T> Sync for Kmeans<T>
where T: Sync,

§

impl<T> Unpin for Kmeans<T>
where T: Unpin,

§

impl<T> UnwindSafe for Kmeans<T>
where T: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.