python 协同过滤推荐算法代码
时间: 2023-07-14 13:03:59 浏览: 123
以下是一个简单的基于用户的协同过滤推荐算法的 Python 代码示例:
```python
import numpy as np
# 创建用户-物品矩阵
user_item_matrix = np.array([
[3, 1, 2, 3, 0, 0],
[4, 2, 3, 4, 0, 0],
[2, 3, 1, 2, 0, 0],
[0, 0, 4, 3, 2, 1],
[0, 0, 5, 4, 1, 2],
])
# 计算用户之间的相似度(使用余弦相似度)
def cosine_similarity(user1, user2):
numerator = np.dot(user1, user2)
denominator = np.linalg.norm(user1) * np.linalg.norm(user2)
return numerator / denominator
# 根据用户相似度进行推荐
def collaborative_filtering(user_id, user_item_matrix):
user1 = user_item_matrix[user_id]
similarity_scores = []
for i in range(len(user_item_matrix)):
user2 = user_item_matrix[i]
similarity = cosine_similarity(user1, user2)
similarity_scores.append((i, similarity))
similarity_scores.sort(key=lambda x: x[1], reverse=True)
recommended_items = set()
for i in range(1, len(similarity_scores)):
user_id = similarity_scores[i][0]
items = np.where(user_item_matrix[user_id] > 0)[0]
recommended_items.update(items)
if len(recommended_items) >= 3:
break
return recommended_items
# 示例使用
user_id = 0
recommended_items = collaborative_filtering(user_id, user_item_matrix)
print("用户", user_id, "的推荐物品:", recommended_items)
```
在这个示例中,我们首先创建了一个用户-物品矩阵,表示用户对不同物品的评分。然后定义了一个计算用户之间相似度的函数,使用余弦相似度进行计算。最后,根据用户相似度进行推荐的函数,并给出了一个示例的使用。你可以根据实际情况进行修改和扩展。
阅读全文