Sha256: 3e0ff6e22dd01d47192f12a5c5a74c0ea3cf3c3b7a921b643cad3ecf344d472c
Contents?: true
Size: 971 Bytes
Versions: 2
Compression:
Stored size: 971 Bytes
Contents
module KMeans #:nodoc: class Centroid # The position of the centroid, or a value for every dimension attr_reader :position def initialize(position) @position = position end def nodes @nodes ||= [] end def add_nodes(*new_nodes) new_nodes.each do |node| self.nodes << node node.centroid = self end end alias :add_node :add_nodes def remove_nodes(*nodes) nodes.each do |node| self.nodes.delete(node) node.centroid = nil end end alias :remove_node :remove_nodes # Finds a new centroid based on the nodes currently attached to it def rebalance return true if nodes.empty? size = nodes.first. position.size @position = (0...size).map do |i| self.nodes.map { |e| e. position[i] }.mean end end def inspect "KMeans::Centroid:#{self.position.inspect}" end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
davidrichards-kmeans-0.0.3 | lib/kmeans/centroid.rb |
davidrichards-kmeans-0.0.4 | lib/kmeans/centroid.rb |