for (diffItem_dislike, diffRatings_dislike) in deviations_dislike.items(): if diffItem_dislike not in userRatings and userItem in deviations_dislike[ diffItem_dislike]: freq_dislike = frequencies_dislike[diffItem_dislike][userItem] tem2_rec.setdefault(diffItem_dislike, 0.0) tem2_fre.setdefault(diffItem_dislike, 0) # add to the running sum representing the numerator of the formula tem2_rec[diffItem_dislike] += ( (diffRatings_dislike[userItem] + userRating) * freq_dislike) # keep a running sum of the frequency of diffItem tem2_fre[diffItem_dislike] += freq_dislike recommendations = dict(recommendations, **tem2_rec) frequencies4s1 = dict(frequencies4s1, **tem2_fre) recommendations = [(k, v / frequencies4s1[k]) for [k, v] in recommendations.items()] # finally sort and return recommendations.sort(key=lambda artistTuple: artistTuple[1], reverse=True) return recommendations # test 02 using MovieLens DataSet flag = True from data_format.input_format import user_install_record_to_dict user_dict = user_install_record_to_dict( file('C:/Program Files/Geany/RecSys_Python/ml-100k/ua.test'), training=flag) get_deviation_likePolar(user_dict) g = user_dict['1'] print "slopeone result: \n", slopeOne_biPolar_recommendations(g), "\n"
# for left in users: # for right in users: # #TODO # pass # else: #E distance # pass if __name__ == '__main__': # -----Training Part----- flag = True from data_format.input_format import user_install_record_to_dict user_dict = user_install_record_to_dict(file('../input/ml-100k/u.data'), training=flag) # print user_dict rec = UserBasedRecommendation(neighbor=5, user_rating_dict=user_dict, training=flag) # print rec.get_all_users() # print rec.get_active_users() # one_user = rec.get_all_users()[0] one_user = '******' # for one_user in rec.get_all_users()[1:1]: # print user_dict['216'] # nearest_neighbor = rec.get_nearest_neighbor(user=one_user, training=flag) nearest_neighbor = rec.get_active_users() # print rec.get_all_items(user='******') # pearson_value_list = rec.get_pearson_value_list(user=one_user, users=nearest_neighbor, training=flag) # print pearson_value_list # print rec.get_nearest_neighbor(user=one_user)
# add to the running sum representing the numerator of the formula tem1_rec[diffItem_like] += ((diffRatings_like[userItem] + userRating) * freq_like) import copy recommendations = copy.deepcopy(tem1_rec) # keep a running sum of the frequency of diffItem tem1_fre[diffItem_like] += freq_like frequencies4s1 = copy.deepcopy(tem1_fre) # for every item in our users_dislike dataset that the user didn't rate for (diffItem_dislike, diffRatings_dislike) in deviations_dislike.items(): if diffItem_dislike not in userRatings and userItem in deviations_dislike[diffItem_dislike]: freq_dislike = frequencies_dislike[diffItem_dislike][userItem] tem2_rec.setdefault(diffItem_dislike, 0.0) tem2_fre.setdefault(diffItem_dislike, 0) # add to the running sum representing the numerator of the formula tem2_rec[diffItem_dislike] += ((diffRatings_dislike[userItem] + userRating) * freq_dislike) # keep a running sum of the frequency of diffItem tem2_fre[diffItem_dislike] += freq_dislike recommendations = dict(recommendations, **tem2_rec) frequencies4s1 = dict(frequencies4s1, **tem2_fre) recommendations = [(k, v / frequencies4s1[k]) for [k, v] in recommendations.items()] # finally sort and return recommendations.sort(key = lambda artistTuple: artistTuple[1], reverse = True) return recommendations # test 02 using MovieLens DataSet flag = True from data_format.input_format import user_install_record_to_dict user_dict = user_install_record_to_dict(file('C:/Program Files/Geany/RecSys_Python/ml-100k/ua.test'), training=flag) get_deviation_likePolar(user_dict) g = user_dict['1'] print "slopeone result: \n", slopeOne_biPolar_recommendations(g), "\n"
""" # get standard value all_user = self.get_all_users() for x in item_list: input_list = [] for u in all_user: if not self.user_rating[u].has_key(x): input_list.append(None) else: input_list.append(self.user_rating[u][x]) normal_value = convert_values_normalization(input_list) # update value for i in len(normal_value): if normal_value[i] != None: self.user_rating[all_user[i]][x] = normal_value[i] print "Use standard user rating." if __name__ == '__main__': from data_format.input_format import user_install_record_to_dict flag = False user_dict = user_install_record_to_dict(file('../input/ml-100k/u.data'), training=flag) rec = ItemBasedRecommendation(neighbor=5, user_rating_dict=user_dict, training=flag) # print rec.get_all_users() print len(rec.get_all_items(user='******')) # ibr.use_standard_user_rating() # print ibr.user_rating # pass