JASONCHENG96 2023-05-20 03:36 采纳率: 0%
浏览 98
已结题

希望对并行随机森林有研究的朋友给一些解答!

请别用chatgpt回答……我也有4

首先,不考虑预测,只考虑训练(构建)。在大数据集上:

现在有一个数据集,原本的算法是使用需要用信息增益分裂为一棵树,这棵树每一个结点都会是一个条件语句,同时是二叉分裂。最后会使用if-else嵌套语句,遍历整棵树的条件语句节点和样本,生成一个if else嵌套表达式。

目前我的想法是替换为并行随机森林,这样可以同时生成多棵树,训练速度会加快,那么问题来了。

1.我该如何使用if-else嵌套生成一个表达式,是将每棵子树先合成一个if-else语句,然后最后将所有语句合成一个总的if-else表达式吗?但是由于是放回抽取,可能会涉及到有些子表达式内有重合部分,该如何处理呢?

2.或者最后将随机森林合成一棵树,这样就不用考虑if-else合成问题了。但是为了提升训练速度,我才选择了并行随机森林,最后再把所有子树合成一棵树,会不会得不偿失。

希望对机器学习有深入研究者可以围绕随机森林指点一下!给我一个随机森林的处理办法!重金感谢!

  • 写回答

4条回答 默认 最新

  • AI迅剑 2023-05-20 07:55
    关注

    这个网页https://blog.csdn.net/gxf1027/article/details/117064775也许能帮助你

    #include <cmath>
    using namespace std;
    
    #include "RandomCLoquatForests.h"
    #include "UserInteraction2.h"
    
    int main()
    {
        // read training samples if necessary
        char filename[500] = "./DataSet/Classification/pendigits.tra";
        float** data = NULL;
        int* label = NULL;
        Dataset_info_C datainfo;
        InitalClassificationDataMatrixFormFile2(filename, data/*OUT*/, label/*OUT*/, datainfo/*OUT*/);
        // setting random forests parameters
        RandomCForests_info rfinfo;
        rfinfo.datainfo = datainfo;
        rfinfo.maxdepth = 40;
        rfinfo.ntrees = 500;
        rfinfo.mvariables = (int)sqrtf(datainfo.variables_num);
        rfinfo.minsamplessplit = 5;
        rfinfo.randomness = 1;
        // train forest
        LoquatCForest* loquatCForest = NULL;
        TrainRandomForestClassifier(data, label, rfinfo, loquatCForest /*OUT*/, 50);// print info every 50 trees
        float error_rate = 1.f;
        OOBErrorEstimate(data, label, loquatCForest, error_rate /*OUT*/);
        // save RF model, 0:xml, 1:plain text
        SaveRandomClassificationForestModel("Modelfile.xml", loquatCForest, 0);
        // clear the memory allocated for the entire forest
        ReleaseClassificationForest(&loquatCForest);
        // release money: data, label
        for (int i = 0; i < datainfo.samples_num; i++)
               delete[] data[i];
        delete[] data;
        delete[] label;
        return 0;
    }
    
    
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月20日
  • 修改了问题 5月20日
  • 修改了问题 5月20日
  • 修改了问题 5月20日
  • 展开全部