Class: CanberraDistance
- Inherits:
-
Object
- Object
- CanberraDistance
- Defined in:
- lib/canberra_distance.rb
Class Method Summary collapse
Class Method Details
.calculate(vector1, vector2) ⇒ Object
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/canberra_distance.rb', line 2 def self.calculate(vector1, vector2) raise ArgumentError.new( "Cardinality mismatch when calculating Canberra distance." ) if vector1.size != vector2.size pairs = vector1.zip(vector2) numerators = pairs.map { |a, b| (a - b).abs.to_f } denominators = pairs.map { |a, b| a.abs + b.abs } distances = numerators.zip(denominators).map do |n, d| d.zero? ? 0 : n / d end distances.inject(:+) end |