From 58bd5b81b3dac15198fbb448ed2c609a3b5d962a Mon Sep 17 00:00:00 2001 From: Abhishek Goswami Date: Wed, 2 Jan 2019 21:52:40 +0000 Subject: [PATCH 1/3] rename from Arguments to Options (only for occurences of Action in the codebase --- .../FastTreeArguments.cs | 20 ++++---- .../FastTreeClassification.cs | 14 +++--- src/Microsoft.ML.FastTree/FastTreeRanking.cs | 18 +++---- .../FastTreeRegression.cs | 18 +++---- src/Microsoft.ML.FastTree/FastTreeTweedie.cs | 16 +++--- .../GamClassification.cs | 10 ++-- src/Microsoft.ML.FastTree/GamRegression.cs | 10 ++-- src/Microsoft.ML.FastTree/GamTrainer.cs | 8 +-- .../RandomForestClassification.cs | 18 +++---- .../RandomForestRegression.cs | 24 ++++----- .../TreeTrainersCatalog.cs | 16 +++--- .../TreeTrainersStatic.cs | 6 +-- .../HalLearnersCatalog.cs | 4 +- .../OlsLinearRegression.cs | 20 ++++---- .../SymSgdClassificationTrainer.cs | 16 +++--- .../KMeansCatalog.cs | 2 +- .../KMeansPlusPlusTrainer.cs | 22 ++++---- .../KMeansStatic.cs | 2 +- .../MatrixFactorizationStatic.cs | 2 +- .../MatrixFactorizationTrainer.cs | 14 +++--- .../RecommenderCatalog.cs | 2 +- .../FactorizationMachineCatalog.cs | 2 +- .../FactorizationMachineStatic.cs | 2 +- .../FactorizationMachineTrainer.cs | 20 ++++---- .../LogisticRegression/LbfgsStatic.cs | 50 +++++++++---------- .../LogisticRegression/LogisticRegression.cs | 28 +++++------ .../MulticlassLogisticRegression.cs | 24 ++++----- .../MultiClass/MetaMulticlassTrainer.cs | 2 +- .../Standard/Online/AveragedPerceptron.cs | 24 ++++----- .../Standard/Online/LinearSvm.cs | 18 +++---- .../Standard/Online/OnlineGradientDescent.cs | 24 ++++----- .../Standard/Online/OnlineLearnerStatic.cs | 8 +-- .../PoissonRegression/PoissonRegression.cs | 24 ++++----- .../Standard/SdcaBinary.cs | 38 +++++++------- .../Standard/SdcaMultiClass.cs | 16 +++--- .../Standard/SdcaRegression.cs | 18 +++---- .../Standard/SgdStatic.cs | 10 ++-- .../StandardLearnersCatalog.cs | 22 ++++---- .../SdcaStaticExtensions.cs | 10 ++-- .../Common/EntryPoints/core_ep-list.tsv | 44 ++++++++-------- .../UnitTests/TestEntryPoints.cs | 24 ++++----- .../TestPredictors.cs | 16 +++--- 42 files changed, 343 insertions(+), 343 deletions(-) diff --git a/src/Microsoft.ML.FastTree/FastTreeArguments.cs b/src/Microsoft.ML.FastTree/FastTreeArguments.cs index e14fd33db0..83ea594fc8 100644 --- a/src/Microsoft.ML.FastTree/FastTreeArguments.cs +++ b/src/Microsoft.ML.FastTree/FastTreeArguments.cs @@ -8,10 +8,10 @@ using Microsoft.ML.Internal.Internallearn; using Microsoft.ML.Trainers.FastTree; -[assembly: EntryPointModule(typeof(FastTreeBinaryClassificationTrainer.Arguments))] -[assembly: EntryPointModule(typeof(FastTreeRegressionTrainer.Arguments))] -[assembly: EntryPointModule(typeof(FastTreeTweedieTrainer.Arguments))] -[assembly: EntryPointModule(typeof(FastTreeRankingTrainer.Arguments))] +[assembly: EntryPointModule(typeof(FastTreeBinaryClassificationTrainer.Options))] +[assembly: EntryPointModule(typeof(FastTreeRegressionTrainer.Options))] +[assembly: EntryPointModule(typeof(FastTreeTweedieTrainer.Options))] +[assembly: EntryPointModule(typeof(FastTreeRankingTrainer.Options))] namespace Microsoft.ML.Trainers.FastTree { @@ -24,7 +24,7 @@ internal interface IFastTreeTrainerFactory : IComponentFactory public sealed partial class FastTreeBinaryClassificationTrainer { [TlcModule.Component(Name = LoadNameValue, FriendlyName = UserNameValue, Desc = Summary)] - public sealed class Arguments : BoostedTreeArgs, IFastTreeTrainerFactory + public sealed class Options : BoostedTreeArgs, IFastTreeTrainerFactory { [Argument(ArgumentType.LastOccurenceWins, HelpText = "Should we use derivatives optimized for unbalanced sets", ShortName = "us")] [TGUI(Label = "Optimize for unbalanced")] @@ -37,9 +37,9 @@ public sealed class Arguments : BoostedTreeArgs, IFastTreeTrainerFactory public sealed partial class FastTreeRegressionTrainer { [TlcModule.Component(Name = LoadNameValue, FriendlyName = UserNameValue, Desc = Summary)] - public sealed class Arguments : BoostedTreeArgs, IFastTreeTrainerFactory + public sealed class Options : BoostedTreeArgs, IFastTreeTrainerFactory { - public Arguments() + public Options() { EarlyStoppingMetrics = 1; // Use L1 by default. } @@ -51,7 +51,7 @@ public Arguments() public sealed partial class FastTreeTweedieTrainer { [TlcModule.Component(Name = LoadNameValue, FriendlyName = UserNameValue, Desc = Summary)] - public sealed class Arguments : BoostedTreeArgs, IFastTreeTrainerFactory + public sealed class Options : BoostedTreeArgs, IFastTreeTrainerFactory { // REVIEW: It is possible to estimate this index parameter from the distribution of data, using // a combination of univariate optimization and grid search, following section 4.2 of the paper. However @@ -68,7 +68,7 @@ public sealed class Arguments : BoostedTreeArgs, IFastTreeTrainerFactory public sealed partial class FastTreeRankingTrainer { [TlcModule.Component(Name = LoadNameValue, FriendlyName = UserNameValue, Desc = Summary)] - public sealed class Arguments : BoostedTreeArgs, IFastTreeTrainerFactory + public sealed class Options : BoostedTreeArgs, IFastTreeTrainerFactory { [Argument(ArgumentType.LastOccurenceWins, HelpText = "Comma seperated list of gains associated to each relevance label.", ShortName = "gains")] [TGUI(NoSweep = true)] @@ -105,7 +105,7 @@ public sealed class Arguments : BoostedTreeArgs, IFastTreeTrainerFactory [TGUI(NotGui = true)] public bool NormalizeQueryLambdas; - public Arguments() + public Options() { EarlyStoppingMetrics = 1; } diff --git a/src/Microsoft.ML.FastTree/FastTreeClassification.cs b/src/Microsoft.ML.FastTree/FastTreeClassification.cs index be17d13661..1b921bf5b4 100644 --- a/src/Microsoft.ML.FastTree/FastTreeClassification.cs +++ b/src/Microsoft.ML.FastTree/FastTreeClassification.cs @@ -17,7 +17,7 @@ using Microsoft.ML.Trainers.FastTree.Internal; using Microsoft.ML.Training; -[assembly: LoadableClass(FastTreeBinaryClassificationTrainer.Summary, typeof(FastTreeBinaryClassificationTrainer), typeof(FastTreeBinaryClassificationTrainer.Arguments), +[assembly: LoadableClass(FastTreeBinaryClassificationTrainer.Summary, typeof(FastTreeBinaryClassificationTrainer), typeof(FastTreeBinaryClassificationTrainer.Options), new[] { typeof(SignatureBinaryClassifierTrainer), typeof(SignatureTrainer), typeof(SignatureTreeEnsembleTrainer), typeof(SignatureFeatureScorerTrainer) }, FastTreeBinaryClassificationTrainer.UserNameValue, FastTreeBinaryClassificationTrainer.LoadNameValue, @@ -103,7 +103,7 @@ private static IPredictorProducing Create(IHostEnvironment env, ModelLoad /// public sealed partial class FastTreeBinaryClassificationTrainer : - BoostingFastTreeTrainerBase>, IPredictorWithFeatureWeights> + BoostingFastTreeTrainerBase>, IPredictorWithFeatureWeights> { /// /// The LoadName for the assembly containing the trainer. @@ -136,7 +136,7 @@ public FastTreeBinaryClassificationTrainer(IHostEnvironment env, int numTrees = Defaults.NumTrees, int minDatapointsInLeaves = Defaults.MinDocumentsInLeaves, double learningRate = Defaults.LearningRates, - Action advancedSettings = null) + Action advancedSettings = null) : base(env, TrainerUtils.MakeBoolScalarLabel(labelColumn), featureColumn, weightColumn, null, numLeaves, numTrees, minDatapointsInLeaves, learningRate, advancedSettings) { // Set the sigmoid parameter to the 2 * learning rate, for traditional FastTreeClassification loss @@ -144,9 +144,9 @@ public FastTreeBinaryClassificationTrainer(IHostEnvironment env, } /// - /// Initializes a new instance of by using the legacy class. + /// Initializes a new instance of by using the legacy class. /// - internal FastTreeBinaryClassificationTrainer(IHostEnvironment env, Arguments args) + internal FastTreeBinaryClassificationTrainer(IHostEnvironment env, Options args) : base(env, args, TrainerUtils.MakeBoolScalarLabel(args.LabelColumn)) { // Set the sigmoid parameter to the 2 * learning rate, for traditional FastTreeClassification loss @@ -402,14 +402,14 @@ public static partial class FastTree ShortName = FastTreeBinaryClassificationTrainer.ShortName, XmlInclude = new[] { @"", @"" })] - public static CommonOutputs.BinaryClassificationOutput TrainBinary(IHostEnvironment env, FastTreeBinaryClassificationTrainer.Arguments input) + public static CommonOutputs.BinaryClassificationOutput TrainBinary(IHostEnvironment env, FastTreeBinaryClassificationTrainer.Options input) { Contracts.CheckValue(env, nameof(env)); var host = env.Register("TrainFastTree"); host.CheckValue(input, nameof(input)); EntryPointUtils.CheckInputArgs(host, input); - return LearnerEntryPointsUtils.Train(host, input, + return LearnerEntryPointsUtils.Train(host, input, () => new FastTreeBinaryClassificationTrainer(host, input), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumn), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.WeightColumn), diff --git a/src/Microsoft.ML.FastTree/FastTreeRanking.cs b/src/Microsoft.ML.FastTree/FastTreeRanking.cs index 0c967ab1e5..372cccb6f4 100644 --- a/src/Microsoft.ML.FastTree/FastTreeRanking.cs +++ b/src/Microsoft.ML.FastTree/FastTreeRanking.cs @@ -20,7 +20,7 @@ using Microsoft.ML.Training; // REVIEW: Do we really need all these names? -[assembly: LoadableClass(FastTreeRankingTrainer.Summary, typeof(FastTreeRankingTrainer), typeof(FastTreeRankingTrainer.Arguments), +[assembly: LoadableClass(FastTreeRankingTrainer.Summary, typeof(FastTreeRankingTrainer), typeof(FastTreeRankingTrainer.Options), new[] { typeof(SignatureRankerTrainer), typeof(SignatureTrainer), typeof(SignatureTreeEnsembleTrainer), typeof(SignatureFeatureScorerTrainer) }, FastTreeRankingTrainer.UserNameValue, FastTreeRankingTrainer.LoadNameValue, @@ -43,7 +43,7 @@ namespace Microsoft.ML.Trainers.FastTree { /// public sealed partial class FastTreeRankingTrainer - : BoostingFastTreeTrainerBase, FastTreeRankingModelParameters> + : BoostingFastTreeTrainerBase, FastTreeRankingModelParameters> { internal const string LoadNameValue = "FastTreeRanking"; internal const string UserNameValue = "FastTree (Boosted Trees) Ranking"; @@ -81,16 +81,16 @@ public FastTreeRankingTrainer(IHostEnvironment env, int numTrees = Defaults.NumTrees, int minDatapointsInLeaves = Defaults.MinDocumentsInLeaves, double learningRate = Defaults.LearningRates, - Action advancedSettings = null) + Action advancedSettings = null) : base(env, TrainerUtils.MakeR4ScalarColumn(labelColumn), featureColumn, weightColumn, groupIdColumn, numLeaves, numTrees, minDatapointsInLeaves, learningRate, advancedSettings) { Host.CheckNonEmpty(groupIdColumn, nameof(groupIdColumn)); } /// - /// Initializes a new instance of by using the legacy class. + /// Initializes a new instance of by using the legacy class. /// - internal FastTreeRankingTrainer(IHostEnvironment env, Arguments args) + internal FastTreeRankingTrainer(IHostEnvironment env, Options args) : base(env, args, TrainerUtils.MakeR4ScalarColumn(args.LabelColumn)) { } @@ -548,7 +548,7 @@ private enum DupeIdInfo // Keeps track of labels of top 3 documents per query public short[][] TrainQueriesTopLabels; - public LambdaRankObjectiveFunction(Dataset trainset, short[] labels, Arguments args, IParallelTraining parallelTraining) + public LambdaRankObjectiveFunction(Dataset trainset, short[] labels, Options args, IParallelTraining parallelTraining) : base(trainset, args.LearningRates, args.Shrinkage, @@ -646,7 +646,7 @@ private void SetupSecondaryGains(Arguments args) } #endif - private void SetupBaselineRisk(Arguments args) + private void SetupBaselineRisk(Options args) { double[] scores = Dataset.Skeleton.GetData("BaselineScores"); if (scores == null) @@ -1162,14 +1162,14 @@ public static partial class FastTree ShortName = FastTreeRankingTrainer.ShortName, XmlInclude = new[] { @"", @""})] - public static CommonOutputs.RankingOutput TrainRanking(IHostEnvironment env, FastTreeRankingTrainer.Arguments input) + public static CommonOutputs.RankingOutput TrainRanking(IHostEnvironment env, FastTreeRankingTrainer.Options input) { Contracts.CheckValue(env, nameof(env)); var host = env.Register("TrainFastTree"); host.CheckValue(input, nameof(input)); EntryPointUtils.CheckInputArgs(host, input); - return LearnerEntryPointsUtils.Train(host, input, + return LearnerEntryPointsUtils.Train(host, input, () => new FastTreeRankingTrainer(host, input), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumn), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.WeightColumn), diff --git a/src/Microsoft.ML.FastTree/FastTreeRegression.cs b/src/Microsoft.ML.FastTree/FastTreeRegression.cs index 2cb321fafe..a305b13854 100644 --- a/src/Microsoft.ML.FastTree/FastTreeRegression.cs +++ b/src/Microsoft.ML.FastTree/FastTreeRegression.cs @@ -15,7 +15,7 @@ using Microsoft.ML.Trainers.FastTree.Internal; using Microsoft.ML.Training; -[assembly: LoadableClass(FastTreeRegressionTrainer.Summary, typeof(FastTreeRegressionTrainer), typeof(FastTreeRegressionTrainer.Arguments), +[assembly: LoadableClass(FastTreeRegressionTrainer.Summary, typeof(FastTreeRegressionTrainer), typeof(FastTreeRegressionTrainer.Options), new[] { typeof(SignatureRegressorTrainer), typeof(SignatureTrainer), typeof(SignatureTreeEnsembleTrainer), typeof(SignatureFeatureScorerTrainer) }, FastTreeRegressionTrainer.UserNameValue, FastTreeRegressionTrainer.LoadNameValue, @@ -35,7 +35,7 @@ namespace Microsoft.ML.Trainers.FastTree { /// public sealed partial class FastTreeRegressionTrainer - : BoostingFastTreeTrainerBase, FastTreeRegressionModelParameters> + : BoostingFastTreeTrainerBase, FastTreeRegressionModelParameters> { public const string LoadNameValue = "FastTreeRegression"; internal const string UserNameValue = "FastTree (Boosted Trees) Regression"; @@ -71,15 +71,15 @@ public FastTreeRegressionTrainer(IHostEnvironment env, int numTrees = Defaults.NumTrees, int minDatapointsInLeaves = Defaults.MinDocumentsInLeaves, double learningRate = Defaults.LearningRates, - Action advancedSettings = null) + Action advancedSettings = null) : base(env, TrainerUtils.MakeR4ScalarColumn(labelColumn), featureColumn, weightColumn, null, numLeaves, numTrees, minDatapointsInLeaves, learningRate, advancedSettings) { } /// - /// Initializes a new instance of by using the legacy class. + /// Initializes a new instance of by using the legacy class. /// - internal FastTreeRegressionTrainer(IHostEnvironment env, Arguments args) + internal FastTreeRegressionTrainer(IHostEnvironment env, Options args) : base(env, args, TrainerUtils.MakeR4ScalarColumn(args.LabelColumn)) { } @@ -386,7 +386,7 @@ internal sealed class ObjectiveImpl : ObjectiveFunctionBase, IStepSearch { private readonly float[] _labels; - public ObjectiveImpl(Dataset trainData, RegressionGamTrainer.Arguments args) : + public ObjectiveImpl(Dataset trainData, RegressionGamTrainer.Options args) : base( trainData, args.LearningRates, @@ -399,7 +399,7 @@ public ObjectiveImpl(Dataset trainData, RegressionGamTrainer.Arguments args) : _labels = GetDatasetRegressionLabels(trainData); } - public ObjectiveImpl(Dataset trainData, Arguments args) + public ObjectiveImpl(Dataset trainData, Options args) : base( trainData, args.LearningRates, @@ -501,14 +501,14 @@ public static partial class FastTree ShortName = FastTreeRegressionTrainer.ShortName, XmlInclude = new[] { @"", @""})] - public static CommonOutputs.RegressionOutput TrainRegression(IHostEnvironment env, FastTreeRegressionTrainer.Arguments input) + public static CommonOutputs.RegressionOutput TrainRegression(IHostEnvironment env, FastTreeRegressionTrainer.Options input) { Contracts.CheckValue(env, nameof(env)); var host = env.Register("TrainFastTree"); host.CheckValue(input, nameof(input)); EntryPointUtils.CheckInputArgs(host, input); - return LearnerEntryPointsUtils.Train(host, input, + return LearnerEntryPointsUtils.Train(host, input, () => new FastTreeRegressionTrainer(host, input), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumn), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.WeightColumn), diff --git a/src/Microsoft.ML.FastTree/FastTreeTweedie.cs b/src/Microsoft.ML.FastTree/FastTreeTweedie.cs index 8e9234c808..4b4738c9fe 100644 --- a/src/Microsoft.ML.FastTree/FastTreeTweedie.cs +++ b/src/Microsoft.ML.FastTree/FastTreeTweedie.cs @@ -16,7 +16,7 @@ using Microsoft.ML.Trainers.FastTree.Internal; using Microsoft.ML.Training; -[assembly: LoadableClass(FastTreeTweedieTrainer.Summary, typeof(FastTreeTweedieTrainer), typeof(FastTreeTweedieTrainer.Arguments), +[assembly: LoadableClass(FastTreeTweedieTrainer.Summary, typeof(FastTreeTweedieTrainer), typeof(FastTreeTweedieTrainer.Options), new[] { typeof(SignatureRegressorTrainer), typeof(SignatureTrainer), typeof(SignatureTreeEnsembleTrainer), typeof(SignatureFeatureScorerTrainer) }, FastTreeTweedieTrainer.UserNameValue, FastTreeTweedieTrainer.LoadNameValue, @@ -33,7 +33,7 @@ namespace Microsoft.ML.Trainers.FastTree // https://arxiv.org/pdf/1508.06378.pdf /// public sealed partial class FastTreeTweedieTrainer - : BoostingFastTreeTrainerBase, FastTreeTweedieModelParameters> + : BoostingFastTreeTrainerBase, FastTreeTweedieModelParameters> { internal const string LoadNameValue = "FastTreeTweedieRegression"; internal const string UserNameValue = "FastTree (Boosted Trees) Tweedie Regression"; @@ -68,7 +68,7 @@ public FastTreeTweedieTrainer(IHostEnvironment env, int numTrees = Defaults.NumTrees, int minDatapointsInLeaves = Defaults.MinDocumentsInLeaves, double learningRate = Defaults.LearningRates, - Action advancedSettings = null) + Action advancedSettings = null) : base(env, TrainerUtils.MakeR4ScalarColumn(labelColumn), featureColumn, weightColumn, null, numLeaves, numTrees, minDatapointsInLeaves, learningRate, advancedSettings) { Host.CheckNonEmpty(labelColumn, nameof(labelColumn)); @@ -78,9 +78,9 @@ public FastTreeTweedieTrainer(IHostEnvironment env, } /// - /// Initializes a new instance of by using the legacy class. + /// Initializes a new instance of by using the legacy class. /// - internal FastTreeTweedieTrainer(IHostEnvironment env, Arguments args) + internal FastTreeTweedieTrainer(IHostEnvironment env, Options args) : base(env, args, TrainerUtils.MakeR4ScalarColumn(args.LabelColumn)) { Initialize(); @@ -336,7 +336,7 @@ private sealed class ObjectiveImpl : ObjectiveFunctionBase, IStepSearch private readonly Double _index2; // 2 minus the index parameter. private readonly Double _maxClamp; - public ObjectiveImpl(Dataset trainData, Arguments args) + public ObjectiveImpl(Dataset trainData, Options args) : base( trainData, args.LearningRates, @@ -516,14 +516,14 @@ public static partial class FastTree UserName = FastTreeTweedieTrainer.UserNameValue, ShortName = FastTreeTweedieTrainer.ShortName, XmlInclude = new[] { @"" })] - public static CommonOutputs.RegressionOutput TrainTweedieRegression(IHostEnvironment env, FastTreeTweedieTrainer.Arguments input) + public static CommonOutputs.RegressionOutput TrainTweedieRegression(IHostEnvironment env, FastTreeTweedieTrainer.Options input) { Contracts.CheckValue(env, nameof(env)); var host = env.Register("TrainTweeedie"); host.CheckValue(input, nameof(input)); EntryPointUtils.CheckInputArgs(host, input); - return LearnerEntryPointsUtils.Train(host, input, + return LearnerEntryPointsUtils.Train(host, input, () => new FastTreeTweedieTrainer(host, input), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumn), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.WeightColumn), diff --git a/src/Microsoft.ML.FastTree/GamClassification.cs b/src/Microsoft.ML.FastTree/GamClassification.cs index 3f234f2ca8..b80e943762 100644 --- a/src/Microsoft.ML.FastTree/GamClassification.cs +++ b/src/Microsoft.ML.FastTree/GamClassification.cs @@ -17,7 +17,7 @@ using Microsoft.ML.Training; [assembly: LoadableClass(BinaryClassificationGamTrainer.Summary, - typeof(BinaryClassificationGamTrainer), typeof(BinaryClassificationGamTrainer.Arguments), + typeof(BinaryClassificationGamTrainer), typeof(BinaryClassificationGamTrainer.Options), new[] { typeof(SignatureBinaryClassifierTrainer), typeof(SignatureTrainer), typeof(SignatureFeatureScorerTrainer) }, BinaryClassificationGamTrainer.UserNameValue, BinaryClassificationGamTrainer.LoadNameValue, @@ -30,9 +30,9 @@ namespace Microsoft.ML.Trainers.FastTree { public sealed class BinaryClassificationGamTrainer : - GamTrainerBase>, IPredictorProducing> + GamTrainerBase>, IPredictorProducing> { - public sealed class Arguments : ArgumentsBase + public sealed class Options : ArgumentsBase { [Argument(ArgumentType.LastOccurenceWins, HelpText = "Should we use derivatives optimized for unbalanced sets", ShortName = "us")] [TGUI(Label = "Optimize for unbalanced")] @@ -50,7 +50,7 @@ public sealed class Arguments : ArgumentsBase /// /// Initializes a new instance of /// - internal BinaryClassificationGamTrainer(IHostEnvironment env, Arguments args) + internal BinaryClassificationGamTrainer(IHostEnvironment env, Options args) : base(env, args, LoadNameValue, TrainerUtils.MakeBoolScalarLabel(args.LabelColumn)) { _sigmoidParameter = 1; @@ -74,7 +74,7 @@ public BinaryClassificationGamTrainer(IHostEnvironment env, int numIterations = GamDefaults.NumIterations, double learningRate = GamDefaults.LearningRates, int maxBins = GamDefaults.MaxBins, - Action advancedSettings = null) + Action advancedSettings = null) : base(env, LoadNameValue, TrainerUtils.MakeBoolScalarLabel(labelColumn), featureColumn, weightColumn, numIterations, learningRate, maxBins, advancedSettings) { _sigmoidParameter = 1; diff --git a/src/Microsoft.ML.FastTree/GamRegression.cs b/src/Microsoft.ML.FastTree/GamRegression.cs index 315b94ec78..661e39bc7b 100644 --- a/src/Microsoft.ML.FastTree/GamRegression.cs +++ b/src/Microsoft.ML.FastTree/GamRegression.cs @@ -14,7 +14,7 @@ using Microsoft.ML.Training; [assembly: LoadableClass(RegressionGamTrainer.Summary, - typeof(RegressionGamTrainer), typeof(RegressionGamTrainer.Arguments), + typeof(RegressionGamTrainer), typeof(RegressionGamTrainer.Options), new[] { typeof(SignatureRegressorTrainer), typeof(SignatureTrainer), typeof(SignatureFeatureScorerTrainer) }, RegressionGamTrainer.UserNameValue, RegressionGamTrainer.LoadNameValue, @@ -26,9 +26,9 @@ namespace Microsoft.ML.Trainers.FastTree { - public sealed class RegressionGamTrainer : GamTrainerBase, RegressionGamModelParameters> + public sealed class RegressionGamTrainer : GamTrainerBase, RegressionGamModelParameters> { - public partial class Arguments : ArgumentsBase + public partial class Options : ArgumentsBase { [Argument(ArgumentType.AtMostOnce, HelpText = "Metric for pruning. (For regression, 1: L1, 2:L2; default L2)", ShortName = "pmetric")] [TGUI(Description = "Metric for pruning. (For regression, 1: L1, 2:L2; default L2")] @@ -41,7 +41,7 @@ public partial class Arguments : ArgumentsBase public override PredictionKind PredictionKind => PredictionKind.Regression; - internal RegressionGamTrainer(IHostEnvironment env, Arguments args) + internal RegressionGamTrainer(IHostEnvironment env, Options args) : base(env, args, LoadNameValue, TrainerUtils.MakeR4ScalarColumn(args.LabelColumn)) { } /// @@ -62,7 +62,7 @@ public RegressionGamTrainer(IHostEnvironment env, int numIterations = GamDefaults.NumIterations, double learningRate = GamDefaults.LearningRates, int maxBins = GamDefaults.MaxBins, - Action advancedSettings = null) + Action advancedSettings = null) : base(env, LoadNameValue, TrainerUtils.MakeR4ScalarColumn(labelColumn), featureColumn, weightColumn, numIterations, learningRate, maxBins, advancedSettings) { } diff --git a/src/Microsoft.ML.FastTree/GamTrainer.cs b/src/Microsoft.ML.FastTree/GamTrainer.cs index c5d213671c..e63f1ec8c7 100644 --- a/src/Microsoft.ML.FastTree/GamTrainer.cs +++ b/src/Microsoft.ML.FastTree/GamTrainer.cs @@ -1449,28 +1449,28 @@ private void Run(IChannel ch) public static class Gam { [TlcModule.EntryPoint(Name = "Trainers.GeneralizedAdditiveModelRegressor", Desc = RegressionGamTrainer.Summary, UserName = RegressionGamTrainer.UserNameValue, ShortName = RegressionGamTrainer.ShortName)] - public static CommonOutputs.RegressionOutput TrainRegression(IHostEnvironment env, RegressionGamTrainer.Arguments input) + public static CommonOutputs.RegressionOutput TrainRegression(IHostEnvironment env, RegressionGamTrainer.Options input) { Contracts.CheckValue(env, nameof(env)); var host = env.Register("TrainGAM"); host.CheckValue(input, nameof(input)); EntryPointUtils.CheckInputArgs(host, input); - return LearnerEntryPointsUtils.Train(host, input, + return LearnerEntryPointsUtils.Train(host, input, () => new RegressionGamTrainer(host, input), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumn), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.WeightColumn)); } [TlcModule.EntryPoint(Name = "Trainers.GeneralizedAdditiveModelBinaryClassifier", Desc = BinaryClassificationGamTrainer.Summary, UserName = BinaryClassificationGamTrainer.UserNameValue, ShortName = BinaryClassificationGamTrainer.ShortName)] - public static CommonOutputs.BinaryClassificationOutput TrainBinary(IHostEnvironment env, BinaryClassificationGamTrainer.Arguments input) + public static CommonOutputs.BinaryClassificationOutput TrainBinary(IHostEnvironment env, BinaryClassificationGamTrainer.Options input) { Contracts.CheckValue(env, nameof(env)); var host = env.Register("TrainGAM"); host.CheckValue(input, nameof(input)); EntryPointUtils.CheckInputArgs(host, input); - return LearnerEntryPointsUtils.Train(host, input, + return LearnerEntryPointsUtils.Train(host, input, () => new BinaryClassificationGamTrainer(host, input), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumn), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.WeightColumn)); diff --git a/src/Microsoft.ML.FastTree/RandomForestClassification.cs b/src/Microsoft.ML.FastTree/RandomForestClassification.cs index 7417a67d5f..27f516940b 100644 --- a/src/Microsoft.ML.FastTree/RandomForestClassification.cs +++ b/src/Microsoft.ML.FastTree/RandomForestClassification.cs @@ -17,7 +17,7 @@ using Microsoft.ML.Trainers.FastTree.Internal; using Microsoft.ML.Training; -[assembly: LoadableClass(FastForestClassification.Summary, typeof(FastForestClassification), typeof(FastForestClassification.Arguments), +[assembly: LoadableClass(FastForestClassification.Summary, typeof(FastForestClassification), typeof(FastForestClassification.Options), new[] { typeof(SignatureBinaryClassifierTrainer), typeof(SignatureTrainer), typeof(SignatureTreeEnsembleTrainer), typeof(SignatureFeatureScorerTrainer) }, FastForestClassification.UserNameValue, FastForestClassification.LoadNameValue, @@ -110,9 +110,9 @@ private static IPredictorProducing Create(IHostEnvironment env, ModelLoad /// public sealed partial class FastForestClassification : - RandomForestTrainerBase>, IPredictorWithFeatureWeights> + RandomForestTrainerBase>, IPredictorWithFeatureWeights> { - public sealed class Arguments : FastForestArgumentsBase + public sealed class Options : FastForestArgumentsBase { [Argument(ArgumentType.AtMostOnce, HelpText = "Upper bound on absolute value of single tree output", ShortName = "mo")] public Double MaxTreeOutput = 100; @@ -154,7 +154,7 @@ public FastForestClassification(IHostEnvironment env, int numTrees = Defaults.NumTrees, int minDatapointsInLeaves = Defaults.MinDocumentsInLeaves, double learningRate = Defaults.LearningRates, - Action advancedSettings = null) + Action advancedSettings = null) : base(env, TrainerUtils.MakeBoolScalarLabel(labelColumn), featureColumn, weightColumn, null, numLeaves, numTrees, minDatapointsInLeaves, learningRate, advancedSettings) { Host.CheckNonEmpty(labelColumn, nameof(labelColumn)); @@ -162,9 +162,9 @@ public FastForestClassification(IHostEnvironment env, } /// - /// Initializes a new instance of by using the legacy class. + /// Initializes a new instance of by using the legacy class. /// - public FastForestClassification(IHostEnvironment env, Arguments args) + public FastForestClassification(IHostEnvironment env, Options args) : base(env, args, TrainerUtils.MakeBoolScalarLabel(args.LabelColumn)) { } @@ -231,7 +231,7 @@ private sealed class ObjectiveFunctionImpl : RandomForestObjectiveFunction { private readonly bool[] _labels; - public ObjectiveFunctionImpl(Dataset trainSet, bool[] trainSetLabels, Arguments args) + public ObjectiveFunctionImpl(Dataset trainSet, bool[] trainSetLabels, Options args) : base(trainSet, args, args.MaxTreeOutput) { _labels = trainSetLabels; @@ -255,14 +255,14 @@ public static partial class FastForest ShortName = FastForestClassification.ShortName, XmlInclude = new[] { @"", @""})] - public static CommonOutputs.BinaryClassificationOutput TrainBinary(IHostEnvironment env, FastForestClassification.Arguments input) + public static CommonOutputs.BinaryClassificationOutput TrainBinary(IHostEnvironment env, FastForestClassification.Options input) { Contracts.CheckValue(env, nameof(env)); var host = env.Register("TrainFastForest"); host.CheckValue(input, nameof(input)); EntryPointUtils.CheckInputArgs(host, input); - return LearnerEntryPointsUtils.Train(host, input, + return LearnerEntryPointsUtils.Train(host, input, () => new FastForestClassification(host, input), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumn), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.WeightColumn), diff --git a/src/Microsoft.ML.FastTree/RandomForestRegression.cs b/src/Microsoft.ML.FastTree/RandomForestRegression.cs index f90a37bfa7..fc9f41487e 100644 --- a/src/Microsoft.ML.FastTree/RandomForestRegression.cs +++ b/src/Microsoft.ML.FastTree/RandomForestRegression.cs @@ -15,7 +15,7 @@ using Microsoft.ML.Trainers.FastTree.Internal; using Microsoft.ML.Training; -[assembly: LoadableClass(FastForestRegression.Summary, typeof(FastForestRegression), typeof(FastForestRegression.Arguments), +[assembly: LoadableClass(FastForestRegression.Summary, typeof(FastForestRegression), typeof(FastForestRegression.Options), new[] { typeof(SignatureRegressorTrainer), typeof(SignatureTrainer), typeof(SignatureTreeEnsembleTrainer), typeof(SignatureFeatureScorerTrainer) }, FastForestRegression.UserNameValue, FastForestRegression.LoadNameValue, @@ -136,9 +136,9 @@ ISchemaBindableMapper IQuantileRegressionPredictor.CreateMapper(Double[] quantil /// public sealed partial class FastForestRegression - : RandomForestTrainerBase, FastForestRegressionModelParameters> + : RandomForestTrainerBase, FastForestRegressionModelParameters> { - public sealed class Arguments : FastForestArgumentsBase + public sealed class Options : FastForestArgumentsBase { [Argument(ArgumentType.LastOccurenceWins, HelpText = "Shuffle the labels on every iteration. " + "Useful probably only if using this tree as a tree leaf featurizer for multiclass.")] @@ -172,7 +172,7 @@ public FastForestRegression(IHostEnvironment env, int numTrees = Defaults.NumTrees, int minDatapointsInLeaves = Defaults.MinDocumentsInLeaves, double learningRate = Defaults.LearningRates, - Action advancedSettings = null) + Action advancedSettings = null) : base(env, TrainerUtils.MakeR4ScalarColumn(labelColumn), featureColumn, weightColumn, null, numLeaves, numTrees, minDatapointsInLeaves, learningRate, advancedSettings) { Host.CheckNonEmpty(labelColumn, nameof(labelColumn)); @@ -180,9 +180,9 @@ public FastForestRegression(IHostEnvironment env, } /// - /// Initializes a new instance of by using the legacy class. + /// Initializes a new instance of by using the legacy class. /// - public FastForestRegression(IHostEnvironment env, Arguments args) + public FastForestRegression(IHostEnvironment env, Options args) : base(env, args, TrainerUtils.MakeR4ScalarColumn(args.LabelColumn), true) { } @@ -239,14 +239,14 @@ private abstract class ObjectiveFunctionImplBase : RandomForestObjectiveFunction { private readonly float[] _labels; - public static ObjectiveFunctionImplBase Create(Dataset trainData, Arguments args) + public static ObjectiveFunctionImplBase Create(Dataset trainData, Options args) { if (args.ShuffleLabels) return new ShuffleImpl(trainData, args); return new BasicImpl(trainData, args); } - private ObjectiveFunctionImplBase(Dataset trainData, Arguments args) + private ObjectiveFunctionImplBase(Dataset trainData, Options args) : base(trainData, args, double.MaxValue) // No notion of maximum step size. { _labels = FastTreeRegressionTrainer.GetDatasetRegressionLabels(trainData); @@ -266,7 +266,7 @@ private sealed class ShuffleImpl : ObjectiveFunctionImplBase private readonly Random _rgen; private readonly int _labelLim; - public ShuffleImpl(Dataset trainData, Arguments args) + public ShuffleImpl(Dataset trainData, Options args) : base(trainData, args) { Contracts.AssertValue(args); @@ -304,7 +304,7 @@ public override double[] GetGradient(IChannel ch, double[] scores) private sealed class BasicImpl : ObjectiveFunctionImplBase { - public BasicImpl(Dataset trainData, Arguments args) + public BasicImpl(Dataset trainData, Options args) : base(trainData, args) { } @@ -320,14 +320,14 @@ public static partial class FastForest ShortName = FastForestRegression.ShortName, XmlInclude = new[] { @"", @""})] - public static CommonOutputs.RegressionOutput TrainRegression(IHostEnvironment env, FastForestRegression.Arguments input) + public static CommonOutputs.RegressionOutput TrainRegression(IHostEnvironment env, FastForestRegression.Options input) { Contracts.CheckValue(env, nameof(env)); var host = env.Register("TrainFastForest"); host.CheckValue(input, nameof(input)); EntryPointUtils.CheckInputArgs(host, input); - return LearnerEntryPointsUtils.Train(host, input, + return LearnerEntryPointsUtils.Train(host, input, () => new FastForestRegression(host, input), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumn), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.WeightColumn), diff --git a/src/Microsoft.ML.FastTree/TreeTrainersCatalog.cs b/src/Microsoft.ML.FastTree/TreeTrainersCatalog.cs index afc670cdb4..384e2a3e3b 100644 --- a/src/Microsoft.ML.FastTree/TreeTrainersCatalog.cs +++ b/src/Microsoft.ML.FastTree/TreeTrainersCatalog.cs @@ -33,7 +33,7 @@ public static FastTreeRegressionTrainer FastTree(this RegressionContext.Regressi int numTrees = Defaults.NumTrees, int minDatapointsInLeaves = Defaults.MinDocumentsInLeaves, double learningRate = Defaults.LearningRates, - Action advancedSettings = null) + Action advancedSettings = null) { Contracts.CheckValue(ctx, nameof(ctx)); var env = CatalogUtils.GetEnvironment(ctx); @@ -60,7 +60,7 @@ public static FastTreeBinaryClassificationTrainer FastTree(this BinaryClassifica int numTrees = Defaults.NumTrees, int minDatapointsInLeaves = Defaults.MinDocumentsInLeaves, double learningRate = Defaults.LearningRates, - Action advancedSettings = null) + Action advancedSettings = null) { Contracts.CheckValue(ctx, nameof(ctx)); var env = CatalogUtils.GetEnvironment(ctx); @@ -89,7 +89,7 @@ public static FastTreeRankingTrainer FastTree(this RankingContext.RankingTrainer int numTrees = Defaults.NumTrees, int minDatapointsInLeaves = Defaults.MinDocumentsInLeaves, double learningRate = Defaults.LearningRates, - Action advancedSettings = null) + Action advancedSettings = null) { Contracts.CheckValue(ctx, nameof(ctx)); var env = CatalogUtils.GetEnvironment(ctx); @@ -114,7 +114,7 @@ public static BinaryClassificationGamTrainer GeneralizedAdditiveModels(this Bina int numIterations = GamDefaults.NumIterations, double learningRate = GamDefaults.LearningRates, int maxBins = GamDefaults.MaxBins, - Action advancedSettings = null) + Action advancedSettings = null) { Contracts.CheckValue(ctx, nameof(ctx)); var env = CatalogUtils.GetEnvironment(ctx); @@ -139,7 +139,7 @@ public static RegressionGamTrainer GeneralizedAdditiveModels(this RegressionCont int numIterations = GamDefaults.NumIterations, double learningRate = GamDefaults.LearningRates, int maxBins = GamDefaults.MaxBins, - Action advancedSettings = null) + Action advancedSettings = null) { Contracts.CheckValue(ctx, nameof(ctx)); var env = CatalogUtils.GetEnvironment(ctx); @@ -166,7 +166,7 @@ public static FastTreeTweedieTrainer FastTreeTweedie(this RegressionContext.Regr int numTrees = Defaults.NumTrees, int minDatapointsInLeaves = Defaults.MinDocumentsInLeaves, double learningRate = Defaults.LearningRates, - Action advancedSettings = null) + Action advancedSettings = null) { Contracts.CheckValue(ctx, nameof(ctx)); var env = CatalogUtils.GetEnvironment(ctx); @@ -193,7 +193,7 @@ public static FastForestRegression FastForest(this RegressionContext.RegressionT int numTrees = Defaults.NumTrees, int minDatapointsInLeaves = Defaults.MinDocumentsInLeaves, double learningRate = Defaults.LearningRates, - Action advancedSettings = null) + Action advancedSettings = null) { Contracts.CheckValue(ctx, nameof(ctx)); var env = CatalogUtils.GetEnvironment(ctx); @@ -220,7 +220,7 @@ public static FastForestClassification FastForest(this BinaryClassificationConte int numTrees = Defaults.NumTrees, int minDatapointsInLeaves = Defaults.MinDocumentsInLeaves, double learningRate = Defaults.LearningRates, - Action advancedSettings = null) + Action advancedSettings = null) { Contracts.CheckValue(ctx, nameof(ctx)); var env = CatalogUtils.GetEnvironment(ctx); diff --git a/src/Microsoft.ML.FastTree/TreeTrainersStatic.cs b/src/Microsoft.ML.FastTree/TreeTrainersStatic.cs index 1e9ff0f4de..d33f833db2 100644 --- a/src/Microsoft.ML.FastTree/TreeTrainersStatic.cs +++ b/src/Microsoft.ML.FastTree/TreeTrainersStatic.cs @@ -45,7 +45,7 @@ public static Scalar FastTree(this RegressionContext.RegressionTrainers c int numTrees = Defaults.NumTrees, int minDatapointsInLeaves = Defaults.MinDocumentsInLeaves, double learningRate = Defaults.LearningRates, - Action advancedSettings = null, + Action advancedSettings = null, Action onFit = null) { CheckUserValues(label, features, weights, numLeaves, numTrees, minDatapointsInLeaves, learningRate, advancedSettings, onFit); @@ -95,7 +95,7 @@ public static (Scalar score, Scalar probability, Scalar pred int numTrees = Defaults.NumTrees, int minDatapointsInLeaves = Defaults.MinDocumentsInLeaves, double learningRate = Defaults.LearningRates, - Action advancedSettings = null, + Action advancedSettings = null, Action> onFit = null) { CheckUserValues(label, features, weights, numLeaves, numTrees, minDatapointsInLeaves, learningRate, advancedSettings, onFit); @@ -141,7 +141,7 @@ public static Scalar FastTree(this RankingContext.RankingTrainers c int numTrees = Defaults.NumTrees, int minDatapointsInLeaves = Defaults.MinDocumentsInLeaves, double learningRate = Defaults.LearningRates, - Action advancedSettings = null, + Action advancedSettings = null, Action onFit = null) { CheckUserValues(label, features, weights, numLeaves, numTrees, minDatapointsInLeaves, learningRate, advancedSettings, onFit); diff --git a/src/Microsoft.ML.HalLearners/HalLearnersCatalog.cs b/src/Microsoft.ML.HalLearners/HalLearnersCatalog.cs index 62420c9b0f..6a9c4ce6c2 100644 --- a/src/Microsoft.ML.HalLearners/HalLearnersCatalog.cs +++ b/src/Microsoft.ML.HalLearners/HalLearnersCatalog.cs @@ -27,7 +27,7 @@ public static OlsLinearRegressionTrainer OrdinaryLeastSquares(this RegressionCon string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, string weights = null, - Action advancedSettings = null) + Action advancedSettings = null) { Contracts.CheckValue(ctx, nameof(ctx)); var env = CatalogUtils.GetEnvironment(ctx); @@ -44,7 +44,7 @@ public static OlsLinearRegressionTrainer OrdinaryLeastSquares(this RegressionCon public static SymSgdClassificationTrainer SymbolicStochasticGradientDescent(this BinaryClassificationContext.BinaryClassificationTrainers ctx, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, - Action advancedSettings = null) + Action advancedSettings = null) { Contracts.CheckValue(ctx, nameof(ctx)); var env = CatalogUtils.GetEnvironment(ctx); diff --git a/src/Microsoft.ML.HalLearners/OlsLinearRegression.cs b/src/Microsoft.ML.HalLearners/OlsLinearRegression.cs index 1dd6fa550e..dffd30352f 100644 --- a/src/Microsoft.ML.HalLearners/OlsLinearRegression.cs +++ b/src/Microsoft.ML.HalLearners/OlsLinearRegression.cs @@ -19,7 +19,7 @@ using Microsoft.ML.Trainers.HalLearners; using Microsoft.ML.Training; -[assembly: LoadableClass(OlsLinearRegressionTrainer.Summary, typeof(OlsLinearRegressionTrainer), typeof(OlsLinearRegressionTrainer.Arguments), +[assembly: LoadableClass(OlsLinearRegressionTrainer.Summary, typeof(OlsLinearRegressionTrainer), typeof(OlsLinearRegressionTrainer.Options), new[] { typeof(SignatureRegressorTrainer), typeof(SignatureTrainer), typeof(SignatureFeatureScorerTrainer) }, OlsLinearRegressionTrainer.UserNameValue, OlsLinearRegressionTrainer.LoadNameValue, @@ -36,7 +36,7 @@ namespace Microsoft.ML.Trainers.HalLearners /// public sealed class OlsLinearRegressionTrainer : TrainerEstimatorBase, OlsLinearRegressionModelParameters> { - public sealed class Arguments : LearnerInputBaseWithWeight + public sealed class Options : LearnerInputBaseWithWeight { // Adding L2 regularization turns this into a form of ridge regression, // rather than, strictly speaking, ordinary least squares. But it is an @@ -77,7 +77,7 @@ public OlsLinearRegressionTrainer(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, string weights = null, - Action advancedSettings = null) + Action advancedSettings = null) : this(env, ArgsInit(featureColumn, labelColumn, weights, advancedSettings)) { } @@ -85,7 +85,7 @@ public OlsLinearRegressionTrainer(IHostEnvironment env, /// /// Initializes a new instance of /// - internal OlsLinearRegressionTrainer(IHostEnvironment env, Arguments args) + internal OlsLinearRegressionTrainer(IHostEnvironment env, Options args) : base(Contracts.CheckRef(env, nameof(env)).Register(LoadNameValue), TrainerUtils.MakeR4VecFeature(args.FeatureColumn), TrainerUtils.MakeR4ScalarColumn(args.LabelColumn), TrainerUtils.MakeR4ScalarWeightColumn(args.WeightColumn, args.WeightColumn.IsExplicit)) { @@ -95,12 +95,12 @@ internal OlsLinearRegressionTrainer(IHostEnvironment env, Arguments args) _perParameterSignificance = args.PerParameterSignificance; } - private static Arguments ArgsInit(string featureColumn, + private static Options ArgsInit(string featureColumn, string labelColumn, string weightColumn, - Action advancedSettings) + Action advancedSettings) { - var args = new Arguments(); + var args = new Options(); // Apply the advanced args, if the user supplied any. advancedSettings?.Invoke(args); @@ -518,14 +518,14 @@ public static void Pptri(Layout layout, UpLo uplo, int n, Double[] ap) UserName = UserNameValue, ShortName = ShortName, XmlInclude = new[] { @"" })] - public static CommonOutputs.RegressionOutput TrainRegression(IHostEnvironment env, Arguments input) + public static CommonOutputs.RegressionOutput TrainRegression(IHostEnvironment env, Options input) { Contracts.CheckValue(env, nameof(env)); var host = env.Register("TrainOLS"); host.CheckValue(input, nameof(input)); EntryPointUtils.CheckInputArgs(host, input); - return LearnerEntryPointsUtils.Train(host, input, + return LearnerEntryPointsUtils.Train(host, input, () => new OlsLinearRegressionTrainer(host, input), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumn), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.WeightColumn)); @@ -579,7 +579,7 @@ private static VersionInfo GetVersionInfo() /// are all null. A model may not have per parameter statistics because either /// there were not more examples than parameters in the model, or because they /// were explicitly suppressed in training by setting - /// + /// /// to false. /// public bool HasStatistics => _standardErrors != null; diff --git a/src/Microsoft.ML.HalLearners/SymSgdClassificationTrainer.cs b/src/Microsoft.ML.HalLearners/SymSgdClassificationTrainer.cs index cc7c07edc2..7f9a178a79 100644 --- a/src/Microsoft.ML.HalLearners/SymSgdClassificationTrainer.cs +++ b/src/Microsoft.ML.HalLearners/SymSgdClassificationTrainer.cs @@ -20,7 +20,7 @@ using Microsoft.ML.Training; using Microsoft.ML.Transforms; -[assembly: LoadableClass(typeof(SymSgdClassificationTrainer), typeof(SymSgdClassificationTrainer.Arguments), +[assembly: LoadableClass(typeof(SymSgdClassificationTrainer), typeof(SymSgdClassificationTrainer.Options), new[] { typeof(SignatureBinaryClassifierTrainer), typeof(SignatureTrainer), typeof(SignatureFeatureScorerTrainer) }, SymSgdClassificationTrainer.UserNameValue, SymSgdClassificationTrainer.LoadNameValue, @@ -39,7 +39,7 @@ public sealed class SymSgdClassificationTrainer : TrainerEstimatorBase /// This method ensures that the data meets the requirements of this trainer and its @@ -159,11 +159,11 @@ private protected override TPredictor TrainModelCore(TrainContext context) public SymSgdClassificationTrainer(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, - Action advancedSettings = null) + Action advancedSettings = null) : base(Contracts.CheckRef(env, nameof(env)).Register(LoadNameValue), TrainerUtils.MakeR4VecFeature(featureColumn), TrainerUtils.MakeBoolScalarLabel(labelColumn)) { - _args = new Arguments(); + _args = new Options(); // Apply the advanced args, if the user supplied any. _args.Check(Host); @@ -177,7 +177,7 @@ public SymSgdClassificationTrainer(IHostEnvironment env, /// /// Initializes a new instance of /// - internal SymSgdClassificationTrainer(IHostEnvironment env, Arguments args) + internal SymSgdClassificationTrainer(IHostEnvironment env, Options args) : base(Contracts.CheckRef(env, nameof(env)).Register(LoadNameValue), TrainerUtils.MakeR4VecFeature(args.FeatureColumn), TrainerUtils.MakeBoolScalarLabel(args.LabelColumn)) { @@ -218,14 +218,14 @@ protected override SchemaShape.Column[] GetOutputColumnsCore(SchemaShape inputSc UserName = SymSgdClassificationTrainer.UserNameValue, ShortName = SymSgdClassificationTrainer.ShortName, XmlInclude = new[] { @"" })] - public static CommonOutputs.BinaryClassificationOutput TrainSymSgd(IHostEnvironment env, Arguments input) + public static CommonOutputs.BinaryClassificationOutput TrainSymSgd(IHostEnvironment env, Options input) { Contracts.CheckValue(env, nameof(env)); var host = env.Register("TrainSymSGD"); host.CheckValue(input, nameof(input)); EntryPointUtils.CheckInputArgs(host, input); - return LearnerEntryPointsUtils.Train(host, input, + return LearnerEntryPointsUtils.Train(host, input, () => new SymSgdClassificationTrainer(host, input), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumn)); } diff --git a/src/Microsoft.ML.KMeansClustering/KMeansCatalog.cs b/src/Microsoft.ML.KMeansClustering/KMeansCatalog.cs index 3fa9f16741..c9aeaff1a0 100644 --- a/src/Microsoft.ML.KMeansClustering/KMeansCatalog.cs +++ b/src/Microsoft.ML.KMeansClustering/KMeansCatalog.cs @@ -25,7 +25,7 @@ public static KMeansPlusPlusTrainer KMeans(this ClusteringContext.ClusteringTrai string features, string weights = null, int clustersCount = KMeansPlusPlusTrainer.Defaults.K, - Action advancedSettings = null) + Action advancedSettings = null) { Contracts.CheckValue(ctx, nameof(ctx)); var env = CatalogUtils.GetEnvironment(ctx); diff --git a/src/Microsoft.ML.KMeansClustering/KMeansPlusPlusTrainer.cs b/src/Microsoft.ML.KMeansClustering/KMeansPlusPlusTrainer.cs index 35f64309d6..1140e2c802 100644 --- a/src/Microsoft.ML.KMeansClustering/KMeansPlusPlusTrainer.cs +++ b/src/Microsoft.ML.KMeansClustering/KMeansPlusPlusTrainer.cs @@ -17,7 +17,7 @@ using Microsoft.ML.Trainers.KMeans; using Microsoft.ML.Training; -[assembly: LoadableClass(KMeansPlusPlusTrainer.Summary, typeof(KMeansPlusPlusTrainer), typeof(KMeansPlusPlusTrainer.Arguments), +[assembly: LoadableClass(KMeansPlusPlusTrainer.Summary, typeof(KMeansPlusPlusTrainer), typeof(KMeansPlusPlusTrainer.Options), new[] { typeof(SignatureClusteringTrainer), typeof(SignatureTrainer) }, KMeansPlusPlusTrainer.UserNameValue, KMeansPlusPlusTrainer.LoadNameValue, @@ -50,7 +50,7 @@ internal static class Defaults{ internal const int K = 5; } - public class Arguments : UnsupervisedLearnerInputBaseWithWeight + public class Options : UnsupervisedLearnerInputBaseWithWeight { [Argument(ArgumentType.AtMostOnce, HelpText = "The number of clusters", SortOrder = 50)] [TGUI(SuggestedSweeps = "5,10,20,40")] @@ -103,8 +103,8 @@ public KMeansPlusPlusTrainer(IHostEnvironment env, string featureColumn = DefaultColumnNames.Features, int clustersCount = Defaults.K, string weights = null, - Action advancedSettings = null) - : this(env, new Arguments + Action advancedSettings = null) + : this(env, new Options { FeatureColumn = featureColumn, WeightColumn = weights, @@ -113,13 +113,13 @@ public KMeansPlusPlusTrainer(IHostEnvironment env, { } - internal KMeansPlusPlusTrainer(IHostEnvironment env, Arguments args) + internal KMeansPlusPlusTrainer(IHostEnvironment env, Options args) : this(env, args, null) { } - private KMeansPlusPlusTrainer(IHostEnvironment env, Arguments args, Action advancedSettings = null) + private KMeansPlusPlusTrainer(IHostEnvironment env, Options args, Action advancedSettings = null) : base(Contracts.CheckRef(env, nameof(env)).Register(LoadNameValue), TrainerUtils.MakeR4VecFeature(args.FeatureColumn), default, TrainerUtils.MakeR4ScalarWeightColumn(args.WeightColumn)) { Host.CheckValue(args, nameof(args)); @@ -247,14 +247,14 @@ private static int ComputeNumThreads(IHost host, int? argNumThreads) ShortName = ShortName, XmlInclude = new[] { @"", @""})] - public static CommonOutputs.ClusteringOutput TrainKMeans(IHostEnvironment env, Arguments input) + public static CommonOutputs.ClusteringOutput TrainKMeans(IHostEnvironment env, Options input) { Contracts.CheckValue(env, nameof(env)); var host = env.Register("TrainKMeans"); host.CheckValue(input, nameof(input)); EntryPointUtils.CheckInputArgs(host, input); - return LearnerEntryPointsUtils.Train(host, input, + return LearnerEntryPointsUtils.Train(host, input, () => new KMeansPlusPlusTrainer(host, input), getWeight: () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.WeightColumn)); } @@ -749,10 +749,10 @@ public static void Initialize(IHost host, int numThreads, IChannel ch, FeatureFl host.CheckValue(ch, nameof(ch)); ch.CheckValue(cursorFactory, nameof(cursorFactory)); ch.CheckValue(centroids, nameof(centroids)); - ch.CheckUserArg(numThreads > 0, nameof(KMeansPlusPlusTrainer.Arguments.NumThreads), "Must be positive"); - ch.CheckUserArg(k > 0, nameof(KMeansPlusPlusTrainer.Arguments.K), "Must be positive"); + ch.CheckUserArg(numThreads > 0, nameof(KMeansPlusPlusTrainer.Options.NumThreads), "Must be positive"); + ch.CheckUserArg(k > 0, nameof(KMeansPlusPlusTrainer.Options.K), "Must be positive"); ch.CheckParam(dimensionality > 0, nameof(dimensionality), "Must be positive"); - ch.CheckUserArg(accelMemBudgetMb >= 0, nameof(KMeansPlusPlusTrainer.Arguments.AccelMemBudgetMb), "Must be non-negative"); + ch.CheckUserArg(accelMemBudgetMb >= 0, nameof(KMeansPlusPlusTrainer.Options.AccelMemBudgetMb), "Must be non-negative"); int numRounds; int numSamplesPerRound; diff --git a/src/Microsoft.ML.KMeansClustering/KMeansStatic.cs b/src/Microsoft.ML.KMeansClustering/KMeansStatic.cs index 7a7aef03ba..d7db3e9db8 100644 --- a/src/Microsoft.ML.KMeansClustering/KMeansStatic.cs +++ b/src/Microsoft.ML.KMeansClustering/KMeansStatic.cs @@ -30,7 +30,7 @@ public static class KMeansClusteringExtensions public static (Vector score, Key predictedLabel) KMeans(this ClusteringContext.ClusteringTrainers ctx, Vector features, Scalar weights = null, int clustersCount = KMeansPlusPlusTrainer.Defaults.K, - Action advancedSettings = null, + Action advancedSettings = null, Action onFit = null) { Contracts.CheckValue(features, nameof(features)); diff --git a/src/Microsoft.ML.Recommender/MatrixFactorizationStatic.cs b/src/Microsoft.ML.Recommender/MatrixFactorizationStatic.cs index 3a9128ad73..95b8625bc8 100644 --- a/src/Microsoft.ML.Recommender/MatrixFactorizationStatic.cs +++ b/src/Microsoft.ML.Recommender/MatrixFactorizationStatic.cs @@ -39,7 +39,7 @@ public static Scalar MatrixFactorization(this RegressionContext.Regres int approximationRank = 8, float learningRate = 0.1f, int numIterations = 20, - Action advancedSettings = null, + Action advancedSettings = null, Action onFit = null) { Contracts.CheckValue(label, nameof(label)); diff --git a/src/Microsoft.ML.Recommender/MatrixFactorizationTrainer.cs b/src/Microsoft.ML.Recommender/MatrixFactorizationTrainer.cs index c5f41a9c28..7bbd409696 100644 --- a/src/Microsoft.ML.Recommender/MatrixFactorizationTrainer.cs +++ b/src/Microsoft.ML.Recommender/MatrixFactorizationTrainer.cs @@ -17,7 +17,7 @@ using Microsoft.ML.Trainers.Recommender; using Microsoft.ML.Training; -[assembly: LoadableClass(MatrixFactorizationTrainer.Summary, typeof(MatrixFactorizationTrainer), typeof(MatrixFactorizationTrainer.Arguments), +[assembly: LoadableClass(MatrixFactorizationTrainer.Summary, typeof(MatrixFactorizationTrainer), typeof(MatrixFactorizationTrainer.Options), new Type[] { typeof(SignatureTrainer), typeof(SignatureMatrixRecommendingTrainer) }, "Matrix Factorization", MatrixFactorizationTrainer.LoadNameValue, "libmf", "mf")] @@ -91,7 +91,7 @@ public sealed class MatrixFactorizationTrainer : TrainerBase /// Loss function minimized for finding factor matrices. Two values are allowed, 0 or 12. The values 0 means traditional collaborative filtering @@ -214,11 +214,11 @@ public sealed class Arguments /// /// Legacy constructor initializing a new instance of through the legacy - /// class. + /// class. /// /// The private instance of . - /// An instance of the legacy to apply advanced parameters to the algorithm. - private MatrixFactorizationTrainer(IHostEnvironment env, Arguments args) : base(env, LoadNameValue) + /// An instance of the legacy to apply advanced parameters to the algorithm. + private MatrixFactorizationTrainer(IHostEnvironment env, Options args) : base(env, LoadNameValue) { const string posError = "Parameter must be positive"; Host.CheckValue(args, nameof(args)); @@ -255,10 +255,10 @@ public MatrixFactorizationTrainer(IHostEnvironment env, string matrixColumnIndexColumnName, string matrixRowIndexColumnName, string labelColumn = DefaultColumnNames.Label, - Action advancedSettings = null) + Action advancedSettings = null) : base(env, LoadNameValue) { - var args = new Arguments(); + var args = new Options(); advancedSettings?.Invoke(args); _fun = (int)args.LossFunction; diff --git a/src/Microsoft.ML.Recommender/RecommenderCatalog.cs b/src/Microsoft.ML.Recommender/RecommenderCatalog.cs index 29a6329472..b8e29a437f 100644 --- a/src/Microsoft.ML.Recommender/RecommenderCatalog.cs +++ b/src/Microsoft.ML.Recommender/RecommenderCatalog.cs @@ -59,7 +59,7 @@ public MatrixFactorizationTrainer MatrixFactorization( string matrixColumnIndexColumnName, string matrixRowIndexColumnName, string labelColumn = DefaultColumnNames.Label, - Action advancedSettings = null) + Action advancedSettings = null) => new MatrixFactorizationTrainer(Owner.Environment, matrixColumnIndexColumnName, matrixRowIndexColumnName, labelColumn, advancedSettings); } diff --git a/src/Microsoft.ML.StandardLearners/FactorizationMachine/FactorizationMachineCatalog.cs b/src/Microsoft.ML.StandardLearners/FactorizationMachine/FactorizationMachineCatalog.cs index 116ad702cd..af18374f7e 100644 --- a/src/Microsoft.ML.StandardLearners/FactorizationMachine/FactorizationMachineCatalog.cs +++ b/src/Microsoft.ML.StandardLearners/FactorizationMachine/FactorizationMachineCatalog.cs @@ -28,7 +28,7 @@ public static FieldAwareFactorizationMachineTrainer FieldAwareFactorizationMachi string[] featureColumns, string labelColumn = DefaultColumnNames.Label, string weights = null, - Action advancedSettings = null) + Action advancedSettings = null) { Contracts.CheckValue(ctx, nameof(ctx)); var env = CatalogUtils.GetEnvironment(ctx); diff --git a/src/Microsoft.ML.StandardLearners/FactorizationMachine/FactorizationMachineStatic.cs b/src/Microsoft.ML.StandardLearners/FactorizationMachine/FactorizationMachineStatic.cs index 77efaff552..ad28a9f714 100644 --- a/src/Microsoft.ML.StandardLearners/FactorizationMachine/FactorizationMachineStatic.cs +++ b/src/Microsoft.ML.StandardLearners/FactorizationMachine/FactorizationMachineStatic.cs @@ -41,7 +41,7 @@ public static (Scalar score, Scalar predictedLabel) FieldAwareFacto float learningRate = 0.1f, int numIterations = 5, int numLatentDimensions = 20, - Action advancedSettings = null, + Action advancedSettings = null, Action onFit = null) { Contracts.CheckValue(label, nameof(label)); diff --git a/src/Microsoft.ML.StandardLearners/FactorizationMachine/FactorizationMachineTrainer.cs b/src/Microsoft.ML.StandardLearners/FactorizationMachine/FactorizationMachineTrainer.cs index d0d9601dac..22615f1792 100644 --- a/src/Microsoft.ML.StandardLearners/FactorizationMachine/FactorizationMachineTrainer.cs +++ b/src/Microsoft.ML.StandardLearners/FactorizationMachine/FactorizationMachineTrainer.cs @@ -16,7 +16,7 @@ using Microsoft.ML.Training; [assembly: LoadableClass(FieldAwareFactorizationMachineTrainer.Summary, typeof(FieldAwareFactorizationMachineTrainer), - typeof(FieldAwareFactorizationMachineTrainer.Arguments), new[] { typeof(SignatureBinaryClassifierTrainer), typeof(SignatureTrainer) } + typeof(FieldAwareFactorizationMachineTrainer.Options), new[] { typeof(SignatureBinaryClassifierTrainer), typeof(SignatureTrainer) } , FieldAwareFactorizationMachineTrainer.UserName, FieldAwareFactorizationMachineTrainer.LoadName, FieldAwareFactorizationMachineTrainer.ShortName, DocName = "trainer/FactorizationMachine.md")] @@ -40,7 +40,7 @@ public sealed class FieldAwareFactorizationMachineTrainer : TrainerBase /// Legacy constructor initializing a new instance of through the legacy - /// class. + /// class. /// /// The private instance of . - /// An instance of the legacy to apply advanced parameters to the algorithm. - public FieldAwareFactorizationMachineTrainer(IHostEnvironment env, Arguments args) + /// An instance of the legacy to apply advanced parameters to the algorithm. + public FieldAwareFactorizationMachineTrainer(IHostEnvironment env, Options args) : base(env, LoadName) { Initialize(env, args); @@ -136,10 +136,10 @@ public FieldAwareFactorizationMachineTrainer(IHostEnvironment env, string[] featureColumns, string labelColumn = DefaultColumnNames.Label, string weights = null, - Action advancedSettings = null) + Action advancedSettings = null) : base(env, LoadName) { - var args = new Arguments(); + var args = new Options(); advancedSettings?.Invoke(args); Initialize(env, args); @@ -160,7 +160,7 @@ public FieldAwareFactorizationMachineTrainer(IHostEnvironment env, /// /// /// - private void Initialize(IHostEnvironment env, Arguments args) + private void Initialize(IHostEnvironment env, Options args) { Host.CheckUserArg(args.LatentDim > 0, nameof(args.LatentDim), "Must be positive"); Host.CheckUserArg(args.LambdaLinear >= 0, nameof(args.LambdaLinear), "Must be non-negative"); @@ -445,13 +445,13 @@ private protected override FieldAwareFactorizationMachineModelParameters Train(T ShortName = ShortName, XmlInclude = new[] { @"", @"" })] - public static CommonOutputs.BinaryClassificationOutput TrainBinary(IHostEnvironment env, Arguments input) + public static CommonOutputs.BinaryClassificationOutput TrainBinary(IHostEnvironment env, Options input) { Contracts.CheckValue(env, nameof(env)); var host = env.Register("Train a field-aware factorization machine"); host.CheckValue(input, nameof(input)); EntryPointUtils.CheckInputArgs(host, input); - return LearnerEntryPointsUtils.Train(host, input, () => new FieldAwareFactorizationMachineTrainer(host, input), + return LearnerEntryPointsUtils.Train(host, input, () => new FieldAwareFactorizationMachineTrainer(host, input), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumn)); } diff --git a/src/Microsoft.ML.StandardLearners/Standard/LogisticRegression/LbfgsStatic.cs b/src/Microsoft.ML.StandardLearners/Standard/LogisticRegression/LbfgsStatic.cs index 4ee64f9ff6..b66ffda118 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/LogisticRegression/LbfgsStatic.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/LogisticRegression/LbfgsStatic.cs @@ -10,7 +10,7 @@ namespace Microsoft.ML.StaticPipe { - using Arguments = LogisticRegression.Arguments; + using Options = LogisticRegression.Options; /// /// Binary Classification trainer estimators. @@ -40,12 +40,12 @@ public static (Scalar score, Scalar probability, Scalar pred Scalar label, Vector features, Scalar weights = null, - float l1Weight = Arguments.Defaults.L1Weight, - float l2Weight = Arguments.Defaults.L2Weight, - float optimizationTolerance = Arguments.Defaults.OptTol, - int memorySize = Arguments.Defaults.MemorySize, - bool enoforceNoNegativity = Arguments.Defaults.EnforceNonNegativity, - Action advancedSettings = null, + float l1Weight = Options.Defaults.L1Weight, + float l2Weight = Options.Defaults.L2Weight, + float optimizationTolerance = Options.Defaults.OptTol, + int memorySize = Options.Defaults.MemorySize, + bool enoforceNoNegativity = Options.Defaults.EnforceNonNegativity, + Action advancedSettings = null, Action onFit = null) { LbfgsStaticUtils.ValidateParams(label, features, weights, l1Weight, l2Weight, optimizationTolerance, memorySize, enoforceNoNegativity, advancedSettings, onFit); @@ -95,12 +95,12 @@ public static Scalar PoissonRegression(this RegressionContext.RegressionT Scalar label, Vector features, Scalar weights = null, - float l1Weight = Arguments.Defaults.L1Weight, - float l2Weight = Arguments.Defaults.L2Weight, - float optimizationTolerance = Arguments.Defaults.OptTol, - int memorySize = Arguments.Defaults.MemorySize, - bool enoforceNoNegativity = Arguments.Defaults.EnforceNonNegativity, - Action advancedSettings = null, + float l1Weight = Options.Defaults.L1Weight, + float l2Weight = Options.Defaults.L2Weight, + float optimizationTolerance = Options.Defaults.OptTol, + int memorySize = Options.Defaults.MemorySize, + bool enoforceNoNegativity = Options.Defaults.EnforceNonNegativity, + Action advancedSettings = null, Action onFit = null) { LbfgsStaticUtils.ValidateParams(label, features, weights, l1Weight, l2Weight, optimizationTolerance, memorySize, enoforceNoNegativity, advancedSettings, onFit); @@ -151,12 +151,12 @@ public static (Vector score, Key predictedLabel) Key label, Vector features, Scalar weights = null, - float l1Weight = Arguments.Defaults.L1Weight, - float l2Weight = Arguments.Defaults.L2Weight, - float optimizationTolerance = Arguments.Defaults.OptTol, - int memorySize = Arguments.Defaults.MemorySize, - bool enoforceNoNegativity = Arguments.Defaults.EnforceNonNegativity, - Action advancedSettings = null, + float l1Weight = Options.Defaults.L1Weight, + float l2Weight = Options.Defaults.L2Weight, + float optimizationTolerance = Options.Defaults.OptTol, + int memorySize = Options.Defaults.MemorySize, + bool enoforceNoNegativity = Options.Defaults.EnforceNonNegativity, + Action advancedSettings = null, Action onFit = null) { LbfgsStaticUtils.ValidateParams(label, features, weights, l1Weight, l2Weight, optimizationTolerance, memorySize, enoforceNoNegativity, advancedSettings, onFit); @@ -183,12 +183,12 @@ internal static class LbfgsStaticUtils internal static void ValidateParams(PipelineColumn label, Vector features, Scalar weights = null, - float l1Weight = Arguments.Defaults.L1Weight, - float l2Weight = Arguments.Defaults.L2Weight, - float optimizationTolerance = Arguments.Defaults.OptTol, - int memorySize = Arguments.Defaults.MemorySize, - bool enoforceNoNegativity = Arguments.Defaults.EnforceNonNegativity, - Action advancedSettings = null, + float l1Weight = Options.Defaults.L1Weight, + float l2Weight = Options.Defaults.L2Weight, + float optimizationTolerance = Options.Defaults.OptTol, + int memorySize = Options.Defaults.MemorySize, + bool enoforceNoNegativity = Options.Defaults.EnforceNonNegativity, + Action advancedSettings = null, Delegate onFit = null) { Contracts.CheckValue(label, nameof(label)); diff --git a/src/Microsoft.ML.StandardLearners/Standard/LogisticRegression/LogisticRegression.cs b/src/Microsoft.ML.StandardLearners/Standard/LogisticRegression/LogisticRegression.cs index a9d7c00ab1..1c40787ef7 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/LogisticRegression/LogisticRegression.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/LogisticRegression/LogisticRegression.cs @@ -16,7 +16,7 @@ using Microsoft.ML.Numeric; using Microsoft.ML.Training; -[assembly: LoadableClass(LogisticRegression.Summary, typeof(LogisticRegression), typeof(LogisticRegression.Arguments), +[assembly: LoadableClass(LogisticRegression.Summary, typeof(LogisticRegression), typeof(LogisticRegression.Options), new[] { typeof(SignatureBinaryClassifierTrainer), typeof(SignatureTrainer), typeof(SignatureFeatureScorerTrainer) }, LogisticRegression.UserNameValue, LogisticRegression.LoadNameValue, @@ -30,7 +30,7 @@ namespace Microsoft.ML.Learners /// /// - public sealed partial class LogisticRegression : LbfgsTrainerBase, ParameterMixingCalibratedPredictor> + public sealed partial class LogisticRegression : LbfgsTrainerBase, ParameterMixingCalibratedPredictor> { public const string LoadNameValue = "LogisticRegression"; internal const string UserNameValue = "Logistic Regression"; @@ -38,7 +38,7 @@ public sealed partial class LogisticRegression : LbfgsTrainerBase /// If set to truetraining statistics will be generated at the end of training. @@ -53,7 +53,7 @@ public sealed class Arguments : ArgumentsBase /// /// The instance of that computes the std of the training statistics, at the end of training. /// The calculations are not part of Microsoft.ML package, due to the size of MKL. - /// If you need these calculations, add the Microsoft.ML.HalLearners package, and initialize . + /// If you need these calculations, add the Microsoft.ML.HalLearners package, and initialize . /// to the implementation in the Microsoft.ML.HalLearners package. /// public ComputeLRTrainingStd StdComputer; @@ -79,12 +79,12 @@ public LogisticRegression(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, string weights = null, - float l1Weight = Arguments.Defaults.L1Weight, - float l2Weight = Arguments.Defaults.L2Weight, - float optimizationTolerance = Arguments.Defaults.OptTol, - int memorySize = Arguments.Defaults.MemorySize, - bool enforceNoNegativity = Arguments.Defaults.EnforceNonNegativity, - Action advancedSettings = null) + float l1Weight = Options.Defaults.L1Weight, + float l2Weight = Options.Defaults.L2Weight, + float optimizationTolerance = Options.Defaults.OptTol, + int memorySize = Options.Defaults.MemorySize, + bool enforceNoNegativity = Options.Defaults.EnforceNonNegativity, + Action advancedSettings = null) : base(env, featureColumn, TrainerUtils.MakeBoolScalarLabel(labelColumn), weights, advancedSettings, l1Weight, l2Weight, optimizationTolerance, memorySize, enforceNoNegativity) { @@ -98,7 +98,7 @@ public LogisticRegression(IHostEnvironment env, /// /// Initializes a new instance of /// - internal LogisticRegression(IHostEnvironment env, Arguments args) + internal LogisticRegression(IHostEnvironment env, Options args) : base(env, args, TrainerUtils.MakeBoolScalarLabel(args.LabelColumn)) { _posWeight = 0; @@ -410,14 +410,14 @@ protected override ParameterMixingCalibratedPredictor CreatePredictor() XmlInclude = new[] { @"", @""})] - public static CommonOutputs.BinaryClassificationOutput TrainBinary(IHostEnvironment env, Arguments input) + public static CommonOutputs.BinaryClassificationOutput TrainBinary(IHostEnvironment env, Options input) { Contracts.CheckValue(env, nameof(env)); var host = env.Register("TrainLRBinary"); host.CheckValue(input, nameof(input)); EntryPointUtils.CheckInputArgs(host, input); - return LearnerEntryPointsUtils.Train(host, input, + return LearnerEntryPointsUtils.Train(host, input, () => new LogisticRegression(host, input), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumn), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.WeightColumn)); @@ -437,7 +437,7 @@ public abstract class ComputeLRTrainingStd /// Computes the standard deviation matrix of each of the non-zero training weights, needed to calculate further the standard deviation, /// p-value and z-Score. /// The calculations are not part of Microsoft.ML package, due to the size of MKL. - /// If you need these calculations, add the Microsoft.ML.HalLearners package, and initialize + /// If you need these calculations, add the Microsoft.ML.HalLearners package, and initialize /// to the implementation in the Microsoft.ML.HalLearners package. /// Due to the existence of regularization, an approximation is used to compute the variances of the trained linear coefficients. /// diff --git a/src/Microsoft.ML.StandardLearners/Standard/LogisticRegression/MulticlassLogisticRegression.cs b/src/Microsoft.ML.StandardLearners/Standard/LogisticRegression/MulticlassLogisticRegression.cs index 5d524f5393..39a49759ed 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/LogisticRegression/MulticlassLogisticRegression.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/LogisticRegression/MulticlassLogisticRegression.cs @@ -22,7 +22,7 @@ using Microsoft.ML.Training; using Newtonsoft.Json.Linq; -[assembly: LoadableClass(typeof(MulticlassLogisticRegression), typeof(MulticlassLogisticRegression.Arguments), +[assembly: LoadableClass(typeof(MulticlassLogisticRegression), typeof(MulticlassLogisticRegression.Options), new[] { typeof(SignatureMultiClassClassifierTrainer), typeof(SignatureTrainer) }, MulticlassLogisticRegression.UserNameValue, MulticlassLogisticRegression.LoadNameValue, @@ -38,14 +38,14 @@ namespace Microsoft.ML.Learners { /// /// - public sealed class MulticlassLogisticRegression : LbfgsTrainerBase, MulticlassLogisticRegressionModelParameters> { public const string LoadNameValue = "MultiClassLogisticRegression"; internal const string UserNameValue = "Multi-class Logistic Regression"; internal const string ShortName = "mlr"; - public sealed class Arguments : ArgumentsBase + public sealed class Options : ArgumentsBase { [Argument(ArgumentType.AtMostOnce, HelpText = "Show statistics of training examples.", ShortName = "stat", SortOrder = 50)] public bool ShowTrainingStats = false; @@ -87,12 +87,12 @@ public MulticlassLogisticRegression(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, string weights = null, - float l1Weight = Arguments.Defaults.L1Weight, - float l2Weight = Arguments.Defaults.L2Weight, - float optimizationTolerance = Arguments.Defaults.OptTol, - int memorySize = Arguments.Defaults.MemorySize, - bool enforceNoNegativity = Arguments.Defaults.EnforceNonNegativity, - Action advancedSettings = null) + float l1Weight = Options.Defaults.L1Weight, + float l2Weight = Options.Defaults.L2Weight, + float optimizationTolerance = Options.Defaults.OptTol, + int memorySize = Options.Defaults.MemorySize, + bool enforceNoNegativity = Options.Defaults.EnforceNonNegativity, + Action advancedSettings = null) : base(env, featureColumn, TrainerUtils.MakeU4ScalarColumn(labelColumn), weights, advancedSettings, l1Weight, l2Weight, optimizationTolerance, memorySize, enforceNoNegativity) { @@ -105,7 +105,7 @@ public MulticlassLogisticRegression(IHostEnvironment env, /// /// Initializes a new instance of /// - internal MulticlassLogisticRegression(IHostEnvironment env, Arguments args) + internal MulticlassLogisticRegression(IHostEnvironment env, Options args) : base(env, args, TrainerUtils.MakeU4ScalarColumn(args.LabelColumn)) { ShowTrainingStats = Args.ShowTrainingStats; @@ -1007,14 +1007,14 @@ public partial class LogisticRegression ShortName = MulticlassLogisticRegression.ShortName, XmlInclude = new[] { @"", @"" })] - public static CommonOutputs.MulticlassClassificationOutput TrainMultiClass(IHostEnvironment env, MulticlassLogisticRegression.Arguments input) + public static CommonOutputs.MulticlassClassificationOutput TrainMultiClass(IHostEnvironment env, MulticlassLogisticRegression.Options input) { Contracts.CheckValue(env, nameof(env)); var host = env.Register("TrainLRMultiClass"); host.CheckValue(input, nameof(input)); EntryPointUtils.CheckInputArgs(host, input); - return LearnerEntryPointsUtils.Train(host, input, + return LearnerEntryPointsUtils.Train(host, input, () => new MulticlassLogisticRegression(host, input), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumn), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.WeightColumn)); diff --git a/src/Microsoft.ML.StandardLearners/Standard/MultiClass/MetaMulticlassTrainer.cs b/src/Microsoft.ML.StandardLearners/Standard/MultiClass/MetaMulticlassTrainer.cs index e241f1b587..0289b01044 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/MultiClass/MetaMulticlassTrainer.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/MultiClass/MetaMulticlassTrainer.cs @@ -87,7 +87,7 @@ private TScalarTrainer CreateTrainer() { return Args.PredictorType != null ? Args.PredictorType.CreateComponent(Host) : - new LinearSvm(Host, new LinearSvm.Arguments()); + new LinearSvm(Host, new LinearSvm.Options()); } private protected IDataView MapLabelsCore(ColumnType type, InPredicate equalsTarget, RoleMappedData data) diff --git a/src/Microsoft.ML.StandardLearners/Standard/Online/AveragedPerceptron.cs b/src/Microsoft.ML.StandardLearners/Standard/Online/AveragedPerceptron.cs index 6df0bde35d..0965793659 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/Online/AveragedPerceptron.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/Online/AveragedPerceptron.cs @@ -15,7 +15,7 @@ using Microsoft.ML.Trainers.Online; using Microsoft.ML.Training; -[assembly: LoadableClass(AveragedPerceptronTrainer.Summary, typeof(AveragedPerceptronTrainer), typeof(AveragedPerceptronTrainer.Arguments), +[assembly: LoadableClass(AveragedPerceptronTrainer.Summary, typeof(AveragedPerceptronTrainer), typeof(AveragedPerceptronTrainer.Options), new[] { typeof(SignatureBinaryClassifierTrainer), typeof(SignatureTrainer), typeof(SignatureFeatureScorerTrainer) }, AveragedPerceptronTrainer.UserNameValue, AveragedPerceptronTrainer.LoadNameValue, "avgper", AveragedPerceptronTrainer.ShortName)] @@ -37,9 +37,9 @@ public sealed class AveragedPerceptronTrainer : AveragedLinearTrainer advancedSettings = null) - : this(env, InvokeAdvanced(advancedSettings, new Arguments + float learningRate = Options.AveragedDefaultArgs.LearningRate, + bool decreaseLearningRate = Options.AveragedDefaultArgs.DecreaseLearningRate, + float l2RegularizerWeight = Options.AveragedDefaultArgs.L2RegularizerWeight, + int numIterations = Options.AveragedDefaultArgs.NumIterations, + Action advancedSettings = null) + : this(env, InvokeAdvanced(advancedSettings, new Options { LabelColumn = labelColumn, FeatureColumn = featureColumn, @@ -191,14 +191,14 @@ public BinaryPredictionTransformer Train(IDataView ShortName = ShortName, XmlInclude = new[] { @"", @""})] - public static CommonOutputs.BinaryClassificationOutput TrainBinary(IHostEnvironment env, Arguments input) + public static CommonOutputs.BinaryClassificationOutput TrainBinary(IHostEnvironment env, Options input) { Contracts.CheckValue(env, nameof(env)); var host = env.Register("TrainAP"); host.CheckValue(input, nameof(input)); EntryPointUtils.CheckInputArgs(host, input); - return LearnerEntryPointsUtils.Train(host, input, + return LearnerEntryPointsUtils.Train(host, input, () => new AveragedPerceptronTrainer(host, input), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumn), calibrator: input.Calibrator, maxCalibrationExamples: input.MaxCalibrationExamples); diff --git a/src/Microsoft.ML.StandardLearners/Standard/Online/LinearSvm.cs b/src/Microsoft.ML.StandardLearners/Standard/Online/LinearSvm.cs index d1c192821e..a9e74d461c 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/Online/LinearSvm.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/Online/LinearSvm.cs @@ -17,7 +17,7 @@ using Microsoft.ML.Training; using Float = System.Single; -[assembly: LoadableClass(LinearSvm.Summary, typeof(LinearSvm), typeof(LinearSvm.Arguments), +[assembly: LoadableClass(LinearSvm.Summary, typeof(LinearSvm), typeof(LinearSvm.Options), new[] { typeof(SignatureBinaryClassifierTrainer), typeof(SignatureTrainer), typeof(SignatureFeatureScorerTrainer) }, LinearSvm.UserNameValue, LinearSvm.LoadNameValue, @@ -40,9 +40,9 @@ public sealed class LinearSvm : OnlineLinearTrainer advancedSettings = null) - :this(env, InvokeAdvanced(advancedSettings, new Arguments + int numIterations = Options.OnlineDefaultArgs.NumIterations, + Action advancedSettings = null) + :this(env, InvokeAdvanced(advancedSettings, new Options { LabelColumn = labelColumn, FeatureColumn = featureColumn, @@ -246,7 +246,7 @@ public LinearSvm(IHostEnvironment env, { } - internal LinearSvm(IHostEnvironment env, Arguments args) + internal LinearSvm(IHostEnvironment env, Options args) : base(args, env, UserNameValue, MakeLabelColumn(args.LabelColumn)) { Contracts.CheckUserArg(args.Lambda > 0, nameof(args.Lambda), UserErrorPositive); @@ -284,14 +284,14 @@ private static SchemaShape.Column MakeLabelColumn(string labelColumn) } [TlcModule.EntryPoint(Name = "Trainers.LinearSvmBinaryClassifier", Desc = "Train a linear SVM.", UserName = UserNameValue, ShortName = ShortName)] - public static CommonOutputs.BinaryClassificationOutput TrainLinearSvm(IHostEnvironment env, Arguments input) + public static CommonOutputs.BinaryClassificationOutput TrainLinearSvm(IHostEnvironment env, Options input) { Contracts.CheckValue(env, nameof(env)); var host = env.Register("TrainLinearSVM"); host.CheckValue(input, nameof(input)); EntryPointUtils.CheckInputArgs(host, input); - return LearnerEntryPointsUtils.Train(host, input, + return LearnerEntryPointsUtils.Train(host, input, () => new LinearSvm(host, input), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumn), calibrator: input.Calibrator, maxCalibrationExamples: input.MaxCalibrationExamples); diff --git a/src/Microsoft.ML.StandardLearners/Standard/Online/OnlineGradientDescent.cs b/src/Microsoft.ML.StandardLearners/Standard/Online/OnlineGradientDescent.cs index dd3395f3ee..5cc870a1dd 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/Online/OnlineGradientDescent.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/Online/OnlineGradientDescent.cs @@ -14,7 +14,7 @@ using Microsoft.ML.Trainers.Online; using Microsoft.ML.Training; -[assembly: LoadableClass(OnlineGradientDescentTrainer.Summary, typeof(OnlineGradientDescentTrainer), typeof(OnlineGradientDescentTrainer.Arguments), +[assembly: LoadableClass(OnlineGradientDescentTrainer.Summary, typeof(OnlineGradientDescentTrainer), typeof(OnlineGradientDescentTrainer.Options), new[] { typeof(SignatureRegressorTrainer), typeof(SignatureTrainer), typeof(SignatureFeatureScorerTrainer) }, OnlineGradientDescentTrainer.UserNameValue, OnlineGradientDescentTrainer.LoadNameValue, @@ -35,7 +35,7 @@ public sealed class OnlineGradientDescentTrainer : AveragedLinearTrainer /// Set defaults that vary from the base type. /// - public Arguments() + public Options() { LearningRate = OgdDefaultArgs.LearningRate; DecreaseLearningRate = OgdDefaultArgs.DecreaseLearningRate; @@ -103,14 +103,14 @@ public override LinearRegressionModelParameters CreatePredictor() public OnlineGradientDescentTrainer(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, - float learningRate = Arguments.OgdDefaultArgs.LearningRate, - bool decreaseLearningRate = Arguments.OgdDefaultArgs.DecreaseLearningRate, - float l2RegularizerWeight = Arguments.OgdDefaultArgs.L2RegularizerWeight, - int numIterations = Arguments.OgdDefaultArgs.NumIterations, + float learningRate = Options.OgdDefaultArgs.LearningRate, + bool decreaseLearningRate = Options.OgdDefaultArgs.DecreaseLearningRate, + float l2RegularizerWeight = Options.OgdDefaultArgs.L2RegularizerWeight, + int numIterations = Options.OgdDefaultArgs.NumIterations, string weightsColumn = null, IRegressionLoss lossFunction = null, - Action advancedSettings = null) - : this(env, InvokeAdvanced(advancedSettings, new Arguments + Action advancedSettings = null) + : this(env, InvokeAdvanced(advancedSettings, new Options { LearningRate = learningRate, DecreaseLearningRate = decreaseLearningRate, @@ -136,7 +136,7 @@ public TrivialFactory(IRegressionLoss loss) IRegressionLoss IComponentFactory.CreateComponent(IHostEnvironment env) => _loss; } - internal OnlineGradientDescentTrainer(IHostEnvironment env, Arguments args) + internal OnlineGradientDescentTrainer(IHostEnvironment env, Options args) : base(args, env, UserNameValue, TrainerUtils.MakeR4ScalarColumn(args.LabelColumn)) { LossFunction = args.LossFunction.CreateComponent(env); @@ -168,14 +168,14 @@ private protected override TrainStateBase MakeState(IChannel ch, int numFeatures ShortName = ShortName, XmlInclude = new[] { @"", @""})] - public static CommonOutputs.RegressionOutput TrainRegression(IHostEnvironment env, Arguments input) + public static CommonOutputs.RegressionOutput TrainRegression(IHostEnvironment env, Options input) { Contracts.CheckValue(env, nameof(env)); var host = env.Register("TrainOGD"); host.CheckValue(input, nameof(input)); EntryPointUtils.CheckInputArgs(host, input); - return LearnerEntryPointsUtils.Train(host, input, + return LearnerEntryPointsUtils.Train(host, input, () => new OnlineGradientDescentTrainer(host, input), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumn)); } diff --git a/src/Microsoft.ML.StandardLearners/Standard/Online/OnlineLearnerStatic.cs b/src/Microsoft.ML.StandardLearners/Standard/Online/OnlineLearnerStatic.cs index bdfd2c88db..3611db4e06 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/Online/OnlineLearnerStatic.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/Online/OnlineLearnerStatic.cs @@ -51,7 +51,7 @@ public static (Scalar score, Scalar predictedLabel) AveragedPercept bool decreaseLearningRate = AveragedLinearArguments.AveragedDefaultArgs.DecreaseLearningRate, float l2RegularizerWeight = AveragedLinearArguments.AveragedDefaultArgs.L2RegularizerWeight, int numIterations = AveragedLinearArguments.AveragedDefaultArgs.NumIterations, - Action advancedSettings = null, + Action advancedSettings = null, Action onFit = null ) { @@ -109,9 +109,9 @@ public static Scalar OnlineGradientDescent(this RegressionContext.Regress Vector features, Scalar weights = null, IRegressionLoss lossFunction = null, - float learningRate = OnlineGradientDescentTrainer.Arguments.OgdDefaultArgs.LearningRate, - bool decreaseLearningRate = OnlineGradientDescentTrainer.Arguments.OgdDefaultArgs.DecreaseLearningRate, - float l2RegularizerWeight = OnlineGradientDescentTrainer.Arguments.OgdDefaultArgs.L2RegularizerWeight, + float learningRate = OnlineGradientDescentTrainer.Options.OgdDefaultArgs.LearningRate, + bool decreaseLearningRate = OnlineGradientDescentTrainer.Options.OgdDefaultArgs.DecreaseLearningRate, + float l2RegularizerWeight = OnlineGradientDescentTrainer.Options.OgdDefaultArgs.L2RegularizerWeight, int numIterations = OnlineLinearArguments.OnlineDefaultArgs.NumIterations, Action advancedSettings = null, Action onFit = null) diff --git a/src/Microsoft.ML.StandardLearners/Standard/PoissonRegression/PoissonRegression.cs b/src/Microsoft.ML.StandardLearners/Standard/PoissonRegression/PoissonRegression.cs index 402bf135d8..1806b2c3e0 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/PoissonRegression/PoissonRegression.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/PoissonRegression/PoissonRegression.cs @@ -14,7 +14,7 @@ using Microsoft.ML.Trainers; using Microsoft.ML.Training; -[assembly: LoadableClass(PoissonRegression.Summary, typeof(PoissonRegression), typeof(PoissonRegression.Arguments), +[assembly: LoadableClass(PoissonRegression.Summary, typeof(PoissonRegression), typeof(PoissonRegression.Options), new[] { typeof(SignatureRegressorTrainer), typeof(SignatureTrainer), typeof(SignatureFeatureScorerTrainer) }, PoissonRegression.UserNameValue, PoissonRegression.LoadNameValue, @@ -27,14 +27,14 @@ namespace Microsoft.ML.Trainers { /// - public sealed class PoissonRegression : LbfgsTrainerBase, PoissonRegressionModelParameters> + public sealed class PoissonRegression : LbfgsTrainerBase, PoissonRegressionModelParameters> { internal const string LoadNameValue = "PoissonRegression"; internal const string UserNameValue = "Poisson Regression"; internal const string ShortName = "PR"; internal const string Summary = "Poisson Regression assumes the unknown function, denoted Y has a Poisson distribution."; - public sealed class Arguments : ArgumentsBase + public sealed class Options : ArgumentsBase { } @@ -57,12 +57,12 @@ public PoissonRegression(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, string weights = null, - float l1Weight = Arguments.Defaults.L1Weight, - float l2Weight = Arguments.Defaults.L2Weight, - float optimizationTolerance = Arguments.Defaults.OptTol, - int memorySize = Arguments.Defaults.MemorySize, - bool enforceNoNegativity = Arguments.Defaults.EnforceNonNegativity, - Action advancedSettings = null) + float l1Weight = Options.Defaults.L1Weight, + float l2Weight = Options.Defaults.L2Weight, + float optimizationTolerance = Options.Defaults.OptTol, + int memorySize = Options.Defaults.MemorySize, + bool enforceNoNegativity = Options.Defaults.EnforceNonNegativity, + Action advancedSettings = null) : base(env, featureColumn, TrainerUtils.MakeR4ScalarColumn(labelColumn), weights, advancedSettings, l1Weight, l2Weight, optimizationTolerance, memorySize, enforceNoNegativity) { @@ -73,7 +73,7 @@ public PoissonRegression(IHostEnvironment env, /// /// Initializes a new instance of /// - internal PoissonRegression(IHostEnvironment env, Arguments args) + internal PoissonRegression(IHostEnvironment env, Options args) : base(env, args, TrainerUtils.MakeR4ScalarColumn(args.LabelColumn)) { } @@ -177,14 +177,14 @@ protected override void ProcessPriorDistribution(float label, float weight) ShortName = ShortName, XmlInclude = new[] { @"", @""})] - public static CommonOutputs.RegressionOutput TrainRegression(IHostEnvironment env, Arguments input) + public static CommonOutputs.RegressionOutput TrainRegression(IHostEnvironment env, Options input) { Contracts.CheckValue(env, nameof(env)); var host = env.Register("TrainPoisson"); host.CheckValue(input, nameof(input)); EntryPointUtils.CheckInputArgs(host, input); - return LearnerEntryPointsUtils.Train(host, input, + return LearnerEntryPointsUtils.Train(host, input, () => new PoissonRegression(host, input), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumn), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.WeightColumn)); diff --git a/src/Microsoft.ML.StandardLearners/Standard/SdcaBinary.cs b/src/Microsoft.ML.StandardLearners/Standard/SdcaBinary.cs index 24feb7fb40..4703918562 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/SdcaBinary.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/SdcaBinary.cs @@ -23,7 +23,7 @@ using Microsoft.ML.Training; using Microsoft.ML.Transforms; -[assembly: LoadableClass(typeof(SdcaBinaryTrainer), typeof(SdcaBinaryTrainer.Arguments), +[assembly: LoadableClass(typeof(SdcaBinaryTrainer), typeof(SdcaBinaryTrainer.Options), new[] { typeof(SignatureBinaryClassifierTrainer), typeof(SignatureTrainer), typeof(SignatureFeatureScorerTrainer) }, SdcaBinaryTrainer.UserNameValue, SdcaBinaryTrainer.LoadNameValue, @@ -31,7 +31,7 @@ "lc", "sasdca")] -[assembly: LoadableClass(typeof(StochasticGradientDescentClassificationTrainer), typeof(StochasticGradientDescentClassificationTrainer.Arguments), +[assembly: LoadableClass(typeof(StochasticGradientDescentClassificationTrainer), typeof(StochasticGradientDescentClassificationTrainer.Options), new[] { typeof(SignatureBinaryClassifierTrainer), typeof(SignatureTrainer), typeof(SignatureFeatureScorerTrainer) }, StochasticGradientDescentClassificationTrainer.UserNameValue, StochasticGradientDescentClassificationTrainer.LoadNameValue, @@ -1391,12 +1391,12 @@ public void Add(Double summand) } } - public sealed class SdcaBinaryTrainer : SdcaTrainerBase, TScalarPredictor> + public sealed class SdcaBinaryTrainer : SdcaTrainerBase, TScalarPredictor> { public const string LoadNameValue = "SDCA"; internal const string UserNameValue = "Fast Linear (SA-SDCA)"; - public sealed class Arguments : ArgumentsBase + public sealed class Options : ArgumentsBase { [Argument(ArgumentType.Multiple, HelpText = "Loss Function", ShortName = "loss", SortOrder = 50)] public ISupportSdcaClassificationLossFactory LossFunction = new LogLossFactory(); @@ -1453,7 +1453,7 @@ public SdcaBinaryTrainer(IHostEnvironment env, float? l2Const = null, float? l1Threshold = null, int? maxIterations = null, - Action advancedSettings = null) + Action advancedSettings = null) : base(env, featureColumn, TrainerUtils.MakeBoolScalarLabel(labelColumn), TrainerUtils.MakeR4ScalarWeightColumn(weightColumn), advancedSettings, l2Const, l1Threshold, maxIterations) { @@ -1495,7 +1495,7 @@ public SdcaBinaryTrainer(IHostEnvironment env, _outputColumns = outCols.ToArray(); } - internal SdcaBinaryTrainer(IHostEnvironment env, Arguments args, + internal SdcaBinaryTrainer(IHostEnvironment env, Options args, string featureColumn, string labelColumn, string weightColumn = null) : base(env, args, TrainerUtils.MakeBoolScalarLabel(labelColumn), TrainerUtils.MakeR4ScalarWeightColumn(weightColumn)) { @@ -1536,7 +1536,7 @@ internal SdcaBinaryTrainer(IHostEnvironment env, Arguments args, } - public SdcaBinaryTrainer(IHostEnvironment env, Arguments args) + public SdcaBinaryTrainer(IHostEnvironment env, Options args) : this(env, args, args.FeatureColumn, args.LabelColumn) { } @@ -1594,7 +1594,7 @@ public sealed class StochasticGradientDescentClassificationTrainer : internal const string UserNameValue = "Hogwild SGD (binary)"; internal const string ShortName = "HogwildSGD"; - public sealed class Arguments : LearnerInputBaseWithWeight + public sealed class Options : LearnerInputBaseWithWeight { [Argument(ArgumentType.Multiple, HelpText = "Loss Function", ShortName = "loss", SortOrder = 50)] public ISupportClassificationLossFactory LossFunction = new LogLossFactory(); @@ -1667,7 +1667,7 @@ internal static class Defaults } private readonly IClassificationLoss _loss; - private readonly Arguments _args; + private readonly Options _args; protected override bool ShuffleData => _args.Shuffle; @@ -1691,17 +1691,17 @@ public StochasticGradientDescentClassificationTrainer(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, string weightColumn = null, - int maxIterations = Arguments.Defaults.MaxIterations, - double initLearningRate = Arguments.Defaults.InitLearningRate, - float l2Weight = Arguments.Defaults.L2Weight, + int maxIterations = Options.Defaults.MaxIterations, + double initLearningRate = Options.Defaults.InitLearningRate, + float l2Weight = Options.Defaults.L2Weight, ISupportClassificationLossFactory loss = null, - Action advancedSettings = null) + Action advancedSettings = null) : base(env, featureColumn, TrainerUtils.MakeBoolScalarLabel(labelColumn), weightColumn) { Host.CheckNonEmpty(featureColumn, nameof(featureColumn)); Host.CheckNonEmpty(labelColumn, nameof(labelColumn)); - _args = new Arguments(); + _args = new Options(); _args.MaxIterations = maxIterations; _args.InitLearningRate = initLearningRate; _args.L2Weight = l2Weight; @@ -1725,7 +1725,7 @@ public StochasticGradientDescentClassificationTrainer(IHostEnvironment env, /// /// Initializes a new instance of /// - internal StochasticGradientDescentClassificationTrainer(IHostEnvironment env, Arguments args) + internal StochasticGradientDescentClassificationTrainer(IHostEnvironment env, Options args) : base(env, args.FeatureColumn, TrainerUtils.MakeBoolScalarLabel(args.LabelColumn), args.WeightColumn) { args.Check(env); @@ -1945,14 +1945,14 @@ private protected override void CheckLabel(RoleMappedData examples, out int weig } [TlcModule.EntryPoint(Name = "Trainers.StochasticGradientDescentBinaryClassifier", Desc = "Train an Hogwild SGD binary model.", UserName = UserNameValue, ShortName = ShortName)] - public static CommonOutputs.BinaryClassificationOutput TrainBinary(IHostEnvironment env, Arguments input) + public static CommonOutputs.BinaryClassificationOutput TrainBinary(IHostEnvironment env, Options input) { Contracts.CheckValue(env, nameof(env)); var host = env.Register("TrainHogwildSGD"); host.CheckValue(input, nameof(input)); EntryPointUtils.CheckInputArgs(host, input); - return LearnerEntryPointsUtils.Train(host, input, + return LearnerEntryPointsUtils.Train(host, input, () => new StochasticGradientDescentClassificationTrainer(host, input), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumn), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.WeightColumn), @@ -1972,14 +1972,14 @@ public static partial class Sdca ShortName = SdcaBinaryTrainer.LoadNameValue, XmlInclude = new[] { @"", @"" })] - public static CommonOutputs.BinaryClassificationOutput TrainBinary(IHostEnvironment env, SdcaBinaryTrainer.Arguments input) + public static CommonOutputs.BinaryClassificationOutput TrainBinary(IHostEnvironment env, SdcaBinaryTrainer.Options input) { Contracts.CheckValue(env, nameof(env)); var host = env.Register("TrainSDCA"); host.CheckValue(input, nameof(input)); EntryPointUtils.CheckInputArgs(host, input); - return LearnerEntryPointsUtils.Train(host, input, + return LearnerEntryPointsUtils.Train(host, input, () => new SdcaBinaryTrainer(host, input), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumn), calibrator: input.Calibrator, maxCalibrationExamples: input.MaxCalibrationExamples); diff --git a/src/Microsoft.ML.StandardLearners/Standard/SdcaMultiClass.cs b/src/Microsoft.ML.StandardLearners/Standard/SdcaMultiClass.cs index 0a069f5d8c..52154da989 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/SdcaMultiClass.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/SdcaMultiClass.cs @@ -19,7 +19,7 @@ using Microsoft.ML.Training; using Float = System.Single; -[assembly: LoadableClass(SdcaMultiClassTrainer.Summary, typeof(SdcaMultiClassTrainer), typeof(SdcaMultiClassTrainer.Arguments), +[assembly: LoadableClass(SdcaMultiClassTrainer.Summary, typeof(SdcaMultiClassTrainer), typeof(SdcaMultiClassTrainer.Options), new[] { typeof(SignatureMultiClassClassifierTrainer), typeof(SignatureTrainer), typeof(SignatureFeatureScorerTrainer) }, SdcaMultiClassTrainer.UserNameValue, SdcaMultiClassTrainer.LoadNameValue, @@ -29,14 +29,14 @@ namespace Microsoft.ML.Trainers { // SDCA linear multiclass trainer. /// - public class SdcaMultiClassTrainer : SdcaTrainerBase, MulticlassLogisticRegressionModelParameters> + public class SdcaMultiClassTrainer : SdcaTrainerBase, MulticlassLogisticRegressionModelParameters> { public const string LoadNameValue = "SDCAMC"; public const string UserNameValue = "Fast Linear Multi-class Classification (SA-SDCA)"; public const string ShortName = "sasdcamc"; internal const string Summary = "The SDCA linear multi-class classification trainer."; - public sealed class Arguments : ArgumentsBase + public sealed class Options : ArgumentsBase { [Argument(ArgumentType.Multiple, HelpText = "Loss Function", ShortName = "loss", SortOrder = 50)] public ISupportSdcaClassificationLossFactory LossFunction = new LogLossFactory(); @@ -69,7 +69,7 @@ public SdcaMultiClassTrainer(IHostEnvironment env, float? l2Const = null, float? l1Threshold = null, int? maxIterations = null, - Action advancedSettings = null) + Action advancedSettings = null) : base(env, featureColumn, TrainerUtils.MakeU4ScalarColumn(labelColumn), TrainerUtils.MakeR4ScalarWeightColumn(weights), advancedSettings, l2Const, l1Threshold, maxIterations) { @@ -79,7 +79,7 @@ public SdcaMultiClassTrainer(IHostEnvironment env, Loss = _loss; } - internal SdcaMultiClassTrainer(IHostEnvironment env, Arguments args, + internal SdcaMultiClassTrainer(IHostEnvironment env, Options args, string featureColumn, string labelColumn, string weightColumn = null) : base(env, args, TrainerUtils.MakeU4ScalarColumn(labelColumn), TrainerUtils.MakeR4ScalarWeightColumn(weightColumn)) { @@ -90,7 +90,7 @@ internal SdcaMultiClassTrainer(IHostEnvironment env, Arguments args, Loss = _loss; } - internal SdcaMultiClassTrainer(IHostEnvironment env, Arguments args) + internal SdcaMultiClassTrainer(IHostEnvironment env, Options args) : this(env, args, args.FeatureColumn, args.LabelColumn) { } @@ -455,14 +455,14 @@ public static partial class Sdca ShortName = SdcaMultiClassTrainer.ShortName, XmlInclude = new[] { @"", @"" })] - public static CommonOutputs.MulticlassClassificationOutput TrainMultiClass(IHostEnvironment env, SdcaMultiClassTrainer.Arguments input) + public static CommonOutputs.MulticlassClassificationOutput TrainMultiClass(IHostEnvironment env, SdcaMultiClassTrainer.Options input) { Contracts.CheckValue(env, nameof(env)); var host = env.Register("TrainSDCA"); host.CheckValue(input, nameof(input)); EntryPointUtils.CheckInputArgs(host, input); - return LearnerEntryPointsUtils.Train(host, input, + return LearnerEntryPointsUtils.Train(host, input, () => new SdcaMultiClassTrainer(host, input), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumn)); } diff --git a/src/Microsoft.ML.StandardLearners/Standard/SdcaRegression.cs b/src/Microsoft.ML.StandardLearners/Standard/SdcaRegression.cs index 8700f69605..c47daecb7f 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/SdcaRegression.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/SdcaRegression.cs @@ -15,7 +15,7 @@ using Microsoft.ML.Trainers; using Microsoft.ML.Training; -[assembly: LoadableClass(SdcaRegressionTrainer.Summary, typeof(SdcaRegressionTrainer), typeof(SdcaRegressionTrainer.Arguments), +[assembly: LoadableClass(SdcaRegressionTrainer.Summary, typeof(SdcaRegressionTrainer), typeof(SdcaRegressionTrainer.Options), new[] { typeof(SignatureRegressorTrainer), typeof(SignatureTrainer), typeof(SignatureFeatureScorerTrainer) }, SdcaRegressionTrainer.UserNameValue, SdcaRegressionTrainer.LoadNameValue, @@ -24,19 +24,19 @@ namespace Microsoft.ML.Trainers { /// - public sealed class SdcaRegressionTrainer : SdcaTrainerBase, LinearRegressionModelParameters> + public sealed class SdcaRegressionTrainer : SdcaTrainerBase, LinearRegressionModelParameters> { internal const string LoadNameValue = "SDCAR"; internal const string UserNameValue = "Fast Linear Regression (SA-SDCA)"; internal const string ShortName = "sasdcar"; internal const string Summary = "The SDCA linear regression trainer."; - public sealed class Arguments : ArgumentsBase + public sealed class Options : ArgumentsBase { [Argument(ArgumentType.Multiple, HelpText = "Loss Function", ShortName = "loss", SortOrder = 50)] public ISupportSdcaRegressionLossFactory LossFunction = new SquaredLossFactory(); - public Arguments() + public Options() { // Using a higher default tolerance for better RMS. ConvergenceTolerance = 0.01f; @@ -73,7 +73,7 @@ public SdcaRegressionTrainer(IHostEnvironment env, float? l2Const = null, float? l1Threshold = null, int? maxIterations = null, - Action advancedSettings = null) + Action advancedSettings = null) : base(env, featureColumn, TrainerUtils.MakeR4ScalarColumn(labelColumn), TrainerUtils.MakeR4ScalarWeightColumn(weights), advancedSettings, l2Const, l1Threshold, maxIterations) { @@ -83,7 +83,7 @@ public SdcaRegressionTrainer(IHostEnvironment env, Loss = _loss; } - internal SdcaRegressionTrainer(IHostEnvironment env, Arguments args, string featureColumn, string labelColumn, string weightColumn = null) + internal SdcaRegressionTrainer(IHostEnvironment env, Options args, string featureColumn, string labelColumn, string weightColumn = null) : base(env, args, TrainerUtils.MakeR4ScalarColumn(labelColumn), TrainerUtils.MakeR4ScalarWeightColumn(weightColumn)) { Host.CheckValue(labelColumn, nameof(labelColumn)); @@ -93,7 +93,7 @@ internal SdcaRegressionTrainer(IHostEnvironment env, Arguments args, string feat Loss = _loss; } - internal SdcaRegressionTrainer(IHostEnvironment env, Arguments args) + internal SdcaRegressionTrainer(IHostEnvironment env, Options args) : this(env, args, args.FeatureColumn, args.LabelColumn) { } @@ -178,14 +178,14 @@ public static partial class Sdca ShortName = SdcaRegressionTrainer.ShortName, XmlInclude = new[] { @"", @"" })] - public static CommonOutputs.RegressionOutput TrainRegression(IHostEnvironment env, SdcaRegressionTrainer.Arguments input) + public static CommonOutputs.RegressionOutput TrainRegression(IHostEnvironment env, SdcaRegressionTrainer.Options input) { Contracts.CheckValue(env, nameof(env)); var host = env.Register("TrainSDCA"); host.CheckValue(input, nameof(input)); EntryPointUtils.CheckInputArgs(host, input); - return LearnerEntryPointsUtils.Train(host, input, + return LearnerEntryPointsUtils.Train(host, input, () => new SdcaRegressionTrainer(host, input), () => LearnerEntryPointsUtils.FindColumn(host, input.TrainingData.Schema, input.LabelColumn)); } diff --git a/src/Microsoft.ML.StandardLearners/Standard/SgdStatic.cs b/src/Microsoft.ML.StandardLearners/Standard/SgdStatic.cs index a49ab88106..51052f2782 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/SgdStatic.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/SgdStatic.cs @@ -9,7 +9,7 @@ namespace Microsoft.ML.StaticPipe { - using Arguments = StochasticGradientDescentClassificationTrainer.Arguments; + using Options = StochasticGradientDescentClassificationTrainer.Options; /// /// Binary Classification trainer estimators. @@ -38,11 +38,11 @@ public static (Scalar score, Scalar probability, Scalar pred Scalar label, Vector features, Scalar weights = null, - int maxIterations = Arguments.Defaults.MaxIterations, - double initLearningRate = Arguments.Defaults.InitLearningRate, - float l2Weight = Arguments.Defaults.L2Weight, + int maxIterations = Options.Defaults.MaxIterations, + double initLearningRate = Options.Defaults.InitLearningRate, + float l2Weight = Options.Defaults.L2Weight, ISupportClassificationLossFactory loss = null, - Action advancedSettings = null, + Action advancedSettings = null, Action> onFit = null) { var rec = new TrainerEstimatorReconciler.BinaryClassifier( diff --git a/src/Microsoft.ML.StandardLearners/StandardLearnersCatalog.cs b/src/Microsoft.ML.StandardLearners/StandardLearnersCatalog.cs index 726c606eeb..de34cfa27b 100644 --- a/src/Microsoft.ML.StandardLearners/StandardLearnersCatalog.cs +++ b/src/Microsoft.ML.StandardLearners/StandardLearnersCatalog.cs @@ -12,8 +12,8 @@ namespace Microsoft.ML { - using LRArguments = LogisticRegression.Arguments; - using SgdArguments = StochasticGradientDescentClassificationTrainer.Arguments; + using LRArguments = LogisticRegression.Options; + using SgdArguments = StochasticGradientDescentClassificationTrainer.Options; /// /// TrainerEstimator extension methods. @@ -70,7 +70,7 @@ public static SdcaRegressionTrainer StochasticDualCoordinateAscent(this Regressi float? l2Const = null, float? l1Threshold = null, int? maxIterations = null, - Action advancedSettings = null) + Action advancedSettings = null) { Contracts.CheckValue(ctx, nameof(ctx)); var env = CatalogUtils.GetEnvironment(ctx); @@ -113,7 +113,7 @@ public static SdcaBinaryTrainer StochasticDualCoordinateAscent( float? l2Const = null, float? l1Threshold = null, int? maxIterations = null, - Action advancedSettings = null + Action advancedSettings = null ) { Contracts.CheckValue(ctx, nameof(ctx)); @@ -144,7 +144,7 @@ public static SdcaMultiClassTrainer StochasticDualCoordinateAscent(this Multicla float? l2Const = null, float? l1Threshold = null, int? maxIterations = null, - Action advancedSettings = null) + Action advancedSettings = null) { Contracts.CheckValue(ctx, nameof(ctx)); var env = CatalogUtils.GetEnvironment(ctx); @@ -174,7 +174,7 @@ public static AveragedPerceptronTrainer AveragedPerceptron( bool decreaseLearningRate = AveragedLinearArguments.AveragedDefaultArgs.DecreaseLearningRate, float l2RegularizerWeight = AveragedLinearArguments.AveragedDefaultArgs.L2RegularizerWeight, int numIterations = AveragedLinearArguments.AveragedDefaultArgs.NumIterations, - Action advancedSettings = null) + Action advancedSettings = null) { Contracts.CheckValue(ctx, nameof(ctx)); var env = CatalogUtils.GetEnvironment(ctx); @@ -214,8 +214,8 @@ public static OnlineGradientDescentTrainer OnlineGradientDescent(this Regression string featureColumn = DefaultColumnNames.Features, string weights = null, IRegressionLoss lossFunction = null, - float learningRate = OnlineGradientDescentTrainer.Arguments.OgdDefaultArgs.LearningRate, - bool decreaseLearningRate = OnlineGradientDescentTrainer.Arguments.OgdDefaultArgs.DecreaseLearningRate, + float learningRate = OnlineGradientDescentTrainer.Options.OgdDefaultArgs.LearningRate, + bool decreaseLearningRate = OnlineGradientDescentTrainer.Options.OgdDefaultArgs.DecreaseLearningRate, float l2RegularizerWeight = AveragedLinearArguments.AveragedDefaultArgs.L2RegularizerWeight, int numIterations = OnlineLinearArguments.OnlineDefaultArgs.NumIterations, Action advancedSettings = null) @@ -276,7 +276,7 @@ public static PoissonRegression PoissonRegression(this RegressionContext.Regress float optimizationTolerance = LRArguments.Defaults.OptTol, int memorySize = LRArguments.Defaults.MemorySize, bool enforceNoNegativity = LRArguments.Defaults.EnforceNonNegativity, - Action advancedSettings = null) + Action advancedSettings = null) { Contracts.CheckValue(ctx, nameof(ctx)); var env = CatalogUtils.GetEnvironment(ctx); @@ -305,7 +305,7 @@ public static MulticlassLogisticRegression LogisticRegression(this MulticlassCla float optimizationTolerance = LRArguments.Defaults.OptTol, int memorySize = LRArguments.Defaults.MemorySize, bool enforceNoNegativity = LRArguments.Defaults.EnforceNonNegativity, - Action advancedSettings = null) + Action advancedSettings = null) { Contracts.CheckValue(ctx, nameof(ctx)); var env = CatalogUtils.GetEnvironment(ctx); @@ -408,7 +408,7 @@ public static LinearSvm LinearSupportVectorMachines(this BinaryClassificationCon string featureColumn = DefaultColumnNames.Features, string weightsColumn = null, int numIterations = OnlineLinearArguments.OnlineDefaultArgs.NumIterations, - Action advancedSettings = null) + Action advancedSettings = null) { Contracts.CheckValue(ctx, nameof(ctx)); return new LinearSvm(CatalogUtils.GetEnvironment(ctx), labelColumn, featureColumn, weightsColumn, numIterations, advancedSettings); diff --git a/src/Microsoft.ML.StaticPipe/SdcaStaticExtensions.cs b/src/Microsoft.ML.StaticPipe/SdcaStaticExtensions.cs index 8743d8e77c..52556c6b9f 100644 --- a/src/Microsoft.ML.StaticPipe/SdcaStaticExtensions.cs +++ b/src/Microsoft.ML.StaticPipe/SdcaStaticExtensions.cs @@ -48,7 +48,7 @@ public static Scalar Sdca(this RegressionContext.RegressionTrainers ctx, float? l1Threshold = null, int? maxIterations = null, ISupportSdcaRegressionLoss loss = null, - Action advancedSettings = null, + Action advancedSettings = null, Action onFit = null) { Contracts.CheckValue(label, nameof(label)); @@ -106,7 +106,7 @@ public static (Scalar score, Scalar probability, Scalar pred float? l2Const = null, float? l1Threshold = null, int? maxIterations = null, - Action advancedSettings = null, + Action advancedSettings = null, Action onFit = null) { Contracts.CheckValue(label, nameof(label)); @@ -163,7 +163,7 @@ public static (Scalar score, Scalar probability, Scalar pred /// result in any way; it is only a way for the caller to be informed about what was learnt. /// The set of output columns including in order the predicted binary classification score (which will range /// from negative to positive infinity), and the predicted label. - /// + /// public static (Scalar score, Scalar predictedLabel) Sdca( this BinaryClassificationContext.BinaryClassificationTrainers ctx, Scalar label, Vector features, @@ -172,7 +172,7 @@ public static (Scalar score, Scalar predictedLabel) Sdca( float? l2Const = null, float? l1Threshold = null, int? maxIterations = null, - Action advancedSettings = null, + Action advancedSettings = null, Action onFit = null ) { @@ -239,7 +239,7 @@ public static (Vector score, Key predictedLabel) float? l2Const = null, float? l1Threshold = null, int? maxIterations = null, - Action advancedSettings = null, + Action advancedSettings = null, Action onFit = null) { Contracts.CheckValue(label, nameof(label)); diff --git a/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv b/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv index 165a3f923d..5c07a8b90c 100644 --- a/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv +++ b/test/BaselineOutput/Common/EntryPoints/core_ep-list.tsv @@ -39,37 +39,37 @@ TimeSeriesProcessingEntryPoints.PValueTransform This P-Value transform calculate TimeSeriesProcessingEntryPoints.SlidingWindowTransform Returns the last values for a time series [y(t-d-l+1), y(t-d-l+2), ..., y(t-l-1), y(t-l)] where d is the size of the window, l the lag and y is a Float. Microsoft.ML.TimeSeriesProcessing.TimeSeriesProcessingEntryPoints SlidingWindowTransform Microsoft.ML.TimeSeriesProcessing.SlidingWindowTransformBase`1+Arguments[System.Single] Microsoft.ML.EntryPoints.CommonOutputs+TransformOutput TimeSeriesProcessingEntryPoints.SsaChangePointDetector This transform detects the change-points in a seasonal time-series using Singular Spectrum Analysis (SSA). Microsoft.ML.TimeSeriesProcessing.TimeSeriesProcessingEntryPoints SsaChangePointDetector Microsoft.ML.TimeSeriesProcessing.SsaChangePointDetector+Arguments Microsoft.ML.EntryPoints.CommonOutputs+TransformOutput TimeSeriesProcessingEntryPoints.SsaSpikeDetector This transform detects the spikes in a seasonal time-series using Singular Spectrum Analysis (SSA). Microsoft.ML.TimeSeriesProcessing.TimeSeriesProcessingEntryPoints SsaSpikeDetector Microsoft.ML.TimeSeriesProcessing.SsaSpikeDetector+Arguments Microsoft.ML.EntryPoints.CommonOutputs+TransformOutput -Trainers.AveragedPerceptronBinaryClassifier Averaged Perceptron Binary Classifier. Microsoft.ML.Trainers.Online.AveragedPerceptronTrainer TrainBinary Microsoft.ML.Trainers.Online.AveragedPerceptronTrainer+Arguments Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput +Trainers.AveragedPerceptronBinaryClassifier Averaged Perceptron Binary Classifier. Microsoft.ML.Trainers.Online.AveragedPerceptronTrainer TrainBinary Microsoft.ML.Trainers.Online.AveragedPerceptronTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput Trainers.EnsembleBinaryClassifier Train binary ensemble. Microsoft.ML.Ensemble.EntryPoints.Ensemble CreateBinaryEnsemble Microsoft.ML.Ensemble.EnsembleTrainer+Arguments Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput Trainers.EnsembleClassification Train multiclass ensemble. Microsoft.ML.Ensemble.EntryPoints.Ensemble CreateMultiClassEnsemble Microsoft.ML.Ensemble.MulticlassDataPartitionEnsembleTrainer+Arguments Microsoft.ML.EntryPoints.CommonOutputs+MulticlassClassificationOutput Trainers.EnsembleRegression Train regression ensemble. Microsoft.ML.Ensemble.EntryPoints.Ensemble CreateRegressionEnsemble Microsoft.ML.Ensemble.RegressionEnsembleTrainer+Arguments Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput -Trainers.FastForestBinaryClassifier Uses a random forest learner to perform binary classification. Microsoft.ML.Trainers.FastTree.FastForest TrainBinary Microsoft.ML.Trainers.FastTree.FastForestClassification+Arguments Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput -Trainers.FastForestRegressor Trains a random forest to fit target values using least-squares. Microsoft.ML.Trainers.FastTree.FastForest TrainRegression Microsoft.ML.Trainers.FastTree.FastForestRegression+Arguments Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput -Trainers.FastTreeBinaryClassifier Uses a logit-boost boosted tree learner to perform binary classification. Microsoft.ML.Trainers.FastTree.FastTree TrainBinary Microsoft.ML.Trainers.FastTree.FastTreeBinaryClassificationTrainer+Arguments Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput -Trainers.FastTreeRanker Trains gradient boosted decision trees to the LambdaRank quasi-gradient. Microsoft.ML.Trainers.FastTree.FastTree TrainRanking Microsoft.ML.Trainers.FastTree.FastTreeRankingTrainer+Arguments Microsoft.ML.EntryPoints.CommonOutputs+RankingOutput -Trainers.FastTreeRegressor Trains gradient boosted decision trees to fit target values using least-squares. Microsoft.ML.Trainers.FastTree.FastTree TrainRegression Microsoft.ML.Trainers.FastTree.FastTreeRegressionTrainer+Arguments Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput -Trainers.FastTreeTweedieRegressor Trains gradient boosted decision trees to fit target values using a Tweedie loss function. This learner is a generalization of Poisson, compound Poisson, and gamma regression. Microsoft.ML.Trainers.FastTree.FastTree TrainTweedieRegression Microsoft.ML.Trainers.FastTree.FastTreeTweedieTrainer+Arguments Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput -Trainers.FieldAwareFactorizationMachineBinaryClassifier Train a field-aware factorization machine for binary classification Microsoft.ML.FactorizationMachine.FieldAwareFactorizationMachineTrainer TrainBinary Microsoft.ML.FactorizationMachine.FieldAwareFactorizationMachineTrainer+Arguments Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput -Trainers.GeneralizedAdditiveModelBinaryClassifier Trains a gradient boosted stump per feature, on all features simultaneously, to fit target values using least-squares. It mantains no interactions between features. Microsoft.ML.Trainers.FastTree.Gam TrainBinary Microsoft.ML.Trainers.FastTree.BinaryClassificationGamTrainer+Arguments Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput -Trainers.GeneralizedAdditiveModelRegressor Trains a gradient boosted stump per feature, on all features simultaneously, to fit target values using least-squares. It mantains no interactions between features. Microsoft.ML.Trainers.FastTree.Gam TrainRegression Microsoft.ML.Trainers.FastTree.RegressionGamTrainer+Arguments Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput -Trainers.KMeansPlusPlusClusterer K-means is a popular clustering algorithm. With K-means, the data is clustered into a specified number of clusters in order to minimize the within-cluster sum of squares. K-means++ improves upon K-means by using a better method for choosing the initial cluster centers. Microsoft.ML.Trainers.KMeans.KMeansPlusPlusTrainer TrainKMeans Microsoft.ML.Trainers.KMeans.KMeansPlusPlusTrainer+Arguments Microsoft.ML.EntryPoints.CommonOutputs+ClusteringOutput +Trainers.FastForestBinaryClassifier Uses a random forest learner to perform binary classification. Microsoft.ML.Trainers.FastTree.FastForest TrainBinary Microsoft.ML.Trainers.FastTree.FastForestClassification+Options Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput +Trainers.FastForestRegressor Trains a random forest to fit target values using least-squares. Microsoft.ML.Trainers.FastTree.FastForest TrainRegression Microsoft.ML.Trainers.FastTree.FastForestRegression+Options Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput +Trainers.FastTreeBinaryClassifier Uses a logit-boost boosted tree learner to perform binary classification. Microsoft.ML.Trainers.FastTree.FastTree TrainBinary Microsoft.ML.Trainers.FastTree.FastTreeBinaryClassificationTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput +Trainers.FastTreeRanker Trains gradient boosted decision trees to the LambdaRank quasi-gradient. Microsoft.ML.Trainers.FastTree.FastTree TrainRanking Microsoft.ML.Trainers.FastTree.FastTreeRankingTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+RankingOutput +Trainers.FastTreeRegressor Trains gradient boosted decision trees to fit target values using least-squares. Microsoft.ML.Trainers.FastTree.FastTree TrainRegression Microsoft.ML.Trainers.FastTree.FastTreeRegressionTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput +Trainers.FastTreeTweedieRegressor Trains gradient boosted decision trees to fit target values using a Tweedie loss function. This learner is a generalization of Poisson, compound Poisson, and gamma regression. Microsoft.ML.Trainers.FastTree.FastTree TrainTweedieRegression Microsoft.ML.Trainers.FastTree.FastTreeTweedieTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput +Trainers.FieldAwareFactorizationMachineBinaryClassifier Train a field-aware factorization machine for binary classification Microsoft.ML.FactorizationMachine.FieldAwareFactorizationMachineTrainer TrainBinary Microsoft.ML.FactorizationMachine.FieldAwareFactorizationMachineTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput +Trainers.GeneralizedAdditiveModelBinaryClassifier Trains a gradient boosted stump per feature, on all features simultaneously, to fit target values using least-squares. It mantains no interactions between features. Microsoft.ML.Trainers.FastTree.Gam TrainBinary Microsoft.ML.Trainers.FastTree.BinaryClassificationGamTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput +Trainers.GeneralizedAdditiveModelRegressor Trains a gradient boosted stump per feature, on all features simultaneously, to fit target values using least-squares. It mantains no interactions between features. Microsoft.ML.Trainers.FastTree.Gam TrainRegression Microsoft.ML.Trainers.FastTree.RegressionGamTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput +Trainers.KMeansPlusPlusClusterer K-means is a popular clustering algorithm. With K-means, the data is clustered into a specified number of clusters in order to minimize the within-cluster sum of squares. K-means++ improves upon K-means by using a better method for choosing the initial cluster centers. Microsoft.ML.Trainers.KMeans.KMeansPlusPlusTrainer TrainKMeans Microsoft.ML.Trainers.KMeans.KMeansPlusPlusTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+ClusteringOutput Trainers.LightGbmBinaryClassifier Train a LightGBM binary classification model. Microsoft.ML.LightGBM.LightGbm TrainBinary Microsoft.ML.LightGBM.LightGbmArguments Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput Trainers.LightGbmClassifier Train a LightGBM multi class model. Microsoft.ML.LightGBM.LightGbm TrainMultiClass Microsoft.ML.LightGBM.LightGbmArguments Microsoft.ML.EntryPoints.CommonOutputs+MulticlassClassificationOutput Trainers.LightGbmRanker Train a LightGBM ranking model. Microsoft.ML.LightGBM.LightGbm TrainRanking Microsoft.ML.LightGBM.LightGbmArguments Microsoft.ML.EntryPoints.CommonOutputs+RankingOutput Trainers.LightGbmRegressor LightGBM Regression Microsoft.ML.LightGBM.LightGbm TrainRegression Microsoft.ML.LightGBM.LightGbmArguments Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput -Trainers.LinearSvmBinaryClassifier Train a linear SVM. Microsoft.ML.Trainers.Online.LinearSvm TrainLinearSvm Microsoft.ML.Trainers.Online.LinearSvm+Arguments Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput -Trainers.LogisticRegressionBinaryClassifier Logistic Regression is a method in statistics used to predict the probability of occurrence of an event and can be used as a classification algorithm. The algorithm predicts the probability of occurrence of an event by fitting data to a logistical function. Microsoft.ML.Learners.LogisticRegression TrainBinary Microsoft.ML.Learners.LogisticRegression+Arguments Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput -Trainers.LogisticRegressionClassifier Logistic Regression is a method in statistics used to predict the probability of occurrence of an event and can be used as a classification algorithm. The algorithm predicts the probability of occurrence of an event by fitting data to a logistical function. Microsoft.ML.Learners.LogisticRegression TrainMultiClass Microsoft.ML.Learners.MulticlassLogisticRegression+Arguments Microsoft.ML.EntryPoints.CommonOutputs+MulticlassClassificationOutput +Trainers.LinearSvmBinaryClassifier Train a linear SVM. Microsoft.ML.Trainers.Online.LinearSvm TrainLinearSvm Microsoft.ML.Trainers.Online.LinearSvm+Options Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput +Trainers.LogisticRegressionBinaryClassifier Logistic Regression is a method in statistics used to predict the probability of occurrence of an event and can be used as a classification algorithm. The algorithm predicts the probability of occurrence of an event by fitting data to a logistical function. Microsoft.ML.Learners.LogisticRegression TrainBinary Microsoft.ML.Learners.LogisticRegression+Options Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput +Trainers.LogisticRegressionClassifier Logistic Regression is a method in statistics used to predict the probability of occurrence of an event and can be used as a classification algorithm. The algorithm predicts the probability of occurrence of an event by fitting data to a logistical function. Microsoft.ML.Learners.LogisticRegression TrainMultiClass Microsoft.ML.Learners.MulticlassLogisticRegression+Options Microsoft.ML.EntryPoints.CommonOutputs+MulticlassClassificationOutput Trainers.NaiveBayesClassifier Train a MultiClassNaiveBayesTrainer. Microsoft.ML.Trainers.MultiClassNaiveBayesTrainer TrainMultiClassNaiveBayesTrainer Microsoft.ML.Trainers.MultiClassNaiveBayesTrainer+Arguments Microsoft.ML.EntryPoints.CommonOutputs+MulticlassClassificationOutput -Trainers.OnlineGradientDescentRegressor Train a Online gradient descent perceptron. Microsoft.ML.Trainers.Online.OnlineGradientDescentTrainer TrainRegression Microsoft.ML.Trainers.Online.OnlineGradientDescentTrainer+Arguments Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput -Trainers.OrdinaryLeastSquaresRegressor Train an OLS regression model. Microsoft.ML.Trainers.HalLearners.OlsLinearRegressionTrainer TrainRegression Microsoft.ML.Trainers.HalLearners.OlsLinearRegressionTrainer+Arguments Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput +Trainers.OnlineGradientDescentRegressor Train a Online gradient descent perceptron. Microsoft.ML.Trainers.Online.OnlineGradientDescentTrainer TrainRegression Microsoft.ML.Trainers.Online.OnlineGradientDescentTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput +Trainers.OrdinaryLeastSquaresRegressor Train an OLS regression model. Microsoft.ML.Trainers.HalLearners.OlsLinearRegressionTrainer TrainRegression Microsoft.ML.Trainers.HalLearners.OlsLinearRegressionTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput Trainers.PcaAnomalyDetector Train an PCA Anomaly model. Microsoft.ML.Trainers.PCA.RandomizedPcaTrainer TrainPcaAnomaly Microsoft.ML.Trainers.PCA.RandomizedPcaTrainer+Arguments Microsoft.ML.EntryPoints.CommonOutputs+AnomalyDetectionOutput -Trainers.PoissonRegressor Train an Poisson regression model. Microsoft.ML.Trainers.PoissonRegression TrainRegression Microsoft.ML.Trainers.PoissonRegression+Arguments Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput -Trainers.StochasticDualCoordinateAscentBinaryClassifier Train an SDCA binary model. Microsoft.ML.Trainers.Sdca TrainBinary Microsoft.ML.Trainers.SdcaBinaryTrainer+Arguments Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput -Trainers.StochasticDualCoordinateAscentClassifier The SDCA linear multi-class classification trainer. Microsoft.ML.Trainers.Sdca TrainMultiClass Microsoft.ML.Trainers.SdcaMultiClassTrainer+Arguments Microsoft.ML.EntryPoints.CommonOutputs+MulticlassClassificationOutput -Trainers.StochasticDualCoordinateAscentRegressor The SDCA linear regression trainer. Microsoft.ML.Trainers.Sdca TrainRegression Microsoft.ML.Trainers.SdcaRegressionTrainer+Arguments Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput -Trainers.StochasticGradientDescentBinaryClassifier Train an Hogwild SGD binary model. Microsoft.ML.Trainers.StochasticGradientDescentClassificationTrainer TrainBinary Microsoft.ML.Trainers.StochasticGradientDescentClassificationTrainer+Arguments Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput -Trainers.SymSgdBinaryClassifier Train a symbolic SGD. Microsoft.ML.Trainers.SymSgd.SymSgdClassificationTrainer TrainSymSgd Microsoft.ML.Trainers.SymSgd.SymSgdClassificationTrainer+Arguments Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput +Trainers.PoissonRegressor Train an Poisson regression model. Microsoft.ML.Trainers.PoissonRegression TrainRegression Microsoft.ML.Trainers.PoissonRegression+Options Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput +Trainers.StochasticDualCoordinateAscentBinaryClassifier Train an SDCA binary model. Microsoft.ML.Trainers.Sdca TrainBinary Microsoft.ML.Trainers.SdcaBinaryTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput +Trainers.StochasticDualCoordinateAscentClassifier The SDCA linear multi-class classification trainer. Microsoft.ML.Trainers.Sdca TrainMultiClass Microsoft.ML.Trainers.SdcaMultiClassTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+MulticlassClassificationOutput +Trainers.StochasticDualCoordinateAscentRegressor The SDCA linear regression trainer. Microsoft.ML.Trainers.Sdca TrainRegression Microsoft.ML.Trainers.SdcaRegressionTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+RegressionOutput +Trainers.StochasticGradientDescentBinaryClassifier Train an Hogwild SGD binary model. Microsoft.ML.Trainers.StochasticGradientDescentClassificationTrainer TrainBinary Microsoft.ML.Trainers.StochasticGradientDescentClassificationTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput +Trainers.SymSgdBinaryClassifier Train a symbolic SGD. Microsoft.ML.Trainers.SymSgd.SymSgdClassificationTrainer TrainSymSgd Microsoft.ML.Trainers.SymSgd.SymSgdClassificationTrainer+Options Microsoft.ML.EntryPoints.CommonOutputs+BinaryClassificationOutput Transforms.ApproximateBootstrapSampler Approximate bootstrap sampling. Microsoft.ML.Transforms.BootstrapSample GetSample Microsoft.ML.Transforms.BootstrapSamplingTransformer+Arguments Microsoft.ML.EntryPoints.CommonOutputs+TransformOutput Transforms.BinaryPredictionScoreColumnsRenamer For binary prediction, it renames the PredictedLabel and Score columns to include the name of the positive class. Microsoft.ML.EntryPoints.ScoreModel RenameBinaryPredictionScoreColumns Microsoft.ML.EntryPoints.ScoreModel+RenameBinaryPredictionScoreColumnsInput Microsoft.ML.EntryPoints.CommonOutputs+TransformOutput Transforms.BinNormalizer The values are assigned into equidensity bins and a value is mapped to its bin_number/number_of_bins. Microsoft.ML.Data.Normalize Bin Microsoft.ML.Transforms.Normalizers.NormalizeTransform+BinArguments Microsoft.ML.EntryPoints.CommonOutputs+TransformOutput diff --git a/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs b/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs index a2fc9c0107..0839c506c0 100644 --- a/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs +++ b/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs @@ -141,7 +141,7 @@ public void EntryPointScoring() var dataView = GetBreastCancerDataviewWithTextColumns(); dataView = Env.CreateTransform("Term{col=F1}", dataView); var trainData = FeatureCombiner.PrepareFeatures(Env, new FeatureCombiner.FeatureCombinerInput() { Data = dataView, Features = new[] { "F1", "F2", "Rest" } }); - var lrModel = LogisticRegression.TrainBinary(Env, new LogisticRegression.Arguments { TrainingData = trainData.OutputData }).PredictorModel; + var lrModel = LogisticRegression.TrainBinary(Env, new LogisticRegression.Options { TrainingData = trainData.OutputData }).PredictorModel; var model = ModelOperations.CombineTwoModels(Env, new ModelOperations.SimplePredictorModelInput() { TransformModel = trainData.Model, PredictorModel = lrModel }).PredictorModel; var scored1 = ScoreModel.Score(Env, new ScoreModel.Input() { Data = dataView, PredictorModel = model }).ScoredData; @@ -385,12 +385,12 @@ public void EntryPointInputBuilderOptionals() { var catalog = Env.ComponentCatalog; - InputBuilder ib1 = new InputBuilder(Env, typeof(LogisticRegression.Arguments), catalog); + InputBuilder ib1 = new InputBuilder(Env, typeof(LogisticRegression.Options), catalog); // Ensure that InputBuilder unwraps the Optional correctly. var weightType = ib1.GetFieldTypeOrNull("WeightColumn"); Assert.True(weightType.Equals(typeof(string))); - var instance = ib1.GetInstance() as LogisticRegression.Arguments; + var instance = ib1.GetInstance() as LogisticRegression.Options; Assert.True(!instance.WeightColumn.IsExplicit); Assert.True(instance.WeightColumn.Value == DefaultColumnNames.Weight); @@ -446,7 +446,7 @@ public void EntryPointCreateEnsemble() for (int i = 0; i < nModels; i++) { var data = splitOutput.TrainData[i]; - var lrInput = new LogisticRegression.Arguments + var lrInput = new LogisticRegression.Options { TrainingData = data, L1Weight = (Single)0.1 * i, @@ -710,7 +710,7 @@ public void EntryPointCalibrate() var splitOutput = CVSplit.Split(Env, new CVSplit.Input { Data = dataView, NumFolds = 3 }); - var lrModel = LogisticRegression.TrainBinary(Env, new LogisticRegression.Arguments { TrainingData = splitOutput.TestData[0] }).PredictorModel; + var lrModel = LogisticRegression.TrainBinary(Env, new LogisticRegression.Options { TrainingData = splitOutput.TestData[0] }).PredictorModel; var calibratedLrModel = Calibrate.FixedPlatt(Env, new Calibrate.FixedPlattInput { Data = splitOutput.TestData[1], UncalibratedPredictorModel = lrModel }).PredictorModel; @@ -774,7 +774,7 @@ public void EntryPointPipelineEnsemble() } }, data); - var lrInput = new LogisticRegression.Arguments + var lrInput = new LogisticRegression.Options { TrainingData = data, L1Weight = (Single)0.1 * i, @@ -1037,7 +1037,7 @@ public void EntryPointPipelineEnsembleText() }, data); } - var lrInput = new LogisticRegression.Arguments + var lrInput = new LogisticRegression.Options { TrainingData = data, L1Weight = (Single)0.1 * i, @@ -1373,7 +1373,7 @@ public void EntryPointPipelineEnsembleGetSummary() data = new ColumnConcatenatingTransformer(Env, new ColumnConcatenatingTransformer.ColumnInfo("Features", i % 2 == 0 ? new[] { "Features", "Cat" } : new[] { "Cat", "Features" })).Transform(data); if (i % 2 == 0) { - var lrInput = new LogisticRegression.Arguments + var lrInput = new LogisticRegression.Options { TrainingData = data, NormalizeFeatures = NormalizeOption.Yes, @@ -2517,7 +2517,7 @@ public void TestInputBuilderComponentFactories() Assert.True(success); var inputBuilder = new InputBuilder(Env, info.InputType, catalog); - var args = new SdcaBinaryTrainer.Arguments() + var args = new SdcaBinaryTrainer.Options() { NormalizeFeatures = NormalizeOption.Yes, CheckFrequency = 42 @@ -3373,7 +3373,7 @@ public void EntryPointLinearPredictorSummary() InputFile = inputFile, }).Data; - var lrInput = new LogisticRegression.Arguments + var lrInput = new LogisticRegression.Options { TrainingData = dataView, NormalizeFeatures = NormalizeOption.Yes, @@ -3383,7 +3383,7 @@ public void EntryPointLinearPredictorSummary() }; var model = LogisticRegression.TrainBinary(Env, lrInput).PredictorModel; - var mcLrInput = new MulticlassLogisticRegression.Arguments + var mcLrInput = new MulticlassLogisticRegression.Options { TrainingData = dataView, NormalizeFeatures = NormalizeOption.Yes, @@ -3581,7 +3581,7 @@ public void EntryPointTreeLeafFeaturizer() Column = new[] { new ColumnConcatenatingTransformer.Column { Name = "Features", Source = new[] { "Categories", "NumericFeatures" } } } }); - var fastTree = FastTree.TrainBinary(Env, new FastTreeBinaryClassificationTrainer.Arguments + var fastTree = FastTree.TrainBinary(Env, new FastTreeBinaryClassificationTrainer.Options { FeatureColumn = "Features", NumTrees = 5, diff --git a/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs b/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs index 223fb683cf..726ed50d3d 100644 --- a/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs +++ b/test/Microsoft.ML.Predictor.Tests/TestPredictors.cs @@ -611,7 +611,7 @@ public void TestTreeEnsembleCombiner() var fastTrees = new PredictorModel[3]; for (int i = 0; i < 3; i++) { - fastTrees[i] = FastTree.TrainBinary(ML, new FastTreeBinaryClassificationTrainer.Arguments + fastTrees[i] = FastTree.TrainBinary(ML, new FastTreeBinaryClassificationTrainer.Options { FeatureColumn = "Features", NumTrees = 5, @@ -634,7 +634,7 @@ public void TestTreeEnsembleCombinerWithCategoricalSplits() var fastTrees = new PredictorModel[3]; for (int i = 0; i < 3; i++) { - fastTrees[i] = FastTree.TrainBinary(ML, new FastTreeBinaryClassificationTrainer.Arguments + fastTrees[i] = FastTree.TrainBinary(ML, new FastTreeBinaryClassificationTrainer.Options { FeatureColumn = "Features", NumTrees = 5, @@ -733,7 +733,7 @@ public void TestEnsembleCombiner() var predictors = new PredictorModel[] { - FastTree.TrainBinary(ML, new FastTreeBinaryClassificationTrainer.Arguments + FastTree.TrainBinary(ML, new FastTreeBinaryClassificationTrainer.Options { FeatureColumn = "Features", NumTrees = 5, @@ -741,7 +741,7 @@ public void TestEnsembleCombiner() LabelColumn = DefaultColumnNames.Label, TrainingData = dataView }).PredictorModel, - AveragedPerceptronTrainer.TrainBinary(ML, new AveragedPerceptronTrainer.Arguments() + AveragedPerceptronTrainer.TrainBinary(ML, new AveragedPerceptronTrainer.Options() { FeatureColumn = "Features", LabelColumn = DefaultColumnNames.Label, @@ -749,7 +749,7 @@ public void TestEnsembleCombiner() TrainingData = dataView, NormalizeFeatures = NormalizeOption.No }).PredictorModel, - LogisticRegression.TrainBinary(ML, new LogisticRegression.Arguments() + LogisticRegression.TrainBinary(ML, new LogisticRegression.Options() { FeatureColumn = "Features", LabelColumn = DefaultColumnNames.Label, @@ -757,7 +757,7 @@ public void TestEnsembleCombiner() TrainingData = dataView, NormalizeFeatures = NormalizeOption.No }).PredictorModel, - LogisticRegression.TrainBinary(ML, new LogisticRegression.Arguments() + LogisticRegression.TrainBinary(ML, new LogisticRegression.Options() { FeatureColumn = "Features", LabelColumn = DefaultColumnNames.Label, @@ -787,7 +787,7 @@ public void TestMultiClassEnsembleCombiner() LabelColumn = DefaultColumnNames.Label, TrainingData = dataView }).PredictorModel, - LogisticRegression.TrainMultiClass(Env, new MulticlassLogisticRegression.Arguments() + LogisticRegression.TrainMultiClass(Env, new MulticlassLogisticRegression.Options() { FeatureColumn = "Features", LabelColumn = DefaultColumnNames.Label, @@ -795,7 +795,7 @@ public void TestMultiClassEnsembleCombiner() TrainingData = dataView, NormalizeFeatures = NormalizeOption.No }).PredictorModel, - LogisticRegression.TrainMultiClass(Env, new MulticlassLogisticRegression.Arguments() + LogisticRegression.TrainMultiClass(Env, new MulticlassLogisticRegression.Options() { FeatureColumn = "Features", LabelColumn = DefaultColumnNames.Label, From ac623c134e27227892f43a373a634f4c09e625ed Mon Sep 17 00:00:00 2001 From: Abhishek Goswami Date: Wed, 2 Jan 2019 22:45:07 +0000 Subject: [PATCH 2/3] Matrix Factorization --- .../Dynamic/MatrixFactorization.cs | 9 +-- .../MatrixFactorizationStatic.cs | 20 +++---- .../MatrixFactorizationTrainer.cs | 7 +-- .../RecommenderCatalog.cs | 6 +- .../MatrixFactorizationTests.cs | 58 ++++++------------- 5 files changed, 37 insertions(+), 63 deletions(-) diff --git a/docs/samples/Microsoft.ML.Samples/Dynamic/MatrixFactorization.cs b/docs/samples/Microsoft.ML.Samples/Dynamic/MatrixFactorization.cs index ecd5336b03..d271aaa83f 100644 --- a/docs/samples/Microsoft.ML.Samples/Dynamic/MatrixFactorization.cs +++ b/docs/samples/Microsoft.ML.Samples/Dynamic/MatrixFactorization.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using Microsoft.ML.Data; +using Microsoft.ML.Trainers; namespace Microsoft.ML.Samples.Dynamic { @@ -62,16 +63,12 @@ public static void MatrixFactorizationInMemoryData() // Create a matrix factorization trainer which may consume "Value" as the training label, "MatrixColumnIndex" as the // matrix's column index, and "MatrixRowIndex" as the matrix's row index. Here nameof(...) is used to extract field // names' in MatrixElement class. + var options = new MatrixFactorizationTrainer.Options { NumIterations = 10, NumThreads = 1, K = 32 }; var pipeline = mlContext.Recommendation().Trainers.MatrixFactorization( nameof(MatrixElement.MatrixColumnIndex), nameof(MatrixElement.MatrixRowIndex), nameof(MatrixElement.Value), - advancedSettings: s => - { - s.NumIterations = 10; - s.NumThreads = 1; // To eliminate randomness, # of threads must be 1. - s.K = 32; - }); + options); // Train a matrix factorization model. var model = pipeline.Fit(dataView); diff --git a/src/Microsoft.ML.Recommender/MatrixFactorizationStatic.cs b/src/Microsoft.ML.Recommender/MatrixFactorizationStatic.cs index 95b8625bc8..c49249919b 100644 --- a/src/Microsoft.ML.Recommender/MatrixFactorizationStatic.cs +++ b/src/Microsoft.ML.Recommender/MatrixFactorizationStatic.cs @@ -55,16 +55,16 @@ public static Scalar MatrixFactorization(this RegressionContext.Regres var rec = new MatrixFactorizationReconciler((env, labelColName, matrixColumnIndexColName, matrixRowIndexColName) => { - var trainer = new MatrixFactorizationTrainer(env, matrixColumnIndexColName, matrixRowIndexColName, labelColName, advancedSettings: - args => - { - args.Lambda = regularizationCoefficient; - args.K = approximationRank; - args.Eta = learningRate; - args.NumIterations = numIterations; - // The previous settings may be overwritten by the line below. - advancedSettings?.Invoke(args); - }); + var options = new MatrixFactorizationTrainer.Options { + Lambda = regularizationCoefficient, + K = approximationRank, + Eta = learningRate, + NumIterations = numIterations, + }; + advancedSettings?.Invoke(options); + + var trainer = new MatrixFactorizationTrainer(env, matrixColumnIndexColName, matrixRowIndexColName, labelColName, options); + if (onFit != null) return trainer.WithOnFitDelegate(trans => onFit(trans.Model)); else diff --git a/src/Microsoft.ML.Recommender/MatrixFactorizationTrainer.cs b/src/Microsoft.ML.Recommender/MatrixFactorizationTrainer.cs index 7bbd409696..8bf381bf55 100644 --- a/src/Microsoft.ML.Recommender/MatrixFactorizationTrainer.cs +++ b/src/Microsoft.ML.Recommender/MatrixFactorizationTrainer.cs @@ -250,16 +250,15 @@ private MatrixFactorizationTrainer(IHostEnvironment env, Options args) : base(en /// The name of the column hosting the matrix's column IDs. /// The name of the column hosting the matrix's row IDs. /// The name of the label column. - /// A delegate to apply all the advanced arguments to the algorithm. + /// Specify advanced arguments to the algorithm. public MatrixFactorizationTrainer(IHostEnvironment env, string matrixColumnIndexColumnName, string matrixRowIndexColumnName, string labelColumn = DefaultColumnNames.Label, - Action advancedSettings = null) + Options options = null) : base(env, LoadNameValue) { - var args = new Options(); - advancedSettings?.Invoke(args); + var args = options; _fun = (int)args.LossFunction; _lambda = args.Lambda; diff --git a/src/Microsoft.ML.Recommender/RecommenderCatalog.cs b/src/Microsoft.ML.Recommender/RecommenderCatalog.cs index b8e29a437f..a73eeaea8d 100644 --- a/src/Microsoft.ML.Recommender/RecommenderCatalog.cs +++ b/src/Microsoft.ML.Recommender/RecommenderCatalog.cs @@ -54,13 +54,13 @@ internal RecommendationTrainers(RecommendationContext ctx) /// The name of the column hosting the matrix's column IDs. /// The name of the column hosting the matrix's row IDs. /// The name of the label column. - /// A delegate to apply all the advanced arguments to the algorithm. + /// Advanced arguments for the algorithm. public MatrixFactorizationTrainer MatrixFactorization( string matrixColumnIndexColumnName, string matrixRowIndexColumnName, string labelColumn = DefaultColumnNames.Label, - Action advancedSettings = null) - => new MatrixFactorizationTrainer(Owner.Environment, matrixColumnIndexColumnName, matrixRowIndexColumnName, labelColumn, advancedSettings); + MatrixFactorizationTrainer.Options options = null) + => new MatrixFactorizationTrainer(Owner.Environment, matrixColumnIndexColumnName, matrixRowIndexColumnName, labelColumn, options); } /// diff --git a/test/Microsoft.ML.Tests/TrainerEstimators/MatrixFactorizationTests.cs b/test/Microsoft.ML.Tests/TrainerEstimators/MatrixFactorizationTests.cs index 811cec012a..5481462268 100644 --- a/test/Microsoft.ML.Tests/TrainerEstimators/MatrixFactorizationTests.cs +++ b/test/Microsoft.ML.Tests/TrainerEstimators/MatrixFactorizationTests.cs @@ -30,13 +30,8 @@ public void MatrixFactorization_Estimator() var invalidData = new TextLoader(Env, GetLoaderArgs(labelColumnName, matrixColumnIndexColumnName + "Renamed", matrixRowIndexColumnName + "Renamed")) .Read(new MultiFileSource(GetDataPath(TestDatasets.trivialMatrixFactorization.testFilename))); - var est = new MatrixFactorizationTrainer(Env, matrixColumnIndexColumnName, matrixRowIndexColumnName, labelColumnName, - advancedSettings: s => - { - s.NumIterations = 3; - s.NumThreads = 1; - s.K = 4; - }); + var options = new MatrixFactorizationTrainer.Options { NumIterations = 3, NumThreads = 1, K = 4 }; + var est = new MatrixFactorizationTrainer(Env, matrixColumnIndexColumnName, matrixRowIndexColumnName, labelColumnName, options); TestEstimatorCore(est, data, invalidInput: invalidData); @@ -61,13 +56,8 @@ public void MatrixFactorizationSimpleTrainAndPredict() var data = reader.Read(new MultiFileSource(GetDataPath(TestDatasets.trivialMatrixFactorization.trainFilename))); // Create a pipeline with a single operator. - var pipeline = mlContext.Recommendation().Trainers.MatrixFactorization(userColumnName, itemColumnName, labelColumnName, - advancedSettings: s => - { - s.NumIterations = 3; - s.NumThreads = 1; // To eliminate randomness, # of threads must be 1. - s.K = 7; - }); + var options = new MatrixFactorizationTrainer.Options { NumIterations = 3, NumThreads = 1, K = 7}; + var pipeline = mlContext.Recommendation().Trainers.MatrixFactorization(userColumnName, itemColumnName, labelColumnName, options); // Train a matrix factorization model. var model = pipeline.Fit(data); @@ -180,16 +170,12 @@ public void MatrixFactorizationInMemoryData() // Create a matrix factorization trainer which may consume "Value" as the training label, "MatrixColumnIndex" as the // matrix's column index, and "MatrixRowIndex" as the matrix's row index. var mlContext = new MLContext(seed: 1, conc: 1); + var options = new MatrixFactorizationTrainer.Options { NumIterations = 10, NumThreads = 1, K = 32 }; var pipeline = mlContext.Recommendation().Trainers.MatrixFactorization( nameof(MatrixElement.MatrixColumnIndex), nameof(MatrixElement.MatrixRowIndex), nameof(MatrixElement.Value), - advancedSettings: s => - { - s.NumIterations = 10; - s.NumThreads = 1; // To eliminate randomness, # of threads must be 1. - s.K = 32; - }); + options); // Train a matrix factorization model. var model = pipeline.Fit(dataView); @@ -272,17 +258,12 @@ public void MatrixFactorizationInMemoryDataZeroBaseIndex() // Create a matrix factorization trainer which may consume "Value" as the training label, "MatrixColumnIndex" as the // matrix's column index, and "MatrixRowIndex" as the matrix's row index. var mlContext = new MLContext(seed: 1, conc: 1); + var options = new MatrixFactorizationTrainer.Options { NumIterations = 100, NumThreads = 1, K = 32, Eta = 0.5 }; var pipeline = mlContext.Recommendation().Trainers.MatrixFactorization( nameof(MatrixElementZeroBased.MatrixColumnIndex), nameof(MatrixElementZeroBased.MatrixRowIndex), nameof(MatrixElementZeroBased.Value), - advancedSettings: s => - { - s.NumIterations = 100; - s.NumThreads = 1; // To eliminate randomness, # of threads must be 1. - s.K = 32; - s.Eta = 0.5; - }); + options); // Train a matrix factorization model. var model = pipeline.Fit(dataView); @@ -392,23 +373,20 @@ public void OneClassMatrixFactorizationInMemoryDataZeroBaseIndex() // Create a matrix factorization trainer which may consume "Value" as the training label, "MatrixColumnIndex" as the // matrix's column index, and "MatrixRowIndex" as the matrix's row index. var mlContext = new MLContext(seed: 1, conc: 1); + var options = new MatrixFactorizationTrainer.Options { + LossFunction = MatrixFactorizationTrainer.LossFunctionType.SquareLossOneClass, + NumIterations = 100, + NumThreads = 1, // To eliminate randomness, # of threads must be 1. + Lambda = 0.025, // Let's test non-default regularization coefficient. + K = 16, + Alpha = 0.01, // Importance coefficient of loss function over matrix elements not specified in the input matrix. + C = 0.15, // Desired value for matrix elements not specified in the input matrix. + }; var pipeline = mlContext.Recommendation().Trainers.MatrixFactorization( nameof(OneClassMatrixElementZeroBased.MatrixColumnIndex), nameof(OneClassMatrixElementZeroBased.MatrixRowIndex), nameof(OneClassMatrixElementZeroBased.Value), - advancedSettings: s => - { - s.LossFunction = MatrixFactorizationTrainer.LossFunctionType.SquareLossOneClass; - s.NumIterations = 100; - s.NumThreads = 1; // To eliminate randomness, # of threads must be 1. - // Let's test non-default regularization coefficient. - s.Lambda = 0.025; - s.K = 16; - // Importance coefficient of loss function over matrix elements not specified in the input matrix. - s.Alpha = 0.01; - // Desired value for matrix elements not specified in the input matrix. - s.C = 0.15; - }); + options); // Train a matrix factorization model. var model = pipeline.Fit(dataView); From db58f527acf90d4cb44eeaf8d30e1fc9509d2c13 Mon Sep 17 00:00:00 2001 From: Abhishek Goswami Date: Thu, 3 Jan 2019 01:08:09 +0000 Subject: [PATCH 3/3] Fast Tree - 1 --- src/Microsoft.ML.FastTree/BoostingFastTree.cs | 4 +- src/Microsoft.ML.FastTree/FastTree.cs | 7 +-- .../FastTreeClassification.cs | 6 +-- src/Microsoft.ML.FastTree/FastTreeRanking.cs | 6 +-- .../FastTreeRegression.cs | 6 +-- src/Microsoft.ML.FastTree/FastTreeTweedie.cs | 6 +-- src/Microsoft.ML.FastTree/RandomForest.cs | 2 +- .../RandomForestClassification.cs | 6 +-- .../RandomForestRegression.cs | 6 +-- .../TreeTrainersCatalog.cs | 36 ++++++------- .../TreeTrainersStatic.cs | 15 ++++-- .../MatrixFactorizationTrainer.cs | 2 +- .../Algorithms/SmacSweeper.cs | 12 ++--- test/Microsoft.ML.Tests/Scenarios/OvaTest.cs | 3 +- .../TrainerEstimators/TreeEstimators.cs | 50 +++++++------------ 15 files changed, 80 insertions(+), 87 deletions(-) diff --git a/src/Microsoft.ML.FastTree/BoostingFastTree.cs b/src/Microsoft.ML.FastTree/BoostingFastTree.cs index 41995b1585..01b809ec13 100644 --- a/src/Microsoft.ML.FastTree/BoostingFastTree.cs +++ b/src/Microsoft.ML.FastTree/BoostingFastTree.cs @@ -29,8 +29,8 @@ protected BoostingFastTreeTrainerBase(IHostEnvironment env, int numTrees, int minDatapointsInLeaves, double learningRate, - Action advancedSettings) - : base(env, label, featureColumn, weightColumn, groupIdColumn, numLeaves, numTrees, minDatapointsInLeaves, advancedSettings) + TArgs options) + : base(env, label, featureColumn, weightColumn, groupIdColumn, numLeaves, numTrees, minDatapointsInLeaves, options) { if (Args.LearningRates != learningRate) diff --git a/src/Microsoft.ML.FastTree/FastTree.cs b/src/Microsoft.ML.FastTree/FastTree.cs index 46aac0f066..cddd7f6ccd 100644 --- a/src/Microsoft.ML.FastTree/FastTree.cs +++ b/src/Microsoft.ML.FastTree/FastTree.cs @@ -115,10 +115,10 @@ private protected FastTreeTrainerBase(IHostEnvironment env, int numLeaves, int numTrees, int minDatapointsInLeaves, - Action advancedSettings) + TArgs options) : base(Contracts.CheckRef(env, nameof(env)).Register(RegisterName), TrainerUtils.MakeR4VecFeature(featureColumn), label, TrainerUtils.MakeR4ScalarWeightColumn(weightColumn), TrainerUtils.MakeU4ScalarColumn(groupIdColumn)) { - Args = new TArgs(); + Args = options ?? new TArgs(); // set up the directly provided values // override with the directly provided values. @@ -126,9 +126,6 @@ private protected FastTreeTrainerBase(IHostEnvironment env, Args.NumTrees = numTrees; Args.MinDocumentsInLeafs = minDatapointsInLeaves; - //apply the advanced args, if the user supplied any - advancedSettings?.Invoke(Args); - Args.LabelColumn = label.Name; Args.FeatureColumn = featureColumn; diff --git a/src/Microsoft.ML.FastTree/FastTreeClassification.cs b/src/Microsoft.ML.FastTree/FastTreeClassification.cs index 1b921bf5b4..2d5de110bb 100644 --- a/src/Microsoft.ML.FastTree/FastTreeClassification.cs +++ b/src/Microsoft.ML.FastTree/FastTreeClassification.cs @@ -127,7 +127,7 @@ public sealed partial class FastTreeBinaryClassificationTrainer : /// The minimal number of documents allowed in a leaf of a regression tree, out of the subsampled data. /// The max number of leaves in each regression tree. /// Total number of decision trees to create in the ensemble. - /// A delegate to apply all the advanced arguments to the algorithm. + /// Advanced arguments for the algorithm. public FastTreeBinaryClassificationTrainer(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, @@ -136,8 +136,8 @@ public FastTreeBinaryClassificationTrainer(IHostEnvironment env, int numTrees = Defaults.NumTrees, int minDatapointsInLeaves = Defaults.MinDocumentsInLeaves, double learningRate = Defaults.LearningRates, - Action advancedSettings = null) - : base(env, TrainerUtils.MakeBoolScalarLabel(labelColumn), featureColumn, weightColumn, null, numLeaves, numTrees, minDatapointsInLeaves, learningRate, advancedSettings) + Options options = null) + : base(env, TrainerUtils.MakeBoolScalarLabel(labelColumn), featureColumn, weightColumn, null, numLeaves, numTrees, minDatapointsInLeaves, learningRate, options) { // Set the sigmoid parameter to the 2 * learning rate, for traditional FastTreeClassification loss _sigmoidParameter = 2.0 * Args.LearningRates; diff --git a/src/Microsoft.ML.FastTree/FastTreeRanking.cs b/src/Microsoft.ML.FastTree/FastTreeRanking.cs index 372cccb6f4..91c79073c4 100644 --- a/src/Microsoft.ML.FastTree/FastTreeRanking.cs +++ b/src/Microsoft.ML.FastTree/FastTreeRanking.cs @@ -71,7 +71,7 @@ public sealed partial class FastTreeRankingTrainer /// Total number of decision trees to create in the ensemble. /// The minimal number of documents allowed in a leaf of a regression tree, out of the subsampled data. /// The learning rate. - /// A delegate to apply all the advanced arguments to the algorithm. + /// Advanced arguments to the algorithm. public FastTreeRankingTrainer(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, @@ -81,8 +81,8 @@ public FastTreeRankingTrainer(IHostEnvironment env, int numTrees = Defaults.NumTrees, int minDatapointsInLeaves = Defaults.MinDocumentsInLeaves, double learningRate = Defaults.LearningRates, - Action advancedSettings = null) - : base(env, TrainerUtils.MakeR4ScalarColumn(labelColumn), featureColumn, weightColumn, groupIdColumn, numLeaves, numTrees, minDatapointsInLeaves, learningRate, advancedSettings) + Options options = null) + : base(env, TrainerUtils.MakeR4ScalarColumn(labelColumn), featureColumn, weightColumn, groupIdColumn, numLeaves, numTrees, minDatapointsInLeaves, learningRate, options) { Host.CheckNonEmpty(groupIdColumn, nameof(groupIdColumn)); } diff --git a/src/Microsoft.ML.FastTree/FastTreeRegression.cs b/src/Microsoft.ML.FastTree/FastTreeRegression.cs index a305b13854..417a37d0b6 100644 --- a/src/Microsoft.ML.FastTree/FastTreeRegression.cs +++ b/src/Microsoft.ML.FastTree/FastTreeRegression.cs @@ -62,7 +62,7 @@ public sealed partial class FastTreeRegressionTrainer /// The minimal number of documents allowed in a leaf of a regression tree, out of the subsampled data. /// The max number of leaves in each regression tree. /// Total number of decision trees to create in the ensemble. - /// A delegate to apply all the advanced arguments to the algorithm. + /// Provide advanced arguments to the algorithm. public FastTreeRegressionTrainer(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, @@ -71,8 +71,8 @@ public FastTreeRegressionTrainer(IHostEnvironment env, int numTrees = Defaults.NumTrees, int minDatapointsInLeaves = Defaults.MinDocumentsInLeaves, double learningRate = Defaults.LearningRates, - Action advancedSettings = null) - : base(env, TrainerUtils.MakeR4ScalarColumn(labelColumn), featureColumn, weightColumn, null, numLeaves, numTrees, minDatapointsInLeaves, learningRate, advancedSettings) + Options options = null) + : base(env, TrainerUtils.MakeR4ScalarColumn(labelColumn), featureColumn, weightColumn, null, numLeaves, numTrees, minDatapointsInLeaves, learningRate, options) { } diff --git a/src/Microsoft.ML.FastTree/FastTreeTweedie.cs b/src/Microsoft.ML.FastTree/FastTreeTweedie.cs index 4b4738c9fe..6fa375f71e 100644 --- a/src/Microsoft.ML.FastTree/FastTreeTweedie.cs +++ b/src/Microsoft.ML.FastTree/FastTreeTweedie.cs @@ -59,7 +59,7 @@ public sealed partial class FastTreeTweedieTrainer /// The minimal number of documents allowed in a leaf of a regression tree, out of the subsampled data. /// The max number of leaves in each regression tree. /// Total number of decision trees to create in the ensemble. - /// A delegate to apply all the advanced arguments to the algorithm. + /// Advanced arguments to the algorithm. public FastTreeTweedieTrainer(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, @@ -68,8 +68,8 @@ public FastTreeTweedieTrainer(IHostEnvironment env, int numTrees = Defaults.NumTrees, int minDatapointsInLeaves = Defaults.MinDocumentsInLeaves, double learningRate = Defaults.LearningRates, - Action advancedSettings = null) - : base(env, TrainerUtils.MakeR4ScalarColumn(labelColumn), featureColumn, weightColumn, null, numLeaves, numTrees, minDatapointsInLeaves, learningRate, advancedSettings) + Options options = null) + : base(env, TrainerUtils.MakeR4ScalarColumn(labelColumn), featureColumn, weightColumn, null, numLeaves, numTrees, minDatapointsInLeaves, learningRate, options) { Host.CheckNonEmpty(labelColumn, nameof(labelColumn)); Host.CheckNonEmpty(featureColumn, nameof(featureColumn)); diff --git a/src/Microsoft.ML.FastTree/RandomForest.cs b/src/Microsoft.ML.FastTree/RandomForest.cs index 43aa5a0149..4c8f30b459 100644 --- a/src/Microsoft.ML.FastTree/RandomForest.cs +++ b/src/Microsoft.ML.FastTree/RandomForest.cs @@ -36,7 +36,7 @@ protected RandomForestTrainerBase(IHostEnvironment env, int numTrees, int minDatapointsInLeaves, double learningRate, - Action advancedSettings, + TArgs advancedSettings, bool quantileEnabled = false) : base(env, label, featureColumn, weightColumn, null, numLeaves, numTrees, minDatapointsInLeaves, advancedSettings) { diff --git a/src/Microsoft.ML.FastTree/RandomForestClassification.cs b/src/Microsoft.ML.FastTree/RandomForestClassification.cs index 27f516940b..de96db1588 100644 --- a/src/Microsoft.ML.FastTree/RandomForestClassification.cs +++ b/src/Microsoft.ML.FastTree/RandomForestClassification.cs @@ -145,7 +145,7 @@ public sealed class Options : FastForestArgumentsBase /// Total number of decision trees to create in the ensemble. /// The minimal number of documents allowed in a leaf of a regression tree, out of the subsampled data. /// The learning rate. - /// A delegate to apply all the advanced arguments to the algorithm. + /// Advanced arguments to the algorithm. public FastForestClassification(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, @@ -154,8 +154,8 @@ public FastForestClassification(IHostEnvironment env, int numTrees = Defaults.NumTrees, int minDatapointsInLeaves = Defaults.MinDocumentsInLeaves, double learningRate = Defaults.LearningRates, - Action advancedSettings = null) - : base(env, TrainerUtils.MakeBoolScalarLabel(labelColumn), featureColumn, weightColumn, null, numLeaves, numTrees, minDatapointsInLeaves, learningRate, advancedSettings) + Options options = null) + : base(env, TrainerUtils.MakeBoolScalarLabel(labelColumn), featureColumn, weightColumn, null, numLeaves, numTrees, minDatapointsInLeaves, learningRate, options) { Host.CheckNonEmpty(labelColumn, nameof(labelColumn)); Host.CheckNonEmpty(featureColumn, nameof(featureColumn)); diff --git a/src/Microsoft.ML.FastTree/RandomForestRegression.cs b/src/Microsoft.ML.FastTree/RandomForestRegression.cs index fc9f41487e..1f76428a07 100644 --- a/src/Microsoft.ML.FastTree/RandomForestRegression.cs +++ b/src/Microsoft.ML.FastTree/RandomForestRegression.cs @@ -163,7 +163,7 @@ public sealed class Options : FastForestArgumentsBase /// Total number of decision trees to create in the ensemble. /// The minimal number of documents allowed in a leaf of a regression tree, out of the subsampled data. /// The learning rate. - /// A delegate to apply all the advanced arguments to the algorithm. + /// A delegate to apply all the advanced arguments to the algorithm. public FastForestRegression(IHostEnvironment env, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, @@ -172,8 +172,8 @@ public FastForestRegression(IHostEnvironment env, int numTrees = Defaults.NumTrees, int minDatapointsInLeaves = Defaults.MinDocumentsInLeaves, double learningRate = Defaults.LearningRates, - Action advancedSettings = null) - : base(env, TrainerUtils.MakeR4ScalarColumn(labelColumn), featureColumn, weightColumn, null, numLeaves, numTrees, minDatapointsInLeaves, learningRate, advancedSettings) + Options options = null) + : base(env, TrainerUtils.MakeR4ScalarColumn(labelColumn), featureColumn, weightColumn, null, numLeaves, numTrees, minDatapointsInLeaves, learningRate, options) { Host.CheckNonEmpty(labelColumn, nameof(labelColumn)); Host.CheckNonEmpty(featureColumn, nameof(featureColumn)); diff --git a/src/Microsoft.ML.FastTree/TreeTrainersCatalog.cs b/src/Microsoft.ML.FastTree/TreeTrainersCatalog.cs index 384e2a3e3b..3b6a486c38 100644 --- a/src/Microsoft.ML.FastTree/TreeTrainersCatalog.cs +++ b/src/Microsoft.ML.FastTree/TreeTrainersCatalog.cs @@ -24,7 +24,7 @@ public static class TreeExtensions /// The maximum number of leaves per decision tree. /// The minimal number of datapoints allowed in a leaf of a regression tree, out of the subsampled data. /// The learning rate. - /// Algorithm advanced settings. + /// Algorithm advanced settings. public static FastTreeRegressionTrainer FastTree(this RegressionContext.RegressionTrainers ctx, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, @@ -33,11 +33,11 @@ public static FastTreeRegressionTrainer FastTree(this RegressionContext.Regressi int numTrees = Defaults.NumTrees, int minDatapointsInLeaves = Defaults.MinDocumentsInLeaves, double learningRate = Defaults.LearningRates, - Action advancedSettings = null) + FastTreeRegressionTrainer.Options options = null) { Contracts.CheckValue(ctx, nameof(ctx)); var env = CatalogUtils.GetEnvironment(ctx); - return new FastTreeRegressionTrainer(env, labelColumn, featureColumn, weights, numLeaves, numTrees, minDatapointsInLeaves, learningRate, advancedSettings); + return new FastTreeRegressionTrainer(env, labelColumn, featureColumn, weights, numLeaves, numTrees, minDatapointsInLeaves, learningRate, options); } /// @@ -51,7 +51,7 @@ public static FastTreeRegressionTrainer FastTree(this RegressionContext.Regressi /// The maximum number of leaves per decision tree. /// The minimal number of datapoints allowed in a leaf of the tree, out of the subsampled data. /// The learning rate. - /// Algorithm advanced settings. + /// Algorithm advanced settings. public static FastTreeBinaryClassificationTrainer FastTree(this BinaryClassificationContext.BinaryClassificationTrainers ctx, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, @@ -60,11 +60,11 @@ public static FastTreeBinaryClassificationTrainer FastTree(this BinaryClassifica int numTrees = Defaults.NumTrees, int minDatapointsInLeaves = Defaults.MinDocumentsInLeaves, double learningRate = Defaults.LearningRates, - Action advancedSettings = null) + FastTreeBinaryClassificationTrainer.Options options = null) { Contracts.CheckValue(ctx, nameof(ctx)); var env = CatalogUtils.GetEnvironment(ctx); - return new FastTreeBinaryClassificationTrainer(env, labelColumn, featureColumn, weights, numLeaves, numTrees, minDatapointsInLeaves, learningRate, advancedSettings); + return new FastTreeBinaryClassificationTrainer(env, labelColumn, featureColumn, weights, numLeaves, numTrees, minDatapointsInLeaves, learningRate, options); } /// @@ -79,7 +79,7 @@ public static FastTreeBinaryClassificationTrainer FastTree(this BinaryClassifica /// The maximum number of leaves per decision tree. /// The minimal number of datapoints allowed in a leaf of the tree, out of the subsampled data. /// The learning rate. - /// Algorithm advanced settings. + /// Algorithm advanced settings. public static FastTreeRankingTrainer FastTree(this RankingContext.RankingTrainers ctx, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, @@ -89,11 +89,11 @@ public static FastTreeRankingTrainer FastTree(this RankingContext.RankingTrainer int numTrees = Defaults.NumTrees, int minDatapointsInLeaves = Defaults.MinDocumentsInLeaves, double learningRate = Defaults.LearningRates, - Action advancedSettings = null) + FastTreeRankingTrainer.Options options = null) { Contracts.CheckValue(ctx, nameof(ctx)); var env = CatalogUtils.GetEnvironment(ctx); - return new FastTreeRankingTrainer(env, labelColumn, featureColumn, groupId, weights, numLeaves, numTrees, minDatapointsInLeaves, learningRate, advancedSettings); + return new FastTreeRankingTrainer(env, labelColumn, featureColumn, groupId, weights, numLeaves, numTrees, minDatapointsInLeaves, learningRate, options); } /// @@ -157,7 +157,7 @@ public static RegressionGamTrainer GeneralizedAdditiveModels(this RegressionCont /// The maximum number of leaves per decision tree. /// The minimal number of datapoints allowed in a leaf of the tree, out of the subsampled data. /// The learning rate. - /// Algorithm advanced settings. + /// Algorithm advanced settings. public static FastTreeTweedieTrainer FastTreeTweedie(this RegressionContext.RegressionTrainers ctx, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, @@ -166,11 +166,11 @@ public static FastTreeTweedieTrainer FastTreeTweedie(this RegressionContext.Regr int numTrees = Defaults.NumTrees, int minDatapointsInLeaves = Defaults.MinDocumentsInLeaves, double learningRate = Defaults.LearningRates, - Action advancedSettings = null) + FastTreeTweedieTrainer.Options options = null) { Contracts.CheckValue(ctx, nameof(ctx)); var env = CatalogUtils.GetEnvironment(ctx); - return new FastTreeTweedieTrainer(env, labelColumn, featureColumn, weights, numLeaves, numTrees, minDatapointsInLeaves, learningRate, advancedSettings); + return new FastTreeTweedieTrainer(env, labelColumn, featureColumn, weights, numLeaves, numTrees, minDatapointsInLeaves, learningRate, options); } /// @@ -184,7 +184,7 @@ public static FastTreeTweedieTrainer FastTreeTweedie(this RegressionContext.Regr /// The maximum number of leaves per decision tree. /// The minimal number of datapoints allowed in a leaf of the tree, out of the subsampled data. /// The learning rate. - /// Algorithm advanced settings. + /// Algorithm advanced settings. public static FastForestRegression FastForest(this RegressionContext.RegressionTrainers ctx, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, @@ -193,11 +193,11 @@ public static FastForestRegression FastForest(this RegressionContext.RegressionT int numTrees = Defaults.NumTrees, int minDatapointsInLeaves = Defaults.MinDocumentsInLeaves, double learningRate = Defaults.LearningRates, - Action advancedSettings = null) + FastForestRegression.Options options = null) { Contracts.CheckValue(ctx, nameof(ctx)); var env = CatalogUtils.GetEnvironment(ctx); - return new FastForestRegression(env, labelColumn, featureColumn, weights, numLeaves, numTrees, minDatapointsInLeaves, learningRate, advancedSettings); + return new FastForestRegression(env, labelColumn, featureColumn, weights, numLeaves, numTrees, minDatapointsInLeaves, learningRate, options); } /// @@ -211,7 +211,7 @@ public static FastForestRegression FastForest(this RegressionContext.RegressionT /// The maximum number of leaves per decision tree. /// The minimal number of datapoints allowed in a leaf of the tree, out of the subsampled data. /// The learning rate. - /// Algorithm advanced settings. + /// Algorithm advanced settings. public static FastForestClassification FastForest(this BinaryClassificationContext.BinaryClassificationTrainers ctx, string labelColumn = DefaultColumnNames.Label, string featureColumn = DefaultColumnNames.Features, @@ -220,11 +220,11 @@ public static FastForestClassification FastForest(this BinaryClassificationConte int numTrees = Defaults.NumTrees, int minDatapointsInLeaves = Defaults.MinDocumentsInLeaves, double learningRate = Defaults.LearningRates, - Action advancedSettings = null) + FastForestClassification.Options options = null) { Contracts.CheckValue(ctx, nameof(ctx)); var env = CatalogUtils.GetEnvironment(ctx); - return new FastForestClassification(env, labelColumn, featureColumn, weights,numLeaves, numTrees, minDatapointsInLeaves, learningRate, advancedSettings); + return new FastForestClassification(env, labelColumn, featureColumn, weights,numLeaves, numTrees, minDatapointsInLeaves, learningRate, options); } } } diff --git a/src/Microsoft.ML.FastTree/TreeTrainersStatic.cs b/src/Microsoft.ML.FastTree/TreeTrainersStatic.cs index d33f833db2..7d17428be3 100644 --- a/src/Microsoft.ML.FastTree/TreeTrainersStatic.cs +++ b/src/Microsoft.ML.FastTree/TreeTrainersStatic.cs @@ -53,8 +53,11 @@ public static Scalar FastTree(this RegressionContext.RegressionTrainers c var rec = new TrainerEstimatorReconciler.Regression( (env, labelName, featuresName, weightsName) => { + var options = new FastTreeRegressionTrainer.Options(); + advancedSettings?.Invoke(options); + var trainer = new FastTreeRegressionTrainer(env, labelName, featuresName, weightsName, numLeaves, - numTrees, minDatapointsInLeaves, learningRate, advancedSettings); + numTrees, minDatapointsInLeaves, learningRate, options); if (onFit != null) return trainer.WithOnFitDelegate(trans => onFit(trans.Model)); return trainer; @@ -103,8 +106,11 @@ public static (Scalar score, Scalar probability, Scalar pred var rec = new TrainerEstimatorReconciler.BinaryClassifier( (env, labelName, featuresName, weightsName) => { + var options = new FastTreeBinaryClassificationTrainer.Options(); + advancedSettings?.Invoke(options); + var trainer = new FastTreeBinaryClassificationTrainer(env, labelName, featuresName, weightsName, numLeaves, - numTrees, minDatapointsInLeaves, learningRate, advancedSettings); + numTrees, minDatapointsInLeaves, learningRate, options); if (onFit != null) return trainer.WithOnFitDelegate(trans => onFit(trans.Model)); @@ -149,8 +155,11 @@ public static Scalar FastTree(this RankingContext.RankingTrainers c var rec = new TrainerEstimatorReconciler.Ranker( (env, labelName, featuresName, groupIdName, weightsName) => { + var options = new FastTreeRankingTrainer.Options(); + advancedSettings?.Invoke(options); + var trainer = new FastTreeRankingTrainer(env, labelName, featuresName, groupIdName, weightsName, numLeaves, - numTrees, minDatapointsInLeaves, learningRate, advancedSettings); + numTrees, minDatapointsInLeaves, learningRate, options); if (onFit != null) return trainer.WithOnFitDelegate(trans => onFit(trans.Model)); return trainer; diff --git a/src/Microsoft.ML.Recommender/MatrixFactorizationTrainer.cs b/src/Microsoft.ML.Recommender/MatrixFactorizationTrainer.cs index 8bf381bf55..2209101aa7 100644 --- a/src/Microsoft.ML.Recommender/MatrixFactorizationTrainer.cs +++ b/src/Microsoft.ML.Recommender/MatrixFactorizationTrainer.cs @@ -258,7 +258,7 @@ public MatrixFactorizationTrainer(IHostEnvironment env, Options options = null) : base(env, LoadNameValue) { - var args = options; + var args = options ?? new Options(); _fun = (int)args.LossFunction; _lambda = args.Lambda; diff --git a/src/Microsoft.ML.Sweeper/Algorithms/SmacSweeper.cs b/src/Microsoft.ML.Sweeper/Algorithms/SmacSweeper.cs index 730573b73b..15e41b4ada 100644 --- a/src/Microsoft.ML.Sweeper/Algorithms/SmacSweeper.cs +++ b/src/Microsoft.ML.Sweeper/Algorithms/SmacSweeper.cs @@ -135,12 +135,12 @@ private FastForestRegressionModelParameters FitModel(IEnumerable pre { // Set relevant random forest arguments. // Train random forest. - var trainer = new FastForestRegression(_host, DefaultColumnNames.Label, DefaultColumnNames.Features, advancedSettings: s => - { - s.FeatureFraction = _args.SplitRatio; - s.NumTrees = _args.NumOfTrees; - s.MinDocumentsInLeafs = _args.NMinForSplit; - }); + var options = new FastForestRegression.Options { + FeatureFraction = _args.SplitRatio, + NumTrees = _args.NumOfTrees, + MinDocumentsInLeafs = _args.NMinForSplit, + }; + var trainer = new FastForestRegression(_host, DefaultColumnNames.Label, DefaultColumnNames.Features, options: options); var predictor = trainer.Train(data); // Return random forest predictor. diff --git a/test/Microsoft.ML.Tests/Scenarios/OvaTest.cs b/test/Microsoft.ML.Tests/Scenarios/OvaTest.cs index cb4d0a0af7..72ef0cbf80 100644 --- a/test/Microsoft.ML.Tests/Scenarios/OvaTest.cs +++ b/test/Microsoft.ML.Tests/Scenarios/OvaTest.cs @@ -104,7 +104,8 @@ public void OvaFastTree() // Pipeline var pipeline = new Ova( mlContext, - new FastTreeBinaryClassificationTrainer(mlContext, "Label", "Features", advancedSettings: s => { s.NumThreads = 1; }), + new FastTreeBinaryClassificationTrainer(mlContext, "Label", "Features", + options: new FastTreeBinaryClassificationTrainer.Options { NumThreads = 1 }), useProbabilities: false); var model = pipeline.Fit(data); diff --git a/test/Microsoft.ML.Tests/TrainerEstimators/TreeEstimators.cs b/test/Microsoft.ML.Tests/TrainerEstimators/TreeEstimators.cs index 4938061b22..254d3f3826 100644 --- a/test/Microsoft.ML.Tests/TrainerEstimators/TreeEstimators.cs +++ b/test/Microsoft.ML.Tests/TrainerEstimators/TreeEstimators.cs @@ -24,10 +24,8 @@ public void FastTreeBinaryEstimator() { var (pipe, dataView) = GetBinaryClassificationPipeline(); - var trainer = new FastTreeBinaryClassificationTrainer(Env, "Label", "Features", numTrees: 10, numLeaves: 5, advancedSettings: s => - { - s.NumThreads = 1; - }); + var trainer = new FastTreeBinaryClassificationTrainer(Env, "Label", "Features", numTrees: 10, numLeaves: 5, + options: new FastTreeBinaryClassificationTrainer.Options { NumThreads = 1 }); var pipeWithTrainer = pipe.Append(trainer); TestEstimatorCore(pipeWithTrainer, dataView); @@ -80,11 +78,8 @@ public void FastForestClassificationEstimator() { var (pipe, dataView) = GetBinaryClassificationPipeline(); - var trainer = new FastForestClassification(Env, "Label", "Features", advancedSettings: s => - { - s.NumLeaves = 10; - s.NumTrees = 20; - }); + var trainer = new FastForestClassification(Env, "Label", "Features", options: new FastForestClassification.Options { NumLeaves = 10, NumTrees = 20 }); + var pipeWithTrainer = pipe.Append(trainer); TestEstimatorCore(pipeWithTrainer, dataView); @@ -101,8 +96,7 @@ public void FastTreeRankerEstimator() { var (pipe, dataView) = GetRankingPipeline(); - var trainer = new FastTreeRankingTrainer(Env, "Label0", "NumericFeatures", "Group", - advancedSettings: s => { s.NumTrees = 10; }); + var trainer = new FastTreeRankingTrainer(Env, "Label0", "NumericFeatures", "Group", options: new FastTreeRankingTrainer.Options { NumTrees = 10 }); var pipeWithTrainer = pipe.Append(trainer); TestEstimatorCore(pipeWithTrainer, dataView); @@ -136,13 +130,8 @@ public void LightGBMRankerEstimator() public void FastTreeRegressorEstimator() { var dataView = GetRegressionPipeline(); - var trainer = new FastTreeRegressionTrainer(Env, "Label", "Features", advancedSettings: s => - { - s.NumTrees = 10; - s.NumThreads = 1; - s.NumLeaves = 5; - }); - + var trainer = new FastTreeRegressionTrainer(Env, "Label", "Features", options: new FastTreeRegressionTrainer.Options { NumTrees=10, NumThreads=1, NumLeaves=5}); + TestEstimatorCore(trainer, dataView); var model = trainer.Train(dataView, dataView); Done(); @@ -193,12 +182,12 @@ public void GAMRegressorEstimator() public void TweedieRegressorEstimator() { var dataView = GetRegressionPipeline(); - var trainer = new FastTreeTweedieTrainer(Env, "Label", "Features", advancedSettings: s => - { - s.EntropyCoefficient = 0.3; - s.OptimizationAlgorithm = BoostedTreeArgs.OptimizationAlgorithmType.AcceleratedGradientDescent; - }); - + var trainer = new FastTreeTweedieTrainer(Env, "Label", "Features", + options: new FastTreeTweedieTrainer.Options { + EntropyCoefficient = 0.3, + OptimizationAlgorithm = BoostedTreeArgs.OptimizationAlgorithmType.AcceleratedGradientDescent + }); + TestEstimatorCore(trainer, dataView); var model = trainer.Train(dataView, dataView); Done(); @@ -211,11 +200,8 @@ public void TweedieRegressorEstimator() public void FastForestRegressorEstimator() { var dataView = GetRegressionPipeline(); - var trainer = new FastForestRegression(Env, "Label", "Features", advancedSettings: s => - { - s.BaggingSize = 2; - s.NumTrees = 10; - }); + var trainer = new FastForestRegression(Env, "Label", "Features", + options: new FastForestRegression.Options { BaggingSize = 2, NumTrees = 10 }); TestEstimatorCore(trainer, dataView); var model = trainer.Train(dataView, dataView); @@ -246,7 +232,7 @@ private class GbmExample { [VectorType(_columnNumber)] public float[] Features; - [KeyType(Contiguous = true, Count =_classNumber, Min = 0)] + [KeyType(Contiguous = true, Count = _classNumber, Min = 0)] public uint Label; [VectorType(_classNumber)] public float[] Score; @@ -332,7 +318,7 @@ private void LightGbmHelper(bool useSoftmax, out string modelString, out List