gpt4 book ai didi

python - 如何在不从多 :prob 的开头开始的情况下,从其最后一次迭代中提升现有 xgboost 模型

转载 作者:太空宇宙 更新时间:2023-11-04 03:00:30 25 4
gpt4 key购买 nike

我读到这是 xgboost 的优势之一,您可以在现有模型上进行训练。假设我对模型进行了 100 次迭代训练,并希望从那里重新开始以完成另外 100 次迭代,而不是从头开始重做所有内容..

我在 xgboost 演示示例中找到了这个,从这里 https://github.com/dmlc/xgboost/blob/master/demo/guide-python/evals_result.py

bst = xgb.train( param, dtrain, 1, watchlist )
ptrain = bst.predict(dtrain, output_margin=True)
ptest = bst.predict(dtest, output_margin=True)
dtrain.set_base_margin(ptrain)
dtest.set_base_margin(ptest)
print ('this is result of running from initial prediction')
bst = xgb.train( param, dtrain, 1, watchlist )

但是这个特定的例子是针对目标的,二进制:逻辑..如果我这样做,我会在 set_base_margin

上收到这个错误
TypeError: only length-1 arrays can be converted to Python scalars

我有一个经过 100 次迭代训练的模型。我想再进行 100 次迭代,但不想从头开始。

任何帮助..??

最佳答案

从 xgboost repo https://github.com/dmlc/xgboost/issues/235 中的这个问题中找出答案

Yes, this is something we overlooked when designing the interface, you should be able to set_margin with flattened array.

set_base_margin 需要一个一维数组,因此您只需要展平边际预测,然后将其传递给 set_base_margin

在上面的代码中,在设置基本边距之前添加这些行

ptrain = ptrain.reshape(-1, 1)
ptest = ptest.reshape(-1, 1)

并且在新的 dtrain 上使用更新的 base margins 进行训练将从那个阶段继续迭代

关于python - 如何在不从多 :prob 的开头开始的情况下,从其最后一次迭代中提升现有 xgboost 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41042599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com