【《基于機器學習的S市房屋租賃價格預測實證分析》14000字(論文)】_第1頁
【《基于機器學習的S市房屋租賃價格預測實證分析》14000字(論文)】_第2頁
【《基于機器學習的S市房屋租賃價格預測實證分析》14000字(論文)】_第3頁
【《基于機器學習的S市房屋租賃價格預測實證分析》14000字(論文)】_第4頁
【《基于機器學習的S市房屋租賃價格預測實證分析》14000字(論文)】_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

目錄基于機器學習的S市房屋租賃價格預測實證研究摘要在當前生活中,房地產(chǎn)已經(jīng)成為金融、股市、建筑等經(jīng)濟部門發(fā)展的重要動力,其產(chǎn)業(yè)對社會發(fā)展和國家的經(jīng)濟推進起到了極其重要的支撐和促進作用。住房租賃價格的高低直接影響著居民的生活質量和居住環(huán)境。國民經(jīng)濟與社會發(fā)展穩(wěn)步上升的最重要的條件其中一條就是對于居民來說有合理的房屋租賃價格和完善的房屋租賃流程。而機器學習在各種領域都產(chǎn)生了重要的作用,在房地產(chǎn)產(chǎn)業(yè)起到了尤其重要的作用。本文通過從線上房屋租賃平臺使用python語言爬取北京市各城區(qū)的房屋租賃信息。對所爬取的信息進行數(shù)據(jù)清理,缺失值填充等操作。并對可能影響房屋租賃價格的特征值例如:房屋面積,房屋經(jīng)緯度,臥室數(shù)量等特征進行分析,最后使用線性回歸和隨機森林回歸模型通過模型預測房屋價格。通過模型了解影響網(wǎng)上房屋租賃價格的相關因素,進而初步了解網(wǎng)上房屋租賃價格的定價規(guī)律。通過研究表明,隨機森林回歸模型與線性回歸模型相比擬合度更高。而對于房屋租賃價格有影響的許多因素中,不僅與所租住的房屋面積、租賃房屋臥室的個數(shù)等租賃房屋戶型因素相關,更與房屋所處的地理位置、距離商業(yè)圈的位置、所租住房屋是否在城市的主要商業(yè)城區(qū)有關,而房屋的租金還更與其他的影響因素相關,這讓我們看到了房屋租價背后的組成的影響因素,更為我們在日后對房屋租金價格的研究提供了新的研究方向。關鍵詞:機器學習;房租預測;線性回歸模型;隨機森林回歸模型;目錄TOC\o"1-3"\h\u13294摘要 第二章房租預測系統(tǒng)相關技術本章節(jié)將對以后需要使用的爬蟲技術、數(shù)據(jù)庫技術、jupyter平臺以及機器學習部分理論原理進行分析與研究,介紹如下:2.1爬蟲技術爬蟲是一種能自動運行的腳本,它根據(jù)一定的規(guī)則自動抓取網(wǎng)絡信息,從中為我們獲取有價值的信息。爬蟲能夠按照作者的設定要求爬取下載數(shù)據(jù)或者獲取內(nèi)容。以下幾個模塊就是一個完成爬蟲所包含的內(nèi)容:1.HTTP下載器:負責HTTP下載,可以處理雜亂的互聯(lián)網(wǎng)的信息。2.抓取隊列:存儲新生成的URL隊列,可以是redis隊列、數(shù)據(jù)庫中的表、內(nèi)存中的隊列等形式存儲。根據(jù)場景的不同,你可以自行選擇。調(diào)度器:負責進行管理,他來決定URL響應的順序。3.多線程模塊:支持多線程,并且可控,實現(xiàn)海量數(shù)據(jù)的大批量爬取。排重集合:這是一個爬蟲的重要組成部分。必須記錄已收集的URL、未收集的URL、已收集的URL、未收集的URL和未收集的URL。你需要記錄最后一次爬行的時間。4.頁面解析器:定義如何解析捕獲的頁面。對于一般爬蟲來說,它可能是一組用于所有頁面的邏輯,即分詞和索引。但是對于垂直爬蟲,需要指定規(guī)則,手段包括正則、XPath、ORC圖片識別等多種方式。5.數(shù)據(jù)存儲:將爬蟲按照解析規(guī)則解析的結果寫入數(shù)據(jù)庫中,對于大多數(shù)情況,大部分人選擇存儲到本地數(shù)據(jù)庫中,也有寫到NoSQL中,存到本地也是一種選擇。6.結果提供服務:將爬蟲的結果以批量數(shù)據(jù)的方式對外提供同步數(shù)據(jù)文件,或者提供WebSevice查詢服務,按照實際需求情況。

