一、介紹
果蔬購物管理與推薦系統。本系統以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個最相似用户的喜好生成的推薦商品列表。