协同过滤算法用编程实现
时间: 2023-12-14 10:38:02 浏览: 28
好的,协同过滤算法可以用 Python 编程来实现。下面是一个简单的实现示例:
```
import numpy as np
# 创建一个用户-物品评分矩阵
ratings = np.array([
[5, 3, 0, 4, 4, 0],
[1, 0, 0, 5, 0, 0],
[0, 0, 4, 0, 0, 2],
[4, 0, 5, 0, 1, 0]
])
# 计算用户之间的相似度
similarity = np.zeros((ratings.shape[0], ratings.shape[0]))
for i in range(ratings.shape[0]):
for j in range(ratings.shape[0]):
if i != j:
similarity[i][j] = np.dot(ratings[i], ratings[j]) / (np.linalg.norm(ratings[i]) * np.linalg.norm(ratings[j]))
# 给用户推荐电影
user_id = 0
recommendations = np.zeros(ratings.shape[1])
for i in range(ratings.shape[1]):
if ratings[user_id][i] == 0:
rating_sum = 0
similarity_sum = 0
for j in range(ratings.shape[0]):
if j != user_id and ratings[j][i] != 0:
rating_sum += similarity[user_id][j] * ratings[j][i]
similarity_sum += similarity[user_id][j]
recommendations[i] = rating_sum / similarity_sum if similarity_sum != 0 else 0
# 输出推荐结果
recommendations = [(i, recommendations[i]) for i in range(len(recommendations))]
recommendations.sort(key=lambda x: x[1], reverse=True)
print("推荐给用户 %d 的电影是:" % user_id)
for i in range(5):
print("%d. 电影%d,推荐指数为 %.2f" % (i+1, recommendations[i][0], recommendations[i][1]))
```
在这个实现中,我们首先创建了一个用户-物品评分矩阵 `ratings`,然后计算了用户之间的相似度矩阵 `similarity`。接着,我们选定一个用户(在这里是用户0),计算他没有评分过的电影的推荐值,并按照推荐值的大小进行排序输出。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)