Method: Ai4r::Clusterers::BisectingKMeans#build

Defined in:
lib/ai4r/clusterers/bisecting_k_means.rb

#build(data_set, number_of_clusters) ⇒ Object

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



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/ai4r/clusterers/bisecting_k_means.rb', line 51

def build(data_set, number_of_clusters)
  @data_set = data_set
  @number_of_clusters = number_of_clusters
  
  @clusters = [@data_set]
  @centroids = [@data_set.get_mean_or_mode]
  while @clusters.length < @number_of_clusters
    biggest_cluster_index = find_biggest_cluster_index(@clusters)
    clusterer = KMeans.new.
      set_parameters(get_parameters).
      build(@clusters[biggest_cluster_index], 2)
    @clusters.delete_at(biggest_cluster_index)
    @centroids.delete_at(biggest_cluster_index)
    @clusters.concat(clusterer.clusters)
    @centroids.concat(clusterer.centroids)
  end
  
  super if @refine
  
  return self
end