一、介紹
商品管理與推薦系統。本系統使用Python作為主要開發語言,前端採用HTML、CSS、BootStrap等技術搭建顯示界面,後端採用Django框架處理用户的請求響應。
創新點:使用協同過濾算法,以用户對商品的評分作為依據,在猜你喜歡界面中實現對當前登錄用户的個性化推薦。
主要功能有:
- 系統分為用户和管理員兩個角色。
- 用户可以登錄、註冊、查看商品、購買商品、添加購物車、發佈評論、對商品進行評分、查看購物車、編輯個人信息、充值等操作
-
管理員在後台管理系統中可以對用户和商品進行管理
二、系統功能效果圖片展示
三、演示視頻 and 代碼 and 安裝
地址:https://www.yuque.com/ziwu/yygu3z/qsszw5siwwf2vtf3
四、協同過濾算法介紹
協同過濾算法是一種廣泛應用於推薦系統的技術,它基於一個簡單的假設:如果兩個人在過去喜歡相同的東西,那麼他們在將來也有可能喜歡相似的東西。這種算法通常分為兩類:基於用户的協同過濾和基於物品的協同過濾。
- 基於用户的協同過濾:這種方法首先找出與目標用户興趣相似的其他用户,然後根據這些相似用户的喜好來推薦物品給目標用户。
- 基於物品的協同過濾:與之相反,這種方法先找出與目標物品相似的其他物品,然後把這些物品推薦給那些喜歡目標物品的用户。
現在,讓我們用Python實現一個簡單的基於用户的協同過濾算法。我們將創建一個小型的電影評分數據集,並基於用户的評分相似性來推薦電影。
import numpy as np
# 創建一個用户-電影評分矩陣
ratings = np.array([
[5, 4, 1, 1, 3],
[3, 2, 1, 3, 3],
[4, 3, 3, 1, 5],
[3, 3, 1, 2, 4],
[1, 5, 5, 2, 1],
])
def cosine_similarity(v1, v2):
"""計算兩個向量之間的餘弦相似度"""
return np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2))
def recommend_movies(ratings, user_index):
"""為指定用户推薦電影"""
scores = []
target = ratings[user_index]
for i, user_ratings in enumerate(ratings):
if i != user_index:
score = cosine_similarity(target, user_ratings)
scores.append((i, score))
scores.sort(key=lambda x: x[1], reverse=True)
print("最相似的用户索引和相似度分數:", scores)
# 取出最相似用户的評分
similar_user_ratings = ratings[scores[0][0]]
# 找出該用户未評分但相似用户評分高的電影
recommendations = []
for i in range(len(similar_user_ratings)):
if target[i] == 0 and similar_user_ratings[i] >= 4:
recommendations.append(i)
return recommendations
# 推薦電影給用户0
print("推薦給用户0的電影索引:", recommend_movies(ratings, 0))
這段代碼中,我們首先定義了一個簡單的用户-電影評分矩陣,然後使用餘弦相似度計算不同用户之間的相似度。基於這些相似度分數,我們找出與目標用户最相似的用户,然後推薦那些目標用户未評分但相似用户評分較高的電影。這就是一個基本的協同過濾推薦示例。