




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第7章
集成學習與實現集成學習的概念Bagging算法隨機森林算法Boosting算法7.7XGBoost算法2對于GBDT算法的具體實現,最為出色的是XGBoost樹提升系統,此模型的性能已得到廣泛認可,并被大量應用于Kaggle等數據挖掘比賽中,取得了極好的效果。在XGBoost系統實現的過程中,對于GBDT算法進行了多方面的優化。由于諸多方面的優化實現,XGBoost在性能和運行速度上都優于一般的GBDT算法。1.XGBoost算法的基本原理
XGBoost(ExtremeGradientBoosting)算法是一種基于GBDT的算法,其基本思想于GBDT類似,每一次計算都要減少前一次的殘差值,但XGBoost進行了優化,包括在損失函數中增加正則化項,縮減樹權重和列采樣,在工程實現方面采用行列塊并行學習,減少時間開銷。7.7XGBoost算法3XGBoost軟件包是對原始梯度提升算法的高效實現,常用于一些數據挖掘競賽中。在使用之前要先安裝。可以通過pipinstallxgboost在線安裝。也可以先下載whl文件,然后在本地安裝。XGBClassifier和XGBRegressor兩個類分別實現了梯度提升分類和回歸。這兩個類均位于模塊xgboost.sklearn中。XGBoost中API的調用方法與scikit-learn中的調用方法類似。2.XGBoost算法的Sklearn實現下面是在Python環境下使用XGBoost模塊進行回歸的調用示例,首先用pandas構造一個最簡單的數據集df,其中x的值為[1,2,3],y的值為[10,20,30],并構建訓練集矩陣T_train_xbg。代碼如下7.7XGBoost算法4importpandasaspdimportxgboostasxgbdf=pd.DataFrame({'x':[1,2,3],'y':[10,20,30]})X_train=df.drop('y',axis=1)Y_train=df['y']T_train_xgb=xgb.DMatrix(X_train,Y_train)params={"objective":"reg:linear","booster":"gblinear"}gbm=xgb.train(dtrain=T_train_xgb,params=params)Y_pred=gbm.predict(xgb.DMatrix(pd.DataFrame({'x':[4,5]})))print(Y_pred)7.7XGBoost算法5XGBClassifier中初始化參數use_label_encoder已被棄用,在線文檔建議新的程序設置use_label_encoder=False。此時,要求類別標簽值是從0開始到類別總數減一的連續整數值。由于玻璃類別數據集中,類別只有1、2、3、5、6、7六種類別,因此依次將其編碼到0至5。程序的執行結果中,類別標簽是轉換后的標簽值。0至2對應原標簽的1至3,3至5對應原標簽的5至7。讀者也可以在程序中將標簽轉換為原標簽的值。7.7XGBoost算法6(1)讀取glass.data中的玻璃分類數據集,拆分訓練集和測試集,用XGClassifier從訓練集中學習預測模型,輸出模型在訓練集和測試集的預測準確率、測試集中前兩個樣本的預測標簽和預測概率值,并與真實值進行比較。①.加載數據集,并劃分訓練集和測試集importpandasaspdfromsklearn.model_selectionimporttrain_test_splitfromxgboostimportXGBClassifier3.XGBoost算法的應用舉例7.7XGBoost算法7②調整參數filename="./glass.data"glass_data=pd.read_csv(filename,index_col=0,header=None)X,y=glass_data.iloc[:,:-1].values,glass_data.iloc[:,-1].values#XGBClassifier中初始化參數use_label_encoder已被棄用#新的程序建議設置use_label_encoder=False,此時,#類別標簽必須為整數,值從0開始到類別總數-1,并且是連續的值y=y-1 #原來類別編碼從1開始,所以要減去1#原始類別編號沒有4,因此y=y-1后沒有3,新編號4至6的要再減去1y[y==4]=3y[y==5]=4y[y==6]=5#print(y)3.XGBoost算法的應用舉例7.7XGBoost算法8③用XGBClassifier創建并訓練梯度提升分類器模型X_train,X_test,y_train,y_test=train_test_split(X,y,shuffle=True,stratify=y,random_state=0)#用XGBClassifier創建并訓練梯度提升分類器模型#從XGBoost1.3.0開始,與目標函數objective='multi:softprob'一起使用的默認評估指標從#'merror'更改為'mlogloss'。如果想恢復為'merror',顯式地設置eval_metric="merror"。xgbc=XGBClassifier(n_estimators=500,use_label_encoder=False,objective='multi:softprob',eval_metric="merror")3.XGBoost算法的應用舉例7.7XGBoost算法9xgbc.fit(X_train,y_train)print("訓練集準確率:",xgbc.score(X_train,y_train),sep="")print("測試集準確率:",xgbc.score(X_test,y_test),sep="")print("對測試集前2個樣本預測的分類標簽:\n",xgbc.predict(X_test[:2]),sep="")print("對測試集前2個樣本預測的分類概率:\n",xgbc.predict_proba(X_test[:2]),sep="")print("分類器中的標簽排列:",xgbc.classes_)#概率預測轉化為標簽預測print("根據預測概率推算預測標簽:",end="")foriinxgbc.predict_proba(X_test[:2]).argmax(axis=1):print(xgbc.classes_[i],end="")print("\n測試集前2個樣本的真實標簽:",y_test[:2],sep="")3.XGBoost算法的應用舉例7.7XGBoost算法10執行結果為:訓練集準確率:1.0測試集準確率:0.7037037037037037對測試集前2個樣本預測的分類標簽:[11]對測試集前2個樣本預測的分類概率:[[0.006609930.89699950.086924170.004453920.00219140.00282117][0.001595960.991954150.001790940.001526640.001309550.00182281]]分類器中的標簽排列:[012345]根據預測概率推算預測標簽:11測試集前2個樣本的真實標簽:[11]3.XGBoost算法的應用舉例7.7XGBoost算法11(2)加載scikit-learn自帶數據集中的加州房價數據,劃分訓練集與測試集,利用XGBRegressor根據訓練集數據建立模型,計算并輸出模型在訓練集和測試集上的決定系數、測試集中前3個樣本的預測目標值,并輸出測試集前3個樣本的真實目標值。①加載加利福尼亞住房數據集,并劃分訓練集和測試集fromsklearn.datasetsimportfetch_california_housingfromsklearn.model_selectionimporttrain_test_splitfromxgboostimportXGBRegressor②用XGBRegressor創建并訓練梯度提升模型housing=fetch_california_housing(data_home="./dataset")X,y=housing.data,housing.targetX_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=0)xgbr=XGBRegressor(n_estimators=500)3.XGBoost算法的應用舉例7.7XGBoost算法12xgbr.fit(X_train,y_train)print("訓練集決定系數R^2:",xgbr.score(X_train,y_train))print("測試集決定系數R^2:",xgbr.score(X_test,y_test))print("測試集前3各樣本的預測值:",xgbr.predict(X_test[:3]))print("測試集前3各樣本的真實值:",y_test[:3])執行結果為:訓練集決定系數R2:0.9948176343427406測試集決定系數R2:0.8370187514220251測試集前3各樣本的預測值:[1.57256942.62596041.4354842]測試集前3各樣本的真實值:[1.3692.4132.007]3.XGBoost算法的應用舉例本章小結13本章從基學習器的組合方式角度介紹了不同的集成學習方法,并較詳細地介紹了當前主流兩大類的集成算法——Bagging算法和Boosting算法常用的框架,其中隨機森林算法是Bagging算法的一個擴展變體,AdaBoost,GBDT,XGBoost是Boosting家族中比較有代表性的算法。并給出了它們各自的Python應用實例。7.7XGBoost算法14XGBoost軟件包是對原始梯度提升算法的高效實現,常用于一些數據挖掘競賽中。在使用之前要先安裝。可以通過pipinstallxgboost在線安裝。也可以先下載whl文件,然后在本地安裝。XGBClassifier和XGBRegre
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 防患者走失管理制度
- 餐廳收銀員管理制度
- 餐廳蔬菜間管理制度
- 瓦斯檢查工復習試題及答案
- 漯河職業技術學院《MG動畫設計》2023-2024學年第二學期期末試卷
- 硅湖職業技術學院《福利年金與健康管理》2023-2024學年第二學期期末試卷
- 山東勞動職業技術學院《鋼琴合奏》2023-2024學年第二學期期末試卷
- 太原師范學院《機電產品質量管理》2023-2024學年第二學期期末試卷
- 鄂爾多斯職業學院《意向與表現》2023-2024學年第二學期期末試卷
- 九州職業技術學院《日語演講比賽》2023-2024學年第二學期期末試卷
- 2025年消控室考核試題及答案
- 衛健系統2025年上半年安全生產工作總結
- 第一章體育與健康基礎知識 第一節 科學發展體能 課件 2024-2025學年人教版初中體育與健康八年級全一冊
- 消除艾滋病、梅毒和乙肝母嬰傳播項目工作制度及流程(模板)
- 高三數學復習策略
- 2024年昆明房地產市場總結與預判正式版
- 2025年度老舊小區改造工程施工合同交底范本
- 門診檢查、檢驗項目規范制度
- 2025年視頻剪輯軟件市場調查報告
- 貴州省畢節市2023-2024學年高二下學期期末考試 政治 含答案
- 2025年度智能駕駛技術研發合同4篇
評論
0/150
提交評論