機器學習算法XGBoost原理和實踐(下)

2020-12-17 DailyGit
歡迎關注本公眾號

小編之前在機器學習算法XGBoost原理和實踐(上)這篇文章中已經講了xgboost的基本原理,不了解的可以點擊查看,這篇文章將介紹xgboost的實踐,涉及數據的讀取、數據模型訓練、模型保存、模型加載等全部流程,後續文章會介紹特徵工程的一下東西,歡迎關注。

XGBoost可以加載多種數據格式的訓練數據:  

libsvm 格式的文本數據;

dtrain1 = xgb.DMatrix('train.svm.txt')Numpy 的二維數組;

data = np.random.rand(5,10) # 5 entities, each contains 10 featureslabel = np.random.randint(2, size=5) # binary targetdtrain = xgb.DMatrix( data, label=label)XGBoost 的二進位的緩存文件。加載的數據存儲在對象 DMatrix 中

dtrain2 = xgb.DMatrix('train.svm.buffer')參數設置

XGBoost使用key-value字典的方式存儲參數:

params = {'booster': 'gbtree','objective': 'multi:softmax', # 多分類的問題'num_class': 10, # 類別數'gamma': 0.1, # 用於控制是否後剪枝的參數,越大越保守,一般0.1、0.2這樣子。'max_depth': 12, # 構建樹的深度,越大越容易過擬合'lambda': 2, # 控制模型複雜度的權重值的L2正則化項參數,參數越大,模型越不容易過擬合。'subsample': 0.7, # 隨機採樣訓練樣本'colsample_bytree': 0.7, # 生成樹時進行的列採樣'min_child_weight': 3,'silent': 1, # 設置成1則沒有運行信息輸出,最好是設置為0.'eta': 0.007, # 如同學習率'seed': 1000,'nthread': 4, # cpu 線程數}模型整體流程如下

# 劃分訓練集和驗證集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)xg_train = xgb.DMatrix(X_train, label=y_train)xg_test = xgb.DMatrix(X_test, label=y_test)watchlist = [(xg_train, 'train'), (xg_test, 'test')]# 訓練xgboost模型

bst = xgb.train(params, xg_train, 60, watchlist, early_stopping_rounds=15)# 預測標籤

pred = bst.predict(xg_test)# 列印正確率

acc = (y_test == pred).mean()print('accuracy', acc)# 將標籤轉換為原標籤

pred = [lbl.inverse_transform(int(x)) for x in pred]保存模型

bst.save_model('test.model')

加載模型

通過如下方式可以加載模型:

bst = xgb.Booster({'nthread':4}) # init model

bst.load_model("model.bin") # load data

算法的流程就全部介紹了,如果感覺文章不錯,可以關注公眾好,也可以收藏和轉載!

相關焦點

  • 機器學習算法XGBoost原理和實踐(上)
    小編在之前公眾號文章已介紹了xgboost的安裝方法,接下來將用兩篇文章,介紹XGboost的算法思想和基本原理、實戰(數據處理、核心代碼分享)。如果還沒有安裝包的讀者,請查看之前文章,喜歡可以關注公眾號!XGBoost是boosting算法的其中一種。Boosting算法的思想是將許多弱分類器集成在一起形成一個強分類器。
  • 快速上手:在R中使用XGBoost算法
    那麼,他比傳統的隨機森林和神經網絡算法強在哪裡呢?廣義上來說,它在效率,準確性,可行性都更有優勢(接下來我們將會詳細討論)。在最近的幾年中,模型預測已經變得越來越快速和準確了。我記得我曾花費數個小時在為某個模型構建特徵工程上,模型卻僅僅提升了幾個百分點。現在,這些大量困難的問題都被更好的算法所解決。
  • 深入理解XGboost
    寫在前面如果想從事數據挖掘或者機器學習的工作,掌握常用的機器學習算法是非常有必要的,在這簡單的先捋一捋, 常見的機器學習算法:監督學習算法:邏輯回歸,線性回歸,決策樹,樸素貝葉斯,K近鄰,支持向量機,集成算法Adaboost等無監督算法:聚類,降維,關聯規則, PageRank等這個系列已經基本包含了上面這些算法的原理和基本使用
  • 機器學習、深度學習算法原理與案例實踐暨Python大數據綜合應用...
    原標題:機器學習、深度學習算法原理與案例實踐暨Python大數據綜合應用高級研修班通信和信息技術創新人才培養工程項目辦公室 通人辦〔2018〕 第5號 機器學習、深度學習算法原理與案例實踐暨Python
  • Hessian矩陣在XGBoost算法的應用小結
    本文深入淺出的總結了Hessian矩陣在XGboost算法中的兩種應用,即權重分位點算法和樣本權重和算法 。目錄Hessian矩陣的定義樣本權重和算法權重分位點算法總結Hessian矩陣(Hessian matrix或Hessian)是一個自變量為向量的實值函數的二階導偏導數組成的方塊矩陣,此實值函數如下:自變量為向量
  • 機器學習基礎圖表:概念、原理、歷史、趨勢和算法
    四大會計師事務所之一的普華永道(PwC)發布了多份解讀機器學習基礎的圖表,其中介紹了機器學習的基本概念、原理、歷史、未來趨勢和一些常見的算法。為便於讀者閱讀,機器之心對這些圖表進行了編譯和拆分,分三大部分對這些內容進行了呈現,希望能幫助你進一步擴展閱讀。
  • Python 機器學習算法實踐:嶺回歸和LASSO
    正文通過上一篇《機器學習算法實踐-標準與局部加權線性回歸》中標準線性回歸的公式w=(X^T*X)^(-1)X^T*y中可以看出在計算回歸係數的時候我們需要計算矩陣X^TX的逆,但是如果該矩陣是個奇異矩陣,則無法對其進行求解。那麼什麼情況下該矩陣會有奇異性呢?X本身存在線性相關關係(多重共線性), 即非滿秩矩陣。
  • Python大數據綜合應用 :零基礎入門機器學習、深度學習算法原理與案例
    共4天8節,講解機器學習和深度學習的模型理論和代碼實踐,梳理機器學習、深度學習、計算機視覺的技術框架,從根本上解決如何使用模型、優化模型的問題;每次課中,首先闡述算法理論和少量公式推導,然後使用真實數據做數據挖掘、機器學習、深度學習的數據分析、特徵選擇、調參和結果比較。
  • 一文讀懂機器學習大殺器XGBoost原理
    【IT168 技術】XGBoost是boosting算法的其中一種。Boosting算法的思想是將許多弱分類器集成在一起形成一個強分類器。因為XGBoost是一種提升樹模型,所以它是將許多樹模型集成在一起,形成一個很強的分類器。而所用到的樹模型則是CART回歸樹模型。講解其原理前,先講解一下CART回歸樹。
  • 算法應用|機器學習python應用,簡單機器學習項目實踐
    上一篇文章中介紹了機器學習的簡單知識,還有python中進行機器學習實踐需要的生態環境,接下來將會通過鳶尾花分類這個例子對機器學習做一個簡要的介紹。通過一步一步地實現這個項目來介紹以下內容。導入和使用python中機器學習的各個方面的類庫。
  • 教程 | 理解XGBoost機器學習模型的決策過程
    選自Ancestry作者:Tyler Folkman機器之心編譯參與:劉曉坤、李澤南使用 XGBoost 的算法在Kaggle 和其它數據科學競賽中經常可以獲得好成績,因此受到了人們的歡迎(可參閱:為什麼 XGBoost 在機器學習競賽中表現如此卓越?)。
  • 基於Python實現XGBoost
    陳天奇和 Carlos Guestrin 在 SIGKDD 2016 大會上發表的論文《XGBoost: A Scalable Tree Boosting System》在整個機器學習領域引起轟動。XGBoost是一個優化的分布式梯度增強庫,旨在實現高效,靈活和便攜。它在Gradient Boosting框架下實現機器學習算法。XGBoost提供並行樹提升(也稱為GBDT,GBM),可以快速準確地解決許多數據科學問題。
  • 【機器學習】XGBoost算法學習小結
    由於其高效的C++實現,xgboost在性能上超過了最常用使用的R包gbm和Python包sklearn。例如在Kaggle的希格斯子競賽數據上,單線程xgboost比其他兩個包均要快出50%,在多線程上xgboost更是有接近線性的性能提升。由於其性能和使用便利性,xgboost已經在Kaggle競賽中被廣泛使用[1]。
  • 算法應用|機器學習python應用,初識機器學習是怎樣滴感受?
    本系列文章主要介紹機器學習在實踐中的應用,介紹利用 Python 的生態環境,使用機器學習的算法來解決工程實踐中的問題,而不是介紹算法本身。本系列文章參考了《機器學習Python實踐》,會通過例子一步一步地引導大家使用機器學習來處理和分類與回歸模型相關的問題。
  • 【白話機器學習】算法理論+實戰之AdaBoost算法
    寫在前面如果想從事數據挖掘或者機器學習的工作,掌握常用的機器學習算法是非常有必要的,常見的機器學習算法:監督學習算法:邏輯回歸,線性回歸,決策樹,樸素貝葉斯,K近鄰,支持向量機,集成算法Adaboost等無監督算法:聚類,降維,關聯規則, PageRank等為了詳細的理解這些原理
  • 快速弄懂機器學習裡的集成算法:原理、框架與實戰
    集成算法就是這樣一種算法,它本身不是一個單獨的機器學習算法,或者說沒有自身的機器學習思維,而是採用集成的方式來完成對數據或事物的學習、訓練過程。2.關於集成學習算法的框架體系集成學習算法作為機器學習裡的一個分支,已形成了一套的理論體系,其相關概念也比較多,如個體學習器、結合策略、bagging、AdaBoost算法、XGB、LGBT等等,讓初學者眼花繚亂,每個具體算法的原理不同又會讓大家暈頭轉向。實際上,這些繁多的內容背後,集成學習算法可以分成兩大框架,這也是集成學習著重解決的兩個算法。
  • 乾貨|長文詳解自然語言處理算法xgboost和python實戰
    在數據科學方面,有大量的kaggle選手選用它進行數據挖掘比賽,它也是大家常用的一種處理自然語言的算法,在有些情況下,xgboost甚至能夠比神經網絡的結果要好(小修之前測試過各種模型對一特定文本語言分類的性能)。
  • 機器學習實踐指南
    下面列出了最知名的幾個:◈ 這個著名的機器學習慕課[26],是吳恩達Andrew Ng講的,介紹了機器學習及其理論。 別擔心,這個慕課講的非常好,一步一步深入,所以對初學者來說非常適用。◈ 麻省理工學院 Open Courseware 的 6034 課程的節目清單[27],已經有點前沿了。 在你開始本系列之前,你需要做一些 ML 理論方面的準備工作,但是你不會後悔的。
  • 機器學習算法實踐-樸素貝葉斯(Naive Bayes)
    熟悉數值算法(最優化方法,蒙特卡洛算法等)與並行化算法(MPI,OpenMP等多線程以及多進程並行化)以及python優化方法,經常使用C++給python寫擴展。正文與決策樹分類和k近鄰分類算法不同,貝葉斯分類主要藉助概率論的知識來通過比較提供的數據屬於每個類型的條件概率, 將他們分別計算出來然後預測具有最大條件概率的那個類別是最後的類別。
  • LibRec 每周算法:FTRL原理與工程實踐 (by Google)
    FTRL原理介紹FTRL算法的設計思想其實並不複雜,就是每次找到讓之前所有目標函數(損失函數加正則項)之和最小的參數。該算法在處理諸如邏輯回歸之類的帶非光滑正則化項(如L1正則項)的凸優化問題上表現出色,在計算精度和特徵的稀疏性上做到了很好的trade-off,而且在工程實現上做了大量優化,性能優異。