the-algorithm
the-algorithm copied to clipboard
Switch it to Ruby
require 'matrix'
class RecommendationSystem
def initialize(user_preferences, space_profiles)
@user_preferences = user_preferences
@space_profiles = space_profiles
end
def recommend(user)
user_vector = Vector.elements(@user_preferences[user])
similarities = {}
@space_profiles.each do |space, profile|
space_vector = Vector.elements(profile)
cosine_similarity = calculate_cosine_similarity(user_vector, space_vector)
similarities[space] = cosine_similarity
end
similarities.sort_by { |_space, similarity| -similarity }.to_h
end
private
def calculate_cosine_similarity(vector1, vector2)
dot_product = vector1.inner_product(vector2)
magnitude = vector1.magnitude * vector2.magnitude
dot_product / magnitude
end
end
Example Usage
user_preferences = {
'user1' => [5, 3, 2, 0, 5],
}
space_profiles = {
'space1' => [5, 3, 2, 0, 5],
'space2' => [1, 1, 1, 1, 1],
}
recommender = RecommendationSystem.new(user_preferences, space_profiles)
recommendations = recommender.recommend('user1')
puts recommendations
Twitter was originally written in Ruby, showing the level of sophistication of their execs and engineers. Sun or Oracle finally got rid of the "Fail Whale", replacing Ruby with Java (or a variant).
Twitter "engineers" have always been a joke on par with Firefox "engineers".