博客 / 詳情

返回

汽車租聘管理與推薦系統Python+Django網頁界面+協同過濾推薦算法

一、介紹

汽車租聘管理與推薦系統。本系統使用Python作為主要編程語言,前端採用HTML、CSS、BootStrap等技術搭建前端界面,後端採用Django框架處理用户的請求。創新點:使用協同過濾推薦算法實現對當前用户個性化推薦。
其主要功能如下:

  • 系統分為管理員和用户兩個角色
  • 用户可以登錄、註冊、查看車輛信息、發佈評論、對車輛進行評分、收藏汽車、支付租聘、查看訂單、編輯個人信息、查看排行榜、查看推薦界面
  • 算法應用:系統使用協同過濾推薦算法基於用户評分信息計算相似度進行推薦
  • 管理員可以對用户和車輛信息進行管理

    二、系統部分功能效果圖片展示

    img_11_26_18_43_47

img_11_26_18_43_40

img_11_26_18_44_00

img_11_26_18_44_11

三、演示視頻 and 代碼 and 安裝

地址:https://www.yuque.com/ziwu/yygu3z/gfoectfz8gwwlef7

四、協同過濾算法介紹

協同過濾算法是一種用於構建推薦系統的技術,它通過分析用户的喜好和行為模式來預測用户可能喜歡的產品或服務。想象一下,你和朋友們一起去餐廳吃飯,你不知道點什麼好,但如果你知道朋友們喜歡哪些菜,那麼你可能會根據他們的選擇來決定自己的點餐。協同過濾算法就是基於這樣的思想。
這個算法主要有兩種類型:基於用户的協同過濾和基於物品的協同過濾。

  1. 基於用户的協同過濾:這種方法會找到與你口味相似的用户,然後根據這些“口味相似”的用户喜歡的東西來給你推薦。就像是你的朋友推薦給你他們喜歡的菜餚。
  2. 基於物品的協同過濾:這種方法則是看物品之間的相似度。比如説,如果你喜歡了一部電影,系統會根據這部電影的特點,推薦其他類似的電影給你。

接下來,我會用Python編寫一個簡單的基於用户的協同過濾算法示例。這個例子將使用一個假設的數據集來演示如何根據用户間的相似度來推薦物品。

import numpy as np

# 示例數據集:用户及其對電影的評分(1-5分)
ratings = {
    'Alice': {'Titanic': 3, 'Avatar': 4, 'Forrest Gump': 5},
    'Bob': {'Titanic': 5, 'Avatar': 3},
    'Carol': {'Titanic': 4, 'Forrest Gump': 3},
    'Dave': {'Avatar': 5, 'Forrest Gump': 4},
}

def cosine_similarity(user1, user2):
    """
    計算兩個用户之間的餘弦相似度。
    相似度範圍從-1(完全不相似)到1(完全相同)。
    """
    # 取兩個用户都評分過的電影
    common_movies = set(ratings[user1]).intersection(set(ratings[user2]))

    # 如果沒有共同電影,則相似度為0
    if not common_movies:
        return 0

    # 分別計算兩個用户對共同電影的評分向量
    user1_ratings = np.array([ratings[user1][movie] for movie in common_movies])
    user2_ratings = np.array([ratings[user2][movie] for movie in common_movies])

    # 計算餘弦相似度
    return np.dot(user1_ratings, user2_ratings) / (np.linalg.norm(user1_ratings) * np.linalg.norm(user2_ratings))

def recommend(user):
    """
    基於用户的協同過濾推薦電影。
    找到與目標用户最相似的用户,推薦他們喜歡但目標用户未看過的電影。
    """
    # 計算目標用户與其他所有用户的相似度
    similarities = {other_user: cosine_similarity(user, other_user) for other_user in ratings if other_user != user}

    # 找到最相似的用户
    most_similar_user = max(similarities, key=similarities.get)

    # 推薦最相似用户喜歡但目標用户未看過的電影
    recommendations = set(ratings[most_similar_user]) - set(ratings[user])
    
    return recommendations

# 為Alice推薦電影
recommendations_for_alice = recommend('Alice')
recommendations_for_alice
user avatar solomonxie 頭像 jiguangtuisong 頭像
2 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.