Class: KMeansClustering::Job
- Inherits:
-
Object
- Object
- KMeansClustering::Job
- Defined in:
- lib/kmeans-clustering.rb
Overview
job that will be used for parallelization with Cabiri
Instance Attribute Summary collapse
-
#centers ⇒ Object
Returns the value of attribute centers.
-
#elements ⇒ Object
Returns the value of attribute elements.
Instance Method Summary collapse
- #aggregateProximityData(data) ⇒ Object
- #assignElementsToClosestCenter ⇒ Object
-
#initialize(centers, elements) ⇒ Job
constructor
A new instance of Job.
- #run ⇒ Object
Constructor Details
#initialize(centers, elements) ⇒ Job
Returns a new instance of Job.
78 79 80 81 |
# File 'lib/kmeans-clustering.rb', line 78 def initialize(centers, elements) @centers = centers @elements = elements end |
Instance Attribute Details
#centers ⇒ Object
Returns the value of attribute centers.
75 76 77 |
# File 'lib/kmeans-clustering.rb', line 75 def centers @centers end |
#elements ⇒ Object
Returns the value of attribute elements.
76 77 78 |
# File 'lib/kmeans-clustering.rb', line 76 def elements @elements end |
Instance Method Details
#aggregateProximityData(data) ⇒ Object
109 110 111 112 113 114 115 116 |
# File 'lib/kmeans-clustering.rb', line 109 def aggregateProximityData(data) results = {} data.each do |center, elements| sum = KMeansClustering::calcSum.call(elements) results[center] = {:sum => sum, :nb_elements => elements.length} end results end |
#assignElementsToClosestCenter ⇒ Object
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/kmeans-clustering.rb', line 89 def assignElementsToClosestCenter results = Hash.new { |h,k| h[k] = [] } @elements.each do |element| best_center = nil best_distance = nil @centers.each do |center| distance = KMeansClustering::calcDistanceSquared.call(center, element) if best_distance.nil? or distance < best_distance best_center = center best_distance = distance end end results[best_center] << element end results end |
#run ⇒ Object
83 84 85 86 87 |
# File 'lib/kmeans-clustering.rb', line 83 def run proximity_data = assignElementsToClosestCenter aggregated_proximity_data = aggregateProximityData(proximity_data) aggregated_proximity_data end |