生成一个协同过滤代码
时间: 2024-02-21 22:01:35 浏览: 18
好的,以下是一个简单的协同过滤代码的示例:
```python
import numpy as np
# 用户 - 电影评分矩阵
ratings = np.array([
[3, 4, 0, 0, 5],
[4, 5, 3, 0, 0],
[0, 0, 4, 5, 0],
[0, 3, 5, 0, 4],
[5, 0, 0, 3, 4]
])
# 用户相似度矩阵
user_similarities = np.dot(ratings, ratings.T)
# 归一化用户相似度矩阵
norms = np.array([np.sqrt(np.diagonal(user_similarities))])
user_similarities = user_similarities / norms / norms.T
# 预测用户 i 对电影 j 的评分
def predict(i, j):
numerator = 0
denominator = 0
for k in range(ratings.shape[0]):
if k != i and ratings[k][j] != 0:
numerator += user_similarities[i][k] * ratings[k][j]
denominator += user_similarities[i][k]
return numerator / denominator if denominator != 0 else 0
# 测试
print(predict(0, 2)) # 预测用户0对电影2的评分
print(predict(2, 0)) # 预测用户2对电影0的评分
```
这个示例演示了如何使用协同过滤算法预测用户对电影的评分。其中,评分矩阵 `ratings` 表示了每个用户对每个电影的评分情况,用户相似度矩阵 `user_similarities` 表示了每个用户之间的相似度,`predict` 函数用于预测用户对电影的评分。