七汇在、集成學(xué)習(xí)代碼二

XGBoost回歸
import xgboost as xgb
from xgboost import plot_importance,plot_tree
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_boston
import matplotlib.pyplot as plt

# 加載數(shù)據(jù)集
boston = load_boston()
# 獲取特征值和目標(biāo)值
x,y = boston.data, boston.target
# 獲取特征名稱
feature_name = boston.feature_names

# 劃分?jǐn)?shù)據(jù)集
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=0)

# 參數(shù)設(shè)置
# 訓(xùn)練算法參數(shù)設(shè)置
params = {
    # 通用參數(shù)
    'booster': 'gbtree', #使用的弱學(xué)習(xí)器材蹬,有兩種選擇gbtree(默認(rèn))和gbliner嗤形,gbtree是基于
                        #樹(shù)模型的提升計(jì)算无埃,gbliner是基于線性模型的提升計(jì)算
    # 任務(wù)參數(shù)
    'objective': 'reg:gamma',#回歸的損失函數(shù)鹤树,gamma回歸
    # 提升參數(shù)
    'gamma': 0.1,#葉子節(jié)點(diǎn)進(jìn)行劃分時(shí)需要損失函數(shù)減少的最小值
    'max_depth': 5,#樹(shù)的最大深度,缺省值為5椰拒,可設(shè)置其他值
    'lambda': 3,#正則化權(quán)重
    'subsample': 0.7,#訓(xùn)練模型的樣本占總樣本的比例晶渠,用于防止過(guò)擬合
    'colsample_bytree': 0.7,#建立樹(shù)時(shí)對(duì)特征進(jìn)行采樣的比例
    'min_child_weight': 3,#葉子節(jié)點(diǎn)繼續(xù)劃分的最小樣本權(quán)重和
    'eta': 0.1,#加法模型中使用的收縮步長(zhǎng)
    'seed': 1000,#隨機(jī)數(shù)種子
    'nthread':4,
}
plst = params.items()

# 數(shù)據(jù)集格式轉(zhuǎn)化
dtrain = xgb.DMatrix(x_train, y_train, feature_names = feature_name)
dtest = xgb.DMatrix(x_test, feature_names = feature_name)

# 模型訓(xùn)練
num_rounds = 30
model = xgb.train(plst, dtrain, num_rounds)

# 模型預(yù)測(cè)
y_pred = model.predict(dtest)

# 顯示重要特征
plot_importance(model, importance_type="weight")
plt.show()

# 可視化樹(shù)的生成情況,num_tree是樹(shù)的索引
plot_tree(model, num_trees=17)
plt.show()

# 將基學(xué)習(xí)器輸出到txt文件中
model.dump_model('model2.txt')

圖片:


QQ截圖20200409170505.png
QQ截圖20200409170515.png
sklearn-XGBoost回歸
import xgboost as xgb
from xgboost import plot_importance,plot_tree
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_boston
import matplotlib.pyplot as plt

# 加載數(shù)據(jù)集
boston = load_boston()
# 獲取特征值和目標(biāo)值
x,y = boston.data, boston.target
# 獲取特征名稱
feature_name = boston.feature_names

# 劃分?jǐn)?shù)據(jù)集
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=0)

# 模型訓(xùn)練
model = xgb.XGBRFRegressor(max_depth=5, learning_rate=0.1, n_estimators=50, silent=True, objective='reg:gamma')
model.fit(x_train,y_train)

# 模型預(yù)測(cè)
y_pred = model.predict(x_test)

# 顯示重要特征
plot_importance(model)
plt.show()

# 可視化樹(shù)的生成情況燃观,num_tree是樹(shù)的索引
plot_tree(model, num_trees=17)
plt.show()
XGBoost分類
import time
import numpy as np
import xgboost as xgb
from xgboost import plot_importance,plot_tree
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_boston
import matplotlib
import matplotlib.pyplot as plt
import os

iris = load_iris()
x,y = iris.data,iris.target
x_train,x_test,y_train,y_test = train_test_split(x, y, test_size=0.2, random_state=1234565)

