class Newral::Data::Cluster
Attributes
center[RW]
label[RW]
moved[RW]
points[RW]
Public Class Methods
new( label: nil, points: [], center: nil, moved: true )
click to toggle source
# File lib/newral/data/cluster.rb, line 5 def initialize( label: nil, points: [], center: nil, moved: true ) @label = label @points = points @point_size = points.size > 0 ? points.first.size : 1 @moved = moved # did center move when updating it @center = center end
Public Instance Methods
add_point( point )
click to toggle source
# File lib/newral/data/cluster.rb, line 13 def add_point( point ) if @points.size == 0 @point_size = point.size @center ||= point else # all points must be of same dimension raise Errors::WrongPointDimension unless point.size == @point_size end @points << point self end
update_center()
click to toggle source
# File lib/newral/data/cluster.rb, line 25 def update_center return unless @points.size > 0 new_center = Vector.elements( [0]*points.first.size ) @points.each do |point| new_center = new_center + Vector.elements( point ) end new_center = ( new_center/@points.size.to_f).to_a @moved = new_center != @center @center = new_center end