困难
技术面试0 次浏览

请编写一个 Python 程序,实现一个简单的推荐系统,根据用户的历史行为数据为用户推荐商品。

数据分析师
Python推荐系统

答题要点

以下是一个简单的基于物品协同过滤的推荐系统的 Python 实现。 python import pandas as pd from sklearn.metrics.pairwise import cosine_similarity # 示例数据:用户-商品评分矩阵 data = { 'user1': [5, 3, 0, 1], 'user2': [4, 0, 0, 1], 'user3': [1, 1, 0, 5], 'user4': [1, 0, 0, 4] } items = ['item1', 'item2', 'item3', 'item4'] df = pd.DataFrame(data, index=items) def recommend_items(user, df, top_n=3): # 计算物品之间的相似度 item_similarity = cosine_similarity(df.T) item_similarity_df = pd.DataFrame(item_similarity, index=df.index, columns=df.index) # 获取用户的历史行为数据 user_ratings = df[user] # 初始化推荐分数 recommended_scores = pd.Series(0, index=df.index) # 遍历用户评分过的物品 for item, rating in user_ratings.items(): if rating > 0: # 根据物品相似度计算推荐分数 recommended_scores += item_similarity_df[item] * rating # 过滤掉用户已经评分过的物品 recommended_scores = recommended_scores[user_ratings == 0] # 按推荐分数排序并取前 top_n 个物品 top_recommendations = recommended_scores.sort_values(ascending=False).head(top_n) return top_recommendations # 为用户 1 推荐商品 user = 'user1' recommendations = recommend_items(user, df) print(f