基于天氣數(shù)據(jù)集的XGBoost分類預測_第1頁
基于天氣數(shù)據(jù)集的XGBoost分類預測_第2頁
基于天氣數(shù)據(jù)集的XGBoost分類預測_第3頁
基于天氣數(shù)據(jù)集的XGBoost分類預測_第4頁
基于天氣數(shù)據(jù)集的XGBoost分類預測_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

湖南商務職業(yè)技術學院畢業(yè)設計

目錄

1引言...................................................................................................................1

1.1XGBoost的介紹與應用.........................................................................1

1.2原理介紹................................................................................................1

1.3相關流程................................................................................................2

2開發(fā)環(huán)境和工具...............................................................................................3

2.1使用平臺................................................................................................3

2.1.1ModelWhale..................................................................................3

2.1.2Python簡介..................................................................................3

2.1.3Python第三方庫簡介..................................................................4

3數(shù)據(jù)采集與處理...............................................................................................4

3.1數(shù)據(jù)加載................................................................................................4

3.2可視化描述............................................................................................8

3.3特征向量編碼........................................................................................9

4模型構建與評估優(yōu)化.....................................................................................10

4.1模型的構建..........................................................................................10

4.1.1定義與訓練模型.......................................................................10

4.1.2模型評估...................................................................................11

4.2特征選擇..............................................................................................12

4.3網(wǎng)格調參法..........................................................................................13

5總結.................................................................................................................14

參考資料.............................................................................................................16

I

湖南商務職業(yè)技術學院畢業(yè)設計

基于天氣數(shù)據(jù)集的XGBoost分類預測

1引言

1.1XGBoost的介紹與應用

XGBoost是2016年由華盛頓大學陳天奇老師帶領開發(fā)的一個可擴展機器

學習系統(tǒng)。嚴格意義上講XGBoost并不是一種模型,而是一個可供用戶輕松解

決分類、回歸或排序問題的軟件包。它內部實現(xiàn)了梯度提升樹(GBDT)模型,并

對模型中的算法進行了諸多優(yōu)化,在取得高精度的同時又保持了極快的速度,

在一段時間內成為了國內外數(shù)據(jù)挖掘、機器學習領域中的大規(guī)模殺傷性武器。

更重要的是,XGBoost在系統(tǒng)優(yōu)化和機器學習原理方面都進行了深入的考

慮。毫不夸張的講,XGBoost提供的可擴展性,可移植性與準確性推動了機器

學習計算限制的上限,該系統(tǒng)在單臺機器上運行速度比當時流行解決方案快十

倍以上,甚至在分布式系統(tǒng)中可以處理十億級的數(shù)據(jù)。

XGBoost在機器學習與數(shù)據(jù)挖掘領域有著極為廣泛的應用。據(jù)統(tǒng)計在2015

年Kaggle平臺上29個獲獎方案中,17只隊伍使用了XGBoost;在2015年

KDD-Cup中,前十名的隊伍均使用了XGBoost,且集成其他模型比不上調節(jié)

XGBoost的參數(shù)所帶來的提升。這些實實在在的例子都表明,XGBoost在各種

問題上都可以取得非常好的效果。

同時,XGBoost還被成功應用在工業(yè)界與學術界的各種問題中。例如商店

銷售額預測、高能物理事件分類、web文本分類;用戶行為預測、運動檢測、廣

告點擊率預測、惡意軟件分類、災害風險預測、在線課程退學率預測。雖然領

域相關的數(shù)據(jù)分析和特性工程在這些解決方案中也發(fā)揮了重要作用,但學習者

與實踐者對XGBoost的一致選擇表明了這一軟件包的影響力與重要性。

1.2原理介紹

XGBoost底層實現(xiàn)了GBDT算法,并對GBDT算法做了一系列優(yōu)化:

1、對目標函數(shù)進行了泰勒展示的二階展開,可以更加高效擬合誤差。

2、提出了一種估計分裂點的算法加速CART樹的構建過程,同時可以處理

稀疏數(shù)據(jù)。

1

湖南商務職業(yè)技術學院畢業(yè)設計

3、提出了一種樹的并行策略加速迭代。

4、為模型的分布式算法進行了底層優(yōu)化。

XGBoost是基于CART樹的集成模型,它的思想是串聯(lián)多個決策樹模型共

同進行決策。它有兩個特點:

(1)CART樹,是一顆二叉樹;

(2)回歸樹,最后擬合結果是連續(xù)值。

