Python 协同过滤推荐系统示例:基于 CSV 文件的用户行为数据
以下是一个简单的基于协同过滤的推荐系统的代码示例,使用 Python 语言,读取包含用户行为数据的 CSV 文件:
import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity
# 读取数据
data = pd.read_csv('data.csv')
# 构建用户-物品矩阵
user_item_matrix = pd.pivot_table(data, values='behave_type', index='user_id', columns='item_id')
# 计算物品之间的相似度
item_similarity = cosine_similarity(user_item_matrix.T)
# 给用户推荐物品
def recommend_items(user_id, top_n):
user_items = user_item_matrix.loc[user_id].dropna().index
item_scores = pd.DataFrame(index=user_item_matrix.columns, columns=['score'])
for item in user_items:
item_scores.loc[item] = item_similarity[item].dot(user_item_matrix.loc[user_id]) / item_similarity[item].sum()
item_scores = item_scores.sort_values(by='score', ascending=False)
return item_scores.head(top_n).index.tolist()
# 示例:给用户1推荐5个物品
recommend_items(1, 5)
说明:
- 首先读取数据,并将数据转化为用户-物品矩阵,其中缺失值用 NaN 表示;
- 然后计算物品之间的相似度,使用余弦相似度 (cosine similarity);
- 最后,定义一个函数
recommend_items,给定一个用户 ID 和推荐的物品数量,该函数会返回推荐的物品列表。
当然,这只是一个简单的示例,实际的推荐系统还需要考虑很多因素,如用户的历史行为、物品的属性特征等。
原文地址: https://www.cveoy.top/t/topic/mTV6 著作权归作者所有。请勿转载和采集!