gpt4 book ai didi

python - xgboost C api 不会产生与 Python 相同的结果

转载 作者:太空宇宙 更新时间:2023-11-03 11:36:33 24 4
gpt4 key购买 nike

我有一个非常简单的数据集(30 行,32 列)。

我编写了一个 Python 程序来加载数据并训练 XGBoost 模型,然后将模型保存到磁盘。

我还编译了一个使用 libxgboost (C api) 并加载模型进行推理的 C++ 程序。

当使用相同的保存模型时,Python 和 C++ 会针对相同的输入(单行全零)给出不同的结果。

xgboost 是 0.90,我已在此处附上所有文件(包括 numpy 数据文件):

https://www.dropbox.com/s/txao5ugq6mgssz8/xgboost_mismatch.tar?dl=0

这是两个程序的输出(源代码在 .tar 文件中):

Python 程序

(在构建模型时打印一些字符串,然后打印单个数字输出)

$ python3 jl_functions_tiny.py
Loading data
Creating model
Training model
Saving model
Deleting model
Loading model
Testing model
[587558.2]

C++程序

(发出一个数字,显然与单个 Python 数字输出不匹配)

$ ./jl_functions
628180.062500

最佳答案

Python 和 C++ 中的不同种子参数可能会导致不同的结果,因为在算法中使用了随机性,请尝试在第 11 行 xgb.XGBregressor 中设置 seed= 与 Python 和 C++ 中相同或甚至通过使用 numpy.random.seed(0) 的 numpy 和在 C++ 中来自 /workspace/include/xgboost/generic_parameters.h

的种子参数

关于python - xgboost C api 不会产生与 Python 相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58352787/

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