Class: RecommEngine::Recommender

Inherits:
Object
  • Object
show all
Defined in:
lib/recommengine/recommender.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data:, subject:, similarity: RecommEngine::DEFAULT_ALGORITHM) ⇒ Recommender

Returns a new instance of Recommender.



5
6
7
8
9
10
11
12
13
14
15
# File 'lib/recommengine/recommender.rb', line 5

def initialize(data:, subject:, similarity: RecommEngine::DEFAULT_ALGORITHM)
  @data = data
  @subject = subject
  @similarity_algorithm = similarity
  @predicted_scores = {}
  @user_similarity_scores = {}
  @sum_of_weighted_scores_by_item = {}
  @sum_of_user_similarity_scores_by_item = {}
  @sum_of_weighted_scores_by_item.default = 0
  @sum_of_user_similarity_scores_by_item.default = 0
end

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.



3
4
5
# File 'lib/recommengine/recommender.rb', line 3

def data
  @data
end

#predicted_scoresObject (readonly)

Returns the value of attribute predicted_scores.



3
4
5
# File 'lib/recommengine/recommender.rb', line 3

def predicted_scores
  @predicted_scores
end

#similarity_algorithmObject (readonly)

Returns the value of attribute similarity_algorithm.



3
4
5
# File 'lib/recommengine/recommender.rb', line 3

def similarity_algorithm
  @similarity_algorithm
end

#subjectObject (readonly)

Returns the value of attribute subject.



3
4
5
# File 'lib/recommengine/recommender.rb', line 3

def subject
  @subject
end

#sum_of_user_similarity_scores_by_itemObject (readonly)

Returns the value of attribute sum_of_user_similarity_scores_by_item.



3
4
5
# File 'lib/recommengine/recommender.rb', line 3

def sum_of_user_similarity_scores_by_item
  @sum_of_user_similarity_scores_by_item
end

#sum_of_weighted_scores_by_itemObject (readonly)

Returns the value of attribute sum_of_weighted_scores_by_item.



3
4
5
# File 'lib/recommengine/recommender.rb', line 3

def sum_of_weighted_scores_by_item
  @sum_of_weighted_scores_by_item
end

#user_similarity_scoresObject (readonly)

Returns the value of attribute user_similarity_scores.



3
4
5
# File 'lib/recommengine/recommender.rb', line 3

def user_similarity_scores
  @user_similarity_scores
end

Instance Method Details

#recsObject



17
18
19
20
21
# File 'lib/recommengine/recommender.rb', line 17

def recs
  calculate_weighted_totals
  calculate_predicted_scores
  predicted_scores.sort_by{ |item, score| score }.reverse
end

#top_recObject



23
24
25
26
27
# File 'lib/recommengine/recommender.rb', line 23

def top_rec
  calculate_weighted_totals
  calculate_predicted_scores
  predicted_scores.max_by{ |item, score| score }
end