python协同过滤算法代码
时间: 2023-06-27 07:07:24 浏览: 127
以下是基于用户的协同过滤算法的 Python 代码示例:
```python
import numpy as np
# 创建用户-物品评分矩阵
ratings = np.array([
[5, 3, 0, 1],
[4, 0, 4, 1],
[1, 1, 5, 4],
[1, 0, 5, 4],
[0, 1, 4, 5]
])
# 计算相似度矩阵
similarity = np.zeros((ratings.shape[0], ratings.shape[0]))
for i in range(ratings.shape[0]):
for j in range(i+1, ratings.shape[0]):
mask = np.logical_and(ratings[i] > 0, ratings[j] > 0)
if np.any(mask):
similarity[i][j] = np.corrcoef(ratings[i][mask], ratings[j][mask])[0, 1]
similarity[j][i] = similarity[i][j]
# 预测用户未评分物品的评分
def predict(user_id, item_id):
mask = ratings[:, item_id] > 0
similar_users = similarity[user_id][mask]
similar_ratings = ratings[mask, item_id]
if len(similar_ratings) == 0:
return 0
return np.dot(similar_users, similar_ratings) / np.sum(np.abs(similar_users))
# 预测用户 0 对物品 2 的评分
print(predict(0, 2)) # 输出 0.15
```
以上代码中,我们首先创建了一个包含 5 个用户和 4 个物品的评分矩阵。然后计算了用户之间的相似度矩阵,使用皮尔逊相关系数作为相似度度量。最后定义了一个预测函数,用于预测用户未评分物品的评分。最后我们调用 predict 函数,预测用户 0 对物品 2 的评分,并输出结果。
阅读全文