生成协同过滤算法代码
时间: 2023-07-10 08:18:25 浏览: 97
生成协同过滤算法代码需要先确定算法的具体实现方式和编程语言等。这里以Python语言实现基于用户的协同过滤算法为例,给出一个简单的代码实现。
假设我们有一个用户-物品矩阵user_item_matrix,其中行表示用户,列表示物品,矩阵中的值表示用户对物品的评分,如果用户没有对物品进行评分,则为0。
```python
import numpy as np
# 计算余弦相似度
def cosine_similarity(v1, v2):
return np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2))
# 基于用户的协同过滤算法
def user_based_cf(user_item_matrix, target_user, K=5):
# 计算目标用户和其他用户的相似度
similarities = []
for user_id in range(user_item_matrix.shape[0]):
if user_id != target_user:
similarity = cosine_similarity(user_item_matrix[target_user], user_item_matrix[user_id])
similarities.append((user_id, similarity))
# 按相似度从高到低排序,选择前K个最相似的用户
similarities.sort(key=lambda x: x[1], reverse=True)
neighbors = similarities[:K]
# 获取邻居用户喜欢的物品列表
items = set()
for neighbor_id, _ in neighbors:
items = items.union(set(np.where(user_item_matrix[neighbor_id] > 0)[0]))
# 计算推荐分数
scores = {}
for item_id in items:
if user_item_matrix[target_user, item_id] == 0:
score = 0
for neighbor_id, similarity in neighbors:
score += similarity * user_item_matrix[neighbor_id, item_id]
scores[item_id] = score
# 按推荐分数从高到低排序,并返回推荐结果
return sorted(scores.items(), key=lambda x: x[1], reverse=True)
```
在以上代码中,cosine_similarity函数用于计算余弦相似度,user_based_cf函数实现了基于用户的协同过滤算法。其中,target_user表示目标用户的编号,K表示选择最相似的K个用户。函数返回推荐结果,包含物品编号和推荐分数。
阅读全文