python機(jī)器學(xué)習(xí)XGBoost梯度提升決策樹(shù)的高效且可擴(kuò)展實(shí)現(xiàn)
python庫(kù)XGBoost
今天給大家分享一個(gè)神奇的 python 庫(kù),XGBoost
https://github.com/dmlc/xgboost
XGBoost 是 eXtreme Gradient Boosting 的縮寫(xiě),是一個(gè)開(kāi)源的 python 庫(kù),它提供了梯度提升決策樹(shù)的高效且可擴(kuò)展的實(shí)現(xiàn)。XGBoost 專(zhuān)為速度和性能而設(shè)計(jì),廣泛應(yīng)用于機(jī)器學(xué)習(xí)競(jìng)賽和實(shí)際應(yīng)用中。它支持各種目標(biāo)函數(shù),包括回歸、分類(lèi)和排名任務(wù)。
為什么選擇 XGBoost?
效率,XGBoost 以其計(jì)算速度而聞名,這使得它比梯度提升的其他實(shí)現(xiàn)更快。
可擴(kuò)展性,它可以跨多個(gè) CPU 甚至 GPU 無(wú)縫擴(kuò)展,使其適合大型數(shù)據(jù)集。
性能,XGBoost 的性能往往優(yōu)于其他算法,尤其是在涉及結(jié)構(gòu)化數(shù)據(jù)的場(chǎng)景中。
靈活性,它支持各種損失函數(shù)和定制,使其適用于廣泛的應(yīng)用。
正則化,XGBoost 包括 L1 和 L2 正則化,有助于防止過(guò)度擬合并提高模型泛化能力。
XGBoost 的工作原理
XGBoost 是梯度提升的一種形式,是一種強(qiáng)大的機(jī)器學(xué)習(xí)技術(shù),用于回歸和分類(lèi)任務(wù)。梯度提升涉及通過(guò)添加弱學(xué)習(xí)器(通常是決策樹(shù))來(lái)增量構(gòu)建模型,以糾正現(xiàn)有模型的錯(cuò)誤。該過(guò)程通過(guò)將新模型擬合先前模型的殘差來(lái)迭代地改進(jìn)預(yù)測(cè)。
XGBoost 涉及三個(gè)主要組件:要最小化的損失函數(shù)、進(jìn)行預(yù)測(cè)的弱學(xué)習(xí)器以及添加弱學(xué)習(xí)器以最小化損失函數(shù)的加性模型。
損失函數(shù):XGBoost 需要一個(gè)可微的損失函數(shù),它衡量預(yù)測(cè)結(jié)果和實(shí)際結(jié)果之間的差異。
弱學(xué)習(xí)器:XGBoost 使用決策樹(shù)作為弱學(xué)習(xí)器。
加法模型:添加新樹(shù)來(lái)糾正現(xiàn)有樹(shù)產(chǎn)生的殘差。隨著更多樹(shù)木的添加,模型變得更加強(qiáng)大。
XGBoost 還實(shí)現(xiàn)了樹(shù)的修剪、正則化和處理缺失值等各種技術(shù),使其成為一種強(qiáng)大的算法。
何時(shí)使用 XGBoost
以下是一些需要考慮的準(zhǔn)則。
結(jié)構(gòu)化或表格數(shù)據(jù):XGBoost 在結(jié)構(gòu)化或表格數(shù)據(jù)上表現(xiàn)異常出色,例如 CSV 文件。
大型數(shù)據(jù)集:XGBoost 憑借其可擴(kuò)展性和并行處理能力,可以有效地處理大量數(shù)據(jù)。
高維空間:XGBoost 可以處理大量特征,無(wú)需進(jìn)行特征約簡(jiǎn),非常適合所有特征都攜帶重要信息的場(chǎng)景。
分類(lèi)和回歸任務(wù):XGBoost 非常適合分類(lèi)(二元和多類(lèi))和回歸任務(wù),使其適用于各種類(lèi)型的預(yù)測(cè)建模。
代碼示例
以下是在 Python 中使用 XGBoost 進(jìn)行分類(lèi)的基本示例。
在此示例中,我們使用 Iris 數(shù)據(jù)集,這是機(jī)器學(xué)習(xí)中流行的數(shù)據(jù)集。我們將數(shù)據(jù)分為訓(xùn)練集和測(cè)試集,創(chuàng)建 XGBoost 分類(lèi)器,在訓(xùn)練數(shù)據(jù)上對(duì)其進(jìn)行訓(xùn)練,然后在測(cè)試數(shù)據(jù)上評(píng)估其性能。
import xgboost as xgb from sklearn.model_selection import train_test_split from sklearn.datasets import load_iris from sklearn.metrics import accuracy_score import matplotlib.pyplot as plt # Load dataset iris = load_iris() X, y = iris.data, iris.target print('X shape:', X.shape) print('y shape:', y.shape) # Split dataset into train and test sets X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, random_state=42) # Instantiate an XGBoost classifier model = xgb.XGBClassifier() # Train the model model.fit(X_train, y_train) # Make predictions predictions = model.predict(X_test) # Evaluate the model accuracy = accuracy_score(y_test, predictions) print('y_test:', y_test) print('predictions:', predictions) print(f"Accuracy: {accuracy * 100:.2f}%") # Feature importance feature_importance = model.feature_importances_ # Plotting feature importance plt.barh(iris.feature_names, feature_importance) plt.xlabel('Feature Importance Score') plt.ylabel('Features') plt.title('Visualizing Important Features with XGBoost') plt.show()
以上就是python機(jī)器學(xué)習(xí)XGBoost梯度提升決策樹(shù)的高效且可擴(kuò)展實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于python XGBoost機(jī)器學(xué)習(xí)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- python機(jī)器學(xué)習(xí)darts時(shí)間序列預(yù)測(cè)和分析
- python interpret庫(kù)訓(xùn)練模型助力機(jī)器學(xué)習(xí)
- Python mlxtend庫(kù)數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)補(bǔ)充工具功能探索
- python?lazypredict構(gòu)建大量基本模型簡(jiǎn)化機(jī)器學(xué)習(xí)
- Python梯度提升庫(kù)XGBoost解決機(jī)器學(xué)習(xí)問(wèn)題使用探究
- Python機(jī)器學(xué)習(xí)特征重要性分析的8個(gè)常用方法實(shí)例探究
- python taipy庫(kù)輕松地將數(shù)據(jù)和機(jī)器學(xué)習(xí)模型轉(zhuǎn)為功能性Web應(yīng)用
- python機(jī)器學(xué)習(xí)deepchecks庫(kù)訓(xùn)練檢查模型特點(diǎn)探索
相關(guān)文章
Python3自動(dòng)生成MySQL數(shù)據(jù)字典的markdown文本的實(shí)現(xiàn)
這篇文章主要介紹了Python3自動(dòng)生成MySQL數(shù)據(jù)字典的markdown文本的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05python區(qū)塊鏈基本原型簡(jiǎn)版實(shí)現(xiàn)示例
這篇文章主要為大家介紹了python區(qū)塊鏈基本原型簡(jiǎn)版實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Python中優(yōu)雅使用assert斷言的方法實(shí)例
我們?cè)陂_(kāi)發(fā)一個(gè)程序時(shí)候,與其讓它運(yùn)行時(shí)崩潰,不如在它出現(xiàn)錯(cuò)誤條件時(shí)就崩潰(返回錯(cuò)誤),這時(shí)候斷言assert就顯得非常有用,這篇文章主要給大家介紹了關(guān)于Python中優(yōu)雅使用assert斷言的相關(guān)資料,需要的朋友可以參考下2021-09-09pytorch基礎(chǔ)之損失函數(shù)與反向傳播詳解
損失函數(shù)(Loss?Function)用于衡量神經(jīng)網(wǎng)絡(luò)輸出與目標(biāo)值之間的誤差,指導(dǎo)網(wǎng)絡(luò)通過(guò)反向傳播優(yōu)化參數(shù),常見(jiàn)的損失函數(shù)包括均方誤差和交叉熵誤差,在訓(xùn)練過(guò)程中,通過(guò)不斷最小化損失函數(shù)值來(lái)調(diào)整網(wǎng)絡(luò)權(quán)重,以期達(dá)到輸出接近目標(biāo)值的效果2024-09-09詳解?PyTorch?Lightning模型部署到生產(chǎn)服務(wù)中
這篇文章主要為大家介紹了如何將PyTorch?Lightning模型部署到生產(chǎn)服務(wù)中的詳細(xì)教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09Python學(xué)習(xí)之字符串函數(shù)使用詳解
Python的友好在于提供了非常好強(qiáng)大的功能函數(shù)模塊,對(duì)于字符串的使用,同樣提供許多簡(jiǎn)單便捷的字符串函數(shù)。Python 字符串自帶了很多有用的函數(shù),快來(lái)跟隨小編學(xué)習(xí)一下這些函數(shù)的應(yīng)用詳解吧2021-12-12Python的Flask框架路由實(shí)現(xiàn)詳解
這篇文章主要介紹了Python的Flask框架路由實(shí)現(xiàn)詳解,在啟動(dòng)程序時(shí),python解釋器會(huì)從上到下對(duì)代碼進(jìn)行解釋?zhuān)?dāng)遇到裝飾器時(shí),會(huì)執(zhí)行,并把函數(shù)對(duì)應(yīng)的路由以字典的形式進(jìn)行存儲(chǔ),當(dāng)請(qǐng)求到來(lái)時(shí),即可根據(jù)路由查找對(duì)應(yīng)要執(zhí)行的函數(shù)方法,需要的朋友可以參考下2023-08-08Python的Flask框架標(biāo)配模板引擎Jinja2的使用教程
Jinja2是Python世界的一款高人氣template engine,是許多開(kāi)源Web框架的選擇,包括Flask這樣的明星級(jí)項(xiàng)目,這里我們就來(lái)共同學(xué)習(xí)Python的Flask框架標(biāo)配模板引擎Jinja2的使用教程2016-07-07