旅游推薦數據分析可視化系統——訊飛AI助手(超級v2版本)+論文+數據+源碼
項目介紹
本項目是一個基于Django框架開發的旅游推薦數據分析可視化系統,集成了訊飛AI大模型助手功能。系統通過對去哪兒網的旅游數據進行采集、分析和可視化,為用戶提供個性化的旅游景點推薦服務,同時通過數據可視化展示各類旅游數據的分析結果,幫助用戶更好地了解旅游市場趨勢和景點特點。
系統功能特點
1. 用戶管理功能
- 用戶注冊與登錄
- 個人信息管理(修改個人資料、密碼等)
- 用戶瀏覽歷史記錄
2. 數據可視化功能
- 景點地理分布熱力圖
- 景點評分與銷量排行榜
- 景點價格分布分析
- 用戶評論數量統計
- 省份景點數量分布
- 用戶活躍度時間分布
3. 景點推薦功能
- 基于協同過濾的個性化推薦
- 基于瀏覽歷史的智能推薦
- 主題推薦(親子游、文化游、自然風光游)
- 熱門景點推薦
4. 文本分析與可視化
- 景點介紹詞云圖生成
- 用戶評論詞云圖分析
- 評論情感分析
5. 訊飛AI助手功能
- 智能問答服務
- 旅游咨詢與建議
技術架構
前端技術
- HTML/CSS/JavaScript
- Bootstrap框架
- ECharts圖表庫
- ApexCharts圖表庫
后端技術
- Python 3.x
- Django Web框架
- MySQL數據庫
- 訊飛星火大模型API
數據分析與可視化
- NumPy/Pandas:數據處理
- Matplotlib/Seaborn:繪圖
- Jieba:中文分詞
- WordCloud:詞云生成
數據庫設計
系統主要包含以下數據表:
-
TravelInfo表:存儲景點基本信息
- 景點名稱、等級、折扣、銷量
- 省份、熱度、地址、簡介
- 詳情URL、評分、價格、評論數
- 詳細介紹、圖片列表、用戶評論、封面圖
-
User表:存儲用戶信息
- 用戶名、密碼、性別
- 地址、頭像、個人簡介
- 創建時間
-
UserBrowseHistory表:存儲用戶瀏覽歷史
- 用戶ID(外鍵)
- 景點ID(外鍵)
- 瀏覽時間
推薦算法詳解
系統實現了多種推薦算法,以提供個性化的旅游推薦服務:
1. 基于用戶的協同過濾推薦
def user_bases_collaborative_filtering(user_id, user_ratings, top_n=3):# 獲取目標用戶的評分數據target_user_ratings = user_ratings[user_id]# 初始化用戶相似度得分字典user_similarity_scores = {}# 將目標用戶的評分轉化為numpy數組target_user_ratings_list = np.array([rating for _, rating in target_user_ratings.items()])# 計算目標用戶與其他用戶之間的相似度得分for user, ratings in user_ratings.items():if user == user_id:continue# 將其他用戶的評分轉化為numpy數組user_ratings_list = np.array([ratings.get(item,0) for item in target_user_ratings])# 計算余弦相似度similarity_score = cosine_similarity([user_ratings_list],[target_user_ratings_list])[0][0]user_similarity_scores[user] = similarity_score# 對用戶相似度得分進行降序排序sorted_similar_user = sorted(user_similarity_scores.items(), key=lambda x:x[1], reverse=True)# 選擇 TOP N 個相似用戶喜歡的景點作為推薦結果recommended_items = set()for similar_user, _ in sorted_similar_user[:top_n]:recommended_items.update(user_ratings[similar_user].keys())# 過濾掉目標用戶已經評分過的景點recommended_items = [item for item in recommended_items if item not in target_user_ratings]return recommended_items
算法步驟說明:
- 獲取目標用戶的評分數據
- 計算目標用戶與其他用戶之間的相似度(使用余弦相似度)
- 找出與目標用戶最相似的N個用戶
- 將這些相似用戶喜歡的景點(但目標用戶尚未評分的)作為推薦結果
2. 基于瀏覽歷史的推薦
系統通過分析用戶的瀏覽歷史,識別用戶偏好的省份和評分閾值,推薦符合用戶口味的景點:
def getBrowseBasedRecommendation(user_id, limit=10):# 獲取用戶瀏覽過的景點browsed_travels = UserBrowseHistory.objects.filter(user_id=user_id)# 統計用戶偏好的省份province_count = {}for travel in browsed_travels_info:if travel.province not in province_count:province_count[travel.province] = 0province_count[travel.province] += 1# 獲取前3個最受歡迎的省份favorite_provinces = []if province_count:sorted_provinces = sorted(province_count.items(), key=lambda x: x[1], reverse=True)favorite_provinces = [p[0] for p in sorted_provinces[:3]]# 計算平均評分avg_score = 計算用戶瀏覽景點的平均評分# 根據用戶喜歡的省份和評分閾值篩選景點# 返回符合條件的景點列表
3. 主題推薦
系統還提供了幾種主題推薦功能:
- 親子游推薦:分析景點描述中包含"親子"、“家庭”、"兒童"等關鍵詞的景點
- 文化游推薦:分析景點描述中包含"文化"、“歷史”、"博物館"等關鍵詞的景點
- 自然風光推薦:分析景點描述中包含"自然"、“風景”、“山”、"海"等關鍵詞的景點
訊飛AI助手集成
系統集成了訊飛星火大模型API,提供智能問答和旅游咨詢服務:
# 訊飛星火API配置
appid = "xxx"
api_secret = "xxx"
api_key = "xxx"
domain = "lite" # 使用Lite版本
Spark_url = "wss://spark-api.xf-yun.com/v1.1/chat"
數據分析與可視化效果
系統對旅游數據進行了多維度分析,包括:
- 詞云分析:通過jieba分詞和WordCloud生成景點介紹和用戶評論的詞云圖
def getIntroCloudImg(targetImgSrc, resImgSrc):travelList = TravelInfo.objects.all()text = ''stopwords = ['的', '是', '在', '這', '那', '他', '她', '它', '我', '你','和','等','為','有','與']for travel in travelList:text += travel.detailIntrocut = jieba.cut(text)newCut = []for tex in cut:if tex not in stopwords:newCut.append(tex)string = ' '.join(newCut)# 生成詞云圖
-
地理分布:通過ECharts實現全國景點地理分布可視化
-
評分與銷量分析:展示不同景點的評分和銷量數據,幫助用戶識別高品質景點
-
價格分析:分析景點價格分布,幫助用戶了解旅游市場價格行情
系統部署指南
Mac部署
- 安裝Python環境(建議Python 3.8+)
- 安裝MySQL數據庫
- 克隆項目到本地
- 安裝依賴:
pip install -r requirements.txt
- 創建MySQL數據庫:
qunarinfos
- 修改數據庫配置:
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'qunarinfos','USER': "root",'PASSWORD': 'your_password','HOST': "localhost",'port': '3306'} }
- 遷移數據庫:
python manage.py makemigrations python manage.py migrate
- 啟動服務:
python manage.py runserver
Windows部署
- 安裝Python環境(建議Python 3.8+)
- 安裝MySQL數據庫
- 克隆項目到本地
- 在虛擬環境中安裝依賴:
pip install -r requirements.txt
- 創建MySQL數據庫:
qunarinfos
- 修改數據庫配置:
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'qunarinfos','USER': "root",'PASSWORD': 'your_password','HOST': "localhost",'port': '3306'} }
- 修改詞云生成中的字體路徑為Windows系統字體路徑
- 遷移數據庫并啟動服務
技術創新點
-
多維度數據可視化:系統通過多種圖表類型(地圖、柱狀圖、折線圖、詞云等)對旅游數據進行可視化展示,使數據分析結果更加直觀。
-
混合推薦算法:結合協同過濾、內容分析和瀏覽歷史等多種推薦策略,提高推薦準確性。
-
訊飛AI大模型集成:集成訊飛星火大模型API,為用戶提供智能問答服務,增強用戶體驗。
-
用戶行為分析:通過記錄和分析用戶的瀏覽歷史,實現個性化推薦。
-
文本挖掘技術:對景點介紹和用戶評論進行分詞和詞云分析,挖掘有價值的信息。
作者信息
B站: 萬能程序員
b站視頻:https://www.bilibili.com/video/BV1tAVezxED6