kaiyun官方网app下载app XGBoost:在Python中使用XGBoost
在 Python 中使用 XGBoost
下面对XGBoost的Python模块进行介绍,如下:
提供了 UCI Mushroom 数据集的 Python 示例。
安装
首先安装C++版本的XGBoost,然后进入源文件根目录的wrappers文件夹kaiyun体育,执行以下脚本安装Python模块
python setup.py install
安装完成后,导入XGBoost Python模块如下
import xgboost as xgb
数据接口
XGBoost可以加载libsvm格式的文本数据,加载的数据格式可以是Numpy二维数组和XGBoost二进制缓存文件,加载后的数据存放在对象DMatrix中。
dtrain = xgb.DMatrix('train.svm.txt')
dtest = xgb.DMatrix('test.svm.buffer')
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)
csr = scipy.sparse.csr_matrix( (dat, (row,col)) )
dtrain = xgb.DMatrix( csr )
dtrain = xgb.DMatrix('train.svm.txt')
dtrain.save_binary("train.buffer")
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采用键值格式保存参数。例如
* 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
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
提前终止计划
如果有评估数据,程序可以提前终止,从而找到最佳迭代次数。如果要提前终止程序kaiyun体育登录网页入口,参数 evals 中必须至少有一个评估数据。如果有多个,则使用最后一个。
训练(...,evals=evals开yun官网入口登录APP下载,early_stopping_rounds=10)
模型将一直训练,直到验证分数停止提高。验证错误需要至少每 early_stopping_rounds 减少一次才能继续训练。
如果发生提前停止,模型将有两个附加字段:bst.best_score 和 bst.best_iteration。请注意,train() 将返回上次迭代的模型,而不是最佳模型。
这与两个指标一起使用以最小化(RMSE,对数损失等)和最大化(MAP,NDCG,AUC)。
预言
在训练/加载模型并准备数据后,您就可以开始进行预测。
data = np.random.rand(7,10) # 7 entities, each contains 10 features
dtest = xgb.DMatrix( data, missing = -999.0 )
ypred = bst.predict( xgmat )
如果在训练期间启用了早期停止,则可以用最佳迭代进行预测。
ypred = bst.predict(xgmat,ntree_limit=bst.best_iteration)
我要评论