XGBoost模型可以表示為以下形式,我們約定ft(x)表示前t顆樹的和,ht(x)

表示第t顆決策樹,模型定義如下:

ft(x)=∑t=1Tht(x)

由于模型遞歸生成,第t步的模型由第t?1步的模型形成,可以寫成:

ft(x)=ft?1(x)+ht(x)

每次需要加上的樹ht(x)是之前樹求和的誤差:

rt,i=yi?fm?1(xi)

我們每一步只要擬合一顆輸出為rt,i的CART樹加到ft?1(x)就可以了。

1.3相關流程

1、了解XGBoost的參數(shù)與相關知識

2、掌握XGBoost的Python調用并將其運用到天氣數(shù)據(jù)集預測

Part1基于天氣數(shù)據(jù)集的XGBoost分類實踐

Step1:庫函數(shù)導入

Step2:數(shù)據(jù)讀取/載入

Step3:數(shù)據(jù)信息簡單查看

Step4:可視化描述

Step5:對離散變量進行編碼

Step6:利用XGBoost進行訓練與預測

Step7:利用XGBoost進行特征選擇

2

湖南商務職業(yè)技術學院畢業(yè)設計

Step8:通過調整參數(shù)獲得更好的效果

2開發(fā)環(huán)境和工具

2.1使用平臺

2.1.1ModelWhale

ModelWhale,和鯨科技旗下數(shù)據(jù)科學平臺。將數(shù)據(jù)管理、建模分析、模型

訓練管理、算力資源管理、任務管理等功能深度整合,支持Python和R語言,

通過逐級開放的數(shù)據(jù)基礎設施、JupyterNotebook交互式和anvas拖拽式兩種分

析界面、即開即用的云端分析環(huán)境,為科研工作者及團隊解決數(shù)據(jù)安全應用、

底層工程繁復、研究成果流轉復現(xiàn)困難等問題,使數(shù)據(jù)驅動的研究更便捷高效。

簡化工程復雜度以契合科研工作者工程力的產品設計理念,為用戶帶來流

暢的使用體驗,使ModelWhale在科研領域得到廣泛關注、高度評價。目前已

有眾多頂尖科研機構30.000+用戶通過ModeWhale進行數(shù)十萬次科研分析,

典型應用場景涵蓋數(shù)據(jù)分析、開放協(xié)作、科研管理、教學管理、數(shù)據(jù)算力等資

源管理。

圖2-1ModelWhale平臺展示圖

2.1.2Python簡介

Python是一門優(yōu)雅而健壯的編程語言,它繼承了傳統(tǒng)編譯語言的強大性和

通用性,同時也借鑒了腳本語言和解釋語言的易用性。

Python是完全面向對象的編程語言,函數(shù)、模塊、數(shù)字、字符串等內置類

3

湖南商務職業(yè)技術學院畢業(yè)設計

型都是對象。它的類支持多態(tài)、操作符重載、和多重繼承等高級OOP概念,并

且Python特有的簡潔的語法和類型使得OOP十分易于使用。當然OOP只是

Python的一個選擇而已,就像C++一樣,Python既支持面向對象編程,也支持

面向過程編程的模式。

2.1.3Python第三方庫簡介

在實踐的最開始,我們首先需要導入一些基礎的函數(shù)庫包括:numpy,pandas,

matplotlib和seaborn繪圖。

Numpy:是Python進行科學計算的基礎軟件包。

Pandas:是一種快速,強大,靈活且易于使用的開源數(shù)據(jù)分析和處理工具。

Matplotlib:繪圖庫,主要是偏向于二維繪圖包括折線圖、條形圖、扇形圖、

散點圖、直方圖等等

Seaborn:是基于Python且非常受歡迎的圖形可視化庫,在Matplotlib的

基礎上,進行了更高級的封裝,使得作圖更加方便快捷。

Keras:是一個用Python編寫的高級神經網(wǎng)絡API,它能夠以

TensorFlow,CNTK,或者Theano作為后端運行。

3數(shù)據(jù)采集與處理

3.1數(shù)據(jù)加載

圖3-1數(shù)據(jù)集部分展示圖

數(shù)據(jù)集是直接從網(wǎng)站上下載到本地的,如圖3-1所示。地址為:

/DSW/7XGBoost/train.c,其中包括

4

湖南商務職業(yè)技術學院畢業(yè)設計

日期(Date)、地區(qū)(Location)、最低溫度(MinTemp)、最高溫度

(MaxTemp)、降雨量(Rainfall)等字段。其中測試集大小為20%,訓練集為80%。

