基于内容的协同过滤代码介绍
时间: 2024-05-07 18:19:17 浏览: 86
基于 Spark 推荐系统, 基于内容标签 CBCF 实现,协同过滤 UBCF 实现,协同过滤 IBCF 实现+源代码+文档说明
基于内容的协同过滤是一种推荐系统算法,它通过分析用户的历史行为和物品的属性,为用户推荐相似的物品。下面是一个基于Python的基于内容的协同过滤代码示例:
```
# 导入必要的库
import pandas as pd
import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
# 读取数据
data = pd.read_csv('data.csv')
# 构建TF-IDF矩阵
tfidf = TfidfVectorizer(stop_words='english')
tfidf_matrix = tfidf.fit_transform(data['description'])
# 计算余弦相似度
cosine_sim = cosine_similarity(tfidf_matrix, tfidf_matrix)
# 获取物品列表的索引
indices = pd.Series(data.index)
# 定义推荐函数
def content_based_recommendations(title, cosine_sim=cosine_sim):
# 通过物品的标题获取索引
idx = indices[indices == title].index[0]
# 获取该物品的相似度评分
sim_scores = list(enumerate(cosine_sim[idx]))
# 根据相似度评分对物品进行排序
sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True)
# 获取最相似的10个物品
sim_scores = sim_scores[1:11]
# 获取10个物品的索引
item_indices = [i[0] for i in sim_scores]
# 返回推荐物品列表
return data['title'].iloc[item_indices]
# 进行推荐
content_based_recommendations('The Dark Knight Rises')
```
以上代码将电影数据集中的电影描述进行了TF-IDF处理,并计算了余弦相似度矩阵。然后,它定义了一个推荐函数,该函数使用电影标题作为输入,并返回最相似的10个电影。
阅读全文