一、介绍
果蔬购物管理与推荐系统。本系统以Python作为主要开发语言,前端通过HTML、CSS、BootStrap等框架搭建界面,后端使用Django框架作为逻辑处理,通过Ajax实现前后端的数据通信。并基于用户对商品的评分信息,采用协同过滤推荐算法,实现对当前登录用户的个性化商品推荐。
主要功能有:
- 该系统分为普通用户和管理员两个角色
- 普通用户登录、注册
- 普通用户查看商品、加入购物车、购买、查看详情、发布评论、进行评分、查看购物车、个人订单、商品推荐等界面功能
- 管理员可以对商品和用户所有信息进行管理
二、系统部分效果图片展示
三、演示视频 and 代码
视频+代码:https://www.yuque.com/ziwu/yygu3z/eiatceryze6simrx
四、协同过滤算法
协同过滤是一种常用的推荐系统算法,主要通过分析用户的历史行为数据(如评分、购买、浏览等)来预测用户可能感兴趣的项目。协同过滤算法主要有两种类型:基于用户的协同过滤(User-Based Collaborative Filtering)和基于物品的协同过滤(Item-Based Collaborative Filtering)。
基于用户的协同过滤是一种传统的推荐算法,核心思想是找到与目标用户兴趣相似的其他用户,然后推荐这些用户喜欢的项目给目标用户。这种方法认为,如果一个用户在过去喜欢了某些项目,那么他/她在未来也很有可能会喜欢相似用户喜欢的其他项目。
算法流程:
- 计算用户之间的相似度: 常用的相似度计算方法有余弦相似度、皮尔逊相关系数、Jaccard相似度等。
- 找到最相似的用户: 根据计算出的相似度,找到与目标用户最相似的前K个用户。
- 生成推荐列表: 基于这K个相似用户的行为记录,预测目标用户对未曾互动过的项目的评分,并推荐评分最高的N个项目。
优点:
- 简单直观: 算法易于理解和实现。
- 自然的解释性: 推荐的结果可以通过相似用户的行为直观解释。
下面是一个基于用户的协同过滤推荐算法的简单实现示例:
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
def user_based_collaborative_filtering(rating_matrix, user_id, k=5):
"""
基于用户的协同过滤推荐算法
:param rating_matrix: 用户-商品评分矩阵, numpy array, shape (n_users, n_items)
:param user_id: 目标用户的id
:param k: 要考虑的最相似的用户数量
:return: 推荐商品的列表
"""
# 计算用户之间的余弦相似度
user_similarity = cosine_similarity(rating_matrix)
# 获取目标用户的相似度向量
target_user_similarity = user_similarity[user_id]
# 获取最相似的k个用户的id
similar_users = np.argsort(target_user_similarity)[-k-1:-1][::-1]
# 推荐这些用户喜欢的商品
# 注意:这里简单地将这些用户评分过的商品作为推荐,实际应用中可能需要加权平均或其他处理
recommended_items = set()
for user in similar_users:
recommended_items = recommended_items.union(np.where(rating_matrix[user] > 0)[0])
return list(recommended_items)
# 示例使用
rating_matrix = np.array([[4, 0, 2, 0, 1],
[0, 3, 0, 0, 0],
[1, 0, 0, 5, 1],
[0, 0, 0, 4, 4],
[0, 4, 3, 0, 0]])
user_id = 0 # 选择一个目标用户
recommended_items = user_based_collaborative_filtering(rating_matrix, user_id)
print("Recommended items:", recommended_items)
在这个示例中,rating_matrix是一个用户-商品评分矩阵,user_based_collaborative_filtering函数接受这个评分矩阵、一个目标用户的id和一个参数k,返回基于k个最相似用户的喜好生成的推荐商品列表。