class Coletivo::Similarity::EuclideanDistanceStrategy

Public Instance Methods

similarity_between(one, other) click to toggle source
# File lib/coletivo/similarity/euclidean_distance_strategy.rb, line 4
def similarity_between(one, other)
  shared = shared_items_between(one, other)

  return 0 if shared.empty?

  sum_of_squares = shared.inject(0.0) { |sum, item|
    sum + (preferences[one][item] - preferences[other][item]) ** 2
  }

  1 / (1 + sum_of_squares)
end