如何在C/C++中使用在R中训练的模型(决策树)

How to use the model(decision tree) in C/C++ which trained in R?

本文关键字:模型 决策树 C++      更新时间:2023-10-16

我们有一个C++系统,我的意思是如何在我们的系统中集成模型?

我用R来训练决策树模型,像这样打印树:

     Conditional inference tree with 47 terminal nodes
Response:  label 
Inputs:  term_num, res_num, r0_pv_num, r0_dr, r0_tr, r0_qr, r0_cr, r0_td, r0_hit_tn, r0_hit_tidf, r0_hit_cidf, r0_hit_tnr, r0_tidfr, r0_cidfr, r0_fr, r1_pv_num, r1_dr, r1_tr, r1_qr, r1_cr, r1_td, r1_hit_tn, r1_hit_tidf, r1_hit_cidf, r1_hit_tnr, r1_tidfr, r1_cidfr, r1_fr, r2_pv_num, r2_dr, r2_tr, r2_qr, r2_cr, r2_td, r2_hit_tn, r2_hit_tidf, r2_hit_cidf, r2_hit_tnr, r2_tidfr, r2_cidfr, r2_fr, r3_pv_num, r3_dr, r3_tr, r3_qr, r3_cr, r3_td, r3_hit_tn, r3_hit_tidf, r3_hit_cidf, r3_hit_tnr, r3_tidfr, r3_cidfr, r3_fr 
Number of observations:  9944 
1) r3_fr <= 910; criterion = 1, statistic = 2800.604
  2) r1_tr <= 12; criterion = 1, statistic = 375.037
    3) r3_dr <= 4; criterion = 1, statistic = 107.044
      4) r0_tidfr <= 0.65; criterion = 1, statistic = 52.212
        5) r0_tr <= 0; criterion = 0.999, statistic = 19.047
          6)*  weights = 358 
        5) r0_tr > 0
          7) term_num <= 4; criterion = 0.994, statistic = 14.917
            8) r3_fr <= 496; criterion = 1, statistic = 20.334
              9)*  weights = 149 
            8) r3_fr > 496
              10)*  weights = 140 
          7) term_num > 4
            11)*  weights = 825 
      4) r0_tidfr > 0.65
        12)*  weights = 190 
    3) r3_dr > 4
      13) term_num <= 4; criterion = 1, statistic = 43.327
        14) r3_fr <= 613; criterion = 1, statistic = 37.962
          15)*  weights = 33 
        14) r3_fr > 613
          16)*  weights = 225
etc...

如何将此模型移植到我的C/C++系统中(打印中没有终端节点)。谢谢!

您需要采取以下步骤:

  1. 了解C++系统的接口是什么,即它需要什么输入,以及以何种形式运行决策树
  2. 按照步骤1中定义的方式与C++代码接口。这可以在内存中完成,也可以使用磁盘上的文件
  3. 运行决策树

在这种情况下,RcppR包可能是一个有趣的包。它有助于从R中运行C++代码。