




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
PAGEIII基于python的旅游系統(tǒng)的設(shè)計與實現(xiàn)摘要隨著互聯(lián)網(wǎng)的發(fā)展和人們生活水平提高,旅游業(yè)也得到了快速的發(fā)展。人們對于旅游信息的獲取和行程安排的需求日益增加,但是互聯(lián)網(wǎng)上的旅游景點和旅游信息等等都存在著很多問題,例如過度宣傳、信息不全面、價格虛標(biāo)、二次消費等問題,這導(dǎo)致游客在選擇旅游目的地的時候難以做出選擇。因此本項目通過爬取旅游網(wǎng)站的數(shù)據(jù),利用Django框架搭建了用戶友好的界面,并結(jié)合MySQL數(shù)據(jù)庫存儲景點信息等,項目使用可視化技術(shù)將景點信息以各種圖表直觀展示給用戶,提高了用戶體驗,系統(tǒng)采用了一種協(xié)同過濾算法,通過評估用戶評價來推薦用戶可能感興趣的旅游景點,讓用戶可以高效的選擇旅游目的地,提升用戶的體驗。通過本項目,我們實現(xiàn)了一個功能豐富的旅游推薦系統(tǒng),為用戶提供了個性化、精準(zhǔn)的旅游建議,具有一定的實用價值和推廣前景。我的以下幾部分表達(dá)了整個系統(tǒng)的實現(xiàn)過程。關(guān)鍵詞:python;django;爬蟲;協(xié)同過濾算法;DesignandimplementationofthetourismsystembasedonpythonAbstract WiththedevelopmentoftheInternetandtheimprovementofpeople'slivingstandards,tourismhasalsodevelopedrapidly.People'sdemandforobtainingtourisminformationandschedulingisincreasingdaybyday,buttherearemanyproblemsinthetouristattractionsandtourisminformationontheInternet,suchasexcessivepublicity,incompleteinformation,falsepricelabels,secondaryconsumption,etc.,whichmakesitdifficultfortouriststomakechoiceswhenchoosingtouristdestinations.Therefore,thisprojectusesDjangoframeworktobuildauser-friendlyinterfacebycrawlingdatafromtourismwebsites,andcombineswithMySQLdatabasetostorescenicspotinformationanduserdata.Visualizationtechnologyisusedtovisuallydisplayscenicspotinformationtousersintheformofcharts,mapsandotherformstoimproveuserexperience.Collaborativefilteringalgorithmisusedinthisproject.Byanalyzinguserscores,collaborativefilteringalgorithmcanrecommendtraveldestinationsthatusersmaybeinterestedin,sothatuserscanefficientlyselecttraveldestinationsandimproveuserexperience.Throughthisproject,wehaverealizedatravelrecommendationsystemwithrichfunctions,providinguserswithpersonalizedandaccuratetraveladvice,whichhascertainpracticalvalueandpromotionprospects.ThefollowingpartsofthispaperdescribetheimplementationprocessoftourismsystembasedonpythonKeyWords:Python;Django;Reptiles;Collaborativefilteringalgorithm目錄14748摘要 I31245Abstract II3322第1章緒論 1324201.1研究背景和動機 1298951.1.1研究背景 145231.1.2研究動機 113101.2研究目標(biāo) 14651.2.1研究目標(biāo) 196311.3國內(nèi)外研究現(xiàn)狀 246741.3.1國內(nèi)研究現(xiàn)狀 2118481.3.2國外研究現(xiàn)狀 31816第2章項目技術(shù)介紹 4105472.1關(guān)鍵項目技術(shù)的介紹 4297442.1.1python爬蟲介紹 4102322.1.2可視化技術(shù)介紹 6181272.1.3Django框架介紹 7303452.1.4協(xié)同過濾算法介紹 927473第3章系統(tǒng)分析和設(shè)計 11153153.1系統(tǒng)分析 11172293.1.1數(shù)據(jù)庫設(shè)計 11101903.1.2功能架構(gòu)設(shè)計 11286843.1.3模塊功能描述 11289733.2系統(tǒng)開發(fā)環(huán)境介紹 12202523.3系統(tǒng)可行性分析 1374983.3.1技術(shù)可行性 1347963.3.2系統(tǒng)安全性分析 1445033.4系統(tǒng)設(shè)計 1447823.4.1系統(tǒng)設(shè)計思想 14105933.4.2系統(tǒng)設(shè)計原則 157825結(jié)論 1615769參考文獻(xiàn) 177481附錄 1828225致謝 19PAGE7第1章緒論1.1研究背景和動機1.1.1研究背景隨著互聯(lián)網(wǎng)的普及和旅游業(yè)的蓬勃發(fā)展,越來越多的人選擇利用網(wǎng)絡(luò)平臺規(guī)劃和安排自己的旅行。然而,旅游信息的爆炸性增長和信息質(zhì)量的參差不齊給用戶帶來了一定的困擾,他們往往需要花費大量的時間和精力來篩選和選擇合適的旅游目的地和線路。在這樣的背景下,設(shè)計一套高效、個性化的旅游推薦系統(tǒng)變得尤為重要。1.1.2研究動機本研究旨在探索如何利用現(xiàn)代計算機技術(shù),針對傳統(tǒng)推薦系統(tǒng)存在的問題,創(chuàng)建并部署基于協(xié)同過濾算法的旅游推薦系統(tǒng)。為了幫助用戶更高效、更精確地規(guī)劃行程,該系統(tǒng)將評估用戶對旅游景點的評價,并推薦適合用戶需求的個性化旅游地點和路線。1.2研究目標(biāo)1.2.1研究目標(biāo)這個項目的目標(biāo)是完成一個實用的旅游推薦系統(tǒng),具體包括以下幾個方面:1、用戶模塊:包含用戶注冊、登錄等多項管理功能,為推薦系統(tǒng)提供數(shù)據(jù)支持2.應(yīng)用景點數(shù)據(jù)存儲和爬蟲技術(shù):利用爬蟲技術(shù),從各種數(shù)據(jù)源收集旅游景點信息,并存儲到數(shù)據(jù)庫中,作為推薦系統(tǒng)的數(shù)據(jù)基礎(chǔ)。3.創(chuàng)建推薦算法:以協(xié)同過濾技術(shù)為基礎(chǔ),創(chuàng)建并部署推薦引擎。利用用戶行為和選擇分析,為用戶量身定制旅行建議。1.3國內(nèi)外研究現(xiàn)狀1.3.1國內(nèi)研究現(xiàn)狀如何利用用戶行為數(shù)據(jù)和游客信息,設(shè)計和實現(xiàn)有針對性的推薦算法,創(chuàng)建有效的系統(tǒng)架構(gòu)和用戶界面,這些都是國內(nèi)旅游推薦系統(tǒng)研究的主要關(guān)注點。研究者們致力于提高推薦系統(tǒng)的準(zhǔn)確性、用戶滿意度和系統(tǒng)性能,以應(yīng)對日益增長的用戶需求和激烈的市場競爭。創(chuàng)建和改進(jìn)旅游推薦算法(如協(xié)同過濾算法、深度學(xué)習(xí)算法和基于內(nèi)容的推薦算法)是眾多項目的重點。基于對用戶過去行為和興趣的分析,這些算法會推薦個性化的旅行地點和行程。為了提高推薦系統(tǒng)的精確度和定制化程度,研究人員對用戶的瀏覽歷史、搜索模式和交易數(shù)據(jù)進(jìn)行了檢查和評估,以便對其旅行偏好和行為特征進(jìn)行建模和評估。一些研究關(guān)注于推薦系統(tǒng)的系統(tǒng)架構(gòu)設(shè)計和技術(shù)應(yīng)用,包括數(shù)據(jù)庫管理、分布式計算、云計算和大數(shù)據(jù)處理等方面,以提高系統(tǒng)的性能和可擴展性。有些研究關(guān)注于用戶體驗和界面設(shè)計,通過優(yōu)化用戶界面和交互設(shè)計,提升用戶對推薦系統(tǒng)的滿意度和使用體驗·大量研究挖掘用戶偏好和行為模式,為消費者提供個性化旅行建議,并利用數(shù)據(jù)驅(qū)動方法分析大量用戶行為數(shù)據(jù)和旅行信息。隨著人工智能技術(shù)的發(fā)展,研究者們開始嘗試?yán)蒙疃葘W(xué)習(xí)、自然語言處理和推薦系統(tǒng)的結(jié)合,構(gòu)建更加智能化和精準(zhǔn)的旅游推薦系統(tǒng)。一些研究探索用戶參與式推薦的方法,通過引入用戶反饋和社交網(wǎng)絡(luò)信息,增強推薦系統(tǒng)的個性化和用戶參與度??傊?,國內(nèi)旅游推薦系統(tǒng)的研究已經(jīng)取得了一些成果,但仍有機會和問題需要解決。未來的研究將繼續(xù)關(guān)注推薦算法的創(chuàng)新、系統(tǒng)架構(gòu)的優(yōu)化和用戶體驗的提升,以滿足用戶日益增長的個性化旅游需求。1.3.2國外研究現(xiàn)狀在國外,旅游推薦系統(tǒng)的研究也是一個備受關(guān)注的領(lǐng)域,研究者們通過探索各種推薦算法、用戶行為分析和系統(tǒng)設(shè)計等方面,致力于提供更智能化和個性化的旅游推薦服務(wù)。國外研究創(chuàng)新和進(jìn)步的主要領(lǐng)域是深度學(xué)習(xí)算法、協(xié)同過濾算法、基于內(nèi)容的推薦算法等。研究者們探索如何利用大數(shù)據(jù)和機器學(xué)習(xí)技術(shù),提高推薦系統(tǒng)的準(zhǔn)確性和個性化程度。類似于國內(nèi),國外的研究也注重用戶行為分析和建模,通過挖掘用戶的瀏覽記錄、社交網(wǎng)絡(luò)數(shù)據(jù)和地理位置信息,了解用戶的旅游偏好和行為特征,為用戶提供更精準(zhǔn)的推薦。國外的研究也關(guān)注于推薦系統(tǒng)的系統(tǒng)架構(gòu)設(shè)計和技術(shù)應(yīng)用,如云計算、分布式計算、大數(shù)據(jù)處理等,以提高系統(tǒng)的性能和可擴展性。研究重點是界面設(shè)計和用戶體驗,目標(biāo)是改進(jìn)交互和用戶界面設(shè)計,以提高用戶體驗和對推薦系統(tǒng)的滿意度。國外的研究更加強調(diào)跨學(xué)科合作,將計算機科學(xué)、社會學(xué)、心理學(xué)等領(lǐng)域的知識融合起來,構(gòu)建更智能化和人性化的旅游推薦系統(tǒng)。由于國際化的旅游需求,國外的研究也開始關(guān)注跨文化推薦的問題,探索如何為不同文化背景的用戶提供個性化的旅游推薦服務(wù)。近年來,國外的研究開始關(guān)注推薦系統(tǒng)的可解釋性問題,探索如何讓用戶更好地理解推薦結(jié)果的生成過程,增強用戶對推薦系統(tǒng)的信任和認(rèn)可度。綜上所述,國外旅游推薦系統(tǒng)的研究同樣取得了一定的成果,未來的研究將繼續(xù)關(guān)注推薦算法的創(chuàng)新、系統(tǒng)架構(gòu)的優(yōu)化和用戶體驗的提升,以應(yīng)對旅游市場的不斷變化和用戶需求的日益多樣化。項目技術(shù)介紹2.1關(guān)鍵項目技術(shù)的介紹2.1.1python爬蟲介紹Python爬蟲通過HTTP協(xié)議與網(wǎng)站服務(wù)器建立連接,并發(fā)送HTTP請求來獲取網(wǎng)頁數(shù)據(jù),這些數(shù)據(jù)通常是HTML、XML、JSON等格式的文本數(shù)據(jù)。爬蟲程序?qū)Λ@取到的數(shù)據(jù)進(jìn)行解析和提取,以篩選出所需的信息,并可將這些信息存儲在數(shù)據(jù)庫或本地文件中。Python爬蟲被廣泛應(yīng)用于數(shù)據(jù)分析、數(shù)據(jù)挖掘、搜索引擎優(yōu)化、輿情監(jiān)測等多個領(lǐng)域。開發(fā)Python爬蟲需要掌握一些關(guān)鍵技術(shù),如HTTP協(xié)議、HTML解析、正則表達(dá)式、數(shù)據(jù)存儲等。Python提供了如Requests、BeautifulSoup、Scrapy等庫和框架,便于數(shù)據(jù)的抓取和處理。同時,開發(fā)者需要注意合法性和道德性,遵循法律和規(guī)范,避免給網(wǎng)站和用戶帶來不良影響。爬蟲技術(shù)的工作流程一般可以分為以下幾個步驟:1.爬取目標(biāo):第一步是選擇要抓取的網(wǎng)站或網(wǎng)頁。這包括決定需要收集哪類信息和收集多少信息。2.HTTP請求:為獲取網(wǎng)頁的HTML源代碼,使用計算機語言中的HTTP庫向目標(biāo)網(wǎng)站提交HTTP請求。3.內(nèi)容解析:要提取所需數(shù)據(jù),包括文本、照片和鏈接,請使用HTML解析庫解析收到的HTML源代碼。4.管理頁面結(jié)構(gòu):對于復(fù)雜的網(wǎng)頁結(jié)構(gòu),可能需要額外的處理,如分頁、登錄驗證、動態(tài)加載內(nèi)容等。5.存儲數(shù)據(jù):將提取到的信息存儲到本地文件或數(shù)據(jù)庫中,以備后續(xù)分析和使用。通常可以使用數(shù)據(jù)庫技術(shù)來存儲爬取到的數(shù)據(jù)。6.異常處理與重試:在整個抓取過程中,可能會出現(xiàn)各種異常情況,如網(wǎng)絡(luò)超時或未找到頁面。編寫異常處理代碼和采用合理的重試技術(shù)至關(guān)重要。爬蟲的主要組成部分:1.爬取引擎:爬取引擎是爬蟲的核心組件,負(fù)責(zé)協(xié)調(diào)和控制整個爬取過程。爬取引擎還負(fù)責(zé)調(diào)度網(wǎng)絡(luò)請求、處理異常情況、限制爬取速率等。2.鏈接管理器:鏈接管理器負(fù)責(zé)管理待抓取的URL集合。它負(fù)責(zé)去重、過濾、存儲和提取URL,確保爬取過程中不會重復(fù)抓取同一個URL,同時保證盡可能多地覆蓋目標(biāo)網(wǎng)站。3.HTML下載器:HTML下載器負(fù)責(zé)發(fā)送HTTP請求,獲取網(wǎng)頁源代碼或其他資源,并將其返回給爬取引擎。下載器通常支持處理各種類型的請求(GET、POST、PUT等),同時還需要處理各種異常情況(如網(wǎng)絡(luò)超時、頁面不存在等)。4.HTML解析器:網(wǎng)頁解析器負(fù)責(zé)解析下載的網(wǎng)頁內(nèi)容,并從中提取出目標(biāo)數(shù)據(jù)。它通常使用解析庫來解析文檔,然后根據(jù)預(yù)定義的規(guī)則提取出所需的信息,如鏈接、文本內(nèi)容、圖片等。5.數(shù)據(jù)存儲器:從在線網(wǎng)站提取的數(shù)據(jù)必須通過數(shù)據(jù)存儲器保存到本地文件或數(shù)據(jù)庫中。除了數(shù)據(jù)存儲、更新、查詢和刪除操作外,它還負(fù)責(zé)數(shù)據(jù)的格式化和持久性。數(shù)據(jù)存儲器通常使用文件系統(tǒng)、關(guān)系型數(shù)據(jù)庫(如MySQL、PostgreSQL)或非關(guān)系型數(shù)據(jù)庫(如MongoDB)來存儲數(shù)據(jù)。6.日志記錄器:日志記錄器負(fù)責(zé)記錄爬取過程中的各種操作和異常情況。它通常記錄爬取的URL、下載的內(nèi)容、錯誤信息等,以便后續(xù)的錯誤排查和分析。爬蟲相關(guān)的常用庫和工具:1.Requests:Python的HTTP庫,用于發(fā)送HTTP請求和處理響應(yīng),是爬蟲實現(xiàn)的基礎(chǔ)。2.BeautifulSoup:Python的HTML解析庫,用于解析網(wǎng)頁的HTML源代碼,提取出需要的信息。3.Scrapy:Pythoh的爬蟲框架,提供了一套完整的爬取流程和組件,方便開發(fā)者快速構(gòu)建和部署爬蟲。4.Selenium:自動化測試工具,常用于處理動態(tài)加載的網(wǎng)頁內(nèi)容,模擬瀏覽器行為進(jìn)行爬取。5.Splash:基于Webkit的瀏覽器渲染服務(wù),可以通過HTTP接口進(jìn)行控制,用于處理渲染的頁面。6.lxml:解析網(wǎng)頁源碼庫,速度較快。7.Pandas:數(shù)據(jù)處理和分析庫,對獲取的數(shù)據(jù)進(jìn)行各種處理。8.Scrapy-Redis:Scrapy的分布式擴展,用于支持多臺機器共同爬取數(shù)據(jù),提高爬取效率和穩(wěn)定性。9.Celery:分布式任務(wù)隊列,用于爬蟲的任務(wù)調(diào)度和并發(fā)處理??傊琍ython網(wǎng)絡(luò)爬蟲的應(yīng)用范圍非常廣泛。它們被廣泛應(yīng)用于許多不同的領(lǐng)域,包括數(shù)據(jù)觀測、各種分析、各種數(shù)據(jù)獲取和優(yōu)化搜索等,是這些領(lǐng)域和其他領(lǐng)域的數(shù)據(jù)基礎(chǔ)。2.1.2可視化技術(shù)介紹可視化技術(shù)一詞描述的是利用各種可視化組件將數(shù)據(jù)轉(zhuǎn)化為可視化格式的過程。這樣,用戶就能更容易地看到數(shù)據(jù)中的模式、趨勢和異?,F(xiàn)象,并從直觀的角度理解數(shù)據(jù)。可視化技術(shù)的主要組成部分:1.圖表類型:圖表類型是可視化的基本形式,不同類型的圖表適用于展示不同類型的數(shù)據(jù)。常見的圖表類型包括折線圖、柱狀圖、餅圖、散點圖、雷達(dá)圖等。2.顏色和視覺元素:顏色和其他視覺元素(如線條、點、區(qū)域等)用于突出數(shù)據(jù)的特點、區(qū)分不同類別的數(shù)據(jù)或表示數(shù)據(jù)的關(guān)聯(lián)性。合理選擇顏色和視覺元素可以使可視化圖形更具吸引力和表達(dá)力。3.互動功能:這一功能通過讓用戶以最符合其要求的方式自由查看數(shù)據(jù),使可視化具有更強的適應(yīng)性和交互性。4.動態(tài)效果:動態(tài)效果可以增加可視化圖形的吸引力和趣味性,使用戶更加容易地理解數(shù)據(jù)變化的過程和趨勢。常見的動態(tài)效果包括動畫、實時更新等。5.數(shù)據(jù)可視化工具和庫:為了簡化可視化的過程,提高效率,通常會使用各種數(shù)據(jù)可視化工具和庫。常用的數(shù)據(jù)可視化工具和庫包括Matplotlib、Seaborn、Plotly、D3.js等。以上是可視化技術(shù)的主要組成部分,通過合理的選擇和組合,可以實現(xiàn)各種形式的數(shù)據(jù)可視化,從而幫助用戶更直觀地理解數(shù)據(jù)并做出決策。2.1.3Django框架介紹Django是一個用于構(gòu)建Web應(yīng)用程序的高級PythonWeb框架。這個框架主要由框架的開發(fā)人員維護(hù),這樣可以讓使用者能更好開發(fā)程序。Django框架的主要特點:1.功能齊全:Django提供了開發(fā)人員快速創(chuàng)建各種在線應(yīng)用程序所需的所有功能,包括表單處理、數(shù)據(jù)庫管理、URL路由、用戶身份驗證和模板系統(tǒng)。2.強大的ORM:Django的ORM(Object-RelationalMapping)系統(tǒng)使開發(fā)人員能夠使用Python對象進(jìn)行數(shù)據(jù)庫操作,而無需手動編寫SQL查詢。通過其全面的查詢API和對眾多數(shù)據(jù)庫后端的支持,數(shù)據(jù)庫操作變得簡單而靈活。3.內(nèi)置管理后臺:Django有一個有效的內(nèi)置管理后端,可自行生成維護(hù)數(shù)據(jù)庫模型的界面。開發(fā)人員無需編寫額外的代碼,只需進(jìn)行少量配置,就能在數(shù)據(jù)庫上執(zhí)行CRUD(創(chuàng)建、讀取、更新和刪除)操作。4.URL系統(tǒng):開發(fā)人員可以使用Django的URL路由系統(tǒng)將URL映射到視圖函數(shù),從而實現(xiàn)請求路由和分發(fā)。該系統(tǒng)支持正則表達(dá)式和命名空間,從而提高了URL設(shè)置的靈活性和可擴展性。5.模板系統(tǒng):為了生成動態(tài)HTML頁面,Django擁有強大的模板系統(tǒng)。模板系統(tǒng)支持模板繼承、模板標(biāo)簽、過濾器等功能,便于開發(fā)人員創(chuàng)建復(fù)雜的頁面結(jié)構(gòu)。Django主要由下面這些部分組成:1.視圖:Django的視圖是處理HTTP請求的地方。HTTP請求被發(fā)送到每個視圖函數(shù),然后視圖函數(shù)返回HTTP響應(yīng)。視圖函數(shù)負(fù)責(zé)生成適當(dāng)?shù)捻憫?yīng)結(jié)果,并根據(jù)請求內(nèi)容進(jìn)行邏輯處理。視圖函數(shù)提供了渲染模板、調(diào)用其他函數(shù)、從數(shù)據(jù)庫讀取數(shù)據(jù)等功能。2.模板:模板是一種包含占位符和標(biāo)簽的文本文件,其中包含了頁面的結(jié)構(gòu)和內(nèi)容。視圖函數(shù)可以通過渲染模板將模板中的占位符替換為具體的數(shù)據(jù),生成最終的HTML頁面。3.路由:Django的路由模塊將URL映射到視圖功能。路由概述了相關(guān)的視圖函數(shù)和URL模式。當(dāng)Django收到HTTP請求時,它會使用請求的URL來匹配匹配的路由規(guī)則,并調(diào)用相關(guān)的視圖方法來處理請求。4.表單:開發(fā)者可以通過定義表單類來描述表單的字段和驗證規(guī)則,Django會自動處理表單的展示、驗證和數(shù)據(jù)存儲等過程。5.管理后臺:Django有一個用于數(shù)據(jù)管理的集成界面,稱為管理后臺。由于配置簡單,開發(fā)人員無需編寫額外代碼即可在管理后臺添加、刪除、更改或查詢數(shù)據(jù)庫中的數(shù)據(jù)。6.中間件:Django的一個組件稱為中間件,用于在處理HTTP請求和生成HTTP響應(yīng)時執(zhí)行額外的邏輯。除了預(yù)處理請求和后處理響應(yīng),中間件還可以執(zhí)行其他任務(wù),如授權(quán)檢查、日志記錄、緩存以及請求和響應(yīng)之間的其他任務(wù)。總之,Django框架的主要用途是可擴展性、安全性、URL路由、快速開發(fā)和數(shù)據(jù)庫操作。其目標(biāo)是提供一個高效、用戶友好和強大的開發(fā)環(huán)境,以便開發(fā)人員可以集中精力將業(yè)務(wù)邏輯付諸實踐,而不是在支持細(xì)節(jié)上花費過多時間。2.1.4協(xié)同過濾算法介紹協(xié)同過濾算法是推薦系統(tǒng)中的一種常用方法,它通過比較人或產(chǎn)品之間的相似性來預(yù)測用戶對未知對象的偏好程度。它基于用戶過去的行為數(shù)據(jù)(如評分、偏好等)。協(xié)同過濾算法使用方法:1.數(shù)據(jù)收集:首先,最重要的是收集用戶行為信息,包括評分、點擊、購買和其他與事物相關(guān)的操作??梢允褂媒灰子涗?、用戶操作日志和其他來源來檢索這些數(shù)據(jù)。2.相似度計算:基于用戶的協(xié)同過濾必須確定人與人之間的相似性,而基于項的協(xié)同過濾必須確定項與項之間的相似性。余弦相似度、皮爾遜相關(guān)系數(shù)和其他常用方法都可用于計算相似度。3.鄰居選擇:一旦確定了相似性,就必須從可比用戶或產(chǎn)品中選擇一定數(shù)量的鄰居。一般來說,只有相似度大于閾值的用戶或?qū)ο蟛艜贿x為鄰居。4.預(yù)測評分:利用周圍的評分?jǐn)?shù)據(jù),估計目標(biāo)用戶對尚未評分的產(chǎn)品的評分。常用的預(yù)測方法包括加權(quán)平均或加權(quán)和。5.創(chuàng)建建議列表:根據(jù)預(yù)期評分創(chuàng)建推薦列表??蓪㈩A(yù)測評分從高到低排序,然后向用戶推薦評分最高的項目。6.評估建議的有效性:使用離線評估或在線評估這兩種典型方法之一來評估創(chuàng)建的推薦列表。在線評估根據(jù)用戶在系統(tǒng)中的實際行為來評估推薦算法的有效性,而離線評估則使用離線數(shù)據(jù)集來評估算法的準(zhǔn)確性和有效性。總之,協(xié)同過濾算法是一種通過挖掘用戶或產(chǎn)品之間的相似性來生成推薦的推薦系統(tǒng)算法。它基于用戶行為數(shù)據(jù)。Python上有多個開源庫,可用于創(chuàng)建協(xié)同過濾算法。本系統(tǒng)中的協(xié)同過濾方法使用scikit-learn庫實現(xiàn)。第3章系統(tǒng)分析和設(shè)計3.1系統(tǒng)分析3.1.1數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫設(shè)計是構(gòu)建系統(tǒng)的關(guān)鍵一環(huán),它涉及到數(shù)據(jù)的組織、存儲和管理。下面是系統(tǒng)的數(shù)據(jù)庫設(shè)計,數(shù)據(jù)庫設(shè)計兩個表,一個存放爬取下來的景點數(shù)據(jù),另一個存放系統(tǒng)用戶詳細(xì),兩者依靠評價關(guān)聯(lián),用戶可以對每個景點評價留下評論,數(shù)據(jù)庫圖如圖所示。圖3.1.1數(shù)據(jù)庫設(shè)計圖通過以上的數(shù)據(jù)庫設(shè)計,可以存儲用戶信息、旅游景點信息以及用戶行為數(shù)據(jù),為推薦系統(tǒng)提供必要的數(shù)據(jù)支持。需要注意的是,在實際開發(fā)過程中,可能會根據(jù)具體需求對數(shù)據(jù)庫設(shè)計進(jìn)行進(jìn)一步的優(yōu)化和擴展。例如,可以增加用戶收藏、評價等功能,進(jìn)一步豐富用戶行為數(shù)據(jù),提高推薦的準(zhǔn)確性和個性化程度。數(shù)據(jù)庫設(shè)計兩個表,一個存放爬取下來的景點數(shù)據(jù),另一個存放系統(tǒng)用戶詳細(xì),兩者依靠評價關(guān)聯(lián),用戶可以對每個景點評價留下評論,數(shù)據(jù)庫的表如圖所示。表3.1.1旅游信息表字段名數(shù)據(jù)類型標(biāo)識備注idintID主鍵titlevarchar(255)景點名非空levelvarchar(255)等級非空discountvarchar(255)折扣非空salecountvarchar(255)銷量非空provincevarchar(255)省份非空starvarchar(255)熱度非空detailAddressvarchar(255)景點詳情地址非空shortIntrovarchar(2555)短評非空detailurlvarchar(255)詳情地址非空scorevarchar(255)評分非空pricevarchar(255)價格非空commentsLenvarchar(2555)評論個數(shù)非空detailIntrovarchar(2550)詳情介紹非空Img_listvarchar(2555)圖片列表非空commentsvarchar(255)用戶評論非空covervarchar(2555)封面非空creat_timedate爬取時間非空表3.1.1用戶表字段名數(shù)據(jù)類型標(biāo)識備注idintID主鍵usernamevarchar(255)用戶名非空passwordvarchar(255)密碼非空sexvarchar(255)性別addressvarchar(255)地址avatarvarchar(100)頭像TextareaVarchar(255)個人簡介creat_timedate創(chuàng)建時間3.1.2功能架構(gòu)設(shè)計根據(jù)需求調(diào)研結(jié)果確定本系統(tǒng)主要包括以下功能模塊,如圖所示。圖3.1.2系統(tǒng)總體結(jié)構(gòu)首頁:首頁提供給用戶去注冊賬號和登錄賬號的功能,并且用戶進(jìn)入首頁后可以直觀看到系統(tǒng)整體信息和各種功能。個人信息:用戶可以在這一個模塊去瀏覽自己的個人信息,并且可以在里面去修改自己的個人信息,可以添加各種信息如個人簡介等等,接著用戶如果對自己的密碼不滿意,用戶可以隨時修改密碼。數(shù)據(jù)表格:展示系統(tǒng)爬取到的各個旅游景點的各種信息,例如景區(qū)名,評級,省份,評分,價格,月銷量和圖片等等信息,讓用戶可以在這里直接瀏覽到各種景點的信息,并且還添加了搜索功能,讓用戶可以直接搜索想要了解的景點的詳細(xì)信息。數(shù)據(jù)可視化:這一模塊將系統(tǒng)爬取的到所有景點數(shù)據(jù)進(jìn)行了一個可視化操作,用柱狀圖和折線圖去直觀的給用戶展示數(shù)據(jù),并且用戶也可以直接觀看數(shù)據(jù)表格,當(dāng)然用戶也可以去下載這些可視化的數(shù)據(jù)。這部分?jǐn)?shù)據(jù)可視化模塊將會包含城市和景點等級分析,評分情況分析,價格銷量分析,評論分析,方便用戶去更好的對想去的旅游景點進(jìn)行判斷,讓用戶能從這些數(shù)據(jù)中確定自己想去要的省份的景點等等。推薦算法:這一個模塊是一個推薦模塊,這一模塊將會使用協(xié)同過濾推薦算法去實現(xiàn)推薦功能,會根據(jù)用戶對各個景點的評分去給用戶推薦景點,如果沒有適合的景點,例如用戶沒有對任何的景點去進(jìn)行一個評價和評分的操作,那么這一模塊將會直接為用戶提供系統(tǒng)所爬取到的銷量最高的景點的數(shù)據(jù)給用戶,如果沒有合適的景點為用戶推薦,算法默認(rèn)推薦銷量最高的景點。3.1.3模塊功能描述用戶注冊登錄后,自動進(jìn)入到系統(tǒng)首頁,可以看到各種景區(qū)的信息,比如中國景區(qū)地圖、景點排行、銷量排行以及系統(tǒng)用戶創(chuàng)建時間占比等基礎(chǔ)信息。在左側(cè)導(dǎo)航欄分為了首頁、個人信息、數(shù)據(jù)表格、數(shù)據(jù)可視化、景點推薦5個模塊。用戶可以在個人信息模塊修改個人信息與密碼,可以添加各種信息如個人簡介等等,在數(shù)據(jù)總覽模塊可以看到景點數(shù)據(jù)并且添加評論為景點推薦做基礎(chǔ),在數(shù)據(jù)可視化模塊可以看到很多景點數(shù)據(jù)分析比如城市評級景點,評分,銷量與價格等等數(shù)據(jù)的展示。景點推薦模塊根據(jù)現(xiàn)有數(shù)據(jù)與用戶自己的評分,通過協(xié)同過濾算法對用戶進(jìn)行合適的景點推薦,詞云圖模塊展示了景點簡介與用戶評論的詞云圖。系統(tǒng)總體模塊如圖所示。圖3.1.3用戶用例圖系統(tǒng)總體模塊功能介紹如下:1.用戶注冊:用戶在用戶注冊的頁面中寫上自己喜歡的用戶名和密碼,然后就可以點擊注冊按鈕去注冊賬號,但是系統(tǒng)會去判斷用戶寫的用戶名是否已經(jīng)存在,若是用戶名存在則會報錯并且彈出一個頁面顯示用戶名已存在。不止如此,系統(tǒng)還會判定用戶注冊時輸入的兩次密碼是否一致,如果不一致則不能創(chuàng)建賬號,并且也會彈出一個新的頁面顯示用戶輸入兩次密碼不一致,導(dǎo)致創(chuàng)建失敗。2.用戶登錄:用戶在頁面中輸入自己的創(chuàng)建的用戶名和密碼,若是用戶名和密碼都正確則會直接跳轉(zhuǎn)到主頁面。3.首頁信息:用于登錄后所跳轉(zhuǎn)到的主頁面,主頁面主要包含左側(cè)模塊導(dǎo)航欄和各種景點信息,如5A級景點個數(shù),評論區(qū)最多的景區(qū),擁有景點最多的地方,評分排行前十景點,熱門景區(qū)地圖,銷量前十景點,用戶創(chuàng)建時間分布等等信息,讓用戶能大致地去了解系統(tǒng)的內(nèi)容。4.修改信息:用戶進(jìn)入修改信息模塊可以看到自己的注冊時的個人信息,并且還能在其中添加各種信息,例如地址,性別,個人簡介等等。系統(tǒng)還直接上傳圖片作為用戶的個性化頭像。5.修改密碼:用戶可以在這個模塊去修改密碼,防止自己的密碼泄露,導(dǎo)致賬號被其他人使用等各種情況。6.數(shù)據(jù)操作:用戶進(jìn)入數(shù)據(jù)操作頁面可以看到各個景區(qū)的各種數(shù)據(jù),如景區(qū)名,景區(qū)等級,景區(qū)省份,景區(qū)評分,價格,月銷量,圖片等數(shù)據(jù),并且用戶能瀏覽完景點數(shù)據(jù)后給景點評分和添加評論,系統(tǒng)會把這些信息錄入數(shù)據(jù)庫。7.數(shù)據(jù)可視化:將系統(tǒng)所爬取到的景點各種信息去進(jìn)行可視化,里面包含了城市和景點等級分析,評分情況分析,價格銷量分析,評論分析,用戶可以直觀的看到自己想看的數(shù)據(jù)。8.景點推薦:用戶點擊景點推薦后,系統(tǒng)會根據(jù)用戶對景點的評價和已經(jīng)擁有的數(shù)據(jù)為用戶推薦景點。3.1.4頁面架構(gòu)設(shè)計基于Python的旅游推薦系統(tǒng)的頁面架構(gòu)設(shè)計需要考慮系統(tǒng)的功能模塊、用戶界面的友好性和易用性。系統(tǒng)整體頁面布局如下圖所示,圖3.1.4首頁設(shè)計圖1.導(dǎo)航欄:左側(cè)導(dǎo)航欄包含系統(tǒng)所有的功能模塊,可以點擊跳轉(zhuǎn)到相應(yīng)頁面去使用功能。2.首頁:首頁包含了各種信息如5A級景點個數(shù),評論區(qū)最多的景區(qū),擁有景點最多的地方,評分排行前十景點,熱門景區(qū)地圖,銷量前十景點,用戶創(chuàng)建時間分布等等信息,讓用戶能大致地去了解系統(tǒng)的內(nèi)容。并且點擊右上角的個人頭像可以登出系統(tǒng)。3.各模塊的頁面布局:每個模塊使用的頁面基本和首頁使用的頁面一致,用的都是相同的背景,只是其中內(nèi)容和模塊的功能不一樣,整體頁面的布局是相似的。3.2系統(tǒng)開發(fā)環(huán)境介紹開發(fā)語言:python編輯器:Pycharm數(shù)據(jù)庫:Mysql數(shù)據(jù)庫客戶端:Navicat和DataGrip框架和相關(guān)庫:Django、Scrapy、Pandas等等3.3系統(tǒng)可行性分析3.3.1技術(shù)可行性系統(tǒng)的技術(shù)可行性分析主要評估項目所采用的技術(shù)在實際應(yīng)用中是否能夠滿足系統(tǒng)開發(fā)和運行的要求。針對基于Python的旅游推薦系統(tǒng)項目,我進(jìn)行如下技術(shù)可行性分析:1.Python語言和相關(guān)庫的成熟度:Python語言本身的成熟度:Python作為一種高級編程語言,在軟件開發(fā)領(lǐng)域有著廣泛的應(yīng)用和活躍的社區(qū)支持,其穩(wěn)定性和易用性得到了廣泛認(rèn)可。相關(guān)庫和框架的成熟度:評估Django框架在Web開發(fā)領(lǐng)域的應(yīng)用情況,以及其他用于數(shù)據(jù)處理、機器學(xué)習(xí)、可視化等方面的Python庫的成熟度和穩(wěn)定性,確保能夠滿足項目需求。2.數(shù)據(jù)庫技術(shù)的可行性:數(shù)據(jù)庫選擇:評估不同類型的數(shù)據(jù)庫(如MySQL、PostgreSQL等)在性能、可靠性和擴展性方面的優(yōu)缺點,選擇最適合項目需求的數(shù)據(jù)庫技術(shù)。數(shù)據(jù)庫操作技術(shù):分析Python中數(shù)據(jù)庫操作的相關(guān)庫(如Django自帶的ORM或SQLAlchemy等),評估其在開發(fā)中的使用便捷性和效率。3.爬蟲技術(shù)的應(yīng)用:爬蟲工具選擇:評估不同的Python爬蟲框架(如Scrapy、BeautifulSoup等)的功能和性能,選擇最適合項目需求的爬蟲技術(shù)。數(shù)據(jù)抓取難度:分析需要抓取的數(shù)據(jù)源的結(jié)構(gòu)和復(fù)雜度,評估爬蟲技術(shù)是否能夠有效地獲取目標(biāo)數(shù)據(jù)。4.推薦算法的實現(xiàn):推薦算法選擇:評估不同類型的推薦算法(如基于協(xié)同過濾、基于內(nèi)容的推薦、深度學(xué)習(xí)推薦等)的原理和適用場景,選擇最適合項目需求的推薦算法。算法實現(xiàn)難度:分析選擇的推薦算法在Python中的實現(xiàn)難度和性能要求,評估是否有足夠的技術(shù)能力和資源來實現(xiàn)和優(yōu)化算法。5.可視化技術(shù)的應(yīng)用:可視化庫選擇:評估Python中常用的可視化庫(如Matplotlib、Seaborn、Plotly等)的功能和效果,選擇最適合項目需求的可視化技術(shù)。數(shù)據(jù)展示需求:分析系統(tǒng)中需要展示的數(shù)據(jù)類型和展示方式,評估可視化技術(shù)是否能夠滿足數(shù)據(jù)展示的需求。3.3.2系統(tǒng)安全性分析系統(tǒng)安全性分析是評估項目在保護(hù)用戶數(shù)據(jù)、防止惡意攻擊和確保系統(tǒng)運行穩(wěn)定性方面的能力。針對基于Python的旅游推薦系統(tǒng)項目,我進(jìn)行如下系統(tǒng)安全性分析:1.用戶認(rèn)證和權(quán)限控制:用戶認(rèn)證:確保用戶在系統(tǒng)中的身份是合法的,采用安全的身份認(rèn)證機制,如用戶名密碼認(rèn)證、OAuth認(rèn)證等。權(quán)限控制:對不同用戶或用戶組設(shè)置相應(yīng)的權(quán)限,限制其對系統(tǒng)資源和數(shù)據(jù)的訪問和操作,防止未授權(quán)的用戶獲取敏感信息或執(zhí)行危險操作。3.4系統(tǒng)設(shè)計3.4.1系統(tǒng)設(shè)計思想基于Python的旅游推薦系統(tǒng)的設(shè)計思想主要包括以下幾個方面:1.用戶導(dǎo)向:系統(tǒng)設(shè)計應(yīng)該以用戶需求和體驗為中心,充分了解用戶的喜好和行為習(xí)慣,為用戶提供個性化、精準(zhǔn)的推薦服務(wù),提高用戶滿意度和忠誠度。2.數(shù)據(jù)驅(qū)動:系統(tǒng)設(shè)計應(yīng)充分利用大數(shù)據(jù)和用戶行為數(shù)據(jù),通過數(shù)據(jù)分析和挖掘,發(fā)現(xiàn)用戶的偏好和潛在需求,為用戶提供更精準(zhǔn)的推薦結(jié)果。3.模塊化設(shè)計:系統(tǒng)設(shè)計應(yīng)采用模塊化的架構(gòu),將系統(tǒng)拆分為多個獨立的模塊,每個模塊負(fù)責(zé)完成特定的功能,提高代碼的復(fù)用性和可維護(hù)性。4.用戶參與和反饋:系統(tǒng)設(shè)計應(yīng)鼓勵用戶參與和反饋,通過用戶反饋和評價改進(jìn)系統(tǒng)的推薦算法和功能,不斷提升系統(tǒng)的服務(wù)質(zhì)量和用戶滿意度。5.跨平臺兼容:系統(tǒng)設(shè)計應(yīng)具備跨平臺兼容性,能夠在不同設(shè)備上運行,并提供一致的用戶體驗,滿足用戶在不同場景下的需求。3.4.2系統(tǒng)設(shè)計原則系統(tǒng)設(shè)計原則是指在進(jìn)行軟件系統(tǒng)設(shè)計時所遵循的基本準(zhǔn)則和規(guī)范,有助于確保系統(tǒng)具有良好的結(jié)構(gòu)、性能和可維護(hù)性。基于Python的旅游推薦系統(tǒng)的設(shè)計原則主要包括以下幾個方面:1.單一職責(zé)原則(SRP):一個類或模塊應(yīng)該只有一個引起變化的原因,即一個類或模塊應(yīng)該只有一個單一的責(zé)任。2.開閉原則(OCP):軟件實體(類、模塊、函數(shù)等)應(yīng)該對擴展開放,對修改關(guān)閉,即應(yīng)該通過擴展來實現(xiàn)變化,而不是通過修改已有的代碼。3.里氏替換原則(LSP):所有的子類都應(yīng)該能夠替換其父類并且不影響程序的正確性,即子類型必須能夠替換掉父類型。4.KISS原則(KeepItSimple,Stupid):設(shè)計應(yīng)該保持簡單明了,不要過度設(shè)計或添加不必要的功能。簡單的設(shè)計更易于理解、開發(fā)和維護(hù)。5.DRY原則(Don'tRepeatYourself):避免重復(fù)編寫相同的代碼。將相同的功能抽象為可復(fù)用的組件或函數(shù),以減少代碼重復(fù)和提高代碼的可維護(hù)性。第4章系統(tǒng)實現(xiàn)4.1數(shù)據(jù)獲取1.數(shù)據(jù)是選擇去哪兒旅行網(wǎng)站,找到要爬取數(shù)據(jù)的網(wǎng)站的url,并且寫好headers的偽裝,以便爬取數(shù)據(jù)。def__init__(self):self.url='/ticket/list.json?keyword=…'self.detailUrl='/ticket/detail_%s.html'mentUrl='/ticket/detailLight/sightCommentList...'self.headers={'User-Agent':'…','Cookie':'…'}異步數(shù)據(jù)爬?。篸efspiderMain(self,resp,province):respJSON=resp.json()['data']['sightList']forindex,travelinenumerate(respJSON):print(f'正在爬取第{str(index+1)}條數(shù)據(jù)')#防止速度過快導(dǎo)致系統(tǒng)爬取數(shù)據(jù)時被封禁time.sleep(2)try:address=travel['address']discount=travel['discount']#對可能有錯誤的數(shù)據(jù)給默認(rèn)值try:shortIntro=travel['intro']except:shortIntro=''try:price=travel['qunarPrice']except:price='免費'saleCount=travel['saleCount']try:level=travel['star']+'景區(qū)'except:level='未評級'title=travel['sightName']cover=travel['sightImgURL'] sightId=travel['sightId']然后url改為具體景點的詳細(xì)數(shù)據(jù)和評論頁面爬取景點數(shù)據(jù)和評分等數(shù)據(jù)#詳情爬取url=self.detailUrl%sightIdrespDetailXpath=etree.HTML(self.send_request(url).text)score=respDetailXpath.xpath('//span[@id="mp-descriptioncommentscore"]/span/text()')ifnotscore:score=0star=0else:score=score[0]star=int(float(score)*10)comments_count=respDetailXpath.xpath('//span[@class="mp-descriptioncommentCount"]/a/text()')[0].replace('條評論','')detail=respDetailXpath.xpath('//div[@class="mp-charact-desc"]/p/text()')[0]imag_list=respDetailXpath.xpath('//div[@class="mp-descriptionimage"]/img/@src')[:6]#評論爬取commentsid=respDetailXpath.xpath('//div[@id="mp-tickets-new"]/@data-sightid')[0]comments=[]try:foriinrange(1,3):time.sleep(1)cpmmentsUrl=mentUrl%(commentsid,i)commentsList=self.send_request(cpmmentsUrl).json()['data']['commentList']try:forcincommentsList:ifc['content']!='用戶未點評,系統(tǒng)默認(rèn)好評。':author=c['author']content=c['content']date=c['date']score=c['score']comments.append({'author':author,'content':content,'date':date,'score':score})except:comments=[]except:comments=[]except:continue最后將上述所爬取的數(shù)據(jù)保存為csv文件后直接寫入數(shù)據(jù)庫中defsave_sql(self):withopen('tempData.csv','r',encoding='utf-8')ascsvfile:readerCsv=csv.reader(csvfile)next(readerCsv)fortravelinreaderCsv:TravelInfo.objects.create(title=travel[0],level=travel[1],province=travel[2],star=travel[3],detailAddress=travel[4],shortIntro=travel[5],detailurl=travel[6],,省略剩下幾個表頭名4.2系統(tǒng)整體的url設(shè)置為系統(tǒng)中的視圖函數(shù)和html文件所用到的url配置路徑urlpatterns=[path('login/',views.login,name='login'),path('register/',views.register,name='register'),path('logOut/',views.logOut,name='logOut'),path('home/',views.home,name='home'),path('changeSelfInfo/',views.changeSelfInfo,name='changeSelfInfo'),path('changePassword/',views.changePassword,name='changePassword'),path('tableData/',views.tableData,name='tableData'),path('addComments/<int:id>',views.addComments,name='addComments'),path('cityChar',views.cityChar,name='cityChar'),path('rateChar',views.rateChar,name='rateChar'),path('priceChar/',views.priceChar,name='priceChar'),path('commentsChar/',mentsChar,name='commentsChar'),path('recommend/',views.recommend,name='recommend'),]4.3系統(tǒng)數(shù)據(jù)庫的實現(xiàn)1.旅游景點各項數(shù)據(jù)的數(shù)據(jù)庫classTravelInfo(models.Model):id=models.AutoField('id',primary_key=True)title=models.CharField('景區(qū)名',max_length=255,default='')level=models.CharField('等級',max_length=255,default='')discount=models.CharField('折扣',max_length=255,default='')salecount=models.CharField('銷量',max_length=255,default='')province=models.CharField('省份',max_length=255,default='')star=models.CharField('熱度',max_length=255,default='')detailAddress=models.CharField('景點詳情地址',max_length=255,default='')shortIntro=models.CharField('短評',max_length=2555,default='')detailurl=models.CharField('詳情地址',max_length=255,default='')score=models.FloatField('評分',max_length=255,default='')price=models.CharField('價格',max_length=255,default='')commentsLen=models.CharField('評論個數(shù)',max_length=255,default='')detailIntro=models.CharField('詳情介紹',max_length=2555,default='')img_list=models.CharField('圖片列表',max_length=2550,default='')comments=models.TextField('用戶評論',default='')cover=models.CharField('封面',max_length=2555,default='')createTime=models.DateTimeField('爬取時間',auto_now_add=True)2.用戶整體數(shù)據(jù)的數(shù)據(jù)庫classUser(models.Model):id=models.AutoField('id',primary_key=True)username=models.CharField('用戶名',max_length=255,default='')password=models.CharField('密碼',max_length=255,default='')sex=models.CharField('性別',max_length=255,default='')address=models.CharField('地址',max_length=255,default='')avatar=models.FileField('頭像',upload_to='avatar',default='avatar/default.png')textarea=models.CharField('個人簡介',max_length=255,default='這個人很懶什么也沒有留下')createtime=models.DateField('創(chuàng)建時間',auto_now_add=True)3.系統(tǒng)連接數(shù)據(jù)庫以便使用數(shù)據(jù)DATABASES={'default':{'ENGINE':'django.db.backends.mysql','NAME':'yyy','USER':"root",'PASSWORD':'123456','HOST':"localhost",'port':'3306',"OPTIONS":{'charset':'utf8mb4',},}}4.4系統(tǒng)登錄與注冊1.系統(tǒng)登錄url為:8000/app/login/。輸入url到達(dá)登錄頁面后,若是用戶已有賬號則可以直接輸入用戶名和密碼直接登錄系統(tǒng),若是用戶沒有屬于自己的賬號則可以點擊登錄頁面中的創(chuàng)建賬號去創(chuàng)建一個屬于自己的賬號。系統(tǒng)登錄頁面整體如下圖所示。圖4.4.1系統(tǒng)登錄頁面2.系統(tǒng)注冊頁面中用戶點擊創(chuàng)建賬號后會跳轉(zhuǎn)到這個url的頁面,用戶可以輸入自己喜歡的用戶名和密碼,若是喜歡的用戶名被他人先注冊了則會報錯,下面兩圖分別為系統(tǒng)注冊頁面和用戶名被他人提前注冊報錯頁面。圖4.4.2系統(tǒng)注冊頁面圖4.4.3注冊出現(xiàn)錯誤頁面4.系統(tǒng)登錄時若是賬號密碼輸入錯誤則會跳轉(zhuǎn)到報錯頁面,并且會顯示賬號或密碼出錯。報錯頁面如下圖所示。圖4.4.4登錄系統(tǒng)賬號密碼報錯頁面4.5系統(tǒng)首頁在用戶使用用戶名和密碼成功登陸系統(tǒng)后會跳轉(zhuǎn)到系統(tǒng)首頁,系統(tǒng)首頁可以直觀的看到各種旅游景點的信息,讓用戶能一目了然得去了解系統(tǒng)的功能,首頁具體如下兩圖所示。圖4.5.1系統(tǒng)首頁頁面圖4.5.2系統(tǒng)首頁頁面補充4.6系統(tǒng)個人信息及密碼修改1.在系統(tǒng)個人信息修改頁面中用戶可以在這個頁面里添加自己的地址以及個人簡介,并且還在能這個頁面添加自己喜歡的圖片作為自己的頭像,不用系統(tǒng)的默認(rèn)圖片當(dāng)頭像。整體的系統(tǒng)個人信息修改頁面如下圖所示。圖4.6.1系統(tǒng)個人信息修改頁面2.在用戶修改密碼頁面中用戶可以在這個頁面修改密碼,用戶需要填寫正確的舊的密碼,然后并且輸入兩次新的密碼,確保兩次輸入的新密碼沒有錯誤后,便可以點擊提交。提交完成后密碼便修改成功。整體用戶修改密碼頁面如下圖所示。圖4.6.2系統(tǒng)用戶密碼修改頁面4.7數(shù)據(jù)總體瀏覽1.在數(shù)據(jù)操作頁面用戶可以在這里看到旅游景點的詳細(xì)信息,如評分,價格等等重要信息,用戶可以直觀到看到自己想游玩的景點的信息并且用戶還可以為自己曾經(jīng)游玩過的景點進(jìn)行評價和評分等操作。數(shù)據(jù)操作頁面整體如下圖所示。圖4.7.1系統(tǒng)數(shù)據(jù)操作頁面2.點擊添加評論后會跳轉(zhuǎn)到添加評論頁面,用戶可以在添加評論頁面為景點進(jìn)行一個評分,還可以添加自己對景點的獨特評價。添加評論的頁面整體如下圖所示。圖4.7.2系統(tǒng)添加評論頁面4.8數(shù)據(jù)可視化1.城市和景點等級分析:這個頁面中把數(shù)據(jù)可視化成柱狀圖的形式給用戶去直觀的了解到不同省份和不同城市的評級景點數(shù)量,并且用戶還可以把柱狀圖下載下來瀏覽。若是用戶不喜歡柱狀圖還可以切換成折線圖瀏覽。城市和景點等級分析如圖所示。圖4.8.1城市和景點等級分析頁面2.評分情況分析:這個頁面添加了搜索框可以搜索你想去的城市,這個頁面對城市的景點星級和景點評分做了一個可視化給用戶瀏覽,用戶可以了解到這個城市的景點星級評分占比如何,以便用戶決定去不去這個城市旅游。頁面如下圖所示。圖4.8.2評分情況分析頁面3.價格銷量分析:這個頁面對不同價位區(qū)間的景點個數(shù)和景點銷量個數(shù)和景點的折扣進(jìn)行了可視化展示,讓用戶能直觀的看到相應(yīng)的數(shù)據(jù)。整體頁面如下圖所示。圖4.8.3評分情況分析頁面圖4.8.4評分情況分析頁面4.評論分析:這個頁面對評論的時間和評論的評分等級進(jìn)行了可視化,分別以折線圖和餅圖的形式展現(xiàn),整體評論分析頁面如下圖所示。圖4.8.5評論分析頁面4.9景點推薦1.景點推薦的代碼展示:這些代碼主要的功能是可以實現(xiàn)根據(jù)目標(biāo)用戶和其他用戶的詳細(xì)度去判斷誰是目標(biāo)用戶的鄰居,然后為目標(biāo)用戶推薦鄰居推薦的景點,并且這個景點是目標(biāo)用戶沒有進(jìn)行過評分的景點,這樣做的目的是防止為目標(biāo)用戶推薦去過的景點。defuser_based_collaborative_filtering(user_id,user_ratings,top_n=2): #獲取目標(biāo)用戶的評分信息target_user_ratings=user_ratings[user_id]#計算目標(biāo)用戶與其他用戶的相似度similarities={}forother_user_id,other_user_ratingsinuser_ratings.items():ifother_user_id!=user_id:#找出目標(biāo)用戶和其他用戶共同評價的景點common_items=set(target_user_ratings.keys())&set(other_user_ratings.keys())iflen(common_items)>0:#計算目標(biāo)用戶和其他用戶對共同景點的評分向量target_user_vector=np.array([target_user_ratings[item]foritemincommon_items])other_user_vector=np.array([other_user_ratings[item]foritemincommon_items])#計算余弦相似度similarity=np.dot(target_user_vector,other_user_vector)/(np.linalg.norm(targ
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廉潔文化面試題庫
- 高鐵崗位招聘面試實戰(zhàn)模擬題庫二
- 河源幼兒園教師面試實戰(zhàn)技巧與題目
- 金融行業(yè)高級職位面試題及答案
- 學(xué)前寶寶懂禮貌課件
- 快遞業(yè)價格戰(zhàn)成本結(jié)構(gòu)解析:2025年盈利困境與市場競爭力突破報告
- 孩子環(huán)保行為如何引導(dǎo)
- 2025年工業(yè)互聯(lián)網(wǎng)平臺數(shù)字水印技術(shù):數(shù)據(jù)安全防護(hù)與工業(yè)互聯(lián)網(wǎng)平臺數(shù)據(jù)共享策略研究報告
- 不良資產(chǎn)處置行業(yè)創(chuàng)新模式與市場潛力研究報告
- 專用設(shè)備制造行業(yè)服務(wù)化轉(zhuǎn)型模式創(chuàng)新與市場前景分析報告
- 代建管理工作程序
- 便秘的中醫(yī)護(hù)理
- 機電設(shè)備安裝工藝細(xì)部節(jié)點做法
- 17025實驗室管理體系
- 《美國司法體系》課件
- 《基于深度強化學(xué)習(xí)在游戲上的應(yīng)用》
- 小學(xué)信息技術(shù)試題(附答案)
- 《異常子宮出血診斷與治療指南(2022更新版)》解讀
- 《不同電針參數(shù)剌激安眠穴對原發(fā)性失眠患者睡眠質(zhì)量干預(yù)作用的臨床研究》
- 工程各工種及機械設(shè)備安全操作規(guī)程
- 《班主任教育案例》課件
評論
0/150
提交評論