Step1:函數(shù)庫導入

圖3-2導入庫代碼圖

本次我們選擇天氣數(shù)據(jù)集進行方法的嘗試訓練,現(xiàn)在有一些由氣象站提供

的每日降雨數(shù)據(jù),我們需要根據(jù)歷史降雨數(shù)據(jù)來預測明天會下雨的概率。樣例

涉及到的測試集數(shù)據(jù)test.csv與train.csv的格式完全相同,但其RainTomorrow

未給出,為預測變量。

數(shù)據(jù)的各個特征描述如下:

特征名稱意義取值范圍

Date日期字符串

Location氣象站的地址字符串

MinTemp最低溫度實數(shù)

MaxTemp最高溫度實數(shù)

Rainfall降雨量實數(shù)

Evaporation蒸發(fā)量實數(shù)

Sunshine光照時間實數(shù)

WindGustDir最強的風的方向字符串

5

湖南商務職業(yè)技術學院畢業(yè)設計

特征名稱意義取值范圍

WindGustSpeed最強的風的速度實數(shù)

WindDir9am早上9點的風向字符串

WindDir3pm下午3點的風向字符串

WindSpeed9am早上9點的風速實數(shù)

WindSpeed3pm下午3點的風速實數(shù)

Humidity9am早上9點的濕度實數(shù)

Humidity3pm下午3點的濕度實數(shù)

Pressure9am早上9點的大氣壓實數(shù)

Pressure3pm早上3點的大氣壓實數(shù)

Cloud9am早上9點的云指數(shù)實數(shù)

Cloud3pm早上3點的云指數(shù)實數(shù)

Temp9am早上9點的溫度實數(shù)

Temp3pm早上3點的溫度實數(shù)

RainToday今天是否下雨No,Yes

RainTomorrow明天是否下雨No,Yes

表3-1數(shù)據(jù)的特征描述

Step2:數(shù)據(jù)讀取/載入

這里我們利用Pandas自帶的read_csv函數(shù)讀取并轉化為DataFrame格式

data=pd.read_csv('train.csv')

Step3:數(shù)據(jù)信息簡單查看

6

湖南商務職業(yè)技術學院畢業(yè)設計

這里利用.info()查看數(shù)據(jù)的整體信息()

圖3-3數(shù)據(jù)整體信息查看結果

然后我們進行簡單的數(shù)據(jù)查看,是利用的.head()頭部.tail()尾部進行簡單

查看。

圖3-4簡單數(shù)據(jù)查看

這里我們發(fā)現(xiàn)數(shù)據(jù)集中存在NaN,一般的我們認為NaN在數(shù)據(jù)集中代表了

缺失值,可能是數(shù)據(jù)采集或處理時產生的一種錯誤。這里我們采用-1將缺失值

進行填補,還有其他例如“中位數(shù)填補、平均數(shù)填補”的缺失值處理方法

7

湖南商務職業(yè)技術學院畢業(yè)設計

圖3-5采用-1將缺失值進行填補展示圖

利用value_counts函數(shù)查看訓練集標簽的數(shù)量

圖3-6訓練集標簽數(shù)量查看圖

從查看圖中我們發(fā)現(xiàn)數(shù)據(jù)集中的負樣本數(shù)量遠大于正樣本數(shù)量,這種常見

的問題叫做“數(shù)據(jù)不平衡”問題,在某些情況下需要進行一些特殊處理。

3.2可視化描述

圖3-7數(shù)據(jù)可視化代碼

然后我們進行可視化描述步驟。為了方便,我們先紀錄數(shù)字特征與非數(shù)字

特征,再選取三個特征與標簽組合的散點進行可視化。

8

湖南商務職業(yè)技術學院畢業(yè)設計

圖3-8可視化結果展示

從上圖可以發(fā)現(xiàn),在2D情況下不同的特征組合對于第二天下雨與不下雨的

散點分布,以及大概的區(qū)分能力。相對的Sunshine與其他特征的組合更具有區(qū)

分能力。

利用箱型圖我們也可以得到不同類別在不同特征上的分布差異情況。我們

可以發(fā)現(xiàn)Sunshine,Humidity3pm,Cloud9am,Cloud3pm的區(qū)分能力較強。

3.3特征向量編碼

Step5:對離散變量進行編碼

由于XGBoost無法處理字符串類型的數(shù)據(jù),我們需要一些方法講字符串數(shù)

據(jù)轉化為數(shù)據(jù)。一種最簡單的方法是把所有的相同類別的特征編碼成同一個值,

