class KMeansCrystal::Cluster
Attributes
centroid[R]
entries[R]
name[RW]
Public Class Methods
new(name, centroid, vector_name, measure)
click to toggle source
# File lib/kmeans-crystal.rb, line 29 def initialize(name, centroid, vector_name, measure) @name = name @centroid = centroid @entries = Array.new @vector_name = vector_name @measure = measure end
Public Instance Methods
distance(entry)
click to toggle source
# File lib/kmeans-crystal.rb, line 42 def distance(entry) return @measure.distance(@centroid, entry[@vector_name]) end
output()
click to toggle source
# File lib/kmeans-crystal.rb, line 37 def output output_entries = @entries.map{|e| e[:distance] = distance(e); e } return { name: @name, centroid: @centroid, entries: output_entries } end
update_centroid()
click to toggle source
# File lib/kmeans-crystal.rb, line 46 def update_centroid new_centroid = Array.new(@centroid.size, 0.0) return new_centroid if entries.size==0 entries.each do |entry| entry[@vector_name].size.times do |i| new_centroid[i] += entry[@vector_name][i] end end new_centroid.map!{|e| e/entries.size } return new_centroid end