Closed
Description
We need to clean our API for learners.
This includes following things:
-
No protected fields/members/method in public classes. Only private protected.
-
Learner class is sealed.
-
The trainer name types should follow the names used in the contexts (see The trainer name types should follow the names used in the contexts #2172)
-
ModelPameters for this Learner is also clean. (sealed, public documentation, no public constructor)
-
Options cleaning:
- They should be named Options, and all their base classes (except
LearnerInputBase*
) - Option should have meaning and proper way it initialize it self. We shouldn't accept int if in reality we use enum (FastTree EarlyStoppingMetric is an
int
but only accepts specific values #2521) or accept array of ints as a string separated by commapublic string CustomGains = "0,3,7,15,31";
- No short names.
- Standard names like:
/// <param name="labelColumnName">The name of the label column.</param>
/// <param name="featureColumnName">The name of the feature column.</param>
NumberOfIterations
,NumberOfThreads
,LearningRate
,L2Regularization
,L1Regularization
no (MaxIterations
,NumIterations
,NumThreads
,L2Weight
,L1Weight
)
- If we communicate with user (exceptions, channel messages), don't use DataKind values. No R4, U4, and so on, it should be float, uint, etc.
ignore for now:
-
Everything public has proper documentation.
-
We have samples of how use base call to trainer (no options) and call with options.
-
We have baseline tests for learner.
`