Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
12/01/21 13:40:55 (2 years ago)
Author:
chaider
Message:

#3140

  • some more refactoring
  • added possibility to set value of num nodes in infix parser
  • changed displaying style of number
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/3140_NumberSymbol/HeuristicLab.Algorithms.DataAnalysis/3.4/RandomForest/RandomForestModel.cs

    r17931 r18100  
    220220      }
    221221
    222       var constSy = new Constant();
     222      var numSy = new Number();
    223223      var varCondSy = new VariableCondition() { IgnoreSlope = true };
    224224
    225       var node = CreateRegressionTreeRec(rf.innerobj.trees, offset, offset + 1, constSy, varCondSy);
     225      var node = CreateRegressionTreeRec(rf.innerobj.trees, offset, offset + 1, numSy, varCondSy);
    226226
    227227      var startNode = new StartSymbol().CreateTreeNode();
     
    232232    }
    233233
    234     private ISymbolicExpressionTreeNode CreateRegressionTreeRec(double[] trees, int offset, int k, Constant constSy, VariableCondition varCondSy) {
     234    private ISymbolicExpressionTreeNode CreateRegressionTreeRec(double[] trees, int offset, int k, Number numSy, VariableCondition varCondSy) {
    235235
    236236      // alglib source for evaluation of one tree (dfprocessinternal)
     
    262262
    263263      if ((double)(trees[k]) == (double)(-1)) {
    264         var constNode = (ConstantTreeNode)constSy.CreateTreeNode();
    265         constNode.Value = trees[k + 1];
    266         return constNode;
     264        var numNode = (NumberTreeNode)numSy.CreateTreeNode();
     265        numNode.Value = trees[k + 1];
     266        return numNode;
    267267      } else {
    268268        var condNode = (VariableConditionTreeNode)varCondSy.CreateTreeNode();
     
    271271        condNode.Slope = double.PositiveInfinity;
    272272
    273         var left = CreateRegressionTreeRec(trees, offset, k + 3, constSy, varCondSy);
    274         var right = CreateRegressionTreeRec(trees, offset, offset + (int)Math.Round(trees[k + 2]), constSy, varCondSy);
     273        var left = CreateRegressionTreeRec(trees, offset, k + 3, numSy, varCondSy);
     274        var right = CreateRegressionTreeRec(trees, offset, offset + (int)Math.Round(trees[k + 2]), numSy, varCondSy);
    275275
    276276        condNode.AddSubtree(left); // not 100% correct because interpreter uses: if(x <= thres) left() else right() and RF uses if(x < thres) left() else right() (see above)
Note: See TracChangeset for help on using the changeset viewer.