爬蟲爬取數(shù)據(jù)的基本流程分為:(1)發(fā)送請求:使用http庫向目標站點發(fā)起請求,即送一個Requests,Requests包含請求頭、請求體等。(2)獲取相應內(nèi)容:如果服務器在正常運行,則會得到一個響應包,響應包含:html,json,圖片等信息。(3)解析內(nèi)容:通過正則表達式、Beautifulsoup等。(4)保存數(shù)據(jù)存入數(shù)據(jù)庫。爬蟲運行流程如圖2-1所示:圖2-1爬蟲運行流程2.2數(shù)據(jù)庫技術數(shù)據(jù)庫簡而言之可視為電子文件柜,是存儲電子文件的地方,用戶可以對文件中的數(shù)據(jù)運行增、刪、改、查等操作。數(shù)據(jù)庫的存儲結構可分為內(nèi)中外三層,內(nèi)層貼近真實數(shù)據(jù)的存儲,外層更貼近用戶以及在兩者之間的概念層。本次實驗數(shù)據(jù)庫我選擇采用Mysql數(shù)據(jù)庫,主要是因為以下原因:(1)Mysql數(shù)據(jù)庫對于數(shù)據(jù)處理以及事務處理非常方便與簡潔,提供了多種數(shù)據(jù)庫存儲引擎,各個引擎各有所長,對于不同的情況都有很好的應對REF_Ref28260\r\h[5]。(2)Mysql支持windows/LINUX系統(tǒng),并且支持多種開發(fā)語言。(3)Mysql數(shù)據(jù)庫面向所有用戶完全免費,用戶可以通過網(wǎng)絡直接下載。安全性高,兼容性強,提供的數(shù)據(jù)存儲容量大。2.3機器學習相關理論2.3.1機器學習概述機器學習的創(chuàng)始人亞瑟·塞繆爾(ArthurSamuel)早在1959年就定義了機器學習(machinelearning,ML):機器學習就是這樣一個研究領域,它使計算機能夠在不依賴特定編碼指令的情況下自主學習。ArthurSamuel不僅僅是對機器學習進行了定義,他還開發(fā)了一個機器學習的系統(tǒng),能夠通過使計算機在與人下跳棋的過程中進行學習人類的技巧,通過無數(shù)次的與人類的博弈之后,ArthurSamuel的定義的機器能夠和自己的棋藝相當。到了1998年,TomMitchell對機器學習的定義做了更好的定義。在《機器學習》這本書中引入了三個概念:經(jīng)驗Experience(E)、任務Task(T)、任務完成效果的衡量指標Performancemeasure(P)。也就是所對于某些類型的任務T和性能度量P,如果一個計算機程序在任務T上的性能P來度量REF_Ref25060\r\h[12],并且通過了經(jīng)驗E實現(xiàn)了性能的提高,則稱該計算機程序從經(jīng)驗E中學習的。在機器學習中,T代表要實現(xiàn)的任務,任務的類型有很多種,例如分類、回歸等。任務T確定了性能指標P,例如分類任務的分類準確率,回歸任務的預測誤差等。經(jīng)驗E則表示學習過程的學習方式,例如有監(jiān)督的學習,無監(jiān)督的學習等。機器學習主要目的是使計算機程序能夠對人類的行為進行模仿,從而使計算機不斷提高從數(shù)據(jù)中學習的能力。在本質上,機器學習就是對已經(jīng)給定的一些樣本數(shù)據(jù),通過人為設定的算法,實現(xiàn)計算機獨自進行分析數(shù)據(jù)和挖掘出數(shù)據(jù)中存在的某種聯(lián)系,根據(jù)這種規(guī)律來進行預測。2.3.2機器學習實現(xiàn)步驟機器學習的整個實現(xiàn)步驟包括了對原目標網(wǎng)站信息的獲取、多獲取的數(shù)據(jù)進行預處理、模型學習、對所建立的模型進行評估等步驟,機器學習的實現(xiàn)步驟如圖2-2所示。圖2-2機器學習實現(xiàn)步驟(1)數(shù)據(jù)獲?。簭哪繕司W(wǎng)站上獲取自己需要的數(shù)據(jù),數(shù)據(jù)的準確與真實性關乎到了后面模型訓練時的結果和預測結果的準確性。(2)數(shù)據(jù)預處理(特征工程):數(shù)據(jù)預處理是在機器學習中非常重要的一部分,數(shù)據(jù)準備對于數(shù)據(jù)是否科學是非常重要的。劣質數(shù)據(jù)會對是研究結果造成影響,因此,在將數(shù)據(jù)投入機器學習模型前,要將數(shù)據(jù)進行模型建立前的預處理。對數(shù)據(jù)進行數(shù)據(jù)歸一化與數(shù)據(jù)單位的標準化以及缺失值的填充與數(shù)據(jù)集的切分都非常重要。對數(shù)據(jù)特征值的處理得當還對之后進行機器學習的模型訓練準確起到促進作用。(3)模型選擇:模型的選擇對機器學習的結果起著決定性作用。任何分類算法都有其局限性,事先對問題進行分類然后選擇相對應的模型能夠得到更優(yōu)的結果。(4)模型訓練:對選擇好的模型使用已經(jīng)從數(shù)據(jù)集中劃分的訓練數(shù)據(jù)集進行訓練,利用訓練集的訓練使模型的效果能夠達到預期結果。(5)模型測試:在模型訓練完成后,需要使用劃分好的測試集對已經(jīng)訓練好的模型進行測試,測試的結果可以直觀的反映模型的好壞。(6)結果預測:通過給模型新的特征值,獲取你想得到的結果。2.3.3線性回歸模型線性回歸模型是最經(jīng)典的模型之一,廣泛應用于各個行業(yè)。一元線性回歸預測方法是根據(jù)自變量x和因變量y之間的相關性,建立x和y的線性回歸方程進行預測。因為對影響因變量y的因素有很多,通常不僅僅是單一的一個因素。因此,有必要運用一元量線性回歸分析和預測方法,對影響市場現(xiàn)象的各種因素進行綜合分析。只有當眾多因素中有一個因素對因變量的影響顯著高于其他因素時,才能作為自變量,應用一元變量相關回歸分析的市場預測方法進行預測。對于線性回歸模型來說,一般形式為:式中Y為因變量,X=(X1,X2,X3,···,Xn)為n個影響Y的自變量,β1,β2,···是模型參數(shù)。當n=1是,此時式子中的模型為一元線性回歸模型;n≥2時,此時式子中的模型為多元線性回歸模型。在解決實際問題應用中,觀察n組數(shù)據(jù),在這種情況下,多元線性回歸模型是:變成矩陣形式則為:其中多元線性回歸是經(jīng)典的回歸理論,需要滿足以下條件:(1)X1,X2,XP為確定的變量,并非是隨機變量。(2)各解釋之間不存在嚴格的多重共線性。(3)正態(tài)分布的假定條件為2.3.4隨機森林回歸的基本原理決策樹的基本概念決策樹(decisiontree)是一種常用的機器學習方法。它模擬樹的形狀。樹中每一個分支的葉節(jié)點表示屬性上的一個測試,每個分支表示一個測試輸出,每個葉節(jié)點表示一個類別。運用決策樹擬合的方法就是從樹的根節(jié)點開始,根據(jù)每個不同的葉節(jié)點做出選擇,然后根據(jù)選擇出的葉節(jié)點指向的下一個葉結點繼續(xù)做出選擇,循環(huán)往復,直至最終的葉結點,這就是擬合的答案。一般來說,決策樹包含一個根節(jié)點、若干個內(nèi)部節(jié)點和若干個葉節(jié)點;所述葉節(jié)點對應于所述決策結果,所述其他節(jié)點對應于屬性測試;根據(jù)屬性測試結果,將每個節(jié)點包含的樣本集劃分為子節(jié)點;根節(jié)點包含完整的樣本集。從根節(jié)點到每個葉節(jié)點的路徑對應于決策測試序列。決策樹學習的目的是生成一棵具有較強泛化能力和處理能力的決策樹REF_Ref27519\r\h[13]。決策樹的生成是一個遞歸過程。在決策樹的基本算法中,有三種情況會導致遞歸返回:(1)當前節(jié)點中包含的所有樣本都屬于同一類別,不需要分割(2)當前屬性集為空,或者所有樣本在所有屬性上的值都相同,因此不能分割(3)當前節(jié)點中包含的樣本集為空,無法分割。隨機森林的概念隨機森林這種分類算法是由LeoBreiman在2001年提出的,該分類算法利用自助法(bootstrap)重采樣技術,從原始數(shù)據(jù)集中先取出n個樣本再將n個樣本放回數(shù)據(jù)集,一致重復此步驟,直到生成用來訓練決策樹的新的樣本集,再根據(jù)上述步驟,生成m個決策樹,形成一個隨機森林,新數(shù)據(jù)的分類結果由分類樹投票數(shù)形成的分數(shù)決定。其實質是對決策樹算法的改進和多決策樹的組合,每個決策樹的建立依賴于獨立的樣本。單個樹的分類能力可能很小,但在隨機生成大量決策樹后,測試樣本可以根據(jù)每棵樹的分類結果選擇最有可能的分類。隨機森林大致過程如下:(1)從樣本集中有放回隨機采樣選出m個樣本;(2)在該樣本所具有的所有特征中無差別隨機選擇k個特征,對選出的樣本利用這些特征建立決策樹;(3)重復以上兩步a次,就能形成a個決策樹,隨后隨機森林就會成形;(4)對于新的數(shù)據(jù),經(jīng)過每棵樹的決策后,最終經(jīng)過投票被分到其中一類。經(jīng)過大量研究,發(fā)現(xiàn)了隨機森林模型在實際應用中具有以下優(yōu)點,例如:在數(shù)據(jù)選擇中存在多種特征,每棵樹隨機選擇特征,這對于隨進森林來說增加了抗燥能力并且增強了穩(wěn)定性;每棵樹對于選擇分支的特征值時,都是選擇其中一個樹枝的特征值,在一定程度上減少了過擬合的狀況;該方法策略適合進行并行計算,對于處理大數(shù)據(jù)的問題有很大競爭力。不過,對于隨機森林模型也發(fā)現(xiàn)了以下缺點:隨機森林方法對基礎模型的選擇較為敏感,參數(shù)設置較為復雜;盡管能一定程度上避免過擬合,然而,當隨機森林的預測超出訓練集的范圍時,某些特定的噪聲數(shù)據(jù)仍然會出現(xiàn)過擬合;相比于其他模型,模型訓練和預測速度較慢。決策樹有如下信息增益,增益率和基尼指數(shù)等常見的幾種度量方式:(1)信息增益 信息熵公式定義:其中m為分類個數(shù),Pa為第a個類別的所有樣本數(shù)量占所有樣本的數(shù)量比例。這個公式衡量的是帶分類樣本即整個數(shù)據(jù)集D的熵,分類上的樣本數(shù)越小,分類效果就越好。 由屬性A劃分為子集的熵:A為特征,它包含了N個不一樣的值,S劃分為N個子集S1,S2,信息增益為,分裂點的決定方式為采取具有最新信息增益的特征為分裂點。(2)基尼指數(shù)基尼指數(shù)要求樹是二叉樹,衡量的是數(shù)據(jù)集D的不純度,基尼指數(shù)定義為:通常分裂屬性選擇基尼系數(shù)分割最小的屬性。隨機森林實現(xiàn)過程隨機林中的每棵樹都是一棵二叉樹,其生成遵循自頂向下的遞歸分裂原則,即從根節(jié)點依次劃分訓練集:(1)當訓練集的大小為n時,在每棵樹中隨機選擇n個樣本,作為樹的訓練集。隨機抽樣的原因是訓練樹的分類結果不同。(2)設每個樣本的特征維度為M,有m(m<M)個特征子集,則從這m個特征子集中選擇最優(yōu)的的(3)對于每個樹都不進行剪枝過程,使其最大生長2.4jupyternotebook及其程序庫2.4.1jupyternotebookJupyternotebook是運行在網(wǎng)頁端的用于人機交互的計算的網(wǎng)頁程序。Jupyter可被應用于計算全過程:進行開發(fā)工作、編寫說明文檔、運行編寫的代碼和進行代碼結果的可視化的展示??傊?,JupyterNotebook是在網(wǎng)頁端打開的,可以在網(wǎng)頁頁面中直接進行代碼編寫和運行代碼,代碼的運行結果也會直接顯示在所編寫的代碼塊下面。如在編程過程中需要編寫描述文檔,可在同一個頁面中直接編寫,便于作及時的說明和解釋。Jupyternotebook由web應用程序和文檔組成。在網(wǎng)頁中,可以編寫文檔、導入公式、進行計算交互等其他形式的工具??傊琂upyter網(wǎng)頁應用可以實現(xiàn)很多功能。JupyterNotebook中所有交互計算、文檔、數(shù)學公式、圖片以及其他富媒體形式的輸入和輸出,都是以文檔的形式體現(xiàn)的。這些文檔是保存為后綴名是.ipynb的JSON格式文件,對于版本控制來說非常方便,而且對于其他人來說共享也非常方便。此外,文檔還可以導出為:HTML、LaTeX、PDF等格式。Jupter具有以下特點:(1)編輯代碼時可以進行縮進代碼段、進行tab補全函數(shù)、對代碼語法進行高亮顯示等的功能。(2)可以在瀏覽器上直接運行代碼,并且在代碼下面顯示運行結果。(3)以富媒體格式展示計算結果。(4)使用MarkDown語句對所輸入的代碼進行編寫注釋或者對所輸入的文字進行文檔編輯。(5)可以編寫數(shù)學性說明。2.4.2PandasPandas是一個對所有人都開放源碼與BSD許可的庫函數(shù),提供能對所擁有的數(shù)據(jù)進行處理與分析等的工具。其基礎是Numpy數(shù)組。Pandas可以從各種文件格式如CSV、JSON、SQL等導入數(shù)據(jù)。Pandas可以對各種數(shù)據(jù)進行運算操作,比如并歸、選擇,還有數(shù)據(jù)清理等操作。Pandas的主要數(shù)據(jù)結構是單行數(shù)據(jù)(series)與表格數(shù)據(jù)(DataFrame),這兩種數(shù)據(jù)結構常常用于處理社科、金融領域、生物醫(yī)學領域與工程等領域里的數(shù)據(jù)處理部分。第三章數(shù)據(jù)來源與分析處理在本章將介紹數(shù)據(jù)的來源情況,進而對獲得的數(shù)據(jù)進行處理,為后續(xù)建模進行數(shù)據(jù)的準備工作。 3.1數(shù)據(jù)來源3.1.1數(shù)據(jù)獲取本文中所使用的數(shù)據(jù)均來自網(wǎng)絡爬蟲所爬取的數(shù)據(jù)。Python面向所有用戶免費使用,并且可使用很多計算庫。所以使用Python對鏈家網(wǎng)對北京市所有的租房信息進行爬取。租房信息在鏈家網(wǎng)上的信息如圖3-1所示:圖3-1租房信息在上圖中為房源信息的大致信息,顯示了房屋名稱、房屋所在城區(qū)、房屋所在街道、所在小區(qū)、面積、朝向、房型與價格信息。這些信息是需要爬蟲爬取的,然而這些房源信息對于以后進行數(shù)據(jù)分析與預測時并不足夠,所以需要爬取更具體的信息。此時打開房屋的詳情頁,爬取詳情信息。房屋詳情信息如下圖3-2所示:圖3-2房屋詳情信息如上圖所示中,需要的數(shù)據(jù)不僅是在主頁數(shù)據(jù),還有樓層高度、是否有電梯、是否有燃氣等詳細具體數(shù)據(jù)。此時,需要的數(shù)據(jù)已經(jīng)記錄完成。網(wǎng)絡爬蟲對網(wǎng)頁的數(shù)據(jù)進行爬取信息時,需要對目標URL發(fā)送請求然后獲取相應內(nèi)容、解析獲取的內(nèi)容最后保存數(shù)據(jù)四個部分,流程圖如3-3所示:圖3-3流程圖發(fā)送請求:對鏈家網(wǎng)租房信息的主頁發(fā)送請求,獲取鏈家網(wǎng)租房信息主頁的URL。通過觀察不同城區(qū)的租房頁面發(fā)現(xiàn)網(wǎng)址URL的主體部分沒有改變,不同的城區(qū)與不同的分頁只是在URL主體后加入了城區(qū)名稱與頁碼,URL主題部分為:/zufang/,例如東城租房第一頁的信息則為:/zufang/dongcheng/pg1。擁有主站URL后發(fā)送請求需要使用requests庫來實現(xiàn)。requests庫提供兩種發(fā)送請求的方法:get()和post()。本次實驗使用的是get()方法。在對網(wǎng)頁進行爬取時還需要進行網(wǎng)頁(user-agent)偽裝,防止主站對爬蟲進行識別并禁止爬取數(shù)據(jù)。獲取響應內(nèi)容:對響應的主站內(nèi)容進行獲取,得到主站源碼,方便進行下一步的數(shù)據(jù)解析獲取。解析數(shù)據(jù):對網(wǎng)頁數(shù)據(jù)進行解析。解析方法有正則解析、xpath解析、BeautifulSoup等。在本次實驗中我使用的是xpath解析來獲取我所需要的數(shù)據(jù)。xpath解析主要是使用html標簽進行定位,通過對一個個標簽篩選定位需要的數(shù)據(jù)。網(wǎng)頁數(shù)據(jù)源碼如圖3-4所示:圖3-4網(wǎng)頁數(shù)據(jù)源碼使用xpath來定位各個標簽中我所需要的信息可以方便的獲取信息。在對房源地址爬取時我使用了百度所提供的根據(jù)具體位置信息顯示經(jīng)緯度的接口。獲取房屋位置經(jīng)緯度可以使之后分析數(shù)據(jù)時更加準確。數(shù)據(jù)存儲:將所獲取的信息進行持久化存儲,可以存儲到數(shù)據(jù)庫或者本地文件。本次實驗我將數(shù)據(jù)存儲到了mysql數(shù)據(jù)庫和本地的csv文件。存儲到數(shù)據(jù)庫是持久化的存儲,不用擔心數(shù)據(jù)丟失。存儲到本地可以方便之后對數(shù)據(jù)分析時讀取數(shù)據(jù)。數(shù)據(jù)庫信息如圖3-5所示:圖3-5數(shù)據(jù)庫存儲信息爬蟲主要代碼如圖3-6所示:圖3-6爬蟲主要代碼存入數(shù)據(jù)庫代碼如圖3-7所示:圖3-7存入數(shù)據(jù)庫代碼3.1.2數(shù)據(jù)描述本次的實驗數(shù)據(jù)爬取了鏈家網(wǎng)北京市西城、海淀區(qū)、豐臺區(qū)、朝陽區(qū)、東城區(qū)、石景山區(qū)、順義區(qū)、昌平區(qū)、門頭溝區(qū)、亦莊開發(fā)區(qū)、通州區(qū)、房山區(qū)、大興區(qū)、懷柔區(qū)、平谷區(qū)、密云區(qū)、延慶區(qū)共計18個區(qū)的租房信息。部分抓取信息如圖3-8所示。爬取的數(shù)據(jù)經(jīng)過統(tǒng)計共計45769條,共15個特征數(shù)據(jù)。包括房屋名稱、價格、城區(qū)、街道、房屋面積、經(jīng)度、緯度、房屋所在樓層高低、高度、朝向、該樓層是否有電梯、是否有燃氣、該房間臥室數(shù)量、客廳數(shù)量、廁所數(shù)量。各個特征對應的存儲名稱如表3-1所示。圖3-8部分爬取信息表3-1存儲數(shù)據(jù)屬性中文屬性名稱存儲屬性名稱房屋名稱title價格price城區(qū)chengqv街道jiedao面積area經(jīng)度lng緯度lat樓層高低loucenggaodu樓層高度gaodu朝向chaoxiang是否有電梯dt是否有燃氣rq臥室數(shù)量fangjianshuliang客廳數(shù)量ketingshuliang廁所數(shù)量cesuoshuliang3.2數(shù)據(jù)預處理3.2.1數(shù)據(jù)清洗原始數(shù)據(jù)由于在爬取過程中可能會丟失數(shù)據(jù),或者產(chǎn)生了錯誤的數(shù)據(jù),不進行處理的話會對后邊數(shù)據(jù)分析的結果產(chǎn)生影響。因此,數(shù)據(jù)清洗是對數(shù)據(jù)進行預處理時不可缺少的步驟,其中最重要的就是進行處理缺失值和處理異常值。(1)首先讀取已經(jīng)爬取完成的數(shù)據(jù),本地存儲為csv文件,讀取csv文件里的內(nèi)容,顯示其中存儲的數(shù)據(jù)內(nèi)容。查看數(shù)據(jù)的存儲存儲情況,并觀察數(shù)據(jù)是否有異常值。數(shù)據(jù)讀取代碼以及結果如圖3-9所示:圖3-9數(shù)據(jù)讀取部分觀察讀取爬取后的數(shù)據(jù),從爬取各個特征值的字段列查看的數(shù)據(jù)類型發(fā)現(xiàn),在客廳數(shù)量和廁所數(shù)量這兩列,爬取時應當是設置爬取的純數(shù)字,但從數(shù)據(jù)類型中發(fā)現(xiàn)數(shù)據(jù)字段為Object型,為非純數(shù)字類型??蛷d數(shù)量和廁所數(shù)量這兩列存在錯誤值,在之后進行數(shù)據(jù)清洗時應對這兩列的錯誤數(shù)據(jù)進行處理。(2)在本次實驗中,數(shù)據(jù)清洗我選擇對空缺值或者錯誤值進行填充法,無法填充的數(shù)據(jù)再使用刪除法進行處理。填充法用在缺失率小且屬性重要程度低時,填充包括全局常數(shù)填充、統(tǒng)計方法填充和模型預測填充。全局常數(shù)數(shù)量填充用全局常量填充特征的所有缺失值,也可以將其劃分為不同類別的樣本為均勻填充選擇不同的自定義值。雖然方法操作方便,但由于存在偏差,不太可靠。問題在于原始數(shù)據(jù)的分布。統(tǒng)計方法填充的原理與全局常數(shù)填充的原理相似,但不同之處在于統(tǒng)計平方該方法使用具有統(tǒng)計意義的值來填充,例如,根據(jù)所有樣本上每個一維特征的平均值模型預測填充是基于機器學習模型的,它使用的是無缺失值或缺失值較少的數(shù)據(jù)特征用于預測和填充缺失的特征。模型預測填充優(yōu)于全局常數(shù)填充和統(tǒng)計方法填充復雜,但填充效果更好。刪除法用在缺少樣本的大部分特征,可以直接刪除樣本。如果缺少大部分功能,該功能可以提供效率較低的信息,可以直接刪除。盡管樣本被刪除或特征被刪除,處理缺失值是最簡單、最直接的方法,但留下的樣本不能完全反映原始數(shù)據(jù)的分布,學習結果與實際情況不符。該方法只適用于訓練集的數(shù)據(jù)很多,并且數(shù)據(jù)的特征值很多的情況。數(shù)據(jù)清洗過程如圖3-10所示:圖3-10數(shù)據(jù)清洗過程3.2.2類別型特征處理在對模型進行建模時,數(shù)字化的數(shù)據(jù)對模型訓練和模型預測時都占有優(yōu)勢,而文字化的特征值在數(shù)據(jù)建模時卻非常麻煩,所以對數(shù)據(jù)進行量化是必不可少的一步。也就是進行類別型特征處理。處理類別特征時有以下這些方法:(1)序號編碼:通過編碼的目的是通過數(shù)字和值的一對一映射來實現(xiàn)的。但適合處理規(guī)模關系的特點,如教育程度由低到高只對應數(shù)量由小到大,而不改變特點。如果用它來處理沒有任何大小關系的特征,比如出生城市,所有城市都是同一級別的,但是在轉換成數(shù)值后,莫名其妙地增加了一層大小關系,這對于數(shù)值尺寸敏感模型(如SVM支持向量機)是致命的,因為它會對函數(shù)計算結果造成影響。(2)獨特編碼:將原始特征變量轉化為原始特征值分類的多維變量,用0/1來量化每個維度的是/否和是/否。一般來說,將每個值作為一個新特征。在一行數(shù)據(jù)中,如果得到這個值,它將是1。如果你沒有得到這個值,它將是0。優(yōu)點是:1.沒有數(shù)值大小關系,支持向量機也可以自由使用。2.有效降低了過度擬合的風險。而相應的缺點則為:1.如果值太多,很可能會分割出大量的新特性,導致維數(shù)過高,難以處理。2.非常不適合樹模型。如果有許多特征,并且這些值的數(shù)量很小,則由于樹模型的參數(shù)配置,某些特征變量可能無法向下分裂。(3)平均數(shù)編碼:平均數(shù)編碼主要用于處理高基數(shù)類別型特征在本次實驗中,我使用獨熱編碼,可以量化的特征值有房屋是否有電梯,是否有燃氣以及對所在城區(qū)。量化過程如圖3-11所示:圖3-11量化數(shù)據(jù)過程量化后的數(shù)據(jù)如圖3-12所示:圖3-12量化后數(shù)據(jù)3.2.3數(shù)據(jù)標準化因為房屋租價受到多方位因素的影響,各個特征具有不同的量級,直接使用原始數(shù)據(jù)對模型進行預測,可能會影響模型的準確性。為了消除特征之間單位和數(shù)量級的差異,有必要對數(shù)據(jù)進行標準化。標準化的實質是按一定比例對數(shù)據(jù)進行縮放,使數(shù)據(jù)處于特定的區(qū)間。標準化過程如圖3-13所示:圖3-13數(shù)據(jù)標準化過程3.3數(shù)據(jù)分析3.3.1對房屋價格進行分析首先,對北京市出租房屋價格進行分析,對房屋的面積和價格進行散點圖的繪制,將房屋面積固定為橫軸,將房屋出租價格設定為縱軸,觀察樣本數(shù)量與分布,如圖3-14所示。通過觀察散點圖發(fā)現(xiàn),大部分出租房屋面積都集中在50-150平方米,價格分布集中在10000元左右。圖3-14面積/價格散點圖對房屋城區(qū)進行分組統(tǒng)計,對數(shù)據(jù)中的城區(qū)進行分組,分組詳情如下圖3-15所示:圖3-15房屋城區(qū)分組在對房屋進行分組統(tǒng)計后,按城區(qū)分組計算每個城區(qū)房屋出租的平均價格和平均面積,計算出每個城區(qū)的房屋出租每平米均價,并繪制柱狀圖方便進行分析。城區(qū)房屋平均價格和平均面積柱狀圖如圖3-16所示,城區(qū)房屋每平米均價如圖3-17所示:圖3-16北京各城區(qū)房屋均價和房屋面積圖3-17北京各城區(qū)每平米租房價格通過觀察柱狀圖發(fā)現(xiàn),在北京各城區(qū)中,朝陽、海淀、西城的房租價格在北京各城區(qū)中位列前三,朝陽的平均房屋出租價格最貴,延慶的房屋出租價格最低;密云、延慶、朝陽的房屋出租面積排名前三,密云房屋平均面積最大;西城、東城、海淀房屋每平米出租均價在各城區(qū)中排名前三,西城房屋每平米出租均價最高。如果資金預算不高,可以選擇延慶的房屋進行租住;喜歡房屋面積大的可以選擇密云的房屋;如果資金預算不足,但又想租到房屋面積稍大的,可以選擇延慶的房屋進行租住。3.3.2房屋信息分析對房屋本身的信息進行分析,對爬取的房屋信息的臥室數(shù)量,客廳數(shù)量,廁所數(shù)量進行分組統(tǒng)計,統(tǒng)計臥室、客廳、廁所各個數(shù)量的統(tǒng)計,統(tǒng)計圖如3-18所示:圖3-18臥室數(shù)量統(tǒng)計圖3-18廁所數(shù)量統(tǒng)計圖3-18客廳數(shù)量統(tǒng)計經(jīng)過統(tǒng)計,結果如圖。在出租的房屋中臥室數(shù)量為2個的出租房屋最多,廁所數(shù)量為1個的出租房屋最多,客廳數(shù)量為1個的出租房屋最多。將房屋信息進行經(jīng)緯度的散點圖的統(tǒng)計,發(fā)現(xiàn)大多數(shù)房源信息集中在經(jīng)度115-117.5,緯度集中在40左右。將房屋價格和經(jīng)緯度繪制成熱力圖,并將數(shù)據(jù)顯示在北京的地圖上,得到如圖3-19:圖3-19房租價格熱力圖通過熱力圖和經(jīng)緯度的散點圖發(fā)現(xiàn),北京的房屋出租大多集中在五環(huán)以內(nèi),大多集中在朝陽、海淀、西城區(qū)。越靠近城區(qū)的房屋出租價格越貴。第四章房租價格模型建立與預測4.1訓練集與測試集劃分在訓練模型之前,通常將已有的數(shù)據(jù)分為測試集和訓練集。訓練集用來建立并訓練模型調(diào)整參數(shù),擬合曲線的參數(shù)則由訓練集的數(shù)據(jù)進行確定。測試集的目的只是為了測試已經(jīng)訓練好的模型的精確度,但訓練集并不能保證模型的正確性。因為當模型被訓練時,使用對現(xiàn)有訓練集里的數(shù)據(jù)進行修正可能會出現(xiàn)過擬合的狀況REF_Ref727\r\h[14]。在對數(shù)據(jù)集進行訓練集與測試集劃分的時候,通常用留出法、交叉驗證法、自助法等方法,具體說明如下:(1)留出法:將數(shù)據(jù)集劃分為兩個互斥的集合,一個集合作為對模型訓練的訓練集,另一個集合作為模型的測試集。在訓練集上訓練模型后,使用測試集對模型進行評估。在劃分中,訓練集和測試集的劃分應盡量保持數(shù)據(jù)分布的一致性,避免數(shù)據(jù)劃分的偏差影響結果。留出法的另一個問題是,測試集與訓練集劃分的比例的確定。如果訓練集占的比例過高,可能導致導致訓練出的模型不準確。相反也會導致訓練模型的誤差。由于沒有具體的解決辦法,所以常見的做法是將2/3-4/5的樣本用作訓練集。(2)交叉驗證法:將數(shù)據(jù)集分成相似大小的不相交的子集。盡管它們的分布是不同的,但為了使它們與數(shù)據(jù)集盡可能一致,于是對從樣本中獲得的數(shù)據(jù)進行了分層,這是在指定樣本獲取子集經(jīng)過分層抽樣的原因。此后,當將m-1的組合子集用作訓練集,其余部分用作測試集時,這樣,就可以獲得訓練集或測試集,進行了m次訓練和測試,最后返回了m項測試結果的平均值。通常K取10,則為10折交叉驗證。交叉驗證的優(yōu)點是從有限的數(shù)據(jù)中挖掘出盡可能多的信息,從多個角度學習現(xiàn)有的有限數(shù)據(jù),避免局部極值。但對于擁有較大數(shù)據(jù)的數(shù)據(jù)集來說,訓練模型的花費時間也會變長。(3)自助法:給給定N個樣本的數(shù)據(jù)集E,對其進行采樣以生成數(shù)據(jù)集E',并且每次將隨機選擇E的樣本并將其復制到E'。在經(jīng)過n次處理之后,能夠從中得到包含n個樣本的數(shù)據(jù)集E′。當數(shù)據(jù)集較小且難以有效劃分訓練集/測試集時,自助方法更為有效。然而,bootstrap方法生成的測試集改變了初始數(shù)據(jù)集的分布,從而導致錯誤。所以,對于數(shù)據(jù)較大的數(shù)據(jù)集來說,采用保留法和交叉驗證法是較為優(yōu)秀的選擇。在本次實驗中,數(shù)據(jù)集共4萬多條,對于龐大的數(shù)據(jù)集來說我選擇留出法來劃分訓練集與測試集。而8-2分數(shù)據(jù)集是最科學的劃分訓練集與測試集的方法。在爬取數(shù)據(jù)時,數(shù)據(jù)的排序是根據(jù)城區(qū)來排序的,如果順序取8成數(shù)據(jù)集進行模型訓練的話,可能由于北京各城區(qū)房價較大的差距導致模型訓練的不準確性。所以在本次實驗中,我從樣本集中隨機選取8成訓練集。訓練集與測試集樣本如下圖4-1所示:圖4-1部分訓練集與部分測試集4.2數(shù)據(jù)相關性分析在對各個特征值與房屋租賃價格的關系進行進一步探究之前,需要對數(shù)值型的數(shù)據(jù)進行相關性分析,可分析的特征值有房屋租賃面積、房屋所在經(jīng)度、房屋所在緯度、房屋樓層高度、房屋臥室數(shù)量、客廳數(shù)量、廁所數(shù)量。分析結果如圖4-2所示,從圖中的分析結果中不難發(fā)現(xiàn)房屋出租價格與房屋面積最為相關,其次與廁所數(shù)量、房屋臥室數(shù)量、客廳數(shù)量也較為相關。然而與樓層高度是否有電梯等信息因素無關。故建立模型時應選擇與房租價格相關的特征值進行模型的建立。圖4-2房屋租賃價格相關性4.3模型的建立與預測4.3.1線性回歸模型對影響房租價格最明顯的因素:面積進行二維線性回歸模型的建立。從訓練集中篩選出面積的數(shù)據(jù)集,對以房屋出租價格為因變量,房屋面積為自變量的模型建立,并使用測試集對所訓練的模型進行測試分數(shù)。最后進行對特定房屋面積的房租進行預測。二維線性回歸模型擬合曲線如圖4-3所示,預測價格如圖4-4所示:圖4-3二維線性回歸模型擬合曲線圖4-4線性回歸模型價格預測對多維線性回歸模型進行建立,挑選已經(jīng)數(shù)字化的特征值,進行模型的建立,并進行房租價格的預測。預測結果如下圖4-5所示:圖4-5預測結果通過觀察模型得分,以及預測結果,可以看出更多維的線性回歸模型,即多個特征值對房租價格的限定更高,得到的結果也更準確。4.3.2隨機森林回歸模型首先使用單個特征值:面積,對房屋出租價格模型進行建立,模型建立分數(shù)如圖4-6所示,并使用建立的模型進行預測,預測結果如圖4-7所示:圖4-6隨機森林回歸模型圖4-7預測價格然后使用已經(jīng)數(shù)值化的特征值進行模型的建立,并對房屋的租價進行預測。模型建立的過程如圖4-8所示,預測結果如圖4-9所示:圖4-8模型建立圖4-9房租價格預測結果通過對模型進行測試的分數(shù),以及預測結果來看,無論是單個特征值,還是多個特征值,隨機森林回歸模型都要比線性回歸模型更加優(yōu)化,并且預測結果更加準確。第五章總結與展望隨著互聯(lián)網(wǎng)的飛速發(fā)展,大數(shù)據(jù)已經(jīng)成為一個熱門話題和趨勢。而對于房屋租住一直是人們所熱

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論