XGBoost(三):Python語言實現(xiàn)

原文鏈接:XGBoost(三):Python語言實現(xiàn)

微信公眾號:機器學(xué)習(xí)養(yǎng)成記


上篇文章介紹了XGBoost在R語言中的實現(xiàn)方法(XGBoost(二):R語言實現(xiàn))杈帐,本篇文章接著來介紹XGBoost在Python中的實現(xiàn)方法劲阎。

1匠题、XGBoost庫

Python中颜懊,可直接通過“pip install xgboost”安裝XGBoost庫融欧,基分類器支持決策樹和線性分類器同规。

2旷坦、XGBoost代碼實現(xiàn)

本例中我們使用uci上的酒質(zhì)量評價數(shù)據(jù),該數(shù)據(jù)通過酸性搀崭、ph值、酒精度等11個維度對酒的品質(zhì)進行評價猾编,對酒的評分為0-10分瘤睹。

相關(guān)庫載入

除了xgboost,本例中我們還將用到pandas答倡、sklearn和matplotlib方便數(shù)據(jù)的讀入轰传、處理和最后的圖像繪制。

import xgboost

import pandas as pd

from sklearn.model_selection import train_test_split

from sklearn import metrics

from xgboost import plot_importance

from matplotlib import pyplot

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

將數(shù)據(jù)導(dǎo)入Python瘪撇,并對數(shù)據(jù)根據(jù)7:3的比例劃分為訓(xùn)練集和測試集获茬,并對label進行處理港庄,超過6分為1,否則為0恕曲。

redwine = pd.read_csv('winequality-red.csv',sep = ';')

whitewine = pd.read_csv('winequality-white.csv',sep = ';')

wine = redwine.append(whitewine)

x = wine.iloc[:,0:11]

y = wine.iloc[:,11]

y[y<=6] = 0

y[y>6] =1

# test_size: 測試集大小

# random_state: 設(shè)置隨機數(shù)種子鹏氧,0或不填則每次劃分結(jié)果不同

train_x,test_x,train_y,test_y = train_test_split(x,y,test_size=0.3, random_state=17)

數(shù)據(jù)預(yù)處理

將數(shù)據(jù)轉(zhuǎn)化為xgb.DMatrix類型。

dtrain= xgboost.DMatrix(data = train_x, label = train_y)

dtest= xgboost.DMatrix(data = test_x, label = test_y)

模型訓(xùn)練

訓(xùn)練模型佩谣,并對特征進行重要性排序把还。

param = {'max_depth':6, 'eta':0.5, 'silent':0, 'objective':'binary:logistic' }

num_round = 2

xgb = xgboost.train(param,dtrain, num_round)

test_preds = xgb.predict(dtest)

test_predictions?=?[round(value)?for?value?in?test_preds]#變成0、1#顯示特征重要性

plot_importance(xgb)#打印重要程度結(jié)果

pyplot.show()

測試集效果檢驗

計算準(zhǔn)確率茸俭、召回率等指標(biāo)吊履,并繪制ROC曲線圖。

test_accuracy = metrics.accuracy_score(test_y, test_predictions)#準(zhǔn)確率

test_auc = metrics.roc_auc_score(test_y,test_preds)#auc

test_recall = metrics.recall_score(test_y,test_predictions)#召回率

test_f1 = metrics.f1_score(test_y,test_predictions)#f1

test_precision = metrics.precision_score(test_y,test_predictions)#精確率

print("Test Auc: %.2f%%"% (test_auc * 100.0))

print("Test Accuary: %.2f%%"% (test_accuracy * 100.0))

print("Test Recall: %.2f%%"% (test_recall * 100.0))

print("Test Precision: %.2f%%"% (test_precision * 100.0))

print("Test F1: %.2f%%"% (test_f1 * 100.0))

fpr,tpr,threshold?=?metrics.roc_curve(test_y,test_preds)?

pyplot.plot(fpr, tpr, color='blue',lw=2, label='ROC curve (area = %.2f%%)'% (test_auc * 100.0))###假正率為橫坐標(biāo)调鬓,真正率為縱坐標(biāo)做曲線

pyplot.legend(loc="lower right")

pyplot.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')

pyplot.xlabel('False Positive Rate')

pyplot.ylabel('True Positive Rate')

pyplot.title('ROC curve')

#Test Auc: 81.99%

#Test Accuary: 81.44%

#Test Recall: 36.55%

#Test Precision: 56.25%

#Test F1: 44.31%

公眾號后臺回復(fù)“xgbPy”獲得完整代碼


原文鏈接:XGBoost(三):Python語言實現(xiàn)

微信公眾號:機器學(xué)習(xí)養(yǎng)成記

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末艇炎,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子腾窝,更是在濱河造成了極大的恐慌缀踪,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件燕锥,死亡現(xiàn)場離奇詭異辜贵,居然都是意外死亡,警方通過查閱死者的電腦和手機归形,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門托慨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人暇榴,你說我怎么就攤上這事厚棵。” “怎么了蔼紧?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵婆硬,是天一觀的道長。 經(jīng)常有香客問我奸例,道長彬犯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任查吊,我火速辦了婚禮谐区,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘逻卖。我一直安慰自己宋列,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布评也。 她就那樣靜靜地躺著炼杖,像睡著了一般灭返。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上坤邪,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天熙含,我揣著相機與錄音,去河邊找鬼罩扇。 笑死婆芦,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的喂饥。 我是一名探鬼主播消约,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼员帮!你這毒婦竟也來了或粮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤捞高,失蹤者是張志新(化名)和其女友劉穎氯材,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體硝岗,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡氢哮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了型檀。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冗尤。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖胀溺,靈堂內(nèi)的尸體忽然破棺而出裂七,到底是詐尸還是另有隱情,我是刑警寧澤仓坞,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布背零,位于F島的核電站,受9級特大地震影響无埃,放射性物質(zhì)發(fā)生泄漏徙瓶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一嫉称、第九天 我趴在偏房一處隱蔽的房頂上張望侦镇。 院中可真熱鬧,春花似錦澎埠、人聲如沸虽缕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽氮趋。三九已至,卻和暖如春江耀,著一層夾襖步出監(jiān)牢的瞬間剩胁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工祥国, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留昵观,地道東北人。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓舌稀,卻偏偏與公主長得像啊犬,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子壁查,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容