例如女=0,男=1,狗狗=2,所以最后編碼的特征值是在特征數(shù)量[0,特征數(shù)量?1]

之間的整數(shù)。除此之外,還有獨熱編碼、求和編碼、留一法編碼等等方法可以

獲得更好的效果。

9

湖南商務職業(yè)技術學院畢業(yè)設計

圖3-9代碼展示效果

圖3-10相同類別的特征編碼

4模型構建與評估優(yōu)化

4.1模型的構建

4.1.1定義與訓練模型

我們利用XGBoost進行訓練與預測,為了正確評估模型性能,將數(shù)據(jù)劃分

為訓練集和測試集,并在訓練集上訓練模型,在測試集上驗證模型性能。

其中我們選擇其類別為0和1的樣本(不包括類別為2的樣本),然后將測試

集大小為20%,訓練集為80%進行劃分。

首先查看標簽數(shù)據(jù),將替換Yes為1,No為0,然后打印修改后的結果。

10

湖南商務職業(yè)技術學院畢業(yè)設計

圖4-1打印修改后的結果圖

然后導入XGBoost模型,定義XGBoost模型,接著在訓練集上訓練

XGBoost模型。

圖4-2模型定義與訓練代碼展示圖

4.1.2模型評估

接著在訓練集和測試集上分別利用訓練好的模型進行預測,用accuracy(預

測正確的樣本數(shù)目占總預測樣本數(shù)目的比例)評估模型效果,然后查看混淆矩

陣(預測值和真實值的各類情況統(tǒng)計矩陣),再利用熱力圖對結果進行可視化.

圖4-3模型評估代碼展示

11

湖南商務職業(yè)技術學院畢業(yè)設計

圖4-4輸出結果展示圖

圖4-5熱力圖可視化

根據(jù)結果我們可以發(fā)現(xiàn)共有15759+2306個樣本預測正確,2470+794個樣

本預測錯誤。

4.2特征選擇

Step7:利用XGBoost進行特征選擇

圖4-6特征的重要度圖

12

湖南商務職業(yè)技術學院畢業(yè)設計

XGBoost的特征選擇屬于特征選擇中的嵌入式方法,在XGboost中可以用

屬性feature_importances_去查看特征的重要度。

從圖中我們可以發(fā)現(xiàn)下午3點的濕度與今天是否下雨是決定第二天是否下

雨最重要的因素。

4.3網(wǎng)格調參法

調節(jié)模型參數(shù)的方法有貪心算法、網(wǎng)格調參、貝葉斯調參等。這里我們采用

網(wǎng)格調參,它的基本思想是窮舉搜索:在所有候選的參數(shù)選擇中,通過循環(huán)遍

歷,嘗試每一種可能性,表現(xiàn)最好的參數(shù)就是最終的結果。

首先從sklearn庫中導入網(wǎng)格調參函數(shù),然后進行網(wǎng)格搜索,可以得出網(wǎng)格

搜索后的最好參數(shù)為圖4-7所展示的。

圖4-7網(wǎng)格搜索代碼

圖4-8最佳參數(shù)展示代碼

13

湖南商務職業(yè)技術學院畢業(yè)設計

圖4-9得出的最好參數(shù)展示圖

然后再一次進行模型訓練和評估,對結果進行可視化。

圖4-10優(yōu)化參數(shù)后可視化結果

根據(jù)可視化結果可以知道,原本有2470+790個錯誤,現(xiàn)在有2112+939

個錯誤,帶來了明顯的正確率提升。

5總結

XGBoost的主要優(yōu)點:

簡單易用。相對其他機器學習庫,用戶可以輕松使用XGBoost并獲得相當

不錯的效果。

高效可擴展。在處理大規(guī)模數(shù)據(jù)集時速度快效果好,對內存等硬件資源要

求不高。

魯棒性強。相對于深度學習模型不需要精細調參便能取得接近的效果。

XGBoost內部實現(xiàn)提升樹模型,可以自動處理缺失值。

14

湖南商務職業(yè)技術學院畢業(yè)設計

XGBoost主要缺點:

相對于深度學習模型無法對時空位置建模,不能很好地捕獲圖像、語音、文本

等高維數(shù)據(jù)。

X-gboost是將多個樹模型(若分類器)集成一個強分類器??捎糜诜诸悊栴},

也可用于預測值問題,只是不同問題使用的樹模型不一樣:

分類問題:

溫馨提示

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

評論

0/150

提交評論