将在Python中训练的XGBoost模型移植到用C/C++编写的另一个系统

假设我已经在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的模型转换为原始代码。如果你使用的是XGBoost的sklearn包装器(看起来你就是这样做的),那么你可以简单地调用如下代码:

model = XGBClassifier()model.fit(x_train, y_train) ...import m2cgen as m2cwith open('./model.c','w') as f:    code = m2c.export_to_c(model)    f.write(code)

这个包的真正强大之处在于它支持多种不同类型的模型,比如

  • 线性模型
  • 支持向量机(SVM)
  • 决策树
  • 随机森林
  • 提升方法

还有一点。m2cgen还支持多种语言,例如

  • C
  • C#
  • Dart
  • Go
  • Haskell
  • Java
  • JavaScript
  • PHP
  • PowerShell
  • Python
  • R
  • Visual Basic

希望这对你有帮助!

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注