Documentation>C API
Data Structures
hikmeans.h File Reference

Hierarchical integer K-Means clustering. More...

`#include "generic.h"`
`#include "ikmeans.h"`

## Data Structures

struct | VlHIKMNode
| HIKM tree node. More...
struct | VlHIKMTree
| HIKM tree. More...

## Functions

Create and destroy
VlHIKMTree * | vl_hikm_new (int method)
| New HIKM tree. More...
void | vl_hikm_delete (VlHIKMTree *f)
| Delete HIKM tree. More...
Retrieve data and parameters
vl_size | vl_hikm_get_ndims (VlHIKMTree const *f)
| Get data dimensionality. More...
vl_size | vl_hikm_get_K (VlHIKMTree const *f)
| Get K. More...
vl_size | vl_hikm_get_depth (VlHIKMTree const *f)
| Get depth. More...
int | vl_hikm_get_verbosity (VlHIKMTree const *f)
| Get verbosity level. More...
vl_size | vl_hikm_get_max_niters (VlHIKMTree const *f)
| Get maximum number of iterations. More...
VlHIKMNode const * | vl_hikm_get_root (VlHIKMTree const *f)
| Get maximum number of iterations. More...
Set parameters
void | vl_hikm_set_verbosity (VlHIKMTree *f, int verb)
| Set verbosity level. More...
void | vl_hikm_set_max_niters (VlHIKMTree *f, int max_niters)
| Set maximum number of iterations. More...
Process data
void | vl_hikm_init (VlHIKMTree *f, vl_size M, vl_size K, vl_size depth)
| Initialize HIKM tree. More...
void | vl_hikm_train (VlHIKMTree *f, vl_uint8 const *data, vl_size N)
| Train HIKM tree. More...
void | vl_hikm_push (VlHIKMTree *f, vl_uint32 *asgn, vl_uint8 const *data, vl_size N)
| Project data down HIKM tree. More...

## Detailed Description

Hierarchical Integer K-Means Clustering.

Hierarchical integer K-Means clustering (HIKM) is a simple hierarchical version of integer K-Means (IKM). The algorithm recursively applies integer K-means to create more refined partitions of the data.

Create a tree with vl_hikm_new() and delete it with vl_hikm_delete(). Use vl_hikm_train() to build the tree from training data and vl_hikm_push() to project new data down a HIKM tree.

# HIKM tree

The HIKM tree is represented by a VlHIKMTree structure, which contains a tree composed of VlHIKMNode. Each node is an integer K-means filter which partitions the data into `K` clusters.

Author
  Brian Fulkerson

## Function Documentation

## ◆ vl_hikm_delete()

void vl_hikm_delete | ( | VlHIKMTree * | f | ) |

Parameters

  f | HIKM tree.

## ◆ vl_hikm_get_depth()

vl_size vl_hikm_get_depth | ( | VlHIKMTree const * | f | ) |

Parameters

  f | HIKM tree.

Returns
  depth.

## ◆ vl_hikm_get_K()

vl_size vl_hikm_get_K | ( | VlHIKMTree const * | f | ) |

Parameters

  f | HIKM tree.

Returns
  K.

## ◆ vl_hikm_get_max_niters()

vl_size vl_hikm_get_max_niters | ( | VlHIKMTree const * | f | ) |

Parameters

  f | HIKM tree.

Returns
  maximum number of iterations.

## ◆ vl_hikm_get_ndims()

vl_size vl_hikm_get_ndims | ( | VlHIKMTree const * | f | ) |

Parameters

  f | HIKM tree.

Returns
  data dimensionality.

## ◆ vl_hikm_get_root()

VlHIKMNode const* vl_hikm_get_root | ( | VlHIKMTree const * | f | ) |

Parameters

  f | HIKM tree.

Returns
  maximum number of iterations.

## ◆ vl_hikm_get_verbosity()

int vl_hikm_get_verbosity | ( | VlHIKMTree const * | f | ) |

Parameters

  f | HIKM tree.

Returns
  verbosity level.

## ◆ vl_hikm_init()

void vl_hikm_init | ( | VlHIKMTree * | f,
|  | vl_size | M,
|  | vl_size | K,
|  | vl_size | depth
| ) |  |

Parameters

  f | HIKM tree.
  M | Data dimensionality.
  K | Number of clusters per node.
  depth | Tree depth.

Returns
  a new HIKM tree representing the clustering.

Remarks
  depth cannot be smaller than 1.

## ◆ vl_hikm_new()

VlHIKMTree* vl_hikm_new | ( | int | method | ) |

Parameters

  method | clustering method.

Returns
  new HIKM tree.

## ◆ vl_hikm_push()

void vl_hikm_push | ( | VlHIKMTree * | f,
|  | vl_uint32 * | asgn,
|  | vl_uint8 const * | data,
|  | vl_size | N
| ) |  |

Parameters

  f | HIKM tree.
  asgn | Path down the tree (out).
  data | Data to project.
  N | Number of data.

The function writes to asgn the path of the data data down the HIKM tree f. The parameter asgn must point to an array of `M` by `N` elements, where `M` is the depth of the HIKM tree and `N` is the number of data point to process.

## ◆ vl_hikm_set_max_niters()

void vl_hikm_set_max_niters | ( | VlHIKMTree * | f,
|  | int | max_niters
| ) |  |

Parameters

  f | HIKM tree.
  max_niters | maximum number of iterations.

## ◆ vl_hikm_set_verbosity()

void vl_hikm_set_verbosity | ( | VlHIKMTree * | f,
|  | int | verb
| ) |  |

Parameters

  f | HIKM tree.
  verb | verbosity level.

## ◆ vl_hikm_train()

void vl_hikm_train | ( | VlHIKMTree * | f,
|  | vl_uint8 const * | data,
|  | vl_size | N
| ) |  |

Parameters

  f | HIKM tree.
  data | Data to cluster.
  N | Number of data.