Python协同过滤推荐算法实现详解
协同过滤推荐算法是一种基于用户行为数据的推荐算法,其基本思想是通过分析用户的历史行为,找到与当前用户兴趣相似的其他用户或物品,从而给用户推荐相关的物品。
以下是一个简单的Python实现协同过滤推荐算法的示例:
import numpy as np
# 创建一个用户-物品评分矩阵
ratings = np.array([[5, 3, 0, 1],
[4, 0, 4, 0],
[1, 1, 0, 5],
[0, 0, 4, 4],
[0, 1, 5, 0]])
# 计算用户之间的相似度
def calculate_similarity(ratings):
# 计算用户之间的余弦相似度
similarity = np.dot(ratings, ratings.T) / (np.linalg.norm(ratings, axis=1) * np.linalg.norm(ratings.T, axis=0))
return similarity
# 预测用户对物品的评分
def predict_rating(ratings, similarity):
# 计算每个用户对每个物品的预测评分
predict = np.dot(similarity, ratings) / np.sum(np.abs(similarity), axis=1).reshape(-1, 1)
return predict
# 给用户推荐物品
def recommend_items(ratings, predict, user_id, top_n):
# 获取用户的历史评分
user_ratings = ratings[user_id, :]
# 将已评分的物品置为0,避免再次推荐
user_ratings[user_ratings > 0] = 0
# 获取用户对物品的预测评分
user_predict = predict[user_id, :]
# 推荐预测评分最高的top_n个物品
top_items = np.argsort(user_predict)[::-1][:top_n]
return top_items
# 示例代码
similarity = calculate_similarity(ratings)
predict = predict_rating(ratings, similarity)
top_items = recommend_items(ratings, predict, 0, 2)
print('推荐物品:', top_items)
在上述示例中,我们首先创建了一个用户-物品评分矩阵,然后使用余弦相似度计算用户之间的相似度。接下来,利用相似度矩阵和评分矩阵预测用户对物品的评分,并根据预测评分给用户推荐物品。
注意,这只是一个简单的示例,实际的协同过滤推荐算法可能会涉及更复杂的计算和优化方法。此外,还可以考虑其他因素如物品的流行度、用户的偏好等来提高推荐的准确性。
原文地址: https://www.cveoy.top/t/topic/pfKR 著作权归作者所有。请勿转载和采集!