# 訓(xùn)練算法參數(shù)設(shè)置
params = {
    # 通用參數(shù)
    'booster': 'gbtree', #使用的弱學(xué)習(xí)器褒脯,有兩種選擇gbtree(默認(rèn))和gbliner,gbtree是基于
                        #樹(shù)模型的提升計(jì)算缆毁,gbliner是基于線性模型的提升計(jì)算
    'ntread': 4,#XGBoost運(yùn)行時(shí)的線程數(shù)番川,缺省時(shí)是當(dāng)前系統(tǒng)獲得的最大線程數(shù)
    'silent': 0,#0:表示打印運(yùn)行時(shí)的信息,1:表示以緘默方式運(yùn)行脊框,默認(rèn)為0
    'num_feature': 4,#boosting過(guò)程中使用的特征維數(shù)
    'seed': 1000,#隨機(jī)數(shù)種子
    # 任務(wù)參數(shù)
    'objective': 'multi:softmax',#多分類的softmax颁督,objective用來(lái)定義學(xué)習(xí)任務(wù)及相應(yīng)的損失函數(shù)
    'num_class': 3,#類別總數(shù)
    # 提升參數(shù)
    'gamma': 0.1,#葉子節(jié)點(diǎn)進(jìn)行劃分時(shí)需要損失函數(shù)減少的最小值
    'max_depth': 6,#樹(shù)的最大深度,缺省值為6缚陷,可設(shè)置其他值
    'lambda': 2,#正則化權(quán)重
    'subsample': 0.7,#訓(xùn)練模型的樣本占總樣本的比例适篙,用于防止過(guò)擬合
    'colsample_bytree': 0.7,#建立樹(shù)時(shí)對(duì)特征進(jìn)行采樣的比例
    'min_child_weight': 3,#葉子節(jié)點(diǎn)繼續(xù)劃分的最小樣本權(quán)重和
    'eta': 0.1#加法模型中使用的收縮步長(zhǎng)
}
plst = params.items()

# 數(shù)據(jù)集格式轉(zhuǎn)換
dtrain = xgb.DMatrix(x_train, y_train)
dtest = xgb.DMatrix(x_test)

# 迭代次數(shù),對(duì)于分類問(wèn)題箫爷,每個(gè)類別的迭代次數(shù),所以,總的基學(xué)習(xí)器個(gè)數(shù) = 迭代次數(shù) * 類別個(gè)數(shù)
num_rounds = 50
model = xgb.train(plst, dtrain, num_rounds)#xgboost模型訓(xùn)練

# 對(duì)測(cè)試集進(jìn)行預(yù)測(cè)
y_pred = model.predict(dtest)

# 計(jì)算準(zhǔn)確率
accuracy = accuracy_score(y_test,y_pred)
print("accuracy: %.2f%%" % (accuracy*100.0))

# 顯示重要特征
plot_importance(model)
plt.show()

# 可視化樹(shù)的生成情況虎锚,num_tree是樹(shù)的索引
plot_tree(model, num_trees=5)
plt.show()

# 將基學(xué)習(xí)器輸出到txt文件中
model.dump_model('model.txt')

圖片:


QQ截圖20200409170800.png
QQ截圖20200409170809.png
QQ截圖20200409170857.png
sklearn-XGBoost分類
import xgboost as xgb
from xgboost import plot_importance,plot_tree
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt

iris = load_iris()
x,y = iris.data,iris.target
feature_name = iris.feature_names
x_train,x_test,y_train,y_test = train_test_split(x, y, test_size=0.2, random_state=3)

# 模型訓(xùn)練
model = xgb.XGBClassifier(max_depth=5, n_estimators=50, silent = True,objective='multi:softmax',feature_names=feature_name)
model.fit(x_train,y_train)
# 預(yù)測(cè)
y_pred = model.predict(x_test)

# 計(jì)算準(zhǔn)確率
accuracy = accuracy_score(y_test,y_pred)
print("accuracy: %.2f%%" % (accuracy*100.0))

# 顯示重要特征
plot_importance(model)
plt.show()

# 可視化樹(shù)的生成情況硫痰,num_tree是樹(shù)的索引
plot_tree(model, num_trees=5)
plt.show()

圖片:


QQ截圖20200409171015.png
QQ截圖20200409171023.png
QQ截圖20200409171030.png
LightGBM
import datetime
import numpy as np
import pandas as pd
import lightgbm as lgb
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt

# 加載數(shù)據(jù)集
breast = load_breast_cancer()
# 獲取特征值和目標(biāo)值
x,y = breast.data,breast.target
# 獲取特征名稱
feature_name = breast.feature_names

# 數(shù)據(jù)集劃分
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.2,random_state=0)

# 數(shù)據(jù)格式轉(zhuǎn)換
lgb_train = lgb.Dataset(x_train,y_train)
lgb_eval = lgb.Dataset(x_test,y_test,reference=lgb_train)

# 參數(shù)設(shè)置
boost_round = 50#迭代次數(shù)
early_stop_rounds = 10#驗(yàn)證數(shù)據(jù)在early_stop_rounds輪中未提高,則提前停止

