




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 办事处生产安全培训课件
- 刺猬设计包装课件
- 别致胡花瓶胡课件
- 化工企业安全管理培训课件
- 别把药丸当糖吃课件
- 化工企业培训课件
- 化工三传一反课件
- 初夏安全培训记录课件
- 内部交通安全培训课件
- 初中校园安全培训内容课件
- 人工搬运培训课件
- 2025年哈尔滨投资集团有限责任公司校园招聘笔试备考题库含答案详解(精练)
- DB4406∕T 47-2024 养老机构安全风险管理规范
- 城乡垃圾压缩站建设施工组织设计方案
- 安徽省合肥市六校联考2025-2026年高三上学期开学考试语文试卷(含答案)
- 2025年北京市中考英语真题卷含答案解析
- (2025年标准)课时合同转让协议书
- 风力发电机自动消防系统
- 公益性岗位业务培训课件
- 屋顶分布式光伏发电项目施工组织设计
- 学校安保培训课件
评论
0/150
提交评论