1. 读取csv文件:
import pandas as pd

df = pd.read_csv('data.csv')
  1. 根据用户对物品的行为(behave_type)进行评分:
# 将浏览和收藏行为的评分设为1,将购买和加入购物车行为的评分设为2
df['score'] = df['behave_type'].map({'浏览': 1, '收藏': 1, '购买': 2, '加入购物车': 2})
  1. 构建用户-物品评分矩阵:
user_item_score = df.pivot_table(index='user_id', columns='item_id', values='score')
  1. 计算相似度矩阵:
# 使用余弦相似度计算相似度矩阵
from sklearn.metrics.pairwise import cosine_similarity

item_sim_matrix = cosine_similarity(user_item_score.T)
  1. 为用户推荐物品:
# 给用户推荐与其已评分物品相似度最高的前K个物品
def recommend_items(user_id, user_item_score, item_sim_matrix, K):
    # 获取用户已评分物品的列表
    rated_items = user_item_score.loc[user_id].dropna().index
    
    # 获取与已评分物品相似度最高的前K个物品
    sim_items = pd.Series(0, index=user_item_score.columns)
    for item in rated_items:
        sim_items += pd.Series(item_sim_matrix[item], index=user_item_score.columns)
    sim_items.drop(rated_items, inplace=True)
    sim_items.sort_values(ascending=False, inplace=True)
    sim_items = sim_items[:K]
    
    return sim_items
  1. 使用示例:
user_id = '123'
K = 10

# 给用户123推荐10个物品
recommended_items = recommend_items(user_id, user_item_score, item_sim_matrix, K)

# 输出推荐结果
print('为用户{}推荐的物品:'.format(user_id))
for item_id, score in recommended_items.iteritems():
    print('物品ID:{},相似度:{:.2f}'.format(item_id, score))
我现在有个csv文件列名为user_iditem_idcategory_idbehave_typedatetimepython实现简单协同推荐算法

原文地址: https://www.cveoy.top/t/topic/bp6d 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录