Пример #1
0
        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)
Пример #3
0
                # 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"
Пример #4
0
        """
#        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