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