Changeset 18132 for trunk/HeuristicLab.Algorithms.DataAnalysis/3.4/RandomForest/RandomForestModelFull.cs
- Timestamp:
- 12/15/21 11:50:57 (2 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/3140_NumberSymbol (added) merged: 18091,18093,18100,18112-18121,18123-18131
- Property svn:mergeinfo changed
-
trunk/HeuristicLab.Algorithms.DataAnalysis
- Property svn:mergeinfo changed
/branches/3140_NumberSymbol/HeuristicLab.Algorithms.DataAnalysis (added) merged: 18100,18113-18114,18116
- Property svn:mergeinfo changed
-
trunk/HeuristicLab.Algorithms.DataAnalysis/3.4
- Property svn:mergeinfo changed
/branches/3140_NumberSymbol/HeuristicLab.Algorithms.DataAnalysis/3.4 (added) merged: 18100,18113-18114,18116
- Property svn:mergeinfo changed
-
trunk/HeuristicLab.Algorithms.DataAnalysis/3.4/RandomForest/RandomForestModelFull.cs
r17931 r18132 199 199 } 200 200 201 var constSy = new Constant();201 var numSy = new Number(); 202 202 var varCondSy = new VariableCondition() { IgnoreSlope = true }; 203 203 204 var node = CreateRegressionTreeRec(rf.innerobj.trees, offset, offset + 1, constSy, varCondSy);204 var node = CreateRegressionTreeRec(rf.innerobj.trees, offset, offset + 1, numSy, varCondSy); 205 205 206 206 var startNode = new StartSymbol().CreateTreeNode(); … … 211 211 } 212 212 213 private ISymbolicExpressionTreeNode CreateRegressionTreeRec(double[] trees, int offset, int k, Constant constSy, VariableCondition varCondSy) {213 private ISymbolicExpressionTreeNode CreateRegressionTreeRec(double[] trees, int offset, int k, Number numSy, VariableCondition varCondSy) { 214 214 215 215 // alglib source for evaluation of one tree (dfprocessinternal) … … 240 240 // } 241 241 242 if ( (double)(trees[k]) == (double)(-1)) {243 var constNode = (ConstantTreeNode)constSy.CreateTreeNode();244 constNode.Value = trees[k + 1];245 return constNode;242 if (trees[k] == -1) { 243 var numNode = (NumberTreeNode)numSy.CreateTreeNode(); 244 numNode.Value = trees[k + 1]; 245 return numNode; 246 246 } else { 247 247 var condNode = (VariableConditionTreeNode)varCondSy.CreateTreeNode(); … … 250 250 condNode.Slope = double.PositiveInfinity; 251 251 252 var left = CreateRegressionTreeRec(trees, offset, k + 3, constSy, varCondSy);253 var right = CreateRegressionTreeRec(trees, offset, offset + (int)Math.Round(trees[k + 2]), constSy, varCondSy);252 var left = CreateRegressionTreeRec(trees, offset, k + 3, numSy, varCondSy); 253 var right = CreateRegressionTreeRec(trees, offset, offset + (int)Math.Round(trees[k + 2]), numSy, varCondSy); 254 254 255 255 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.