用Python 開(kāi)發(fā)您的第一個(gè) XGBoost 模型
XGBoost是梯度提升決策樹(shù)的一種實(shí)現(xiàn),專為速度和性能而設(shè)計(jì),是流行的機(jī)器學(xué)習(xí)競(jìng)賽的算法。
之前介紹了
機(jī)器學(xué)習(xí)的 XGBoost 算法簡(jiǎn)介
XGBoost feature importance特征重要性-實(shí)戰(zhàn)印第安人糖尿病數(shù)據(jù)集
在這篇文章中,您將了解如何在 Python 中安裝和創(chuàng)建您的第一個(gè) XGBoost 模型。
看完這篇文章你會(huì)知道:
如何在您的系統(tǒng)上安裝 XGBoost 以在 Python 中使用。
如何準(zhǔn)備數(shù)據(jù)并訓(xùn)練您的第一個(gè) XGBoost 模型。
如何使用 XGBoost 模型進(jìn)行預(yù)測(cè)。
如何使用 scikit-learn 在 Python 中開(kāi)發(fā)您的第一個(gè) XGBoost 模型

教程概述
本教程分為以下 6 個(gè)部分:
按裝 XGBoost 的 Python包。
問(wèn)題定義和下載數(shù)據(jù)集。
加載和準(zhǔn)備數(shù)據(jù)。
訓(xùn)練 XGBoost 模型。
預(yù)測(cè)并評(píng)估模型。
將所有內(nèi)容聯(lián)系在一起并運(yùn)行示例。
1. 安裝 XGBoost 以在 Python 中使用
假設(shè)您有一個(gè)可用的 SciPy 環(huán)境,可以使用 pip 輕松安裝 XGBoost。
例如:
要更新您的 XGBoost 安裝,您可以鍵入:
如果您無(wú)法使用 pip 或想要從 GitHub 運(yùn)行最新代碼,則另一種安裝 XGBoost 的方法要求您克隆 XGBoost 項(xiàng)目并執(zhí)行手動(dòng)構(gòu)建和安裝。
作為參考,您可以查看XGBoost Python API 參考。
您可以在XGBoost 安裝指南 中了解有關(guān)如何為不同平臺(tái)安裝 XGBoost 的更多信息。有關(guān)安裝 XGBoost for Python 的最新說(shuō)明,請(qǐng)參閱XGBoost Python 包。
2. 問(wèn)題描述:預(yù)測(cè)糖尿病的發(fā)作
在本教程中,我們將使用皮馬印第安人糖尿病發(fā)病數(shù)據(jù)集。
該數(shù)據(jù)集由 8 個(gè)描述患者醫(yī)療細(xì)節(jié)的輸入變量和一個(gè)用于指示患者是否會(huì)在 5 年內(nèi)患上糖尿病的輸出變量組成。
您可以在 UCI 機(jī)器學(xué)習(xí)存儲(chǔ)庫(kù)網(wǎng)站上了解有關(guān)此數(shù)據(jù)集的更多信息。
這是第一個(gè) XGBoost 模型的一個(gè)很好的數(shù)據(jù)集,因?yàn)樗休斎胱兞慷际菙?shù)字,并且問(wèn)題是一個(gè)簡(jiǎn)單的二元分類(lèi)問(wèn)題。對(duì)于 XGBoost 算法來(lái)說(shuō),它不一定是一個(gè)好問(wèn)題,因?yàn)樗且粋€(gè)相對(duì)較小的數(shù)據(jù)集,并且是一個(gè)易于建模的問(wèn)題。
下載此數(shù)據(jù)集并將其放入您當(dāng)前的工作目錄,文件名為“?pima-indians-diabetes.csv?”(更新:從此處下載)。
3. 加載和準(zhǔn)備數(shù)據(jù)
在本節(jié)中,我們將從文件中加載數(shù)據(jù)并準(zhǔn)備用于訓(xùn)練和評(píng)估 XGBoost 模型。
我們將首先導(dǎo)入我們打算在本教程中使用的類(lèi)和函數(shù)。
接下來(lái),我們可以使用 NumPy 函數(shù)loadtext()將 CSV 文件加載為 NumPy 數(shù)組。
我們必須將數(shù)據(jù)集的列(屬性或特征)分成輸入模式(X)和輸出模式(Y)。我們可以通過(guò)以 NumPy 數(shù)組格式指定列索引來(lái)輕松完成此操作。
最后,我們必須將 X 和 Y 數(shù)據(jù)拆分為訓(xùn)練和測(cè)試數(shù)據(jù)集。訓(xùn)練集將用于準(zhǔn)備 XGBoost 模型,測(cè)試集將用于進(jìn)行新的預(yù)測(cè),我們可以從中評(píng)估模型的性能。
為此,我們將使用scikit-learn 庫(kù)中的train_test_split()函數(shù)劃分?jǐn)?shù)據(jù)為訓(xùn)練集和測(cè)試集。我們還為隨機(jī)數(shù)生成器指定了一個(gè)種子,這樣每次執(zhí)行這個(gè)例子時(shí)我們總是得到相同的數(shù)據(jù)分割。
我們現(xiàn)在準(zhǔn)備訓(xùn)練我們的模型。
4. 訓(xùn)練 XGBoost 模型
XGBoost 提供了一個(gè)包裝類(lèi),允許將模型視為 scikit-learn 框架中的分類(lèi)器或回歸器。
這意味著我們可以將完整的 scikit-learn 庫(kù)與 XGBoost 模型一起使用。
用于分類(lèi)的 XGBoost 模型稱為XGBClassifier。我們可以創(chuàng)建并將其擬合到我們的訓(xùn)練數(shù)據(jù)集。使用 scikit-learn API 和model.fit()函數(shù)擬合或訓(xùn)練模型。
模型訓(xùn)練和人腦訓(xùn)練有很多相似原理,機(jī)器不是天才,機(jī)器也是需要喂養(yǎng)數(shù)據(jù)學(xué)習(xí)的喲!
可以在構(gòu)造函數(shù)中將用于訓(xùn)練模型的參數(shù)傳遞給模型。在這里,我們使用合理的默認(rèn)值。
您可以通過(guò)打印模型來(lái)查看訓(xùn)練模型中使用的參數(shù),例如:
您可以在XGBoost Python scikit-learn API 中了解有關(guān)XGBClassifier和XGBRegressor類(lèi)默認(rèn)值的更多信息。
您可以在XGBoost 參數(shù)頁(yè)面上詳細(xì)了解每個(gè)參數(shù)的含義以及如何配置它們。
我們現(xiàn)在準(zhǔn)備使用經(jīng)過(guò)訓(xùn)練的模型進(jìn)行預(yù)測(cè)。
5. 使用 XGBoost 模型進(jìn)行預(yù)測(cè)
我們可以使用測(cè)試數(shù)據(jù)集上的擬合模型進(jìn)行預(yù)測(cè)。
為了進(jìn)行預(yù)測(cè),我們使用 scikit-learn 函數(shù)model.predict()。
默認(rèn)情況下,XGBoost 所做的預(yù)測(cè)是概率。因?yàn)檫@是一個(gè)二元分類(lèi)問(wèn)題,每個(gè)預(yù)測(cè)都是輸入模式屬于第一類(lèi)的概率。我們可以通過(guò)將它們四舍五入為 0 或 1 來(lái)輕松地將它們轉(zhuǎn)換為二進(jìn)制類(lèi)值。
現(xiàn)在我們已經(jīng)使用擬合模型對(duì)新數(shù)據(jù)進(jìn)行了預(yù)測(cè),我們可以通過(guò)將它們與預(yù)期值進(jìn)行比較來(lái)評(píng)估預(yù)測(cè)的性能。為此,我們將使用scikit-learn 中內(nèi)置的accuracy_score()函數(shù)。
6. 把代碼整合在一起
我們可以將所有這些部分結(jié)合在一起,下面是完整的代碼清單。
注意:您的結(jié)果可能會(huì)因算法或評(píng)估程序的隨機(jī)性或數(shù)值精度的差異而有所不同??紤]多次運(yùn)行該示例并比較平均結(jié)果。
運(yùn)行此示例會(huì)產(chǎn)生以下輸出。
考慮到模型的功能和問(wèn)題的適度復(fù)雜性,這是這個(gè)問(wèn)題的一個(gè)很好的準(zhǔn)確度分?jǐn)?shù),這是我們所期望的。
總結(jié)
在這篇文章中,您學(xué)習(xí)了如何用 Python 建立您的第一個(gè) XGBoost 模型。
具體來(lái)說(shuō),你學(xué)到了:
如何在您的系統(tǒng)上安裝 XGBoost,以便與 Python 一起使用。
如何準(zhǔn)備數(shù)據(jù)并在標(biāo)準(zhǔn)機(jī)器學(xué)習(xí)數(shù)據(jù)集上訓(xùn)練您的第一個(gè) XGBoost 模型。
如何使用 scikit-learn 進(jìn)行預(yù)測(cè)并評(píng)估經(jīng)過(guò)訓(xùn)練的 XGBoost 模型的性能。
用Python 開(kāi)發(fā)您的第一個(gè) XGBoost 模型就為大家介紹到這里了,歡迎各位同學(xué)報(bào)名<python機(jī)器學(xué)-生物信息學(xué)>,學(xué)習(xí)更多建模相關(guān)知識(shí)

版權(quán)聲明:文章來(lái)自公眾號(hào)(python風(fēng)控模型),未經(jīng)許可,不得抄襲。遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。