假设我已经在 python 中成功训练了一个 XGBoost 机器学习模型。
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=7)
model = XGBClassifier()
model.fit(x_train, y_train)
y_pred = model.predict(x_test)
我想将此模型移植到另一个将用 C/C++ 编写的系统。要做到这一点,我需要知道 XGboost 训练模型的内部逻辑,如果我没猜错的话,将它们翻译成一系列 if-then-else 语句,如决策树。
如何才能做到这一点?如何找出 XGBoost 训练模型的内部逻辑以在另一个系统上实现它?
我正在使用 python 3.7。
最佳答案
m2cgen是一个很棒的包,可以将 Scikit-Learn 兼容模型转换为原始代码。如果您正在使用 XGBoosts sklearn 包装器(它看起来像您),那么您可以简单地调用如下内容:
model = XGBClassifier()
model.fit(x_train, y_train)
...
import m2cgen as m2c
with open('./model.c','w') as f:
code = m2c.export_to_c(model)
f.write(code)
这个包真正棒的是,它支持许多不同类型的模型,例如
还有一件事。 m2cgen 还支持多种语言,例如
我希望这有帮助!
关于python - 将用 python 训练的 XGBoost 模型移植到另一个用 C/C++ 编写的系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58143075/