Class: Ai4r::Clusterers::CentroidLinkage

Inherits:
SingleLinkage show all
Includes:
ClusterTree
Defined in:
lib/ai4r/clusterers/centroid_linkage.rb

Overview

Implementation of an Agglomerative Hierarchical clusterer with centroid linkage algorithm, aka unweighted pair group method centroid (UPGMC) (Everitt et al., 2001 ; Jain and Dubes, 1988 ; Sokal and Michener, 1958 ) Hierarchical clusterer create one cluster per element, and then progressively merge clusters, until the required number of clusters is reached. The distance between clusters is the squared euclidean distance between their centroids.

D(cx, (ci U cj)) = | mx - mij |^2
D(cx, (ci U cj)) =  (ni/(ni+nj))*D(cx, ci) +
                    (nj/(ni+nj))*D(cx, cj) -
                    (ni*nj/(ni+nj)^2)*D(ci, cj)

Instance Attribute Summary

Attributes included from ClusterTree

#cluster_tree

Attributes inherited from SingleLinkage

#clusters, #data_set, #number_of_clusters

Instance Method Summary collapse

Methods included from ClusterTree

#initialize

Methods inherited from SingleLinkage

#draw_map, #initialize, #silhouette

Methods included from Data::Parameterizable

#get_parameters, included, #set_parameters

Instance Method Details

#build(data_set, number_of_clusters = 1, **options) ⇒ Object

Build a new clusterer, using data examples found in data_set. Items will be clustered in “number_of_clusters” different clusters.

Parameters:

  • data_set (Object)
  • number_of_clusters (Object) (defaults to: 1)
  • *options (Object)

Returns:

  • (Object)


48
49
50
# File 'lib/ai4r/clusterers/centroid_linkage.rb', line 48

def build(data_set, number_of_clusters = 1, **options)
  super
end

#eval(_data_item) ⇒ Object

This algorithms does not allow classification of new data items once it has been built. Rebuild the cluster including you data element.

Parameters:

  • _data_item (Object)

Returns:

  • (Object)

Raises:

  • (NotImplementedError)


56
57
58
# File 'lib/ai4r/clusterers/centroid_linkage.rb', line 56

def eval(_data_item)
  raise NotImplementedError, 'Eval of new data is not supported by this algorithm.'
end

#supports_eval?Object

Returns:

  • (Object)


61
62
63
# File 'lib/ai4r/clusterers/centroid_linkage.rb', line 61

def supports_eval?
  false
end