params = {
    'boosting_type':'gbdt',#設(shè)置提mu'bia'han'shu升類型
    'objective':'regression',#目標(biāo)函數(shù)
    'metric':{'12','auc'},#評(píng)估函數(shù)
    'num_leaves':31,#葉子節(jié)點(diǎn)數(shù)
    'learning_rate':0.05,#學(xué)習(xí)速率
    'feature_fraction':0.9,#建樹(shù)的特征選擇比例
    'bagging_fraction':0.8,#建樹(shù)的樣本采集比例
    'bagging_freq':5,#k意味著每k次迭代執(zhí)行bagging
    'verbose':1#<0,顯示致命的窜护,=0顯示錯(cuò)誤(警告)效斑,>0顯示信息
}

# 訓(xùn)練模型,加入提前停止的功能
results = {}
gbm = lgb.train(
    params,
    lgb_train,
    num_boost_round=boost_round,
    valid_sets=(lgb_eval,lgb_train),
    valid_names=('validate','train'),
    early_stopping_rounds=early_stop_rounds,
    evals_result=results
)

# 模型預(yù)測(cè)
y_pred = gbm.predict(x_test,num_iteration=gbm.best_iteration)
print(y_pred)

lgb.plot_metric(results)
plt.show()

# 繪制重要的特征
lgb.plot_importance(gbm,importance_type='split')
plt.show()

圖片:


QQ截圖20200409171234.png

QQ截圖20200409171226.png
QQ截圖20200409171306.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末柱徙,一起剝皮案震驚了整個(gè)濱河市缓屠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌护侮,老刑警劉巖敌完,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異羊初,居然都是意外死亡滨溉,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)长赞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)晦攒,“玉大人,你說(shuō)我怎么就攤上這事得哆「眨” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵贩据,是天一觀的道長(zhǎng)栋操。 經(jīng)常有香客問(wèn)我,道長(zhǎng)乐设,這世上最難降的妖魔是什么讼庇? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮近尚,結(jié)果婚禮上蠕啄,老公的妹妹穿的比我還像新娘。我一直安慰自己戈锻,他們只是感情好歼跟,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著格遭,像睡著了一般哈街。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拒迅,一...
    開(kāi)封第一講書(shū)人閱讀 51,692評(píng)論 1 305
  • 那天骚秦,我揣著相機(jī)與錄音她倘,去河邊找鬼。 笑死作箍,一個(gè)胖子當(dāng)著我的面吹牛硬梁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播胞得,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼荧止,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了阶剑?” 一聲冷哼從身側(cè)響起跃巡,我...
    開(kāi)封第一講書(shū)人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎牧愁,沒(méi)想到半個(gè)月后素邪,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡递宅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年娘香,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片办龄。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡烘绽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出俐填,到底是詐尸還是另有隱情安接,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布英融,位于F島的核電站盏檐,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏驶悟。R本人自食惡果不足惜胡野,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望痕鳍。 院中可真熱鬧硫豆,春花似錦、人聲如沸笼呆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)诗赌。三九已至汗茄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間铭若,已是汗流浹背洪碳。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工递览, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人偶宫。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓非迹,卻偏偏與公主長(zhǎng)得像环鲤,于是被迫代替她去往敵國(guó)和親纯趋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

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

  • Boosting 每次使用的是全部的樣本冷离,每輪訓(xùn)練改變樣本的權(quán)重吵冒。下一輪訓(xùn)練的目標(biāo)是找到一個(gè)函數(shù)f 來(lái)擬合上一輪的...
    leon_kbl閱讀 556評(píng)論 0 0
  • 本文主要簡(jiǎn)要的比較了常用的boosting算法的一些區(qū)別瞭空,從AdaBoost到LightGBM,包括AdaBoos...
    南宮蕭言閱讀 1,427評(píng)論 0 5
  • 博客園:梯度提升樹(shù)(GBDT)原理小結(jié)博客園:一步一步理解GB揪阿、GBDT、xgboost知乎:機(jī)器學(xué)習(xí)算法中GBD...
    閆阿佳閱讀 5,107評(píng)論 0 5
  • 疏雨乍翻小簾窗 底事傷神 晚風(fēng)堪惆悵 半縷殘香幽夢(mèng)枕 一宵冷雨花落塵 笛弦素韻凄傷景 夢(mèng)里淚滋 慵起問(wèn)前生 問(wèn)罷生...
    通往天上地下閱讀 147評(píng)論 0 0
  • 我是一名在校大學(xué)生,曾和所有大一剛來(lái)的新生一樣計(jì)劃著未來(lái)的生活旧找,不掛科和做兼職養(yǎng)自己溺健,最好可以不向家里伸手要錢(qián)...
    花開(kāi)不白閱讀 168評(píng)論 4 1