XGBoost:在Python中使用XGBoost

XGBoost:在Python中使用XGBoost在Python中使用XGBoost下面将介绍XGBoost的Python模块,内容如下:*编译及导入Python模块*数据接口*参数设置*训练模型l*提前终止程序*预测AwalkthroughpythonexampleforUCIMushroomdatasetisprovided.安装首先安装XGBoost的C++版本,然后进入源文件的根目录下

大家好,又见面了,我是你们的朋友全栈君。

在Python中使用XGBoost

下面将介绍XGBoost的Python模块,内容如下:
* 编译及导入Python模块
* 数据接口
* 参数设置
* 训练模型l
* 提前终止程序
* 预测

A walk through python example for UCI Mushroom dataset is provided.

安装

首先安装XGBoost的C++版本,然后进入源文件的根目录下的 wrappers文件夹执行如下脚本安装Python模块

python setup.py install

安装完成后按照如下方式导入XGBoost的Python模块

import xgboost as xgb

=

数据接口

XGBoost可以加载libsvm格式的文本数据,加载的数据格式可以为Numpy的二维数组和XGBoost的二进制的缓存文件。加载的数据存储在对象DMatrix中。

  • 加载libsvm格式的数据和二进制的缓存文件时可以使用如下方式
dtrain = xgb.DMatrix('train.svm.txt')
dtest = xgb.DMatrix('test.svm.buffer')
  • 加载numpy的数组到DMatrix对象时,可以用如下方式
data = np.random.rand(5,10) # 5 entities, each contains 10 features
label = np.random.randint(2, size=5) # binary target
dtrain = xgb.DMatrix( data, label=label)
  • scipy.sparse格式的数据转化为 DMatrix格式时,可以使用如下方式
csr = scipy.sparse.csr_matrix( (dat, (row,col)) )
dtrain = xgb.DMatrix( csr )
  • DMatrix 格式的数据保存成XGBoost的二进制格式,在下次加载时可以提高加载速度,使用方式如下
dtrain = xgb.DMatrix('train.svm.txt')
dtrain.save_binary("train.buffer")
  • 可以用如下方式处理 DMatrix中的缺失值:
dtrain = xgb.DMatrix( data, label=label, missing = -999.0)
  • 当需要给样本设置权重时,可以用如下方式
w = np.random.rand(5,1)
dtrain = xgb.DMatrix( data, label=label, missing = -999.0, weight=w)

参数设置

XGBoost使用key-value格式保存参数. Eg
* Booster(基本学习器)参数

param = {
  
  'bst:max_depth':2, 'bst:eta':1, 'silent':1, 'objective':'binary:logistic' }
param['nthread'] = 4
plst = param.items()
plst += [('eval_metric', 'auc')] # Multiple evals can be handled in this way
plst += [('eval_metric', 'ams@0')]
  • 还可以定义验证数据集,验证算法的性能
evallist  = [(dtest,'eval'), (dtrain,'train')]

=

训练模型

有了参数列表和数据就可以训练模型了
* 训练

num_round = 10
bst = xgb.train( plst, dtrain, num_round, evallist )
  • 保存模型
    在训练完成之后可以将模型保存下来,也可以查看模型内部的结构
bst.save_model('0001.model')
  • Dump Model and Feature Map
    You can dump the model to txt and review the meaning of model
# dump model
bst.dump_model('dump.raw.txt')
# dump model with feature map
bst.dump_model('dump.raw.txt','featmap.txt')
  • 加载模型
    通过如下方式可以加载模型
bst = xgb.Booster({
  
  'nthread':4}) #init model
bst.load_model("model.bin") # load data

=

提前终止程序

如果有评价数据,可以提前终止程序,这样可以找到最优的迭代次数。如果要提前终止程序必须至少有一个评价数据在参数evals中。 If there’s more than one, it will use the last.

train(..., evals=evals, early_stopping_rounds=10)

The model will train until the validation score stops improving. Validation error needs to decrease at least every early_stopping_rounds to continue training.

If early stopping occurs, the model will have two additional fields: bst.best_score and bst.best_iteration. Note that train() will return a model from the last iteration, not the best one.

This works with both metrics to minimize (RMSE, log loss, etc.) and to maximize (MAP, NDCG, AUC).

=

Prediction

After you training/loading a model and preparing the data, you can start to do prediction.

data = np.random.rand(7,10) # 7 entities, each contains 10 features
dtest = xgb.DMatrix( data, missing = -999.0 )
ypred = bst.predict( xgmat )

If early stopping is enabled during training, you can predict with the best iteration.

ypred = bst.predict(xgmat,ntree_limit=bst.best_iteration)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/143956.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 唯一约束和唯一索引区别是什么_db2违反唯一索引的约束

    唯一约束和唯一索引区别是什么_db2违反唯一索引的约束1.主键约束(PRIMARY KEY)1)主键用于唯一地标识表中的每一条记录,可以定义一列或多列为主键。2)是不可能(或很难)更新.3)主键列上没有任何两行具有相同值(即重复值),不允许空(NULL).4)主健可作外健,唯一索引不可;2.唯一性约束(UNIQUE)1)唯一性约束用来限制不受主键约束的列上的数据的唯一性,用于作为访问某行的可选手段

  • AMQP机制_cdm机制为什么停止了

    AMQP机制_cdm机制为什么停止了当前各种应用大量使用异步消息模型,并随之产生众多消息中间件产品及协议,标准的不一致使应用与中间件之间的耦合限制产品的选择,并增加维护成本。AMQP是一个提供统一消息服务的应用层标准协议,基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同开发语言等条件的限制。        当然这种降低耦合的机制是基于与上层产品,语言无关的协议。AMQP协议是一种二进制协议,提供

    2022年10月31日
  • 无锁环形缓冲区的详细解释

    无锁环形缓冲区的详细解释由以下博客的分析可以知道,内核的kfifo使用了很多技巧以实现其高效性。比如,通过限定写入的数据不能溢出和内存屏障实现在单进程写单进程读的情况下不使用锁。因为锁是使用在共享资源可能存在冲突的情况下。还用设置buffer缓冲区的大小为2的幂次方,以简化求模运算。通过使用unsignedint为kfifo的下标,可以不用考虑每次下标超过size时对下表进行取模运算赋值,这里使用到了无符号整数的溢出回

  • 黑马ssm项目_黑马程序员社区

    黑马ssm项目_黑马程序员社区上传到https://github.com/ahn6666/ssm2021.6.13

    2022年10月31日
  • 网易视频 java_合并网易视频中英文字幕文件,解决Java输入输出的中文乱码问题…「建议收藏」

    网易视频 java_合并网易视频中英文字幕文件,解决Java输入输出的中文乱码问题…「建议收藏」packagehebingsrt;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.FileReader;importjava.i…

  • 如何实现 MySQL 删除重复记录并且只保留一条

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:千g blog.csdn.net/n950814abc/article/details/82284838 最近…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号