ML之RS之CF:基于用户的CF算法—利用大量用户的电影及其评分数据集对一个新用户Jason进行推荐电影+(已知Jason曾观看几十部电影及其评分)
生活随笔
收集整理的這篇文章主要介紹了
ML之RS之CF:基于用户的CF算法—利用大量用户的电影及其评分数据集对一个新用户Jason进行推荐电影+(已知Jason曾观看几十部电影及其评分)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ML之RS之CF:基于用戶的CF算法—利用大量用戶的電影及其評分數據集對一個新用戶Jason進行推薦電影+(已知Jason曾觀看幾十部電影及其評分)
?
?
目錄
輸出結果
實現代碼
?
?
?
輸出結果
先看推薦結果顯示
?
實現代碼
from math import sqrt#pearson距離 def pearson_dis(rating1, rating2):sum_xy = 0sum_x = 0sum_y = 0sum_x2 = 0sum_y2 = 0n = 0for key in rating1:if key in rating2:n += 1x = rating1[key]y = rating2[key]sum_xy += x * ysum_x += xsum_y += ysum_x2 += pow(x, 2)sum_y2 += pow(y, 2)# now compute denominatordenominator = sqrt(sum_x2 - pow(sum_x, 2) / n) * sqrt(sum_y2 - pow(sum_y, 2) / n)if denominator == 0:return 0else:return (sum_xy - (sum_x * sum_y) / n) / denominator#查找最近鄰函數 def computeNearestNeighbor(username, users):"""在給定username的情況下,計算其他用戶和它的距離并排序"""distances = []for user in users: #全用戶遍歷,找到兩個用戶,計算pearson距離,依次添加到列表內if user != username: #distance = manhattan_dis(users[user], users[username])distance = pearson_dis(users[user], users[username])distances.append((distance, user))distances.sort()return distances#進行推薦函數 def recommend(username, users):nearest = computeNearestNeighbor(username, users)[0][1]recommendations = []neighborRatings = users[nearest]userRatings = users[username]for artist in neighborRatings:if not artist in userRatings:recommendations.append((artist, neighborRatings[artist]))results = sorted(recommendations, key=lambda artistTuple: artistTuple[1], reverse = True)for result in results:print(result[0], result[1])recommend('Jason', users)?
?
?
相關文章推薦
ML之RS之CF:基于用戶的CF算法—利用大量用戶的電影及其評分數據集對一個新用戶Jason進行推薦電影+(已知Jason曾觀看幾十部電影及其評分)
?
?
總結
以上是生活随笔為你收集整理的ML之RS之CF:基于用户的CF算法—利用大量用户的电影及其评分数据集对一个新用户Jason进行推荐电影+(已知Jason曾观看几十部电影及其评分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Algorithm之RS:RS常用的一些
- 下一篇: ML之RS:基于用户的CF+LFM实现的