在C ++中存储随机森林

时间:2014-09-17 23:22:29

标签: c++ string decision-tree random-forest

我有随机森林方法生成的几个序列化决策树(目前作为预订中的一个长字符串)。我已经将这些字符串硬编码到类中,以便在调用构造函数后创建所有决策树。总结一下:

  1. 构造函数名为
  2. for循环遍历每个字符串(表示决策树)并将它们拆分为标记
  3. 处理每个标记(存储在字符串向量中)并创建决策树
  4. 现在,我的设置工作正常,但由于字符串很长,字符串拆分可能需要很长时间。我想优化这个过程,但需要考虑以下事项:

    1. 我可以直接将字符串存储为单独的标记,以避免字符串完全分裂但是由于需要许多“t.push_back(str)”语句(每个标记一个),我的CPP文件的大小会非常大)。这可能是最后的手段了。
    2. 我可以将字符串存储为二进制文件,但我不确定这是否会有所帮助,而且它不会是人类可读的。
    3. 我还确保我的树木已被修剪(即尽可能少地使用树木并对最大深度施加限制)
    4. C ++ 11在我的情况下不是一个选项
    5. 我很感激有关最佳做法或想法的任何想法或建议。

      更新

      #include <string>
      #include <vector>
      #include <iostream>
      
      std::vector<std::string> test(int elem){
          const char* t0[] = {"t00","t01"};
          const char* t1[] = {"t10","t11","t12"};
          std::vector<std::string> s;
          switch (elem){
              case 0:
                  s.assign(std::begin(t0), std::end(t0));
                  break;
              case 1:
                  s.assign(std::begin(t1), std::end(t1));
                  break;
              default:
                  break;
          }
          return s;
      }
      
      int main (){
          std::vector<std::string> t;
          t = test(0);
          std::cout << t.at(0) << std::endl;
          t = test(1);
          std::cout << t.at(2) << std::endl;
      }
      

0 个答案:

没有答案