基于用户的协同过滤py
时间: 2024-05-10 13:21:40 浏览: 75
thon代码示例:
1. 导入必要的库
```python
import numpy as np
import pandas as pd
```
2. 加载数据集
```python
# 加载用户-物品评分矩阵
ratings = pd.read_csv('ratings.csv')
# 加载用户信息
users = pd.read_csv('users.csv')
# 加载物品信息
items = pd.read_csv('items.csv')
```
3. 构建用户-物品评分矩阵
```python
# 构建用户-物品评分矩阵
rating_matrix = ratings.pivot(index='user_id', columns='item_id', values='rating')
rating_matrix.fillna(0, inplace=True)
# 将用户-物品评分矩阵转换为numpy数组
rating_matrix = rating_matrix.values
```
4. 计算物品相似度矩阵
```python
# 计算物品相似度矩阵
item_similarity = np.corrcoef(rating_matrix.T)
```
5. 定义推荐函数
```python
def recommend_items(user_id, rating_matrix, item_similarity, n=10):
"""
基于用户的协同过滤推荐函数
:param user_id: 用户ID
:param rating_matrix: 用户-物品评分矩阵
:param item_similarity: 物品相似度矩阵
:param n: 推荐物品数量
:return: 推荐物品ID列表
"""
# 获取用户未评分的物品ID列表
unrated_items = np.where(rating_matrix[user_id] == 0)[0]
# 计算用户已评分物品与所有未评分物品的相似度,取相似度最高的n个物品
item_scores = np.dot(rating_matrix[:, unrated_items], item_similarity)
top_n_items = unrated_items[np.argsort(item_scores[user_id, :])][-n:]
return top_n_items
```
6. 测试推荐函数
```python
# 获取用户ID为1的推荐物品
user_id = 1
recommended_items = recommend_items(user_id, rating_matrix, item_similarity)
# 输出推荐物品ID列表
print(recommended_items)
```
以上就是基于用户的协同过滤推荐算法的Python代码示例。需要注意的是,这只是一个简单的示例代码,实际应用中需要根据具体的场景和数据进行调整和优化。
阅读全文