@@ -2869,7 +2869,6 @@ internal TreeEnsembleModelParameters(IHostEnvironment env, string name, Internal
2869
2869
// the trained ensemble to, for instance, resize arrays so that they are of the length
2870
2870
// the actual number of leaves/nodes, or remove unnecessary arrays, and so forth.
2871
2871
TrainedEnsemble = trainedEnsemble ;
2872
- CreateTreeEnsembleFromInternalDataStructure ( ) ;
2873
2872
InnerArgs = innerArgs ;
2874
2873
NumFeatures = numFeatures ;
2875
2874
@@ -2898,7 +2897,6 @@ protected TreeEnsembleModelParameters(IHostEnvironment env, string name, ModelLo
2898
2897
categoricalSplits = true ;
2899
2898
2900
2899
TrainedEnsemble = new InternalTreeEnsemble ( ctx , usingDefaultValues , categoricalSplits ) ;
2901
- CreateTreeEnsembleFromInternalDataStructure ( ) ;
2902
2900
MaxSplitFeatIdx = TrainedEnsemble . GetMaxFeatureIndex ( ) ;
2903
2901
2904
2902
InnerArgs = ctx . LoadStringOrNull ( ) ;
@@ -2919,14 +2917,6 @@ protected TreeEnsembleModelParameters(IHostEnvironment env, string name, ModelLo
2919
2917
OutputType = NumberType . Float ;
2920
2918
}
2921
2919
2922
- /// <summary>
2923
- /// This function should be implemented in derived classs to create strongly-typed TreeEnsemble
2924
- /// from <see cref="TrainedEnsemble"/> and possibly other internal attributes in
2925
- /// <see cref="TreeEnsembleModelParameters"/>. This also implies we always call this function
2926
- /// after initializing <see cref="TrainedEnsemble"/>.
2927
- /// </summary>
2928
- protected abstract void CreateTreeEnsembleFromInternalDataStructure ( ) ;
2929
-
2930
2920
[ BestFriend ]
2931
2921
private protected override void SaveCore ( ModelSaveContext ctx )
2932
2922
{
@@ -3400,33 +3390,30 @@ public TreeNode(Dictionary<string, object> keyValues)
3400
3390
/// </summary>
3401
3391
public abstract class TreeEnsembleModelParametersBasedOnRegressionTree : TreeEnsembleModelParameters
3402
3392
{
3403
- private TreeEnsemble < RegressionTree > _trainedTreeEnsemble ;
3404
-
3405
3393
/// <summary>
3406
3394
/// An ensemble of trees exposed to users. It is a wrapper on the <see langword="internal"/>
3407
3395
/// <see cref="InternalTreeEnsemble"/> in <see cref="ML.FastTree.TreeEnsemble{T}"/>.
3408
3396
/// </summary>
3409
- public TreeEnsemble < RegressionTree > TrainedTreeEnsemble => _trainedTreeEnsemble ;
3397
+ public RegressionTreeEnsemble TrainedTreeEnsemble { get ; }
3410
3398
3411
3399
[ BestFriend ]
3412
3400
internal TreeEnsembleModelParametersBasedOnRegressionTree ( IHostEnvironment env , string name , InternalTreeEnsemble trainedEnsemble , int numFeatures , string innerArgs )
3413
3401
: base ( env , name , trainedEnsemble , numFeatures , innerArgs )
3414
3402
{
3403
+ TrainedTreeEnsemble = CreateTreeEnsembleFromInternalDataStructure ( ) ;
3415
3404
}
3416
3405
3417
3406
protected TreeEnsembleModelParametersBasedOnRegressionTree ( IHostEnvironment env , string name , ModelLoadContext ctx , VersionInfo ver )
3418
3407
: base ( env , name , ctx , ver )
3419
3408
{
3409
+ TrainedTreeEnsemble = CreateTreeEnsembleFromInternalDataStructure ( ) ;
3420
3410
}
3421
3411
3422
- /// <summary>
3423
- /// See <see cref="TreeEnsembleModelParameters.CreateTreeEnsembleFromInternalDataStructure"/>.
3424
- /// </summary>
3425
- protected override void CreateTreeEnsembleFromInternalDataStructure ( )
3412
+ private RegressionTreeEnsemble CreateTreeEnsembleFromInternalDataStructure ( )
3426
3413
{
3427
3414
var trees = TrainedEnsemble . Trees . Select ( tree => new RegressionTree ( tree ) ) ;
3428
3415
var treeWeights = TrainedEnsemble . Trees . Select ( tree => tree . Weight ) ;
3429
- _trainedTreeEnsemble = new TreeEnsemble < RegressionTree > ( trees , treeWeights , TrainedEnsemble . Bias ) ;
3416
+ return new RegressionTreeEnsemble ( trees , treeWeights , TrainedEnsemble . Bias ) ;
3430
3417
}
3431
3418
}
3432
3419
@@ -3442,33 +3429,30 @@ protected override void CreateTreeEnsembleFromInternalDataStructure()
3442
3429
/// </summary>
3443
3430
public abstract class TreeEnsembleModelParametersBasedOnQuantileRegressionTree : TreeEnsembleModelParameters
3444
3431
{
3445
- private TreeEnsemble < QuantileRegressionTree > _trainedTreeEnsemble ;
3446
-
3447
3432
/// <summary>
3448
3433
/// An ensemble of trees exposed to users. It is a wrapper on the <see langword="internal"/>
3449
3434
/// <see cref="InternalTreeEnsemble"/> in <see cref="ML.FastTree.TreeEnsemble{T}"/>.
3450
3435
/// </summary>
3451
- public TreeEnsemble < QuantileRegressionTree > TrainedTreeEnsemble => _trainedTreeEnsemble ;
3436
+ public QuantileRegressionTreeEnsemble TrainedTreeEnsemble { get ; }
3452
3437
3453
3438
[ BestFriend ]
3454
3439
internal TreeEnsembleModelParametersBasedOnQuantileRegressionTree ( IHostEnvironment env , string name , InternalTreeEnsemble trainedEnsemble , int numFeatures , string innerArgs )
3455
3440
: base ( env , name , trainedEnsemble , numFeatures , innerArgs )
3456
3441
{
3442
+ TrainedTreeEnsemble = CreateTreeEnsembleFromInternalDataStructure ( ) ;
3457
3443
}
3458
3444
3459
3445
protected TreeEnsembleModelParametersBasedOnQuantileRegressionTree ( IHostEnvironment env , string name , ModelLoadContext ctx , VersionInfo ver )
3460
3446
: base ( env , name , ctx , ver )
3461
3447
{
3448
+ TrainedTreeEnsemble = CreateTreeEnsembleFromInternalDataStructure ( ) ;
3462
3449
}
3463
3450
3464
- /// <summary>
3465
- /// See <see cref="TreeEnsembleModelParameters.CreateTreeEnsembleFromInternalDataStructure"/>.
3466
- /// </summary>
3467
- protected override void CreateTreeEnsembleFromInternalDataStructure ( )
3451
+ private QuantileRegressionTreeEnsemble CreateTreeEnsembleFromInternalDataStructure ( )
3468
3452
{
3469
3453
var trees = TrainedEnsemble . Trees . Select ( tree => new QuantileRegressionTree ( ( InternalQuantileRegressionTree ) tree ) ) ;
3470
3454
var treeWeights = TrainedEnsemble . Trees . Select ( tree => tree . Weight ) ;
3471
- _trainedTreeEnsemble = new TreeEnsemble < QuantileRegressionTree > ( trees , treeWeights , TrainedEnsemble . Bias ) ;
3455
+ return new QuantileRegressionTreeEnsemble ( trees , treeWeights , TrainedEnsemble . Bias ) ;
3472
3456
}
3473
3457
}
3474
3458
}
0 commit comments