caserec / CaseRecommender

Case Recommender: A Flexible and Extensible Python Framework for Recommender Systems
MIT License
471 stars 91 forks source link

UserKNN #10

Closed asuresh1 closed 6 years ago

asuresh1 commented 6 years ago

in the method predict_similar_first_scores the common_users probably need to be looked at. Currently with a small test data [[0. 1. 1.] [1. 1. 1.] [1. 0. 0.] [1. 1. 0.]] Where 1 indicates seen item and zero indicates not seen. common_users is outputting a null list. Correct me if i am wrong I thing it should be common_users = list(set(self.users_id_viewed_item.get(self.items[item], [])). intersection(neighbors[1:self.k_neighbors]))

common_users = list(set(self.users_id_viewed_item.get(item, [])). intersection(neighbors[1:self.k_neighbors]))

arthurfortes commented 6 years ago

Hi, Suresh!

You're right. Items in u_list are represented as index.

If you can, pull the request.

Thanks for your attention!

arthurfortes commented 6 years ago

Problem fixed in the new version.

asuresh1 commented 6 years ago

Sorry for this, got busy with something else. I was thinking for creating the ensemble, the scores in each of the recommenders need to out a score in the same range. Suggestion is to normalize the scores from 0 to 1 after sorting so the first item to be recommended by any of the algorithm would have a 1. So as to create an ensemble model the scores for each item might have to a dictionary. Correct me if i am wrong. We can chat over skype or something , my email and skype id is suresh.aswathnarayana@live.com.

arthurfortes commented 6 years ago

Hi, Suresh!

How are you?

I'm very busy this month. I just got back from a conference trip. I'll get organized and I'll get back to you soon to talk. Sorry for the delay.

My skype: fortes-arthur@hotmail.com

Regards.

arthurfortes commented 6 years ago

'Suggestion is to normalize the scores from 0 to 1 after sorting so the first item to be recommended by any of the algorithm would have a 1.' I did this in my ensemble algorithms, which I thought was more logical. Remembering that I make this approach to the ranking of each user isolated.