From a01258241a760e6bbead0396887d2ee93d416658 Mon Sep 17 00:00:00 2001 From: "REDMOND\\nakazmi" Date: Fri, 11 Jan 2019 10:01:10 -0800 Subject: [PATCH 1/7] Make array argument names plural --- .../Dynamic/Calibrator.cs | 2 +- .../Commands/CrossValidationCommand.cs | 20 +++-- src/Microsoft.ML.Data/Commands/DataCommand.cs | 15 ++-- .../Commands/EvaluateCommand.cs | 14 ++-- .../Commands/SaveDataCommand.cs | 2 +- .../Commands/ScoreCommand.cs | 27 +++--- src/Microsoft.ML.Data/Commands/TestCommand.cs | 8 +- .../Commands/TrainCommand.cs | 11 +-- .../Commands/TrainTestCommand.cs | 7 +- .../DataLoadSave/CompositeDataLoader.cs | 6 +- .../DataLoadSave/Text/TextLoader.cs | 14 ++-- .../DataLoadSave/Transpose/TransposeSaver.cs | 2 +- .../DataView/CacheDataView.cs | 2 +- .../Dirty/ChooseColumnsByIndexTransform.cs | 8 +- .../EntryPoints/ScoreColumnSelector.cs | 2 +- .../Evaluators/EvaluatorBase.cs | 2 +- .../Evaluators/EvaluatorUtils.cs | 8 +- .../Evaluators/MamlEvaluator.cs | 8 +- .../MultiClassClassifierEvaluator.cs | 2 +- .../Evaluators/QuantileRegressionEvaluator.cs | 2 +- .../Transforms/ColumnBindingsBase.cs | 4 +- .../ColumnConcatenatingTransformer.cs | 28 ++++--- .../Transforms/ColumnCopying.cs | 7 +- .../Transforms/DropSlotsTransform.cs | 7 +- .../Transforms/GenerateNumberTransform.cs | 19 +++-- src/Microsoft.ML.Data/Transforms/Hashing.cs | 12 +-- .../Transforms/KeyToValue.cs | 9 +- .../Transforms/KeyToVector.cs | 11 +-- .../Transforms/LabelConvertTransform.cs | 11 +-- .../Transforms/LabelIndicatorTransform.cs | 12 +-- src/Microsoft.ML.Data/Transforms/NAFilter.cs | 18 ++-- .../Transforms/NormalizeColumn.cs | 82 +++++++++---------- .../Transforms/NormalizeUtils.cs | 6 +- .../Transforms/RowShufflingTransformer.cs | 2 +- .../Transforms/TrainAndScoreTransformer.cs | 16 ++-- .../Transforms/TypeConverting.cs | 10 +-- .../Transforms/ValueMappingTransformer.cs | 10 +-- .../ValueToKeyMappingTransformer.cs | 20 ++--- .../ValueToKeyMappingTransformerImpl.cs | 4 +- .../SubsetSelector/BaseSubsetSelector.cs | 2 +- .../SubsetSelector/RandomPartitionSelector.cs | 2 +- .../CrossValidationMacro.cs | 6 +- .../FeatureCombiner.cs | 8 +- src/Microsoft.ML.EntryPoints/MacroUtils.cs | 10 +-- .../OneVersusAllMacro.cs | 2 +- .../TrainTestSplit.cs | 4 +- src/Microsoft.ML.FastTree/FastTree.cs | 2 +- .../VectorWhitening.cs | 6 +- .../ImageGrayscaleTransform.cs | 8 +- .../ImageLoaderTransform.cs | 6 +- .../ImagePixelExtractorTransform.cs | 10 +-- .../ImageResizerTransform.cs | 10 +-- .../VectorToImageTransform.cs | 10 +-- src/Microsoft.ML.Maml/ChainCommand.cs | 10 +-- src/Microsoft.ML.PCA/PcaTransform.cs | 8 +- .../ResultProcessor.cs | 4 +- .../Standard/Online/AveragedLinear.cs | 45 +++++----- .../TextLoaderStatic.cs | 4 +- .../CountFeatureSelection.cs | 12 +-- .../EntryPoints/TextAnalytics.cs | 2 +- src/Microsoft.ML.Transforms/GcnTransform.cs | 20 ++--- src/Microsoft.ML.Transforms/GroupTransform.cs | 18 ++-- .../HashJoiningTransform.cs | 21 ++--- .../KeyToVectorMapping.cs | 10 +-- .../LearnerFeatureSelection.cs | 7 +- src/Microsoft.ML.Transforms/LoadTransform.cs | 15 ++-- .../MissingValueDroppingTransformer.cs | 6 +- .../MissingValueHandlingTransformer.cs | 20 ++--- .../MissingValueIndicatorTransform.cs | 8 +- .../MissingValueIndicatorTransformer.cs | 6 +- .../MissingValueReplacing.cs | 10 +-- .../MutualInformationFeatureSelection.cs | 16 ++-- src/Microsoft.ML.Transforms/OneHotEncoding.cs | 12 +-- .../OneHotHashEncoding.cs | 8 +- .../OptionalColumnTransform.cs | 20 ++--- .../RandomFourierFeaturizing.cs | 10 +-- .../Text/LdaTransform.cs | 8 +- .../Text/NgramTransform.cs | 10 +-- .../Text/StopWordsRemovingTransformer.cs | 40 ++++----- .../Text/TextFeaturizingEstimator.cs | 6 +- .../Text/TextNormalizing.cs | 10 +-- .../Text/TokenizingByCharacters.cs | 10 +-- .../Text/WordBagTransform.cs | 58 ++++++------- .../Text/WordEmbeddingsExtractor.cs | 10 +-- .../Text/WordHashBagProducingTransform.cs | 44 +++++----- .../Text/WordTokenizing.cs | 10 +-- .../Text/WrappedTextTransformers.cs | 4 +- .../UngroupTransform.cs | 18 ++-- test/Microsoft.ML.Benchmarks/RffTransform.cs | 2 +- ...sticDualCoordinateAscentClassifierBench.cs | 2 +- .../UnitTests/TestEntryPoints.cs | 26 +++--- .../TestIniModels.cs | 4 +- .../DataPipe/TestDataPipe.cs | 2 +- .../DataPipe/TestDataPipeBase.cs | 8 +- test/Microsoft.ML.Tests/ImagesTests.cs | 42 +++++----- test/Microsoft.ML.Tests/Scenarios/OvaTest.cs | 8 +- .../Scenarios/TensorflowTests.cs | 2 +- test/Microsoft.ML.Tests/TermEstimatorTests.cs | 2 +- .../TrainerEstimators/FAFMEstimator.cs | 2 +- .../MatrixFactorizationTests.cs | 2 +- .../TrainerEstimators/PriorRandomTests.cs | 2 +- .../TrainerEstimators/TrainerEstimators.cs | 14 ++-- .../Transformers/ConcatTests.cs | 4 +- .../Transformers/CopyColumnEstimatorTests.cs | 2 +- .../Transformers/KeyToValueTests.cs | 2 +- .../Transformers/NormalizerTests.cs | 6 +- .../Transformers/TextFeaturizerTests.cs | 2 +- 107 files changed, 606 insertions(+), 584 deletions(-) diff --git a/docs/samples/Microsoft.ML.Samples/Dynamic/Calibrator.cs b/docs/samples/Microsoft.ML.Samples/Dynamic/Calibrator.cs index 78c62668ec..af6364757f 100644 --- a/docs/samples/Microsoft.ML.Samples/Dynamic/Calibrator.cs +++ b/docs/samples/Microsoft.ML.Samples/Dynamic/Calibrator.cs @@ -32,7 +32,7 @@ public static void Calibration() { Separator = "tab", HasHeader = true, - Column = new[] + Columns = new[] { new TextLoader.Column("Sentiment", DataKind.BL, 0), new TextLoader.Column("SentimentText", DataKind.Text, 1) diff --git a/src/Microsoft.ML.Data/Commands/CrossValidationCommand.cs b/src/Microsoft.ML.Data/Commands/CrossValidationCommand.cs index 78bce9cec6..9b9eb66479 100644 --- a/src/Microsoft.ML.Data/Commands/CrossValidationCommand.cs +++ b/src/Microsoft.ML.Data/Commands/CrossValidationCommand.cs @@ -57,8 +57,9 @@ public sealed class Arguments : DataCommand.ArgumentsBase [Argument(ArgumentType.LastOccurenceWins, HelpText = "Column to use for stratification", ShortName = "strat", SortOrder = 7)] public string StratificationColumn; - [Argument(ArgumentType.LastOccurenceWins, HelpText = "Columns with custom kinds declared through key assignments, for example, col[Kind]=Name to assign column named 'Name' kind 'Kind'", ShortName = "col", SortOrder = 10)] - public KeyValuePair[] CustomColumn; + [Argument(ArgumentType.LastOccurenceWins, HelpText = "Columns with custom kinds declared through key assignments, for example, col[Kind]=Name to assign column named 'Name' kind 'Kind'", + Name = "CustomColumn", ShortName = "col", SortOrder = 10)] + public KeyValuePair[] CustomColumns; [Argument(ArgumentType.LastOccurenceWins, HelpText = "Number of folds in k-fold cross-validation", ShortName = "k")] public int NumFolds = 2; @@ -72,8 +73,9 @@ public sealed class Arguments : DataCommand.ArgumentsBase [Argument(ArgumentType.LastOccurenceWins, HelpText = "Whether we should cache input training data", ShortName = "cache")] public bool? CacheData; - [Argument(ArgumentType.Multiple, HelpText = "Transforms to apply prior to splitting the data into folds", ShortName = "prexf", SignatureType = typeof(SignatureDataTransform))] - public KeyValuePair>[] PreTransform; + [Argument(ArgumentType.Multiple, HelpText = "Transforms to apply prior to splitting the data into folds", + Name = "PreTransform", ShortName = "prexf", SignatureType = typeof(SignatureDataTransform))] + public KeyValuePair>[] PreTransforms; [Argument(ArgumentType.AtMostOnce, IsInputFileName = true, HelpText = "The validation data file", ShortName = "valid")] public string ValidationFile; @@ -152,7 +154,7 @@ private void RunCore(IChannel ch, string cmd) IDataLoader loader = CreateRawLoader(); // If the per-instance results are requested and there is no name column, add a GenerateNumberTransform. - var preXf = Args.PreTransform; + var preXf = Args.PreTransforms; if (!string.IsNullOrEmpty(Args.OutputDataFile)) { string name = TrainUtils.MatchNameOrDefaultOrNull(ch, loader.Schema, nameof(Args.NameColumn), Args.NameColumn, DefaultColumnNames.Name); @@ -166,7 +168,7 @@ private void RunCore(IChannel ch, string cmd) (env, input) => { var args = new GenerateNumberTransform.Arguments(); - args.Column = new[] { new GenerateNumberTransform.Column() { Name = DefaultColumnNames.Name }, }; + args.Columns = new[] { new GenerateNumberTransform.Column() { Name = DefaultColumnNames.Name }, }; args.UseCounter = true; return new GenerateNumberTransform(env, args, input); })) @@ -262,7 +264,7 @@ private RoleMappedData ApplyAllTransformsToData(IHostEnvironment env, IChannel c /// private RoleMappedData CreateRoleMappedData(IHostEnvironment env, IChannel ch, IDataView data, ITrainer trainer) { - foreach (var kvp in Args.Transform) + foreach (var kvp in Args.Transforms) data = kvp.Value.CreateComponent(env, data); var schema = data.Schema; @@ -275,7 +277,7 @@ private RoleMappedData CreateRoleMappedData(IHostEnvironment env, IChannel ch, I TrainUtils.AddNormalizerIfNeeded(env, ch, trainer, ref data, features, Args.NormalizeFeatures); // Training pipe and examples. - var customCols = TrainUtils.CheckAndGenerateCustomColumns(ch, Args.CustomColumn); + var customCols = TrainUtils.CheckAndGenerateCustomColumns(ch, Args.CustomColumns); return new RoleMappedData(data, label, features, group, weight, name, customCols); } @@ -313,7 +315,7 @@ private string GetSplitColumn(IChannel ch, IDataView input, ref IDataView output var keyGenArgs = new GenerateNumberTransform.Arguments(); var col = new GenerateNumberTransform.Column(); col.Name = stratificationColumn; - keyGenArgs.Column = new[] { col }; + keyGenArgs.Columns = new[] { col }; output = new GenerateNumberTransform(Host, keyGenArgs, input); } else diff --git a/src/Microsoft.ML.Data/Commands/DataCommand.cs b/src/Microsoft.ML.Data/Commands/DataCommand.cs index 119a9a4e5d..aaaf4a4131 100644 --- a/src/Microsoft.ML.Data/Commands/DataCommand.cs +++ b/src/Microsoft.ML.Data/Commands/DataCommand.cs @@ -53,8 +53,9 @@ public abstract class ArgumentsBase HelpText = "Desired degree of parallelism in the data pipeline", ShortName = "n")] public int? Parallel; - [Argument(ArgumentType.Multiple, Visibility = ArgumentAttribute.VisibilityType.CmdLineOnly, HelpText = "Transform", ShortName = "xf", SignatureType = typeof(SignatureDataTransform))] - public KeyValuePair>[] Transform; + [Argument(ArgumentType.Multiple, Visibility = ArgumentAttribute.VisibilityType.CmdLineOnly, + HelpText = "Transform", Name ="Transform", ShortName = "xf", SignatureType = typeof(SignatureDataTransform))] + public KeyValuePair>[] Transforms; } [BestFriend] @@ -133,9 +134,9 @@ protected virtual void SendTelemetryCore(IPipe pipe) { Contracts.AssertValue(pipe); - if (Args.Transform != null) + if (Args.Transforms != null) { - foreach (var transform in Args.Transform) + foreach (var transform in Args.Transforms) SendTelemetryComponent(pipe, transform.Value); } } @@ -291,8 +292,8 @@ protected void LoadModelObjects( trainPipe = pipe; } - if (Utils.Size(Args.Transform) > 0) - pipe = CompositeDataLoader.Create(Host, pipe, Args.Transform); + if (Utils.Size(Args.Transforms) > 0) + pipe = CompositeDataLoader.Create(Host, pipe, Args.Transforms); // Next consider loading the training data's role mapped schema. trainSchema = null; @@ -328,7 +329,7 @@ protected IDataLoader CreateLoader(Func[] CustomColumn; + [Argument(ArgumentType.LastOccurenceWins, HelpText = "Columns with custom kinds declared through key assignments, for example, col[Kind]=Name to assign column named 'Name' kind 'Kind'", + Name = "CustomColumn", ShortName = "col", SortOrder = 10)] + public KeyValuePair[] CustomColumns; [Argument(ArgumentType.Multiple, HelpText = "Evaluator to use", ShortName = "eval", SignatureType = typeof(SignatureMamlEvaluator))] public IComponentFactory Evaluator; @@ -154,7 +155,7 @@ private static IDataTransform Create(IHostEnvironment env, Arguments args, IData args.GroupColumn, DefaultColumnNames.GroupId); string weight = TrainUtils.MatchNameOrDefaultOrNull(ch, schema, nameof(Arguments.WeightColumn), args.WeightColumn, DefaultColumnNames.Weight); - var customCols = TrainUtils.CheckAndGenerateCustomColumns(ch, args.CustomColumn); + var customCols = TrainUtils.CheckAndGenerateCustomColumns(ch, args.CustomColumns); ch.Trace("Creating evaluator"); IMamlEvaluator eval = args.Evaluator?.CreateComponent(env) ?? @@ -182,8 +183,9 @@ public sealed class Arguments : DataCommand.ArgumentsBase [Argument(ArgumentType.AtMostOnce, HelpText = "Name column name", ShortName = "name", SortOrder = 6)] public string NameColumn = DefaultColumnNames.Name; - [Argument(ArgumentType.LastOccurenceWins, HelpText = "Columns with custom kinds declared through key assignments, for example, col[Kind]=Name to assign column named 'Name' kind 'Kind'", ShortName = "col", SortOrder = 10)] - public KeyValuePair[] CustomColumn; + [Argument(ArgumentType.LastOccurenceWins, HelpText = "Columns with custom kinds declared through key assignments, for example, col[Kind]=Name to assign column named 'Name' kind 'Kind'", + Name ="CustomColumn", ShortName = "col", SortOrder = 10)] + public KeyValuePair[] CustomColumns; [Argument(ArgumentType.Multiple, HelpText = "Evaluator to use", ShortName = "eval", SignatureType = typeof(SignatureMamlEvaluator))] public IComponentFactory Evaluator; @@ -231,7 +233,7 @@ private void RunCore(IChannel ch) Args.WeightColumn, DefaultColumnNames.Weight); string name = TrainUtils.MatchNameOrDefaultOrNull(ch, schema, nameof(Arguments.NameColumn), Args.NameColumn, DefaultColumnNames.Name); - var customCols = TrainUtils.CheckAndGenerateCustomColumns(ch, Args.CustomColumn); + var customCols = TrainUtils.CheckAndGenerateCustomColumns(ch, Args.CustomColumns); ch.Trace("Creating evaluator"); var evaluator = Args.Evaluator?.CreateComponent(Host) ?? diff --git a/src/Microsoft.ML.Data/Commands/SaveDataCommand.cs b/src/Microsoft.ML.Data/Commands/SaveDataCommand.cs index 3a5d11085c..ccded0f85f 100644 --- a/src/Microsoft.ML.Data/Commands/SaveDataCommand.cs +++ b/src/Microsoft.ML.Data/Commands/SaveDataCommand.cs @@ -91,7 +91,7 @@ internal sealed class ShowDataCommand : DataCommand.ImplBase[] CustomColumn; + Name = "CustomColumn", ShortName = "col", SortOrder = 10)] + public KeyValuePair[] CustomColumns; [Argument(ArgumentType.Multiple, HelpText = "Scorer to use", SignatureType = typeof(SignatureDataScorer))] public TScorerFactory Scorer; @@ -71,8 +71,9 @@ public sealed class Arguments : DataCommand.ArgumentsBase [Argument(ArgumentType.AtMostOnce, HelpText = "Whether to output all columns or just scores", ShortName = "all")] public bool? OutputAllColumns; - [Argument(ArgumentType.Multiple, HelpText = "What columns to output beyond score columns, if outputAllColumns=-.", ShortName = "outCol")] - public string[] OutputColumn; + [Argument(ArgumentType.Multiple, HelpText = "What columns to output beyond score columns, if outputAllColumns=-.", + Name = "OutputColumn", ShortName = "outCol")] + public string[] OutputColumns; } internal const string Summary = "Scores a data file."; @@ -115,7 +116,7 @@ private void RunCore(IChannel ch) nameof(Args.FeatureColumn), Args.FeatureColumn, DefaultColumnNames.Features); string group = TrainUtils.MatchNameOrDefaultOrNull(ch, loader.Schema, nameof(Args.GroupColumn), Args.GroupColumn, DefaultColumnNames.GroupId); - var customCols = TrainUtils.CheckAndGenerateCustomColumns(ch, Args.CustomColumn); + var customCols = TrainUtils.CheckAndGenerateCustomColumns(ch, Args.CustomColumns); var schema = new RoleMappedSchema(loader.Schema, label: null, feature: feat, group: group, custom: customCols, opt: true); var mapper = bindable.Bind(Host, schema); @@ -157,20 +158,20 @@ private void RunCore(IChannel ch) bool outputAllColumns = Args.OutputAllColumns == true - || (Args.OutputAllColumns == null && Utils.Size(Args.OutputColumn) == 0 && outputIsBinary); + || (Args.OutputAllColumns == null && Utils.Size(Args.OutputColumns) == 0 && outputIsBinary); bool outputNamesAndLabels = - Args.OutputAllColumns == true || Utils.Size(Args.OutputColumn) == 0; + Args.OutputAllColumns == true || Utils.Size(Args.OutputColumns) == 0; - if (Args.OutputAllColumns == true && Utils.Size(Args.OutputColumn) != 0) - ch.Warning(nameof(Args.OutputAllColumns) + "=+ always writes all columns irrespective of " + nameof(Args.OutputColumn) + " specified."); + if (Args.OutputAllColumns == true && Utils.Size(Args.OutputColumns) != 0) + ch.Warning(nameof(Args.OutputAllColumns) + "=+ always writes all columns irrespective of " + nameof(Args.OutputColumns) + " specified."); - if (!outputAllColumns && Utils.Size(Args.OutputColumn) != 0) + if (!outputAllColumns && Utils.Size(Args.OutputColumns) != 0) { - foreach (var outCol in Args.OutputColumn) + foreach (var outCol in Args.OutputColumns) { if (!loader.Schema.TryGetColumnIndex(outCol, out int dummyColIndex)) - throw ch.ExceptUserArg(nameof(Arguments.OutputColumn), "Column '{0}' not found.", outCol); + throw ch.ExceptUserArg(nameof(Arguments.OutputColumns), "Column '{0}' not found.", outCol); } } @@ -227,7 +228,7 @@ private bool ShouldAddColumn(Schema schema, int i, uint scoreSet, bool outputNam break; } } - if (Args.OutputColumn != null && Array.FindIndex(Args.OutputColumn, schema[i].Name.Equals) >= 0) + if (Args.OutputColumns != null && Array.FindIndex(Args.OutputColumns, schema[i].Name.Equals) >= 0) return true; return false; } diff --git a/src/Microsoft.ML.Data/Commands/TestCommand.cs b/src/Microsoft.ML.Data/Commands/TestCommand.cs index c27e95aa29..579adbbbc7 100644 --- a/src/Microsoft.ML.Data/Commands/TestCommand.cs +++ b/src/Microsoft.ML.Data/Commands/TestCommand.cs @@ -38,8 +38,10 @@ public sealed class Arguments : DataCommand.ArgumentsBase [Argument(ArgumentType.AtMostOnce, HelpText = "Name column name", ShortName = "name", SortOrder = 6)] public string NameColumn = DefaultColumnNames.Name; - [Argument(ArgumentType.LastOccurenceWins, HelpText = "Columns with custom kinds declared through key assignments, for example, col[Kind]=Name to assign column named 'Name' kind 'Kind'", ShortName = "col", SortOrder = 10)] - public KeyValuePair[] CustomColumn; + [Argument(ArgumentType.LastOccurenceWins, + HelpText = "Columns with custom kinds declared through key assignments, for example, col[Kind]=Name to assign column named 'Name' kind 'Kind'", + Name = "CustomColumn", ShortName = "col", SortOrder = 10)] + public KeyValuePair[] CustomColumns; [Argument(ArgumentType.Multiple, HelpText = "Scorer to use", NullName = "", SortOrder = 101, SignatureType = typeof(SignatureDataScorer))] public IComponentFactory Scorer; @@ -105,7 +107,7 @@ private void RunCore(IChannel ch) Args.WeightColumn, DefaultColumnNames.Weight); string name = TrainUtils.MatchNameOrDefaultOrNull(ch, schema, nameof(Args.NameColumn), Args.NameColumn, DefaultColumnNames.Name); - var customCols = TrainUtils.CheckAndGenerateCustomColumns(ch, Args.CustomColumn); + var customCols = TrainUtils.CheckAndGenerateCustomColumns(ch, Args.CustomColumns); // Score. ch.Trace("Scoring and evaluating"); diff --git a/src/Microsoft.ML.Data/Commands/TrainCommand.cs b/src/Microsoft.ML.Data/Commands/TrainCommand.cs index 652ba527bf..f8df3eefcf 100644 --- a/src/Microsoft.ML.Data/Commands/TrainCommand.cs +++ b/src/Microsoft.ML.Data/Commands/TrainCommand.cs @@ -53,8 +53,9 @@ public sealed class Arguments : DataCommand.ArgumentsBase [Argument(ArgumentType.AtMostOnce, HelpText = "Name column name", ShortName = "name", SortOrder = 6)] public string NameColumn = DefaultColumnNames.Name; - [Argument(ArgumentType.LastOccurenceWins, HelpText = "Columns with custom kinds declared through key assignments, for example, col[Kind]=Name to assign column named 'Name' kind 'Kind'", ShortName = "col", SortOrder = 10)] - public KeyValuePair[] CustomColumn; + [Argument(ArgumentType.LastOccurenceWins, HelpText = "Columns with custom kinds declared through key assignments, for example, col[Kind]=Name to assign column named 'Name' kind 'Kind'", + Name = "CustomColumn", ShortName = "col", SortOrder = 10)] + public KeyValuePair[] CustomColumns; [Argument(ArgumentType.LastOccurenceWins, HelpText = "Normalize option for the feature column", ShortName = "norm")] public NormalizeOption NormalizeFeatures = NormalizeOption.Auto; @@ -156,7 +157,7 @@ private void RunCore(IChannel ch, string cmd) ch.Trace("Binding columns"); - var customCols = TrainUtils.CheckAndGenerateCustomColumns(ch, Args.CustomColumn); + var customCols = TrainUtils.CheckAndGenerateCustomColumns(ch, Args.CustomColumns); var data = new RoleMappedData(view, label, feature, group, weight, name, customCols); // REVIEW: Unify the code that creates validation examples in Train, TrainTest and CV commands. @@ -515,9 +516,9 @@ public static IEnumerable> CheckAndGenerateCust return Enumerable.Empty>(); foreach (var kindName in customColumnArg) { - ectx.CheckUserArg(!string.IsNullOrWhiteSpace(kindName.Value), nameof(TrainCommand.Arguments.CustomColumn), "Names for columns with custom kind must not be empty"); + ectx.CheckUserArg(!string.IsNullOrWhiteSpace(kindName.Value), nameof(TrainCommand.Arguments.CustomColumns), "Names for columns with custom kind must not be empty"); if (string.IsNullOrWhiteSpace(kindName.Key)) - throw ectx.ExceptUserArg(nameof(TrainCommand.Arguments.CustomColumn), "Custom column with name '{0}' needs a kind. Use col[]={0}", kindName.Value); + throw ectx.ExceptUserArg(nameof(TrainCommand.Arguments.CustomColumns), "Custom column with name '{0}' needs a kind. Use col[]={0}", kindName.Value); } return customColumnArg.Select(kindName => new ColumnRole(kindName.Key).Bind(kindName.Value)); } diff --git a/src/Microsoft.ML.Data/Commands/TrainTestCommand.cs b/src/Microsoft.ML.Data/Commands/TrainTestCommand.cs index 40bac35c7b..7b5fe05e3c 100644 --- a/src/Microsoft.ML.Data/Commands/TrainTestCommand.cs +++ b/src/Microsoft.ML.Data/Commands/TrainTestCommand.cs @@ -52,8 +52,9 @@ public sealed class Arguments : DataCommand.ArgumentsBase [Argument(ArgumentType.AtMostOnce, HelpText = "Name column name", ShortName = "name", SortOrder = 6)] public string NameColumn = DefaultColumnNames.Name; - [Argument(ArgumentType.LastOccurenceWins, HelpText = "Columns with custom kinds declared through key assignments, for example, col[Kind]=Name to assign column named 'Name' kind 'Kind'", ShortName = "col", SortOrder = 10)] - public KeyValuePair[] CustomColumn; + [Argument(ArgumentType.LastOccurenceWins, HelpText = "Columns with custom kinds declared through key assignments, for example, col[Kind]=Name to assign column named 'Name' kind 'Kind'", + Name = "CustomColumn", ShortName = "col", SortOrder = 10)] + public KeyValuePair[] CustomColumns; [Argument(ArgumentType.LastOccurenceWins, HelpText = "Normalize option for the feature column", ShortName = "norm")] public NormalizeOption NormalizeFeatures = NormalizeOption.Auto; @@ -145,7 +146,7 @@ private void RunCore(IChannel ch, string cmd) TrainUtils.AddNormalizerIfNeeded(Host, ch, trainer, ref trainPipe, features, Args.NormalizeFeatures); ch.Trace("Binding columns"); - var customCols = TrainUtils.CheckAndGenerateCustomColumns(ch, Args.CustomColumn); + var customCols = TrainUtils.CheckAndGenerateCustomColumns(ch, Args.CustomColumns); var data = new RoleMappedData(trainPipe, label, features, group, weight, name, customCols); RoleMappedData validData = null; diff --git a/src/Microsoft.ML.Data/DataLoadSave/CompositeDataLoader.cs b/src/Microsoft.ML.Data/DataLoadSave/CompositeDataLoader.cs index 607d3c27c9..29ffe0da73 100644 --- a/src/Microsoft.ML.Data/DataLoadSave/CompositeDataLoader.cs +++ b/src/Microsoft.ML.Data/DataLoadSave/CompositeDataLoader.cs @@ -35,8 +35,8 @@ public sealed class Arguments [Argument(ArgumentType.Multiple, HelpText = "The data loader", ShortName = "loader", SignatureType = typeof(SignatureDataLoader))] public IComponentFactory Loader; - [Argument(ArgumentType.Multiple, HelpText = "Transform", ShortName = "xf", SignatureType = typeof(SignatureDataTransform))] - public KeyValuePair>[] Transform; + [Argument(ArgumentType.Multiple, HelpText = "Transform", Name = "Transform", ShortName = "xf", SignatureType = typeof(SignatureDataTransform))] + public KeyValuePair>[] Transforms; } private readonly struct TransformEx @@ -101,7 +101,7 @@ public static IDataLoader Create(IHostEnvironment env, Arguments args, IMultiStr h.CheckValue(files, nameof(files)); var loader = args.Loader.CreateComponent(h, files); - return CreateCore(h, loader, args.Transform); + return CreateCore(h, loader, args.Transforms); } /// diff --git a/src/Microsoft.ML.Data/DataLoadSave/Text/TextLoader.cs b/src/Microsoft.ML.Data/DataLoadSave/Text/TextLoader.cs index 69407bfe98..26667d3907 100644 --- a/src/Microsoft.ML.Data/DataLoadSave/Text/TextLoader.cs +++ b/src/Microsoft.ML.Data/DataLoadSave/Text/TextLoader.cs @@ -360,8 +360,8 @@ public class ArgumentsCore public char[] SeparatorChars = new[] { DefaultArguments.Separator }; [Argument(ArgumentType.Multiple, HelpText = "Column groups. Each group is specified as name:type:numeric-ranges, eg, col=Features:R4:1-17,26,35-40", - ShortName = "col", SortOrder = 1)] - public Column[] Column; + Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; [Argument(ArgumentType.AtMostOnce, HelpText = "Remove trailing whitespace from lines", ShortName = "trim")] public bool TrimWhitespace = DefaultArguments.TrimWhitespace; @@ -375,7 +375,7 @@ public class ArgumentsCore /// public bool IsValid() { - return Utils.Size(Column) == 0 || Column.All(x => x.IsValid()); + return Utils.Size(Columns) == 0 || Columns.All(x => x.IsValid()); } } @@ -1031,7 +1031,7 @@ public TextLoader(IHostEnvironment env, Column[] columns, bool hasHeader = false private static Arguments MakeArgs(Column[] columns, bool hasHeader, char[] separatorChars) { Contracts.AssertValue(separatorChars); - var result = new Arguments { Column = columns, HasHeader = hasHeader, SeparatorChars = separatorChars}; + var result = new Arguments { Columns = columns, HasHeader = hasHeader, SeparatorChars = separatorChars}; return result; } @@ -1057,7 +1057,7 @@ public TextLoader(IHostEnvironment env, Arguments args = null, IMultiStreamSourc if (!string.IsNullOrWhiteSpace(args.HeaderFile)) headerFile = new MultiFileSource(args.HeaderFile); - var cols = args.Column; + var cols = args.Columns; bool error; if (Utils.Size(cols) == 0 && !TryParseSchema(_host, headerFile ?? dataSample, ref args, out cols, out error)) { @@ -1235,7 +1235,7 @@ private static bool TryParseSchema(IHost host, IMultiStreamSource files, if (!CmdParser.ParseArguments(host, loader.GetSettingsString(), argsNew, typeof(ArgumentsCore), msg => ch.Error(msg))) goto LDone; - cols = argsNew.Column; + cols = argsNew.Columns; if (Utils.Size(cols) == 0) goto LDone; @@ -1426,7 +1426,7 @@ internal static TextLoader CreateTextReader(IHostEnvironment host, AllowQuoting = allowQuotedStrings, AllowSparse = supportSparse, TrimWhitespace = trimWhitespace, - Column = columns.ToArray() + Columns = columns.ToArray() }; return new TextLoader(host, args); diff --git a/src/Microsoft.ML.Data/DataLoadSave/Transpose/TransposeSaver.cs b/src/Microsoft.ML.Data/DataLoadSave/Transpose/TransposeSaver.cs index 51c9d00b8f..af5b4527fb 100644 --- a/src/Microsoft.ML.Data/DataLoadSave/Transpose/TransposeSaver.cs +++ b/src/Microsoft.ML.Data/DataLoadSave/Transpose/TransposeSaver.cs @@ -140,7 +140,7 @@ private void SaveTransposedData(IChannel ch, Stream stream, ITransposeDataView d // First write out the no-row data, limited to these columns. IDataView subdata = new ChooseColumnsByIndexTransform(_host, - new ChooseColumnsByIndexTransform.Arguments() { Index = cols }, data); + new ChooseColumnsByIndexTransform.Arguments() { Indices = cols }, data); // If we want the "dual mode" row-wise and slot-wise file, don't filter out anything. if (!_writeRowData) subdata = SkipTakeFilter.Create(_host, new SkipTakeFilter.TakeArguments() { Count = 0 }, subdata); diff --git a/src/Microsoft.ML.Data/DataView/CacheDataView.cs b/src/Microsoft.ML.Data/DataView/CacheDataView.cs index a41aabd01c..af698792cc 100644 --- a/src/Microsoft.ML.Data/DataView/CacheDataView.cs +++ b/src/Microsoft.ML.Data/DataView/CacheDataView.cs @@ -166,7 +166,7 @@ private static IDataView SelectCachableColumns(IDataView data, IHostEnvironment // REVIEW: This can potentially cause hidden columns to become unhidden. See task 3739. var args = new ChooseColumnsByIndexTransform.Arguments(); args.Drop = true; - args.Index = columnsToDrop.ToArray(); + args.Indices = columnsToDrop.ToArray(); return new ChooseColumnsByIndexTransform(env, args, data); } diff --git a/src/Microsoft.ML.Data/Dirty/ChooseColumnsByIndexTransform.cs b/src/Microsoft.ML.Data/Dirty/ChooseColumnsByIndexTransform.cs index a01695a9c4..85ee9a129c 100644 --- a/src/Microsoft.ML.Data/Dirty/ChooseColumnsByIndexTransform.cs +++ b/src/Microsoft.ML.Data/Dirty/ChooseColumnsByIndexTransform.cs @@ -22,8 +22,8 @@ public sealed class ChooseColumnsByIndexTransform : RowToRowTransformBase { public sealed class Arguments { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "Column index to select", ShortName = "ind")] - public int[] Index; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "Column index to select", Name = "Index", ShortName = "ind")] + public int[] Indices; [Argument(ArgumentType.LastOccurenceWins, HelpText = "If true, selected columns are dropped instead of kept, with the order of kept columns being the same as the original", ShortName = "d")] public bool Drop; @@ -32,7 +32,7 @@ public sealed class Arguments private sealed class Bindings { /// - /// A collection of source column indexes after removing those we want to drop. Specifically, j=_sources[i] means + /// A collection of source column indices after removing those we want to drop. Specifically, j=_sources[i] means /// that the i-th output column in the output schema is the j-th column in the input schema. /// private readonly int[] _sources; @@ -67,7 +67,7 @@ internal Bindings(Arguments args, Schema sourceSchema) // Store user-specified arguments as the major state of this transform. Only the major states will // be saved and all other attributes can be reconstructed from them. _drop = args.Drop; - _selectedColumnIndexes = args.Index; + _selectedColumnIndexes = args.Indices; // Compute actually used attributes in runtime from those major states. ComputeSources(_drop, _selectedColumnIndexes, _sourceSchema, out _sources); diff --git a/src/Microsoft.ML.Data/EntryPoints/ScoreColumnSelector.cs b/src/Microsoft.ML.Data/EntryPoints/ScoreColumnSelector.cs index c6619887cc..3c3bbf4869 100644 --- a/src/Microsoft.ML.Data/EntryPoints/ScoreColumnSelector.cs +++ b/src/Microsoft.ML.Data/EntryPoints/ScoreColumnSelector.cs @@ -36,7 +36,7 @@ public static CommonOutputs.TransformOutput SelectColumns(IHostEnvironment env, continue; indices.Add(i); } - var newView = new ChooseColumnsByIndexTransform(env, new ChooseColumnsByIndexTransform.Arguments() { Index = indices.ToArray() }, input.Data); + var newView = new ChooseColumnsByIndexTransform(env, new ChooseColumnsByIndexTransform.Arguments() { Indices = indices.ToArray() }, input.Data); return new CommonOutputs.TransformOutput { Model = new TransformModelImpl(env, newView, input.Data), OutputData = newView }; } diff --git a/src/Microsoft.ML.Data/Evaluators/EvaluatorBase.cs b/src/Microsoft.ML.Data/Evaluators/EvaluatorBase.cs index 7f1d40c176..0d6a895e0a 100644 --- a/src/Microsoft.ML.Data/Evaluators/EvaluatorBase.cs +++ b/src/Microsoft.ML.Data/Evaluators/EvaluatorBase.cs @@ -367,7 +367,7 @@ internal static AggregatorDictionaryBase Create(RoleMappedSchema schema, string if (stratType.KeyCount == 0 && !(stratType is TextType)) { - throw Contracts.ExceptUserArg(nameof(MamlEvaluatorBase.ArgumentsBase.StratColumn), + throw Contracts.ExceptUserArg(nameof(MamlEvaluatorBase.ArgumentsBase.StratColumns), "Stratification column '{0}' has type '{1}', but must be a known count key or text", stratCol, stratType); } return Utils.MarshalInvoke(CreateDictionary, stratType.RawType, schema, stratCol, stratType, createAgg); diff --git a/src/Microsoft.ML.Data/Evaluators/EvaluatorUtils.cs b/src/Microsoft.ML.Data/Evaluators/EvaluatorUtils.cs index fadf80dfa6..7c651397d3 100644 --- a/src/Microsoft.ML.Data/Evaluators/EvaluatorUtils.cs +++ b/src/Microsoft.ML.Data/Evaluators/EvaluatorUtils.cs @@ -872,7 +872,7 @@ private static IDataView AppendPerInstanceDataViews(IHostEnvironment env, string { var args = new ChooseColumnsByIndexTransform.Arguments(); args.Drop = true; - args.Index = hidden.ToArray(); + args.Indices = hidden.ToArray(); idv = new ChooseColumnsByIndexTransform(env, args, idv); } list.Add(idv); @@ -900,12 +900,12 @@ private static IDataView AppendPerInstanceDataViews(IHostEnvironment env, string idv = new KeyToValueMappingTransformer(env, keyCol).Transform(idv); var hidden = FindHiddenColumns(idv.Schema, keyCol); - idv = new ChooseColumnsByIndexTransform(env, new ChooseColumnsByIndexTransform.Arguments() { Drop = true, Index = hidden.ToArray() }, idv); + idv = new ChooseColumnsByIndexTransform(env, new ChooseColumnsByIndexTransform.Arguments() { Drop = true, Indices = hidden.ToArray() }, idv); } foreach (var keyCol in firstDvKeyNoNamesColumns) { var hidden = FindHiddenColumns(idv.Schema, keyCol.Key); - idv = new ChooseColumnsByIndexTransform(env, new ChooseColumnsByIndexTransform.Arguments() { Drop = true, Index = hidden.ToArray() }, idv); + idv = new ChooseColumnsByIndexTransform(env, new ChooseColumnsByIndexTransform.Arguments() { Drop = true, Indices = hidden.ToArray() }, idv); } return idv; }; @@ -1728,7 +1728,7 @@ public static IDataView GetNonStratifiedMetrics(IHostEnvironment env, IDataView var type = data.Schema[stratCol].Type; env.Check(type.KeyCount > 0, "Expected a known count key type stratification column"); var filterArgs = new NAFilter.Arguments(); - filterArgs.Column = new[] { MetricKinds.ColumnNames.StratCol }; + filterArgs.Columns = new[] { MetricKinds.ColumnNames.StratCol }; filterArgs.Complement = true; data = new NAFilter(env, filterArgs, data); diff --git a/src/Microsoft.ML.Data/Evaluators/MamlEvaluator.cs b/src/Microsoft.ML.Data/Evaluators/MamlEvaluator.cs index 346346c429..28f31cd51e 100644 --- a/src/Microsoft.ML.Data/Evaluators/MamlEvaluator.cs +++ b/src/Microsoft.ML.Data/Evaluators/MamlEvaluator.cs @@ -69,8 +69,8 @@ public abstract class ArgumentsBase : EvaluateInputBase // Stratification columns. - [Argument(ArgumentType.Multiple, HelpText = "Stratification column name.", ShortName = "strat")] - public string[] StratColumn; + [Argument(ArgumentType.Multiple, HelpText = "Stratification column name.", Name = "StratColumn", ShortName = "strat")] + public string[] StratColumns; } internal static RoleMappedSchema.ColumnRole Strat = "Strat"; @@ -100,7 +100,7 @@ private protected MamlEvaluatorBase(ArgumentsBase args, IHostEnvironment env, st ScoreCol = args.ScoreColumn; LabelCol = args.LabelColumn; WeightCol = args.WeightColumn; - StratCols = args.StratColumn; + StratCols = args.StratColumns; } Dictionary IEvaluator.Evaluate(RoleMappedData data) @@ -246,7 +246,7 @@ private IDataView WrapPerInstance(RoleMappedData perInst) else { var args = new GenerateNumberTransform.Arguments(); - args.Column = new[] { new GenerateNumberTransform.Column() { Name = "Instance" } }; + args.Columns = new[] { new GenerateNumberTransform.Column() { Name = "Instance" } }; args.UseCounter = true; idv = new GenerateNumberTransform(Host, args, idv); colsToKeep.Add("Instance"); diff --git a/src/Microsoft.ML.Data/Evaluators/MultiClassClassifierEvaluator.cs b/src/Microsoft.ML.Data/Evaluators/MultiClassClassifierEvaluator.cs index cdf973137e..ce56423203 100644 --- a/src/Microsoft.ML.Data/Evaluators/MultiClassClassifierEvaluator.cs +++ b/src/Microsoft.ML.Data/Evaluators/MultiClassClassifierEvaluator.cs @@ -929,7 +929,7 @@ private protected override IDataView CombineOverallMetricsCore(IDataView[] metri idv.Schema[col].Name.Equals(MultiClassClassifierEvaluator.PerClassLogLoss)) { idv = new ChooseColumnsByIndexTransform(Host, - new ChooseColumnsByIndexTransform.Arguments() { Drop = true, Index = new[] { col } }, idv); + new ChooseColumnsByIndexTransform.Arguments() { Drop = true, Indices = new[] { col } }, idv); break; } } diff --git a/src/Microsoft.ML.Data/Evaluators/QuantileRegressionEvaluator.cs b/src/Microsoft.ML.Data/Evaluators/QuantileRegressionEvaluator.cs index 3acd90bd91..59d5c0f373 100644 --- a/src/Microsoft.ML.Data/Evaluators/QuantileRegressionEvaluator.cs +++ b/src/Microsoft.ML.Data/Evaluators/QuantileRegressionEvaluator.cs @@ -519,7 +519,7 @@ private IDataView ExtractRelevantIndex(IDataView data) output = LambdaColumnMapper.Create(Host, "Quantile Regression", output, name, name, type, NumberType.R8, (in VBuffer src, ref Double dst) => dst = src.GetItemOrDefault(index)); output = new ChooseColumnsByIndexTransform(Host, - new ChooseColumnsByIndexTransform.Arguments() { Drop = true, Index = new[] { i } }, output); + new ChooseColumnsByIndexTransform.Arguments() { Drop = true, Indices = new[] { i } }, output); } } return output; diff --git a/src/Microsoft.ML.Data/Transforms/ColumnBindingsBase.cs b/src/Microsoft.ML.Data/Transforms/ColumnBindingsBase.cs index eb6eae0972..18d20695b4 100644 --- a/src/Microsoft.ML.Data/Transforms/ColumnBindingsBase.cs +++ b/src/Microsoft.ML.Data/Transforms/ColumnBindingsBase.cs @@ -330,8 +330,8 @@ protected ColumnBindingsBase(Schema input, bool user, params string[] names) // warning if we decide to rename this argument, and so know to change the below hard-coded // standard column name. const string standardColumnArgName = "Column"; - Contracts.Assert(nameof(ValueToKeyMappingTransformer.Arguments.Column) == standardColumnArgName); - Contracts.Assert(nameof(ColumnConcatenatingTransformer.Arguments.Column) == standardColumnArgName); + Contracts.Assert(nameof(ValueToKeyMappingTransformer.Arguments.Columns) == standardColumnArgName); + Contracts.Assert(nameof(ColumnConcatenatingTransformer.Arguments.Columns) == standardColumnArgName); for (int iinfo = 0; iinfo < names.Length; iinfo++) { diff --git a/src/Microsoft.ML.Data/Transforms/ColumnConcatenatingTransformer.cs b/src/Microsoft.ML.Data/Transforms/ColumnConcatenatingTransformer.cs index 27f2081341..36cb4769a1 100644 --- a/src/Microsoft.ML.Data/Transforms/ColumnConcatenatingTransformer.cs +++ b/src/Microsoft.ML.Data/Transforms/ColumnConcatenatingTransformer.cs @@ -106,21 +106,23 @@ public Arguments() public Arguments(string name, params string[] source) { - Column = new[] { new Column() + Columns = new[] { new Column() { Name = name, Source = source }}; } - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:srcs)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:srcs)", + Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; } public sealed class TaggedArguments { - [Argument(ArgumentType.Multiple, HelpText = "New column definition(s) (optional form: name:srcs)", ShortName = "col", SortOrder = 1)] - public TaggedColumn[] Column; + [Argument(ArgumentType.Multiple, HelpText = "New column definition(s) (optional form: name:srcs)", + Name = "Column", ShortName = "col", SortOrder = 1)] + public TaggedColumn[] Columns; } public sealed class ColumnInfo @@ -359,12 +361,12 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat Contracts.CheckValue(env, nameof(env)); env.CheckValue(args, nameof(args)); env.CheckValue(input, nameof(input)); - env.CheckUserArg(Utils.Size(args.Column) > 0, nameof(args.Column)); + env.CheckUserArg(Utils.Size(args.Columns) > 0, nameof(args.Columns)); - for (int i = 0; i < args.Column.Length; i++) - env.CheckUserArg(Utils.Size(args.Column[i].Source) > 0, nameof(args.Column)); + for (int i = 0; i < args.Columns.Length; i++) + env.CheckUserArg(Utils.Size(args.Columns[i].Source) > 0, nameof(args.Columns)); - var cols = args.Column + var cols = args.Columns .Select(c => new ColumnInfo(c.Name, c.Source)) .ToArray(); var transformer = new ColumnConcatenatingTransformer(env, cols); @@ -379,12 +381,12 @@ internal static IDataTransform Create(IHostEnvironment env, TaggedArguments args Contracts.CheckValue(env, nameof(env)); env.CheckValue(args, nameof(args)); env.CheckValue(input, nameof(input)); - env.CheckUserArg(Utils.Size(args.Column) > 0, nameof(args.Column)); + env.CheckUserArg(Utils.Size(args.Columns) > 0, nameof(args.Columns)); - for (int i = 0; i < args.Column.Length; i++) - env.CheckUserArg(Utils.Size(args.Column[i].Source) > 0, nameof(args.Column)); + for (int i = 0; i < args.Columns.Length; i++) + env.CheckUserArg(Utils.Size(args.Columns[i].Source) > 0, nameof(args.Columns)); - var cols = args.Column + var cols = args.Columns .Select(c => new ColumnInfo(c.Name, c.Source.Select(kvp => (kvp.Value, kvp.Key != "" ? kvp.Key : null)))) .ToArray(); var transformer = new ColumnConcatenatingTransformer(env, cols); diff --git a/src/Microsoft.ML.Data/Transforms/ColumnCopying.cs b/src/Microsoft.ML.Data/Transforms/ColumnCopying.cs index 88738fdb99..024c0346ea 100644 --- a/src/Microsoft.ML.Data/Transforms/ColumnCopying.cs +++ b/src/Microsoft.ML.Data/Transforms/ColumnCopying.cs @@ -106,8 +106,9 @@ public bool TryUnparse(StringBuilder sb) public sealed class Arguments : TransformInputBase { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", + Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; } // Factory method corresponding to SignatureDataTransform. @@ -116,7 +117,7 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat Contracts.CheckValue(env, nameof(env)); env.CheckValue(args, nameof(args)); - var transformer = new ColumnCopyingTransformer(env, args.Column.Select(x => (x.Source, x.Name)).ToArray()); + var transformer = new ColumnCopyingTransformer(env, args.Columns.Select(x => (x.Source, x.Name)).ToArray()); return transformer.MakeDataTransform(input); } diff --git a/src/Microsoft.ML.Data/Transforms/DropSlotsTransform.cs b/src/Microsoft.ML.Data/Transforms/DropSlotsTransform.cs index 60c6f03794..567f901c9b 100644 --- a/src/Microsoft.ML.Data/Transforms/DropSlotsTransform.cs +++ b/src/Microsoft.ML.Data/Transforms/DropSlotsTransform.cs @@ -38,8 +38,9 @@ public sealed class SlotsDroppingTransformer : OneToOneTransformerBase { public sealed class Arguments { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "Columns to drop the slots for", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "Columns to drop the slots for", + Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; } public sealed class Column : OneToOneColumn @@ -306,7 +307,7 @@ private static SlotsDroppingTransformer Create(IHostEnvironment env, ModelLoadCo // Factory method for SignatureDataTransform. private static IDataTransform Create(IHostEnvironment env, Arguments args, IDataView input) { - var columns = args.Column.Select(column => new ColumnInfo(column)).ToArray(); + var columns = args.Columns.Select(column => new ColumnInfo(column)).ToArray(); return new SlotsDroppingTransformer(env, columns).MakeDataTransform(input); } diff --git a/src/Microsoft.ML.Data/Transforms/GenerateNumberTransform.cs b/src/Microsoft.ML.Data/Transforms/GenerateNumberTransform.cs index e114d5e0bc..58f96ebeb6 100644 --- a/src/Microsoft.ML.Data/Transforms/GenerateNumberTransform.cs +++ b/src/Microsoft.ML.Data/Transforms/GenerateNumberTransform.cs @@ -85,8 +85,9 @@ private static class Defaults public sealed class Arguments : TransformInputBase { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:seed)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:seed)", + Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; [Argument(ArgumentType.AtMostOnce, HelpText = "Use an auto-incremented integer starting at zero instead of a random number", ShortName = "cnt")] public bool UseCounter = Defaults.UseCounter; @@ -112,12 +113,12 @@ private Bindings(bool[] useCounter, TauswortheHybrid.State[] states, public static Bindings Create(Arguments args, Schema input) { - var names = new string[args.Column.Length]; - var useCounter = new bool[args.Column.Length]; - var states = new TauswortheHybrid.State[args.Column.Length]; - for (int i = 0; i < args.Column.Length; i++) + var names = new string[args.Columns.Length]; + var useCounter = new bool[args.Columns.Length]; + var states = new TauswortheHybrid.State[args.Columns.Length]; + for (int i = 0; i < args.Columns.Length; i++) { - var item = args.Column[i]; + var item = args.Columns[i]; names[i] = item.Name; useCounter[i] = item.UseCounter ?? args.UseCounter; if (!useCounter[i]) @@ -266,7 +267,7 @@ private static VersionInfo GetVersionInfo() /// Seed to start random number generator. /// Use an auto-incremented integer starting at zero instead of a random number. public GenerateNumberTransform(IHostEnvironment env, IDataView input, string name, uint? seed = null, bool useCounter = Defaults.UseCounter) - : this(env, new Arguments() { Column = new[] { new Column() { Name = name } }, Seed = seed ?? Defaults.Seed, UseCounter = useCounter }, input) + : this(env, new Arguments() { Columns = new[] { new Column() { Name = name } }, Seed = seed ?? Defaults.Seed, UseCounter = useCounter }, input) { } @@ -277,7 +278,7 @@ public GenerateNumberTransform(IHostEnvironment env, Arguments args, IDataView i : base(env, RegistrationName, input) { Host.CheckValue(args, nameof(args)); - Host.CheckUserArg(Utils.Size(args.Column) > 0, nameof(args.Column)); + Host.CheckUserArg(Utils.Size(args.Columns) > 0, nameof(args.Columns)); _bindings = Bindings.Create(args, Source.Schema); } diff --git a/src/Microsoft.ML.Data/Transforms/Hashing.cs b/src/Microsoft.ML.Data/Transforms/Hashing.cs index 0927fb44e4..aba1931660 100644 --- a/src/Microsoft.ML.Data/Transforms/Hashing.cs +++ b/src/Microsoft.ML.Data/Transforms/Hashing.cs @@ -38,9 +38,9 @@ public sealed class HashingTransformer : OneToOneTransformerBase { public sealed class Arguments { - [Argument(ArgumentType.Multiple, HelpText = "New column definition(s) (optional form: name:src)", ShortName = "col", - SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple, HelpText = "New column definition(s) (optional form: name:src)", + Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; [Argument(ArgumentType.AtMostOnce, HelpText = "Number of bits to hash into. Must be between 1 and 31, inclusive", ShortName = "bits", SortOrder = 2)] @@ -380,11 +380,11 @@ private static IDataTransform Create(IHostEnvironment env, Arguments args, IData env.CheckValue(args, nameof(args)); env.CheckValue(input, nameof(input)); - env.CheckValue(args.Column, nameof(args.Column)); - var cols = new ColumnInfo[args.Column.Length]; + env.CheckValue(args.Columns, nameof(args.Columns)); + var cols = new ColumnInfo[args.Columns.Length]; for (int i = 0; i < cols.Length; i++) { - var item = args.Column[i]; + var item = args.Columns[i]; var kind = item.InvertHash ?? args.InvertHash; cols[i] = new ColumnInfo(item.Source ?? item.Name, item.Name, diff --git a/src/Microsoft.ML.Data/Transforms/KeyToValue.cs b/src/Microsoft.ML.Data/Transforms/KeyToValue.cs index a5cd469f0a..98fd1fc1b6 100644 --- a/src/Microsoft.ML.Data/Transforms/KeyToValue.cs +++ b/src/Microsoft.ML.Data/Transforms/KeyToValue.cs @@ -59,8 +59,9 @@ public bool TryUnparse(StringBuilder sb) public sealed class Arguments : TransformInputBase { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", + Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; } public const string LoaderSignature = "KeyToValueTransform"; @@ -104,9 +105,9 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat Contracts.CheckValue(env, nameof(env)); env.CheckValue(args, nameof(args)); env.CheckValue(input, nameof(input)); - env.CheckNonEmpty(args.Column, nameof(args.Column)); + env.CheckNonEmpty(args.Columns, nameof(args.Columns)); - var transformer = new KeyToValueMappingTransformer(env, args.Column.Select(c => (c.Source ?? c.Name, c.Name)).ToArray()); + var transformer = new KeyToValueMappingTransformer(env, args.Columns.Select(c => (c.Source ?? c.Name, c.Name)).ToArray()); return transformer.MakeDataTransform(input); } diff --git a/src/Microsoft.ML.Data/Transforms/KeyToVector.cs b/src/Microsoft.ML.Data/Transforms/KeyToVector.cs index 5c839726d1..049874eb46 100644 --- a/src/Microsoft.ML.Data/Transforms/KeyToVector.cs +++ b/src/Microsoft.ML.Data/Transforms/KeyToVector.cs @@ -77,8 +77,9 @@ public bool TryUnparse(StringBuilder sb) } public sealed class Arguments { - [Argument(ArgumentType.Multiple, HelpText = "New column definition(s) (optional form: name:src)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple, HelpText = "New column definition(s) (optional form: name:src)", + Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; [Argument(ArgumentType.AtMostOnce, HelpText = "Whether to combine multiple indicator vectors into a single bag vector instead of concatenating them. This is only relevant when the input is a vector.")] @@ -212,11 +213,11 @@ private static IDataTransform Create(IHostEnvironment env, Arguments args, IData env.CheckValue(args, nameof(args)); env.CheckValue(input, nameof(input)); - env.CheckValue(args.Column, nameof(args.Column)); - var cols = new ColumnInfo[args.Column.Length]; + env.CheckValue(args.Columns, nameof(args.Columns)); + var cols = new ColumnInfo[args.Columns.Length]; for (int i = 0; i < cols.Length; i++) { - var item = args.Column[i]; + var item = args.Columns[i]; cols[i] = new ColumnInfo(item.Source ?? item.Name, item.Name, diff --git a/src/Microsoft.ML.Data/Transforms/LabelConvertTransform.cs b/src/Microsoft.ML.Data/Transforms/LabelConvertTransform.cs index 2e27b89496..71427bfdd6 100644 --- a/src/Microsoft.ML.Data/Transforms/LabelConvertTransform.cs +++ b/src/Microsoft.ML.Data/Transforms/LabelConvertTransform.cs @@ -44,8 +44,9 @@ public bool TryUnparse(StringBuilder sb) public sealed class Arguments { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", ShortName = "col")] - public Column[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", + Name = "Column", ShortName = "col")] + public Column[] Columns; } internal const string Summary = "Convert a label column into a standard floating point representation."; @@ -73,15 +74,15 @@ private static VersionInfo GetVersionInfo() /// Name of the output column. /// Name of the input column. If this is null '' will be used. public LabelConvertTransform(IHostEnvironment env, IDataView input, string name, string source = null) - : this(env, new Arguments() { Column = new[] { new Column() { Source = source ?? name, Name = name } } }, input) + : this(env, new Arguments() { Columns = new[] { new Column() { Source = source ?? name, Name = name } } }, input) { } public LabelConvertTransform(IHostEnvironment env, Arguments args, IDataView input) - : base(env, RegistrationName, Contracts.CheckRef(args, nameof(args)).Column, input, RowCursorUtils.TestGetLabelGetter) + : base(env, RegistrationName, Contracts.CheckRef(args, nameof(args)).Columns, input, RowCursorUtils.TestGetLabelGetter) { Contracts.AssertNonEmpty(Infos); - Contracts.Assert(Infos.Length == Utils.Size(args.Column)); + Contracts.Assert(Infos.Length == Utils.Size(args.Columns)); Metadata.Seal(); } diff --git a/src/Microsoft.ML.Data/Transforms/LabelIndicatorTransform.cs b/src/Microsoft.ML.Data/Transforms/LabelIndicatorTransform.cs index 905c123375..7380926980 100644 --- a/src/Microsoft.ML.Data/Transforms/LabelIndicatorTransform.cs +++ b/src/Microsoft.ML.Data/Transforms/LabelIndicatorTransform.cs @@ -67,8 +67,8 @@ public bool TryUnparse(StringBuilder sb) public sealed class Arguments : TransformInputBase { - [Argument(ArgumentType.Multiple, HelpText = "New column definition(s) (optional form: name:src)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple, HelpText = "New column definition(s) (optional form: name:src)", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; [Argument(ArgumentType.AtMostOnce, HelpText = "Label of the positive class.", ShortName = "index")] public int ClassIndex; @@ -125,20 +125,20 @@ public LabelIndicatorTransform(IHostEnvironment env, int classIndex, string name, string source = null) - : this(env, new Arguments() { Column = new[] { new Column() { Source = source ?? name, Name = name } }, ClassIndex = classIndex }, input) + : this(env, new Arguments() { Columns = new[] { new Column() { Source = source ?? name, Name = name } }, ClassIndex = classIndex }, input) { } public LabelIndicatorTransform(IHostEnvironment env, Arguments args, IDataView input) - : base(env, LoadName, Contracts.CheckRef(args, nameof(args)).Column, + : base(env, LoadName, Contracts.CheckRef(args, nameof(args)).Columns, input, TestIsMulticlassLabel) { Host.AssertNonEmpty(Infos); - Host.Assert(Infos.Length == Utils.Size(args.Column)); + Host.Assert(Infos.Length == Utils.Size(args.Columns)); _classIndex = new int[Infos.Length]; for (int iinfo = 0; iinfo < Infos.Length; ++iinfo) - _classIndex[iinfo] = args.Column[iinfo].ClassIndex ?? args.ClassIndex; + _classIndex[iinfo] = args.Columns[iinfo].ClassIndex ?? args.ClassIndex; Metadata.Seal(); } diff --git a/src/Microsoft.ML.Data/Transforms/NAFilter.cs b/src/Microsoft.ML.Data/Transforms/NAFilter.cs index 1442de304d..6d119cb3cc 100644 --- a/src/Microsoft.ML.Data/Transforms/NAFilter.cs +++ b/src/Microsoft.ML.Data/Transforms/NAFilter.cs @@ -35,8 +35,8 @@ private static class Defaults public sealed class Arguments : TransformInputBase { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "Column", ShortName = "col", SortOrder = 1)] - public string[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "Column", Name = "Column", ShortName = "col", SortOrder = 1)] + public string[] Columns; [Argument(ArgumentType.Multiple, HelpText = "If true, keep only rows that contain NA values, and filter the rest.")] public bool Complement = Defaults.Complement; @@ -86,7 +86,7 @@ private static VersionInfo GetVersionInfo() /// If true, keep only rows that contain NA values, and filter the rest. /// Name of the columns. Only these columns will be used to filter rows having 'NA' values. public NAFilter(IHostEnvironment env, IDataView input, bool complement = Defaults.Complement, params string[] columns) - : this(env, new Arguments() { Column = columns, Complement = complement }, input) + : this(env, new Arguments() { Columns = columns, Complement = complement }, input) { } @@ -95,25 +95,25 @@ public NAFilter(IHostEnvironment env, Arguments args, IDataView input) { Host.CheckValue(args, nameof(args)); Host.CheckValue(input, nameof(input)); - Host.CheckUserArg(Utils.Size(args.Column) > 0, nameof(args.Column)); + Host.CheckUserArg(Utils.Size(args.Columns) > 0, nameof(args.Columns)); Host.CheckValue(env, nameof(env)); - _infos = new ColInfo[args.Column.Length]; + _infos = new ColInfo[args.Columns.Length]; _srcIndexToInfoIndex = new Dictionary(_infos.Length); _complement = args.Complement; var schema = Source.Schema; for (int i = 0; i < _infos.Length; i++) { - string src = args.Column[i]; + string src = args.Columns[i]; int index; if (!schema.TryGetColumnIndex(src, out index)) - throw Host.ExceptUserArg(nameof(args.Column), "Source column '{0}' not found", src); + throw Host.ExceptUserArg(nameof(args.Columns), "Source column '{0}' not found", src); if (_srcIndexToInfoIndex.ContainsKey(index)) - throw Host.ExceptUserArg(nameof(args.Column), "Source column '{0}' specified multiple times", src); + throw Host.ExceptUserArg(nameof(args.Columns), "Source column '{0}' specified multiple times", src); var type = schema[index].Type; if (!TestType(type)) - throw Host.ExceptUserArg(nameof(args.Column), $"Column '{src}' has type {type} which does not support missing values, so we cannot filter on them", src); + throw Host.ExceptUserArg(nameof(args.Columns), $"Column '{src}' has type {type} which does not support missing values, so we cannot filter on them", src); _infos[i] = new ColInfo(index, type); _srcIndexToInfoIndex.Add(index, i); diff --git a/src/Microsoft.ML.Data/Transforms/NormalizeColumn.cs b/src/Microsoft.ML.Data/Transforms/NormalizeColumn.cs index 3a4950ea03..3625057d9f 100644 --- a/src/Microsoft.ML.Data/Transforms/NormalizeColumn.cs +++ b/src/Microsoft.ML.Data/Transforms/NormalizeColumn.cs @@ -155,10 +155,10 @@ public abstract class FixZeroArgumentsBase : ArgumentsBase public abstract class AffineArgumentsBase : FixZeroArgumentsBase { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", ShortName = "col", SortOrder = 1)] - public AffineColumn[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", Name = "Column", ShortName = "col", SortOrder = 1)] + public AffineColumn[] Columns; - public override OneToOneColumn[] GetColumns() => Column; + public override OneToOneColumn[] GetColumns() => Columns; } public sealed class MinMaxArguments : AffineArgumentsBase @@ -196,22 +196,22 @@ public sealed class LogMeanVarArguments : ArgumentsBase [Argument(ArgumentType.AtMostOnce, HelpText = "Whether to use CDF as the output", ShortName = "cdf")] public bool UseCdf = Defaults.LogMeanVarCdf; - [Argument(ArgumentType.Multiple, HelpText = "New column definition(s) (optional form: name:src)", ShortName = "col", SortOrder = 1)] - public LogNormalColumn[] Column; + [Argument(ArgumentType.Multiple, HelpText = "New column definition(s) (optional form: name:src)", Name = "Column", ShortName = "col", SortOrder = 1)] + public LogNormalColumn[] Columns; - public override OneToOneColumn[] GetColumns() => Column; + public override OneToOneColumn[] GetColumns() => Columns; } public abstract class BinArgumentsBase : FixZeroArgumentsBase { - [Argument(ArgumentType.Multiple, HelpText = "New column definition(s) (optional form: name:src)", ShortName = "col", SortOrder = 1)] - public BinColumn[] Column; + [Argument(ArgumentType.Multiple, HelpText = "New column definition(s) (optional form: name:src)", Name = "Column", ShortName = "col", SortOrder = 1)] + public BinColumn[] Columns; [Argument(ArgumentType.AtMostOnce, HelpText = "Max number of bins, power of 2 recommended", ShortName = "bins")] [TGUI(Label = "Max number of bins")] public int NumBins = Defaults.NumBins; - public override OneToOneColumn[] GetColumns() => Column; + public override OneToOneColumn[] GetColumns() => Columns; } public sealed class BinArguments : BinArgumentsBase @@ -270,9 +270,9 @@ internal static IDataTransform Create(IHostEnvironment env, MinMaxArguments args { Contracts.CheckValue(env, nameof(env)); env.CheckValue(args, nameof(args)); - env.CheckValue(args.Column, nameof(args.Column)); + env.CheckValue(args.Columns, nameof(args.Columns)); - var columns = args.Column + var columns = args.Columns .Select(col => new NormalizingEstimator.MinMaxColumn( col.Source ?? col.Name, col.Name, @@ -288,9 +288,9 @@ internal static IDataTransform Create(IHostEnvironment env, MeanVarArguments arg { Contracts.CheckValue(env, nameof(env)); env.CheckValue(args, nameof(args)); - env.CheckValue(args.Column, nameof(args.Column)); + env.CheckValue(args.Columns, nameof(args.Columns)); - var columns = args.Column + var columns = args.Columns .Select(col => new NormalizingEstimator.MeanVarColumn( col.Source ?? col.Name, col.Name, @@ -308,9 +308,9 @@ internal static IDataTransform Create(IHostEnvironment env, LogMeanVarArguments { Contracts.CheckValue(env, nameof(env)); env.CheckValue(args, nameof(args)); - env.CheckValue(args.Column, nameof(args.Column)); + env.CheckValue(args.Columns, nameof(args.Columns)); - var columns = args.Column + var columns = args.Columns .Select(col => new NormalizingEstimator.LogMeanVarColumn( col.Source ?? col.Name, col.Name, @@ -328,9 +328,9 @@ internal static IDataTransform Create(IHostEnvironment env, BinArguments args, I { Contracts.CheckValue(env, nameof(env)); env.CheckValue(args, nameof(args)); - env.CheckValue(args.Column, nameof(args.Column)); + env.CheckValue(args.Columns, nameof(args.Columns)); - var columns = args.Column + var columns = args.Columns .Select(col => new NormalizingEstimator.BinningColumn( col.Source ?? col.Name, col.Name, @@ -382,7 +382,7 @@ public static AffineColumnFunction Create(ModelLoadContext ctx, IHost host, Colu if (typeSrc.ItemType == NumberType.R8) return Dbl.ImplVec.Create(ctx, host, typeSrc); } - throw host.ExceptUserArg(nameof(AffineArgumentsBase.Column), "Wrong column type. Expected: R4, R8, Vec or Vec. Got: {0}.", typeSrc.ToString()); + throw host.ExceptUserArg(nameof(AffineArgumentsBase.Columns), "Wrong column type. Expected: R4, R8, Vec or Vec. Got: {0}.", typeSrc.ToString()); } private abstract class ImplOne : AffineColumnFunction @@ -499,7 +499,7 @@ public static CdfColumnFunction Create(ModelLoadContext ctx, IHost host, ColumnT if (typeSrc.ItemType == NumberType.R8) return Dbl.ImplVec.Create(ctx, host, typeSrc); } - throw host.ExceptUserArg(nameof(AffineArgumentsBase.Column), "Wrong column type. Expected: R4, R8, Vec or Vec. Got: {0}.", typeSrc); + throw host.ExceptUserArg(nameof(AffineArgumentsBase.Columns), "Wrong column type. Expected: R4, R8, Vec or Vec. Got: {0}.", typeSrc); } private abstract class ImplOne : CdfColumnFunction @@ -633,7 +633,7 @@ public static BinColumnFunction Create(ModelLoadContext ctx, IHost host, ColumnT if (typeSrc.ItemType == NumberType.R8) return Dbl.ImplVec.Create(ctx, host, typeSrc); } - throw host.ExceptUserArg(nameof(BinArguments.Column), "Wrong column type. Expected: R4, R8, Vec or Vec. Got: {0}.", typeSrc); + throw host.ExceptUserArg(nameof(BinArguments.Columns), "Wrong column type. Expected: R4, R8, Vec or Vec. Got: {0}.", typeSrc); } public const string LoaderSignature = "BinNormalizeFunction"; @@ -903,10 +903,10 @@ public static IColumnFunctionBuilder CreateBuilder(MinMaxArguments args, IHost h host.AssertValue(args); return CreateBuilder(new NormalizingEstimator.MinMaxColumn( - args.Column[icol].Source ?? args.Column[icol].Name, - args.Column[icol].Name, - args.Column[icol].MaxTrainingExamples ?? args.MaxTrainingExamples, - args.Column[icol].FixZero ?? args.FixZero), host, srcIndex, srcType, cursor); + args.Columns[icol].Source ?? args.Columns[icol].Name, + args.Columns[icol].Name, + args.Columns[icol].MaxTrainingExamples ?? args.MaxTrainingExamples, + args.Columns[icol].FixZero ?? args.FixZero), host, srcIndex, srcType, cursor); } public static IColumnFunctionBuilder CreateBuilder(NormalizingEstimator.MinMaxColumn column, IHost host, @@ -939,10 +939,10 @@ public static IColumnFunctionBuilder CreateBuilder(MeanVarArguments args, IHost host.AssertValue(args); return CreateBuilder(new NormalizingEstimator.MeanVarColumn( - args.Column[icol].Source ?? args.Column[icol].Name, - args.Column[icol].Name, - args.Column[icol].MaxTrainingExamples ?? args.MaxTrainingExamples, - args.Column[icol].FixZero ?? args.FixZero, + args.Columns[icol].Source ?? args.Columns[icol].Name, + args.Columns[icol].Name, + args.Columns[icol].MaxTrainingExamples ?? args.MaxTrainingExamples, + args.Columns[icol].FixZero ?? args.FixZero, args.UseCdf), host, srcIndex, srcType, cursor); } @@ -979,9 +979,9 @@ public static IColumnFunctionBuilder CreateBuilder(LogMeanVarArguments args, IHo host.AssertValue(args); return CreateBuilder(new NormalizingEstimator.LogMeanVarColumn( - args.Column[icol].Source ?? args.Column[icol].Name, - args.Column[icol].Name, - args.Column[icol].MaxTrainingExamples ?? args.MaxTrainingExamples, + args.Columns[icol].Source ?? args.Columns[icol].Name, + args.Columns[icol].Name, + args.Columns[icol].MaxTrainingExamples ?? args.MaxTrainingExamples, args.UseCdf), host, srcIndex, srcType, cursor); } @@ -1018,11 +1018,11 @@ public static IColumnFunctionBuilder CreateBuilder(BinArguments args, IHost host host.AssertValue(args); return CreateBuilder(new NormalizingEstimator.BinningColumn( - args.Column[icol].Source ?? args.Column[icol].Name, - args.Column[icol].Name, - args.Column[icol].MaxTrainingExamples ?? args.MaxTrainingExamples, - args.Column[icol].FixZero ?? args.FixZero, - args.Column[icol].NumBins ?? args.NumBins), host, srcIndex, srcType, cursor); + args.Columns[icol].Source ?? args.Columns[icol].Name, + args.Columns[icol].Name, + args.Columns[icol].MaxTrainingExamples ?? args.MaxTrainingExamples, + args.Columns[icol].FixZero ?? args.FixZero, + args.Columns[icol].NumBins ?? args.NumBins), host, srcIndex, srcType, cursor); } public static IColumnFunctionBuilder CreateBuilder(NormalizingEstimator.BinningColumn column, IHost host, @@ -1067,12 +1067,12 @@ public static IColumnFunctionBuilder CreateBuilder(SupervisedBinArguments args, return CreateBuilder( new NormalizingEstimator.SupervisedBinningColumn( - args.Column[icol].Source ?? args.Column[icol].Name, - args.Column[icol].Name, + args.Columns[icol].Source ?? args.Columns[icol].Name, + args.Columns[icol].Name, args.LabelColumn ?? DefaultColumnNames.Label, - args.Column[icol].MaxTrainingExamples ?? args.MaxTrainingExamples, - args.Column[icol].FixZero ?? args.FixZero, - args.Column[icol].NumBins ?? args.NumBins, + args.Columns[icol].MaxTrainingExamples ?? args.MaxTrainingExamples, + args.Columns[icol].FixZero ?? args.FixZero, + args.Columns[icol].NumBins ?? args.NumBins, args.MinBinSize), host, labelColumnId, srcIndex, srcType, cursor); } diff --git a/src/Microsoft.ML.Data/Transforms/NormalizeUtils.cs b/src/Microsoft.ML.Data/Transforms/NormalizeUtils.cs index 1dc57a833e..daff814593 100644 --- a/src/Microsoft.ML.Data/Transforms/NormalizeUtils.cs +++ b/src/Microsoft.ML.Data/Transforms/NormalizeUtils.cs @@ -130,10 +130,10 @@ public static CommonOutputs.TransformOutput Bin(IHostEnvironment env, NormalizeT { var schema = input.Data.Schema; var columnsToNormalize = new List(); - foreach (var column in input.Column) + foreach (var column in input.Columns) { if (!schema.TryGetColumnIndex(column.Source, out int col)) - throw env.ExceptUserArg(nameof(input.Column), $"Column '{column.Source}' does not exist."); + throw env.ExceptUserArg(nameof(input.Columns), $"Column '{column.Source}' does not exist."); if (!schema[col].IsNormalized()) columnsToNormalize.Add(column); } @@ -146,7 +146,7 @@ public static CommonOutputs.TransformOutput Bin(IHostEnvironment env, NormalizeT } else { - input.Column = columnsToNormalize.ToArray(); + input.Columns = columnsToNormalize.ToArray(); var entryPointNode = EntryPointNode.Create(env, "Transforms.MinMaxNormalizer", input, node.Context, node.InputBindingMap, node.InputMap, node.OutputMap); entryPoints.Add(entryPointNode); } diff --git a/src/Microsoft.ML.Data/Transforms/RowShufflingTransformer.cs b/src/Microsoft.ML.Data/Transforms/RowShufflingTransformer.cs index c5c872e09c..a93772ac99 100644 --- a/src/Microsoft.ML.Data/Transforms/RowShufflingTransformer.cs +++ b/src/Microsoft.ML.Data/Transforms/RowShufflingTransformer.cs @@ -201,7 +201,7 @@ private static IDataView SelectCachableColumns(IDataView data, IHostEnvironment var args = new ChooseColumnsByIndexTransform.Arguments(); args.Drop = true; - args.Index = columnsToDrop.ToArray(); + args.Indices = columnsToDrop.ToArray(); return new ChooseColumnsByIndexTransform(env, args, data); } diff --git a/src/Microsoft.ML.Data/Transforms/TrainAndScoreTransformer.cs b/src/Microsoft.ML.Data/Transforms/TrainAndScoreTransformer.cs index d2e7dd8d1e..9762496728 100644 --- a/src/Microsoft.ML.Data/Transforms/TrainAndScoreTransformer.cs +++ b/src/Microsoft.ML.Data/Transforms/TrainAndScoreTransformer.cs @@ -35,8 +35,8 @@ public sealed class Arguments : TransformInputBase [Argument(ArgumentType.Multiple, HelpText = "Input columns: Columns with custom kinds declared through key assignments, for example, col[Kind]=Name to assign column named 'Name' kind 'Kind'", - ShortName = "col", SortOrder = 101, Purpose = SpecialPurpose.ColumnSelector)] - public KeyValuePair[] CustomColumn; + Name = "CustomColumn", ShortName = "col", SortOrder = 101, Purpose = SpecialPurpose.ColumnSelector)] + public KeyValuePair[] CustomColumns; [Argument(ArgumentType.Multiple, HelpText = "Scorer to use", NullName = "", SignatureType = typeof(SignatureDataScorer))] public IComponentFactory Scorer; @@ -94,7 +94,7 @@ private static IDataTransform Create(IHostEnvironment env, Arguments args, IData nameof(args.FeatureColumn), args.FeatureColumn, DefaultColumnNames.Features); string group = TrainUtils.MatchNameOrDefaultOrNull(env, input.Schema, nameof(args.GroupColumn), args.GroupColumn, DefaultColumnNames.GroupId); - var customCols = TrainUtils.CheckAndGenerateCustomColumns(env, args.CustomColumn); + var customCols = TrainUtils.CheckAndGenerateCustomColumns(env, args.CustomColumns); return ScoreUtils.GetScorer(args.Scorer, predictor, input, feat, group, customCols, env, trainSchema); } @@ -130,8 +130,8 @@ public abstract class ArgumentsBase : TransformInputBase [Argument(ArgumentType.Multiple, HelpText = "Input columns: Columns with custom kinds declared through key assignments, for example, col[Kind]=Name to assign column named 'Name' kind 'Kind'", - ShortName = "col", SortOrder = 110, Purpose = SpecialPurpose.ColumnSelector)] - public KeyValuePair[] CustomColumn; + Name = "CustomColumn", ShortName = "col", SortOrder = 110, Purpose = SpecialPurpose.ColumnSelector)] + public KeyValuePair[] CustomColumns; public void CopyTo(ArgumentsBase other) { @@ -140,7 +140,7 @@ public void CopyTo(ArgumentsBase other) other.GroupColumn = GroupColumn; other.WeightColumn = WeightColumn; other.NameColumn = NameColumn; - other.CustomColumn = CustomColumn; + other.CustomColumns = CustomColumns; } } @@ -235,7 +235,7 @@ private static IDataTransform Create(IHostEnvironment env, Arguments args, ITrai using (var ch = host.Start("Train")) { ch.Trace("Constructing trainer"); - var customCols = TrainUtils.CheckAndGenerateCustomColumns(env, args.CustomColumn); + var customCols = TrainUtils.CheckAndGenerateCustomColumns(env, args.CustomColumns); string feat; string group; var data = CreateDataFromArgs(ch, input, args, out feat, out group); @@ -268,7 +268,7 @@ private static RoleMappedData CreateDataFromArgs(IExceptionContext ectx, IDataVi DefaultColumnNames.Weight); var name = TrainUtils.MatchNameOrDefaultOrNull(ectx, schema, nameof(args.NameColumn), args.NameColumn, DefaultColumnNames.Name); - var customCols = TrainUtils.CheckAndGenerateCustomColumns(ectx, args.CustomColumn); + var customCols = TrainUtils.CheckAndGenerateCustomColumns(ectx, args.CustomColumns); return new RoleMappedData(input, label, feat, group, weight, name, customCols); } } diff --git a/src/Microsoft.ML.Data/Transforms/TypeConverting.cs b/src/Microsoft.ML.Data/Transforms/TypeConverting.cs index a1a16155c8..a079b2763f 100644 --- a/src/Microsoft.ML.Data/Transforms/TypeConverting.cs +++ b/src/Microsoft.ML.Data/Transforms/TypeConverting.cs @@ -130,8 +130,8 @@ public bool TryUnparse(StringBuilder sb) public class Arguments : TransformInputBase { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:type:src)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:type:src)", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; [Argument(ArgumentType.AtMostOnce, HelpText = "The result type", ShortName = "type", SortOrder = 2)] public DataKind? ResultType; @@ -307,11 +307,11 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat env.CheckValue(args, nameof(args)); env.CheckValue(input, nameof(input)); - env.CheckValue(args.Column, nameof(args.Column)); - var cols = new ColumnInfo[args.Column.Length]; + env.CheckValue(args.Columns, nameof(args.Columns)); + var cols = new ColumnInfo[args.Columns.Length]; for (int i = 0; i < cols.Length; i++) { - var item = args.Column[i]; + var item = args.Columns[i]; var tempResultType = item.ResultType ?? args.ResultType; DataKind kind; KeyRange range = null; diff --git a/src/Microsoft.ML.Data/Transforms/ValueMappingTransformer.cs b/src/Microsoft.ML.Data/Transforms/ValueMappingTransformer.cs index ab84f61356..508351f14b 100644 --- a/src/Microsoft.ML.Data/Transforms/ValueMappingTransformer.cs +++ b/src/Microsoft.ML.Data/Transforms/ValueMappingTransformer.cs @@ -358,8 +358,8 @@ public bool TryUnparse(StringBuilder sb) public sealed class Arguments { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; [Argument(ArgumentType.AtMostOnce, IsInputFileName = true, HelpText = "The data file containing the terms", ShortName = "data", SortOrder = 2)] public string DataFile; @@ -588,7 +588,7 @@ private static IDataTransform Create(IHostEnvironment env, Arguments args, IData valueColumn = new TextLoader.Column(valueColumnName, DataKind.TXT, 1); var txtArgs = new TextLoader.Arguments() { - Column = new TextLoader.Column[] + Columns = new TextLoader.Column[] { keyColumn, valueColumn @@ -615,7 +615,7 @@ private static IDataTransform Create(IHostEnvironment env, Arguments args, IData env, new TextLoader.Arguments() { - Column = new TextLoader.Column[] + Columns = new TextLoader.Column[] { keyColumn, valueColumn @@ -630,7 +630,7 @@ private static IDataTransform Create(IHostEnvironment env, Arguments args, IData env.Assert(loader.Schema.TryGetColumnIndex(valueColumnName, out int valueColumnIndex)); ValueMappingTransformer transformer = null; - (string Source, string Name)[] columns = args.Column.Select(x => (x.Source, x.Name)).ToArray(); + (string Source, string Name)[] columns = args.Columns.Select(x => (x.Source, x.Name)).ToArray(); transformer = new ValueMappingTransformer(env, loader, keyColumnName, valueColumnName, columns); return transformer.MakeDataTransform(input); } diff --git a/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingTransformer.cs b/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingTransformer.cs index 30e7e69fe4..3f1ec8de7d 100644 --- a/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingTransformer.cs +++ b/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingTransformer.cs @@ -107,11 +107,11 @@ public abstract class ArgumentsBase : TransformInputBase [Argument(ArgumentType.AtMostOnce, HelpText = "Maximum number of terms to keep per column when auto-training", ShortName = "max", SortOrder = 5)] public int MaxNumTerms = ValueToKeyMappingEstimator.Defaults.MaxNumTerms; - [Argument(ArgumentType.AtMostOnce, HelpText = "Comma separated list of terms", SortOrder = 105, Visibility = ArgumentAttribute.VisibilityType.CmdLineOnly)] - public string Terms; + [Argument(ArgumentType.AtMostOnce, HelpText = "Comma separated list of terms", Name = "Terms", SortOrder = 105, Visibility = ArgumentAttribute.VisibilityType.CmdLineOnly)] + public string TermsList; [Argument(ArgumentType.AtMostOnce, HelpText = "List of terms", SortOrder = 106, Visibility = ArgumentAttribute.VisibilityType.EntryPointsOnly)] - public string[] Term; + public string[] Terms; [Argument(ArgumentType.AtMostOnce, IsInputFileName = true, HelpText = "Data file containing the terms", ShortName = "data", SortOrder = 110, Visibility = ArgumentAttribute.VisibilityType.CmdLineOnly)] public string DataFile; @@ -139,8 +139,8 @@ public abstract class ArgumentsBase : TransformInputBase public sealed class Arguments : ArgumentsBase { - [Argument(ArgumentType.Multiple, HelpText = "New column definition(s) (optional form: name:src)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple, HelpText = "New column definition(s) (optional form: name:src)", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; } internal sealed class ColInfo @@ -317,11 +317,11 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat env.CheckValue(args, nameof(args)); env.CheckValue(input, nameof(input)); - env.CheckValue(args.Column, nameof(args.Column)); - var cols = new ColumnInfo[args.Column.Length]; + env.CheckValue(args.Columns, nameof(args.Columns)); + var cols = new ColumnInfo[args.Columns.Length]; using (var ch = env.Start("ValidateArgs")) { - if ((args.Term != null || !string.IsNullOrEmpty(args.Terms)) && + if ((args.Terms != null || !string.IsNullOrEmpty(args.TermsList)) && (!string.IsNullOrWhiteSpace(args.DataFile) || args.Loader != null || !string.IsNullOrWhiteSpace(args.TermsColumn))) { @@ -332,7 +332,7 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat for (int i = 0; i < cols.Length; i++) { - var item = args.Column[i]; + var item = args.Columns[i]; var sortOrder = item.Sort ?? args.Sort; if (!Enum.IsDefined(typeof(SortOrder), sortOrder)) throw env.ExceptUserArg(nameof(args.Sort), "Undefined sorting criteria '{0}' detected for column '{1}'", sortOrder, item.Name); @@ -343,7 +343,7 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat sortOrder, item.Term, item.TextKeyValues ?? args.TextKeyValues); - cols[i].Terms = item.Terms ?? args.Terms; + cols[i].Terms = item.Terms ?? args.TermsList; }; } return new ValueToKeyMappingTransformer(env, input, cols, args.DataFile, args.TermsColumn, args.Loader).MakeDataTransform(input); diff --git a/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingTransformerImpl.cs b/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingTransformerImpl.cs index 290b140271..0a116e2763 100644 --- a/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingTransformerImpl.cs +++ b/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingTransformerImpl.cs @@ -219,7 +219,7 @@ public override void ParseAddTermArg(ref ReadOnlyMemory terms, IChannel ch } if (Count == 0) - throw ch.ExceptUserArg(nameof(Arguments.Terms), "Nothing parsed as '{0}'", ItemType); + throw ch.ExceptUserArg(nameof(Arguments.TermsList), "Nothing parsed as '{0}'", ItemType); } /// @@ -244,7 +244,7 @@ public override void ParseAddTermArg(string[] terms, IChannel ch) } if (Count == 0) - throw ch.ExceptUserArg(nameof(Arguments.Terms), "Nothing parsed as '{0}'", ItemType); + throw ch.ExceptUserArg(nameof(Arguments.TermsList), "Nothing parsed as '{0}'", ItemType); } } diff --git a/src/Microsoft.ML.Ensemble/Selector/SubsetSelector/BaseSubsetSelector.cs b/src/Microsoft.ML.Ensemble/Selector/SubsetSelector/BaseSubsetSelector.cs index 8e163bee6b..9da5c1e745 100644 --- a/src/Microsoft.ML.Ensemble/Selector/SubsetSelector/BaseSubsetSelector.cs +++ b/src/Microsoft.ML.Ensemble/Selector/SubsetSelector/BaseSubsetSelector.cs @@ -72,7 +72,7 @@ public IEnumerable GetBatches(Random rand) // Split the data into train and test sets. string name = Data.Data.Schema.GetTempColumnName(); var args = new GenerateNumberTransform.Arguments(); - args.Column = new[] { new GenerateNumberTransform.Column() { Name = name } }; + args.Columns = new[] { new GenerateNumberTransform.Column() { Name = name } }; args.Seed = (uint)rand.Next(); var view = new GenerateNumberTransform(Host, args, Data.Data); var viewTest = new RangeFilter(Host, new RangeFilter.Arguments() { Column = name, Max = ValidationDatasetProportion }, view); diff --git a/src/Microsoft.ML.Ensemble/Selector/SubsetSelector/RandomPartitionSelector.cs b/src/Microsoft.ML.Ensemble/Selector/SubsetSelector/RandomPartitionSelector.cs index af7b93a0b5..3ed650e3cd 100644 --- a/src/Microsoft.ML.Ensemble/Selector/SubsetSelector/RandomPartitionSelector.cs +++ b/src/Microsoft.ML.Ensemble/Selector/SubsetSelector/RandomPartitionSelector.cs @@ -38,7 +38,7 @@ public override IEnumerable GetSubsets(Batch batch, Random rand) { string name = Data.Data.Schema.GetTempColumnName(); var args = new GenerateNumberTransform.Arguments(); - args.Column = new[] { new GenerateNumberTransform.Column() { Name = name } }; + args.Columns = new[] { new GenerateNumberTransform.Column() { Name = name } }; args.Seed = (uint)rand.Next(); IDataTransform view = new GenerateNumberTransform(Host, args, Data.Data); diff --git a/src/Microsoft.ML.EntryPoints/CrossValidationMacro.cs b/src/Microsoft.ML.EntryPoints/CrossValidationMacro.cs index a69b301014..5b196a6ee3 100644 --- a/src/Microsoft.ML.EntryPoints/CrossValidationMacro.cs +++ b/src/Microsoft.ML.EntryPoints/CrossValidationMacro.cs @@ -95,7 +95,7 @@ public sealed class Output { [TlcModule.Output(Desc = "The final model including the trained predictor model and the model from the transforms, " + "provided as the Input.TransformModel.", SortOrder = 1)] - public PredictorModel[] PredictorModel; + public PredictorModel[] PredictorModels; [TlcModule.Output(Desc = "Warning dataset", SortOrder = 3)] public IDataView Warnings; @@ -289,7 +289,7 @@ public static CommonOutputs.MacroOutput CrossValidate( } // Convert the predictor models to an array of predictor models. - MacroUtils.ConvertIPredictorModelsToArray(env, node.Context, subGraphNodes, predModelVars, node.GetOutputVariableName(nameof(Output.PredictorModel))); + MacroUtils.ConvertIPredictorModelsToArray(env, node.Context, subGraphNodes, predModelVars, node.GetOutputVariableName(nameof(Output.PredictorModels))); // Convert the warnings, overall, per instance and confusion matrix data views into an array. var warningsArrayVar = new ArrayVar(); @@ -398,7 +398,7 @@ public static CombinedOutput CombineMetrics(IHostEnvironment env, CombineMetrics idv.Schema[col].Name.Equals(MetricKinds.ColumnNames.Count)) { input.ConfusionMatrix[i] = new ChooseColumnsByIndexTransform(env, - new ChooseColumnsByIndexTransform.Arguments() { Drop = true, Index = new[] { col } }, idv); + new ChooseColumnsByIndexTransform.Arguments() { Drop = true, Indices = new[] { col } }, idv); break; } } diff --git a/src/Microsoft.ML.EntryPoints/FeatureCombiner.cs b/src/Microsoft.ML.EntryPoints/FeatureCombiner.cs index 4e0183d089..c057b8c890 100644 --- a/src/Microsoft.ML.EntryPoints/FeatureCombiner.cs +++ b/src/Microsoft.ML.EntryPoints/FeatureCombiner.cs @@ -75,7 +75,7 @@ public static CommonOutputs.TransformOutput PrepareFeatures(IHostEnvironment env viewTrain = ColumnConcatenatingTransformer.Create(host, new ColumnConcatenatingTransformer.TaggedArguments() { - Column = + Columns = new[] { new ColumnConcatenatingTransformer.TaggedColumn() { Name = nameFeat, Source = concatNames.ToArray() } } }, viewTrain); @@ -100,7 +100,7 @@ private static IDataView ApplyKeyToVec(List new ValueToKeyMappingTransformer.Column() { Name = c.Output, Source = c.Output, Terms = GetTerms(viewTrain, c.Input) }) .ToArray(), TextKeyValues = true @@ -244,7 +244,7 @@ public static CommonOutputs.TransformOutput PrepareClassificationLabel(IHostEnvi var args = new ValueToKeyMappingTransformer.Arguments() { - Column = new[] + Columns = new[] { new ValueToKeyMappingTransformer.Column() { @@ -301,7 +301,7 @@ public static CommonOutputs.TransformOutput PrepareRegressionLabel(IHostEnvironm var args = new TypeConvertingTransformer.Arguments() { - Column = new[] + Columns = new[] { new TypeConvertingTransformer.Column() { diff --git a/src/Microsoft.ML.EntryPoints/MacroUtils.cs b/src/Microsoft.ML.EntryPoints/MacroUtils.cs index a6e1dbfd30..ba81be14a0 100644 --- a/src/Microsoft.ML.EntryPoints/MacroUtils.cs +++ b/src/Microsoft.ML.EntryPoints/MacroUtils.cs @@ -75,13 +75,13 @@ public static EvaluateInputBase GetEvaluatorArgs(TrainerKinds kind, out string e public sealed class ArrayIPredictorModelInput { [Argument(ArgumentType.Required, HelpText = "The models", SortOrder = 1)] - public PredictorModel[] Model; + public PredictorModel[] Models; } public sealed class ArrayIPredictorModelOutput { [TlcModule.Output(Desc = "The model array", SortOrder = 1)] - public PredictorModel[] OutputModel; + public PredictorModel[] OutputModels; } [TlcModule.EntryPoint(Desc = "Create an array variable of " + nameof(PredictorModel), Name = "Data.PredictorModelArrayConverter")] @@ -89,7 +89,7 @@ public static ArrayIPredictorModelOutput MakeArray(IHostEnvironment env, ArrayIP { var result = new ArrayIPredictorModelOutput { - OutputModel = input.Model + OutputModels = input.Models }; return result; } @@ -123,7 +123,7 @@ internal static void ConvertIPredictorModelsToArray(IHostEnvironment env, RunCon var inputBindingMap = new Dictionary>(); var inputMap = new Dictionary(); - var argName = nameof(predictorArrayConverterArgs.Model); + var argName = nameof(predictorArrayConverterArgs.Models); inputBindingMap.Add(argName, new List()); for (int i = 0; i < predModelVars.Length; i++) { @@ -133,7 +133,7 @@ internal static void ConvertIPredictorModelsToArray(IHostEnvironment env, RunCon } var outputMap = new Dictionary(); var output = new ArrayVar(); - outputMap.Add(nameof(MacroUtils.ArrayIPredictorModelOutput.OutputModel), outputVarName); + outputMap.Add(nameof(MacroUtils.ArrayIPredictorModelOutput.OutputModels), outputVarName); var arrayConvertNode = EntryPointNode.Create(env, "Data.PredictorModelArrayConverter", predictorArrayConverterArgs, context, inputBindingMap, inputMap, outputMap); subGraphNodes.Add(arrayConvertNode); diff --git a/src/Microsoft.ML.EntryPoints/OneVersusAllMacro.cs b/src/Microsoft.ML.EntryPoints/OneVersusAllMacro.cs index 6b117c181c..21f2651974 100644 --- a/src/Microsoft.ML.EntryPoints/OneVersusAllMacro.cs +++ b/src/Microsoft.ML.EntryPoints/OneVersusAllMacro.cs @@ -54,7 +54,7 @@ private static Var ProcessClass(IHostEnvironment env, List>(); var inputMap = new Dictionary(); diff --git a/src/Microsoft.ML.EntryPoints/TrainTestSplit.cs b/src/Microsoft.ML.EntryPoints/TrainTestSplit.cs index a4b8ec98a6..e18cc24fc0 100644 --- a/src/Microsoft.ML.EntryPoints/TrainTestSplit.cs +++ b/src/Microsoft.ML.EntryPoints/TrainTestSplit.cs @@ -86,7 +86,7 @@ public static string CreateStratificationColumn(IHost host, ref IDataView data, data = new GenerateNumberTransform(host, new GenerateNumberTransform.Arguments { - Column = new[] { new GenerateNumberTransform.Column { Name = stratCol } } + Columns = new[] { new GenerateNumberTransform.Column { Name = stratCol } } }, data); } else @@ -94,7 +94,7 @@ public static string CreateStratificationColumn(IHost host, ref IDataView data, data = new HashJoiningTransform(host, new HashJoiningTransform.Arguments { - Column = new[] { new HashJoiningTransform.Column { Name = stratCol, Source = stratificationColumn } }, + Columns = new[] { new HashJoiningTransform.Column { Name = stratCol, Source = stratificationColumn } }, Join = true, HashBits = 30 }, data); diff --git a/src/Microsoft.ML.FastTree/FastTree.cs b/src/Microsoft.ML.FastTree/FastTree.cs index 50fb7b9701..a506085954 100644 --- a/src/Microsoft.ML.FastTree/FastTree.cs +++ b/src/Microsoft.ML.FastTree/FastTree.cs @@ -1380,7 +1380,7 @@ private Dataset Construct(RoleMappedData examples, ref int numExamples, int maxB { var convArgs = new LabelConvertTransform.Arguments(); var convCol = new LabelConvertTransform.Column() { Name = labelName, Source = labelName }; - convArgs.Column = new LabelConvertTransform.Column[] { convCol }; + convArgs.Columns = new LabelConvertTransform.Column[] { convCol }; data = new LabelConvertTransform(Host, convArgs, data); } // Convert the group column, if one exists. diff --git a/src/Microsoft.ML.HalLearners/VectorWhitening.cs b/src/Microsoft.ML.HalLearners/VectorWhitening.cs index 23c161ea00..0ca9ee710d 100644 --- a/src/Microsoft.ML.HalLearners/VectorWhitening.cs +++ b/src/Microsoft.ML.HalLearners/VectorWhitening.cs @@ -56,8 +56,8 @@ internal static class Defaults public sealed class Arguments { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; [Argument(ArgumentType.AtMostOnce, HelpText = "Whitening kind (PCA/ZCA)")] public WhiteningKind Kind = Defaults.Kind; @@ -294,7 +294,7 @@ internal static VectorWhiteningTransformer Create(IHostEnvironment env, ModelLoa // Factory method for SignatureDataTransform. internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDataView input) { - var infos = args.Column.Select(colPair => new ColumnInfo(colPair, args)).ToArray(); + var infos = args.Columns.Select(colPair => new ColumnInfo(colPair, args)).ToArray(); (var models, var invModels) = TrainVectorWhiteningTransform(env, input, infos); return new VectorWhiteningTransformer(env, models, invModels, infos).MakeDataTransform(input); } diff --git a/src/Microsoft.ML.ImageAnalytics/ImageGrayscaleTransform.cs b/src/Microsoft.ML.ImageAnalytics/ImageGrayscaleTransform.cs index aebae991a1..de0fe859e0 100644 --- a/src/Microsoft.ML.ImageAnalytics/ImageGrayscaleTransform.cs +++ b/src/Microsoft.ML.ImageAnalytics/ImageGrayscaleTransform.cs @@ -58,8 +58,8 @@ public bool TryUnparse(StringBuilder sb) public class Arguments : TransformInputBase { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; } internal const string Summary = "Convert image into grayscale."; @@ -99,9 +99,9 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat Contracts.CheckValue(env, nameof(env)); env.CheckValue(args, nameof(args)); env.CheckValue(input, nameof(input)); - env.CheckValue(args.Column, nameof(args.Column)); + env.CheckValue(args.Columns, nameof(args.Columns)); - return new ImageGrayscaleTransformer(env, args.Column.Select(x => (x.Source ?? x.Name, x.Name)).ToArray()) + return new ImageGrayscaleTransformer(env, args.Columns.Select(x => (x.Source ?? x.Name, x.Name)).ToArray()) .MakeDataTransform(input); } diff --git a/src/Microsoft.ML.ImageAnalytics/ImageLoaderTransform.cs b/src/Microsoft.ML.ImageAnalytics/ImageLoaderTransform.cs index 3b99b0376f..38786271d8 100644 --- a/src/Microsoft.ML.ImageAnalytics/ImageLoaderTransform.cs +++ b/src/Microsoft.ML.ImageAnalytics/ImageLoaderTransform.cs @@ -56,8 +56,8 @@ public bool TryUnparse(StringBuilder sb) public sealed class Arguments : TransformInputBase { [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", - ShortName = "col", SortOrder = 1)] - public Column[] Column; + Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; [Argument(ArgumentType.AtMostOnce, HelpText = "Folder where to search for images", ShortName = "folder")] public string ImageFolder; @@ -86,7 +86,7 @@ public ImageLoaderTransformer(IHostEnvironment env, string imageFolder = null, p // Factory method for SignatureDataTransform. internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDataView data) { - return new ImageLoaderTransformer(env, args.ImageFolder, args.Column.Select(x => (x.Source ?? x.Name, x.Name)).ToArray()) + return new ImageLoaderTransformer(env, args.ImageFolder, args.Columns.Select(x => (x.Source ?? x.Name, x.Name)).ToArray()) .MakeDataTransform(data); } diff --git a/src/Microsoft.ML.ImageAnalytics/ImagePixelExtractorTransform.cs b/src/Microsoft.ML.ImageAnalytics/ImagePixelExtractorTransform.cs index 41054ee876..9a4db25b7c 100644 --- a/src/Microsoft.ML.ImageAnalytics/ImagePixelExtractorTransform.cs +++ b/src/Microsoft.ML.ImageAnalytics/ImagePixelExtractorTransform.cs @@ -87,8 +87,8 @@ public bool TryUnparse(StringBuilder sb) public class Arguments : TransformInputBase { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; [Argument(ArgumentType.AtMostOnce, HelpText = "Whether to use alpha channel", ShortName = "alpha")] public bool UseAlpha = false; @@ -366,12 +366,12 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat env.CheckValue(args, nameof(args)); env.CheckValue(input, nameof(input)); - env.CheckValue(args.Column, nameof(args.Column)); + env.CheckValue(args.Columns, nameof(args.Columns)); - var columns = new ColumnInfo[args.Column.Length]; + var columns = new ColumnInfo[args.Columns.Length]; for (int i = 0; i < columns.Length; i++) { - var item = args.Column[i]; + var item = args.Columns[i]; columns[i] = new ColumnInfo(item, args); } diff --git a/src/Microsoft.ML.ImageAnalytics/ImageResizerTransform.cs b/src/Microsoft.ML.ImageAnalytics/ImageResizerTransform.cs index 936c71f700..a3ea2ecd3d 100644 --- a/src/Microsoft.ML.ImageAnalytics/ImageResizerTransform.cs +++ b/src/Microsoft.ML.ImageAnalytics/ImageResizerTransform.cs @@ -90,8 +90,8 @@ public bool TryUnparse(StringBuilder sb) public class Arguments : TransformInputBase { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; [Argument(ArgumentType.Required, HelpText = "Resized width of the image", ShortName = "width")] public int ImageWidth; @@ -217,12 +217,12 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat env.CheckValue(args, nameof(args)); env.CheckValue(input, nameof(input)); - env.CheckValue(args.Column, nameof(args.Column)); + env.CheckValue(args.Columns, nameof(args.Columns)); - var cols = new ColumnInfo[args.Column.Length]; + var cols = new ColumnInfo[args.Columns.Length]; for (int i = 0; i < cols.Length; i++) { - var item = args.Column[i]; + var item = args.Columns[i]; cols[i] = new ColumnInfo( item.Source ?? item.Name, item.Name, diff --git a/src/Microsoft.ML.ImageAnalytics/VectorToImageTransform.cs b/src/Microsoft.ML.ImageAnalytics/VectorToImageTransform.cs index 0d2ccb53da..c6040b7356 100644 --- a/src/Microsoft.ML.ImageAnalytics/VectorToImageTransform.cs +++ b/src/Microsoft.ML.ImageAnalytics/VectorToImageTransform.cs @@ -82,8 +82,8 @@ public bool TryUnparse(StringBuilder sb) public class Arguments : TransformInputBase { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; [Argument(ArgumentType.AtMostOnce, HelpText = "Whether to use alpha channel", ShortName = "alpha")] public bool ContainsAlpha = false; @@ -247,17 +247,17 @@ private static VersionInfo GetVersionInfo() // Public constructor corresponding to SignatureDataTransform. public VectorToImageTransform(IHostEnvironment env, Arguments args, IDataView input) - : base(env, RegistrationName, Contracts.CheckRef(args, nameof(args)).Column, input, + : base(env, RegistrationName, Contracts.CheckRef(args, nameof(args)).Columns, input, t => t is VectorType ? null : "Expected VectorType type") { Host.AssertNonEmpty(Infos); - Host.Assert(Infos.Length == Utils.Size(args.Column)); + Host.Assert(Infos.Length == Utils.Size(args.Columns)); _exes = new ColInfoEx[Infos.Length]; _types = new ImageType[Infos.Length]; for (int i = 0; i < _exes.Length; i++) { - var item = args.Column[i]; + var item = args.Columns[i]; _exes[i] = new ColInfoEx(item, args); _types[i] = new ImageType(_exes[i].Height, _exes[i].Width); } diff --git a/src/Microsoft.ML.Maml/ChainCommand.cs b/src/Microsoft.ML.Maml/ChainCommand.cs index 80e9ef6359..b9068a92b9 100644 --- a/src/Microsoft.ML.Maml/ChainCommand.cs +++ b/src/Microsoft.ML.Maml/ChainCommand.cs @@ -21,8 +21,8 @@ internal sealed class ChainCommand : ICommand public sealed class Arguments { #pragma warning disable 649 // never assigned - [Argument(ArgumentType.Multiple, HelpText = "Command", ShortName = "cmd", SignatureType = typeof(SignatureCommand))] - public IComponentFactory[] Command; + [Argument(ArgumentType.Multiple, HelpText = "Command", Name = "Command", ShortName = "cmd", SignatureType = typeof(SignatureCommand))] + public IComponentFactory[] Commands; #pragma warning restore 649 // never assigned } @@ -49,13 +49,13 @@ public void Run() int count = 0; sw.Start(); - if (_args.Command != null) + if (_args.Commands != null) { - for (int i = 0; i < _args.Command.Length; i++) + for (int i = 0; i < _args.Commands.Length; i++) { using (var chCmd = _host.Start(string.Format(CultureInfo.InvariantCulture, "Command[{0}]", i))) { - var sub = _args.Command[i]; + var sub = _args.Commands[i]; chCmd.Info("====================================================================================="); chCmd.Info("Executing: {0}", sub); diff --git a/src/Microsoft.ML.PCA/PcaTransform.cs b/src/Microsoft.ML.PCA/PcaTransform.cs index ee2ce19a74..3b824f88f9 100644 --- a/src/Microsoft.ML.PCA/PcaTransform.cs +++ b/src/Microsoft.ML.PCA/PcaTransform.cs @@ -37,8 +37,8 @@ public sealed class PcaTransform : OneToOneTransformerBase { public sealed class Arguments : TransformInputBase { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; [Argument(ArgumentType.Multiple, HelpText = "The name of the weight column", ShortName = "weight", Purpose = SpecialPurpose.ColumnName)] public string WeightColumn = PrincipalComponentAnalysisEstimator.Defaults.WeightColumn; @@ -290,8 +290,8 @@ private static IDataTransform Create(IHostEnvironment env, Arguments args, IData Contracts.CheckValue(env, nameof(env)); env.CheckValue(args, nameof(args)); env.CheckValue(input, nameof(input)); - env.CheckValue(args.Column, nameof(args.Column)); - var cols = args.Column.Select(item => new ColumnInfo( + env.CheckValue(args.Columns, nameof(args.Columns)); + var cols = args.Columns.Select(item => new ColumnInfo( item.Source, item.Name, item.WeightColumn, diff --git a/src/Microsoft.ML.ResultProcessor/ResultProcessor.cs b/src/Microsoft.ML.ResultProcessor/ResultProcessor.cs index 1635ad71c9..2ce8ae224f 100644 --- a/src/Microsoft.ML.ResultProcessor/ResultProcessor.cs +++ b/src/Microsoft.ML.ResultProcessor/ResultProcessor.cs @@ -432,9 +432,9 @@ private static bool ValidateMamlOutput(string filename, string[] rawLines, out L var chainArgs = commandArgs as ChainCommand.Arguments; if (chainArgs != null) { - if (Utils.Size(chainArgs.Command) == 0) + if (Utils.Size(chainArgs.Commands) == 0) return null; - var acceptableCommand = chainArgs.Command.Cast().FirstOrDefault(x => + var acceptableCommand = chainArgs.Commands.Cast().FirstOrDefault(x => string.Equals(x.Name, "CV", StringComparison.OrdinalIgnoreCase) || string.Equals(x.Name, "TrainTest", StringComparison.OrdinalIgnoreCase) || string.Equals(x.Name, "Test", StringComparison.OrdinalIgnoreCase)); diff --git a/src/Microsoft.ML.StandardLearners/Standard/Online/AveragedLinear.cs b/src/Microsoft.ML.StandardLearners/Standard/Online/AveragedLinear.cs index c144c5c90b..3e5fbbd0ea 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/Online/AveragedLinear.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/Online/AveragedLinear.cs @@ -11,7 +11,6 @@ using Microsoft.ML.Internal.Utilities; using Microsoft.ML.Learners; using Microsoft.ML.Numeric; -using Float = System.Single; // TODO: Check if it works properly if Averaged is set to false @@ -22,7 +21,7 @@ public abstract class AveragedLinearArguments : OnlineLinearArguments [Argument(ArgumentType.AtMostOnce, HelpText = "Learning rate", ShortName = "lr", SortOrder = 50)] [TGUI(Label = "Learning rate", SuggestedSweeps = "0.01,0.1,0.5,1.0")] [TlcModule.SweepableDiscreteParam("LearningRate", new object[] { 0.01, 0.1, 0.5, 1.0 })] - public Float LearningRate = AveragedDefaultArgs.LearningRate; + public float LearningRate = AveragedDefaultArgs.LearningRate; [Argument(ArgumentType.AtMostOnce, HelpText = "Decrease learning rate", ShortName = "decreaselr", SortOrder = 50)] [TGUI(Label = "Decrease Learning Rate", Description = "Decrease learning rate as iterations progress")] @@ -38,10 +37,10 @@ public abstract class AveragedLinearArguments : OnlineLinearArguments [Argument(ArgumentType.AtMostOnce, HelpText = "L2 Regularization Weight", ShortName = "reg", SortOrder = 50)] [TGUI(Label = "L2 Regularization Weight")] [TlcModule.SweepableFloatParam("L2RegularizerWeight", 0.0f, 0.4f)] - public Float L2RegularizerWeight = AveragedDefaultArgs.L2RegularizerWeight; + public float L2RegularizerWeight = AveragedDefaultArgs.L2RegularizerWeight; [Argument(ArgumentType.AtMostOnce, HelpText = "Extra weight given to more recent updates", ShortName = "rg")] - public Float RecencyGain = 0; + public float RecencyGain = 0; [Argument(ArgumentType.AtMostOnce, HelpText = "Whether Recency Gain is multiplicative (vs. additive)", ShortName = "rgm")] public bool RecencyGainMulti = false; @@ -50,14 +49,14 @@ public abstract class AveragedLinearArguments : OnlineLinearArguments public bool Averaged = true; [Argument(ArgumentType.AtMostOnce, HelpText = "The inexactness tolerance for averaging", ShortName = "avgtol")] - public Float AveragedTolerance = (Float)1e-2; + public float AveragedTolerance = (float)1e-2; [BestFriend] internal class AveragedDefaultArgs : OnlineDefaultArgs { - public const Float LearningRate = 1; + public const float LearningRate = 1; public const bool DecreaseLearningRate = false; - public const Float L2RegularizerWeight = 0; + public const float L2RegularizerWeight = 0; } internal abstract IComponentFactory LossFunctionFactory { get; } @@ -72,13 +71,13 @@ public abstract class AveragedLinearTrainer : OnlineLinear private protected abstract class AveragedTrainStateBase : TrainStateBase { - protected Float Gain; + protected float Gain; protected int NumNoUpdates; // For computing averaged weights and bias (if needed) - protected VBuffer TotalWeights; - protected Float TotalBias; + protected VBuffer TotalWeights; + protected float TotalBias; protected Double NumWeightUpdates; // The accumulated gradient of loss against gradient for all updates so far in the @@ -120,13 +119,13 @@ private protected AveragedTrainStateBase(IChannel ch, int numFeatures, LinearMod /// /// Return the raw margin from the decision hyperplane /// - public Float AveragedMargin(in VBuffer feat) + public float AveragedMargin(in VBuffer feat) { Contracts.Assert(Averaged); - return (TotalBias + VectorUtils.DotProduct(in feat, in TotalWeights)) / (Float)NumWeightUpdates; + return (TotalBias + VectorUtils.DotProduct(in feat, in TotalWeights)) / (float)NumWeightUpdates; } - public override Float Margin(in VBuffer feat) + public override float Margin(in VBuffer feat) => Averaged ? AveragedMargin(in feat) : CurrentMargin(in feat); public override void FinishIteration(IChannel ch) @@ -149,21 +148,21 @@ public override void FinishIteration(IChannel ch) if (_args.ResetWeightsAfterXExamples == 0) { ch.Info("Resetting weights to average weights"); - VectorUtils.ScaleInto(in TotalWeights, 1 / (Float)NumWeightUpdates, ref Weights); + VectorUtils.ScaleInto(in TotalWeights, 1 / (float)NumWeightUpdates, ref Weights); WeightsScale = 1; - Bias = TotalBias / (Float)NumWeightUpdates; + Bias = TotalBias / (float)NumWeightUpdates; } } base.FinishIteration(ch); } - public override void ProcessDataInstance(IChannel ch, in VBuffer feat, Float label, Float weight) + public override void ProcessDataInstance(IChannel ch, in VBuffer feat, float label, float weight) { base.ProcessDataInstance(ch, in feat, label, weight); // compute the update and update if needed - Float output = CurrentMargin(in feat); + float output = CurrentMargin(in feat); Double loss = _loss.Loss(output, label); // REVIEW: Should this be biasUpdate != 0? @@ -183,10 +182,10 @@ public override void ProcessDataInstance(IChannel ch, in VBuffer feat, Fl } // Make final adjustments to update parameters. - Float rate = _args.LearningRate; + float rate = _args.LearningRate; if (_args.DecreaseLearningRate) - rate /= MathUtils.Sqrt((Float)NumWeightUpdates + NumNoUpdates + 1); - Float biasUpdate = -rate * _loss.Derivative(output, label); + rate /= MathUtils.Sqrt((float)NumWeightUpdates + NumNoUpdates + 1); + float biasUpdate = -rate * _loss.Derivative(output, label); // Perform the update to weights and bias. VectorUtils.AddMult(in feat, biasUpdate / WeightsScale, ref Weights); @@ -208,9 +207,9 @@ public override void ProcessDataInstance(IChannel ch, in VBuffer feat, Fl if (_resetWeightsAfterXExamples > 0 && NumIterExamples % _resetWeightsAfterXExamples == 0) { ch.Info("Resetting weights to average weights"); - VectorUtils.ScaleInto(in TotalWeights, 1 / (Float)NumWeightUpdates, ref Weights); + VectorUtils.ScaleInto(in TotalWeights, 1 / (float)NumWeightUpdates, ref Weights); WeightsScale = 1; - Bias = TotalBias / (Float)NumWeightUpdates; + Bias = TotalBias / (float)NumWeightUpdates; } } } @@ -235,7 +234,7 @@ private void IncrementAverageNonLazy() // If gains got too big, rescale! if (Gain > 1000) { - const Float scale = (Float)1e-6; + const float scale = (float)1e-6; Gain *= scale; TotalBias *= scale; VectorUtils.ScaleBy(ref TotalWeights, scale); diff --git a/src/Microsoft.ML.StaticPipe/TextLoaderStatic.cs b/src/Microsoft.ML.StaticPipe/TextLoaderStatic.cs index 403db281c2..c4a672e69a 100644 --- a/src/Microsoft.ML.StaticPipe/TextLoaderStatic.cs +++ b/src/Microsoft.ML.StaticPipe/TextLoaderStatic.cs @@ -84,7 +84,7 @@ public override IDataReaderEstimator 0, nameof(args.Column)); + host.CheckUserArg(Utils.Size(args.Columns) > 0, nameof(args.Columns)); host.CheckUserArg(args.Count > 0, nameof(args.Count)); - var columnInfos = args.Column.Select(inColName => new ColumnInfo(inColName, minCount: args.Count)).ToArray(); + var columnInfos = args.Columns.Select(inColName => new ColumnInfo(inColName, minCount: args.Count)).ToArray(); return new CountFeatureSelectingEstimator(env, columnInfos).Fit(input).Transform(input) as IDataTransform; } @@ -243,11 +243,11 @@ public static long[][] Train(IHostEnvironment env, IDataView input, string[] col int colSrc; var colName = columns[i]; if (!schema.TryGetColumnIndex(colName, out colSrc)) - throw env.ExceptUserArg(nameof(CountFeatureSelectingEstimator.Arguments.Column), "Source column '{0}' not found", colName); + throw env.ExceptUserArg(nameof(CountFeatureSelectingEstimator.Arguments.Columns), "Source column '{0}' not found", colName); var colType = schema[colSrc].Type; if (colType.IsVector && !colType.IsKnownSizeVector) - throw env.ExceptUserArg(nameof(CountFeatureSelectingEstimator.Arguments.Column), "Variable length column '{0}' is not allowed", colName); + throw env.ExceptUserArg(nameof(CountFeatureSelectingEstimator.Arguments.Columns), "Variable length column '{0}' is not allowed", colName); activeInput[colSrc] = true; colSrcs[i] = colSrc; diff --git a/src/Microsoft.ML.Transforms/EntryPoints/TextAnalytics.cs b/src/Microsoft.ML.Transforms/EntryPoints/TextAnalytics.cs index 80070cd05d..87f713605b 100644 --- a/src/Microsoft.ML.Transforms/EntryPoints/TextAnalytics.cs +++ b/src/Microsoft.ML.Transforms/EntryPoints/TextAnalytics.cs @@ -130,7 +130,7 @@ public static CommonOutputs.TransformOutput LightLda(IHostEnvironment env, Laten env.CheckValue(input, nameof(input)); var h = EntryPointUtils.CheckArgsAndCreateHost(env, "LightLda", input); - var cols = input.Column.Select(colPair => new LatentDirichletAllocationTransformer.ColumnInfo(colPair, input)).ToArray(); + var cols = input.Columns.Select(colPair => new LatentDirichletAllocationTransformer.ColumnInfo(colPair, input)).ToArray(); var est = new LatentDirichletAllocationEstimator(h, cols); var view = est.Fit(input.Data).Transform(input.Data); diff --git a/src/Microsoft.ML.Transforms/GcnTransform.cs b/src/Microsoft.ML.Transforms/GcnTransform.cs index 7c2692e6ed..966eefbf63 100644 --- a/src/Microsoft.ML.Transforms/GcnTransform.cs +++ b/src/Microsoft.ML.Transforms/GcnTransform.cs @@ -52,8 +52,8 @@ public sealed class LpNormalizingTransformer : OneToOneTransformerBase { public sealed class Arguments : TransformInputBase { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; [Argument(ArgumentType.AtMostOnce, HelpText = "The norm to use to normalize each sample", ShortName = "norm", SortOrder = 1)] public LpNormalizingEstimatorBase.NormalizerKind NormKind = LpNormalizingEstimatorBase.Defaults.NormKind; @@ -64,8 +64,8 @@ public sealed class Arguments : TransformInputBase public sealed class GcnArguments : TransformInputBase { - [Argument(ArgumentType.Multiple, HelpText = "New column definition(s) (optional form: name:src)", ShortName = "col", SortOrder = 1)] - public GcnColumn[] Column; + [Argument(ArgumentType.Multiple, HelpText = "New column definition(s) (optional form: name:src)", Name = "Column", ShortName = "col", SortOrder = 1)] + public GcnColumn[] Columns; [Argument(ArgumentType.AtMostOnce, HelpText = "Subtract mean from each value before normalizing", SortOrder = 1)] public bool SubMean = LpNormalizingEstimatorBase.Defaults.GcnSubstractMean; @@ -322,13 +322,13 @@ internal static IDataTransform Create(IHostEnvironment env, GcnArguments args, I env.CheckValue(args, nameof(args)); env.CheckValue(input, nameof(input)); - env.CheckValue(args.Column, nameof(args.Column)); - var cols = new GcnColumnInfo[args.Column.Length]; + env.CheckValue(args.Columns, nameof(args.Columns)); + var cols = new GcnColumnInfo[args.Columns.Length]; using (var ch = env.Start("ValidateArgs")) { for (int i = 0; i < cols.Length; i++) { - var item = args.Column[i]; + var item = args.Columns[i]; cols[i] = new GcnColumnInfo(item.Source ?? item.Name, item.Name, item.SubMean ?? args.SubMean, @@ -348,13 +348,13 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat env.CheckValue(args, nameof(args)); env.CheckValue(input, nameof(input)); - env.CheckValue(args.Column, nameof(args.Column)); - var cols = new LpNormColumnInfo[args.Column.Length]; + env.CheckValue(args.Columns, nameof(args.Columns)); + var cols = new LpNormColumnInfo[args.Columns.Length]; using (var ch = env.Start("ValidateArgs")) { for (int i = 0; i < cols.Length; i++) { - var item = args.Column[i]; + var item = args.Columns[i]; cols[i] = new LpNormColumnInfo(item.Source ?? item.Name, item.Name, item.SubMean ?? args.SubMean, diff --git a/src/Microsoft.ML.Transforms/GroupTransform.cs b/src/Microsoft.ML.Transforms/GroupTransform.cs index c03398a708..932a1e2050 100644 --- a/src/Microsoft.ML.Transforms/GroupTransform.cs +++ b/src/Microsoft.ML.Transforms/GroupTransform.cs @@ -84,13 +84,13 @@ private static VersionInfo GetVersionInfo() // as group keys. public sealed class Arguments : TransformInputBase { - [Argument(ArgumentType.Multiple, HelpText = "Columns to group by", ShortName = "g", SortOrder = 1, + [Argument(ArgumentType.Multiple, HelpText = "Columns to group by", Name = "GroupKey", ShortName = "g", SortOrder = 1, Purpose = SpecialPurpose.ColumnSelector)] - public string[] GroupKey; + public string[] GroupKeys; // The column names remain the same, there's no option to rename the column. - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "Columns to group together", ShortName = "col", SortOrder = 2)] - public string[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "Columns to group together", Name = "Column", ShortName = "col", SortOrder = 2)] + public string[] Columns; } private readonly GroupBinding _groupBinding; @@ -103,7 +103,7 @@ public sealed class Arguments : TransformInputBase /// Columns to group by /// Columns to group together public GroupTransform(IHostEnvironment env, IDataView input, string groupKey, params string[] columns) - : this(env, new Arguments() { GroupKey = new[] { groupKey }, Column = columns }, input) + : this(env, new Arguments() { GroupKeys = new[] { groupKey }, Columns = columns }, input) { } @@ -111,9 +111,9 @@ public GroupTransform(IHostEnvironment env, Arguments args, IDataView input) : base(env, RegistrationName, input) { Host.CheckValue(args, nameof(args)); - Host.CheckUserArg(Utils.Size(args.GroupKey) > 0, nameof(args.GroupKey), "There must be at least one group key"); + Host.CheckUserArg(Utils.Size(args.GroupKeys) > 0, nameof(args.GroupKeys), "There must be at least one group key"); - _groupBinding = new GroupBinding(Host, Source.Schema, args.GroupKey, args.Column ?? new string[0]); + _groupBinding = new GroupBinding(Host, Source.Schema, args.GroupKeys, args.Columns ?? new string[0]); } public static GroupTransform Create(IHostEnvironment env, ModelLoadContext ctx, IDataView input) @@ -226,10 +226,10 @@ public GroupBinding(IExceptionContext ectx, Schema inputSchema, string[] groupCo _inputSchema = inputSchema; _groupColumns = groupColumns; - GroupColumnIndexes = GetColumnIds(inputSchema, groupColumns, x => _ectx.ExceptUserArg(nameof(Arguments.GroupKey), x)); + GroupColumnIndexes = GetColumnIds(inputSchema, groupColumns, x => _ectx.ExceptUserArg(nameof(Arguments.GroupKeys), x)); _keepColumns = keepColumns; - KeepColumnIndexes = GetColumnIds(inputSchema, keepColumns, x => _ectx.ExceptUserArg(nameof(Arguments.Column), x)); + KeepColumnIndexes = GetColumnIds(inputSchema, keepColumns, x => _ectx.ExceptUserArg(nameof(Arguments.Columns), x)); // Compute output schema from the specified input schema. OutputSchema = BuildOutputSchema(inputSchema); diff --git a/src/Microsoft.ML.Transforms/HashJoiningTransform.cs b/src/Microsoft.ML.Transforms/HashJoiningTransform.cs index 121885a34e..6aa1f4aedc 100644 --- a/src/Microsoft.ML.Transforms/HashJoiningTransform.cs +++ b/src/Microsoft.ML.Transforms/HashJoiningTransform.cs @@ -46,9 +46,10 @@ private static class Defaults public sealed class Arguments : TransformInputBase { [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", + Name = "Column", ShortName = "col", SortOrder = 1)] - public Column[] Column; + public Column[] Columns; [Argument(ArgumentType.AtMostOnce, HelpText = "Whether the values need to be combined for a single hash")] public bool Join = Defaults.Join; @@ -187,16 +188,16 @@ public HashJoiningTransform(IHostEnvironment env, string source = null, bool join = Defaults.Join, int hashBits = Defaults.HashBits) - : this(env, new Arguments() { Column = new[] { new Column() { Source = source ?? name, Name = name } }, Join = join, HashBits = hashBits }, input) + : this(env, new Arguments() { Columns = new[] { new Column() { Source = source ?? name, Name = name } }, Join = join, HashBits = hashBits }, input) { } /// public HashJoiningTransform(IHostEnvironment env, Arguments args, IDataView input) - : base(env, RegistrationName, Contracts.CheckRef(args, nameof(args)).Column, input, TestColumnType) + : base(env, RegistrationName, Contracts.CheckRef(args, nameof(args)).Columns, input, TestColumnType) { Host.AssertNonEmpty(Infos); - Host.Assert(Infos.Length == Utils.Size(args.Column)); + Host.Assert(Infos.Length == Utils.Size(args.Columns)); if (args.HashBits < NumBitsMin || args.HashBits >= NumBitsLim) throw Host.ExceptUserArg(nameof(args.HashBits), "hashBits should be between {0} and {1} inclusive", NumBitsMin, NumBitsLim - 1); @@ -204,14 +205,14 @@ public HashJoiningTransform(IHostEnvironment env, Arguments args, IDataView inpu _exes = new ColumnInfoEx[Infos.Length]; for (int i = 0; i < Infos.Length; i++) { - var hashBits = args.Column[i].HashBits ?? args.HashBits; + var hashBits = args.Columns[i].HashBits ?? args.HashBits; Host.CheckUserArg(NumBitsMin <= hashBits && hashBits < NumBitsLim, nameof(args.HashBits)); _exes[i] = CreateColumnInfoEx( - args.Column[i].Join ?? args.Join, - args.Column[i].CustomSlotMap, - args.Column[i].HashBits ?? args.HashBits, - args.Column[i].Seed ?? args.Seed, - args.Column[i].Ordered ?? args.Ordered, + args.Columns[i].Join ?? args.Join, + args.Columns[i].CustomSlotMap, + args.Columns[i].HashBits ?? args.HashBits, + args.Columns[i].Seed ?? args.Seed, + args.Columns[i].Ordered ?? args.Ordered, Infos[i]); } diff --git a/src/Microsoft.ML.Transforms/KeyToVectorMapping.cs b/src/Microsoft.ML.Transforms/KeyToVectorMapping.cs index c89de81e5a..aead85d88f 100644 --- a/src/Microsoft.ML.Transforms/KeyToVectorMapping.cs +++ b/src/Microsoft.ML.Transforms/KeyToVectorMapping.cs @@ -33,8 +33,8 @@ public sealed class KeyToBinaryVectorMappingTransformer : OneToOneTransformerBas public sealed class Arguments { [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", - ShortName = "col", SortOrder = 1)] - public KeyToVectorMappingTransformer.Column[] Column; + Name = "Column", ShortName = "col", SortOrder = 1)] + public KeyToVectorMappingTransformer.Column[] Columns; } /// @@ -149,13 +149,13 @@ private static IDataTransform Create(IHostEnvironment env, Arguments args, IData env.CheckValue(args, nameof(args)); env.CheckValue(input, nameof(input)); - env.CheckValue(args.Column, nameof(args.Column)); - var cols = new ColumnInfo[args.Column.Length]; + env.CheckValue(args.Columns, nameof(args.Columns)); + var cols = new ColumnInfo[args.Columns.Length]; using (var ch = env.Start("ValidateArgs")) { for (int i = 0; i < cols.Length; i++) { - var item = args.Column[i]; + var item = args.Columns[i]; cols[i] = new ColumnInfo(item.Source ?? item.Name, item.Name); }; } diff --git a/src/Microsoft.ML.Transforms/LearnerFeatureSelection.cs b/src/Microsoft.ML.Transforms/LearnerFeatureSelection.cs index 601c5bc912..2798172cc7 100644 --- a/src/Microsoft.ML.Transforms/LearnerFeatureSelection.cs +++ b/src/Microsoft.ML.Transforms/LearnerFeatureSelection.cs @@ -58,8 +58,9 @@ public sealed class Arguments [Argument(ArgumentType.AtMostOnce, HelpText = "Name column name", ShortName = "name", Purpose = SpecialPurpose.ColumnName)] public string NameColumn = DefaultColumnNames.Name; - [Argument(ArgumentType.LastOccurenceWins, HelpText = "Columns with custom kinds declared through key assignments, for example, col[Kind]=Name to assign column named 'Name' kind 'Kind'")] - public KeyValuePair[] CustomColumn; + [Argument(ArgumentType.LastOccurenceWins, HelpText = "Columns with custom kinds declared through key assignments, for example, col[Kind]=Name to assign column named 'Name' kind 'Kind'", + Name = "CustomColumn")] + public KeyValuePair[] CustomColumns; [Argument(ArgumentType.LastOccurenceWins, HelpText = "Normalize option for the feature column", ShortName = "norm")] public NormalizeOption NormalizeFeatures = NormalizeOption.Auto; @@ -287,7 +288,7 @@ private static void TrainCore(IHost host, IDataView input, Arguments args, ref V ch.Trace("Binding columns"); - var customCols = TrainUtils.CheckAndGenerateCustomColumns(ch, args.CustomColumn); + var customCols = TrainUtils.CheckAndGenerateCustomColumns(ch, args.CustomColumns); var data = new RoleMappedData(view, label, feature, group, weight, name, customCols); var predictor = TrainUtils.Train(host, ch, data, trainer, null, diff --git a/src/Microsoft.ML.Transforms/LoadTransform.cs b/src/Microsoft.ML.Transforms/LoadTransform.cs index 87dd88c1b5..c16a1e42bd 100644 --- a/src/Microsoft.ML.Transforms/LoadTransform.cs +++ b/src/Microsoft.ML.Transforms/LoadTransform.cs @@ -31,8 +31,9 @@ public class Arguments SortOrder = 1, IsInputFileName = true)] public string ModelFile; - [Argument(ArgumentType.Multiple, HelpText = "The tags (comma-separated) to be loaded (or omitted, if " + nameof(Complement) + "+)", SortOrder = 2)] - public string[] Tag; + [Argument(ArgumentType.Multiple, HelpText = "The tags (comma-separated) to be loaded (or omitted, if " + nameof(Complement) + "+)", + Name = "Tag", SortOrder = 2)] + public string[] Tags; [Argument(ArgumentType.AtMostOnce, HelpText = "Whether to load all transforms except those marked by tags", ShortName = "comp", SortOrder = 3)] public bool Complement = false; @@ -53,7 +54,7 @@ public static IDataTransform Create(IHostEnvironment env, IDataView input, strin var args = new Arguments() { ModelFile = modelFile, - Tag = tag, + Tags = tag, Complement = complement }; return Create(env, args, input); @@ -71,11 +72,11 @@ private static IDataTransform Create(IHostEnvironment env, Arguments args, IData IDataView currentView; // If there are no 'tag' parameters, we load everything, regardless of 'comp'. - bool complement = args.Complement || Utils.Size(args.Tag) == 0; + bool complement = args.Complement || Utils.Size(args.Tags) == 0; var allTags = new HashSet(); - for (int i = 0; i < Utils.Size(args.Tag); i++) + for (int i = 0; i < Utils.Size(args.Tags); i++) { - var curList = args.Tag[i]; + var curList = args.Tags[i]; if (string.IsNullOrWhiteSpace(curList)) continue; @@ -113,7 +114,7 @@ private static IDataTransform Create(IHostEnvironment env, Arguments args, IData ? "transforms that don't have tags from the list: '{0}'" : "transforms that have tags from the list: '{0}'", string.Join(",", allTags)); - throw h.ExceptUserArg(nameof(args.Tag), "No transforms were found that match the search criteria ({0})", criteria); + throw h.ExceptUserArg(nameof(args.Tags), "No transforms were found that match the search criteria ({0})", criteria); } } diff --git a/src/Microsoft.ML.Transforms/MissingValueDroppingTransformer.cs b/src/Microsoft.ML.Transforms/MissingValueDroppingTransformer.cs index e01c58daba..6047804f74 100644 --- a/src/Microsoft.ML.Transforms/MissingValueDroppingTransformer.cs +++ b/src/Microsoft.ML.Transforms/MissingValueDroppingTransformer.cs @@ -35,8 +35,8 @@ public sealed class MissingValueDroppingTransformer : OneToOneTransformerBase { public sealed class Arguments : TransformInputBase { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "Columns to drop the NAs for", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "Columns to drop the NAs for", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; } public sealed class Column : OneToOneColumn @@ -87,7 +87,7 @@ public MissingValueDroppingTransformer(IHostEnvironment env, params (string inpu } internal MissingValueDroppingTransformer(IHostEnvironment env, Arguments args) - : base(Contracts.CheckRef(env, nameof(env)).Register(nameof(MissingValueDroppingTransformer)), GetColumnPairs(args.Column)) + : base(Contracts.CheckRef(env, nameof(env)).Register(nameof(MissingValueDroppingTransformer)), GetColumnPairs(args.Columns)) { } diff --git a/src/Microsoft.ML.Transforms/MissingValueHandlingTransformer.cs b/src/Microsoft.ML.Transforms/MissingValueHandlingTransformer.cs index 7e9f917655..ca20cca727 100644 --- a/src/Microsoft.ML.Transforms/MissingValueHandlingTransformer.cs +++ b/src/Microsoft.ML.Transforms/MissingValueHandlingTransformer.cs @@ -57,8 +57,8 @@ public enum ReplacementKind : byte public sealed class Arguments : TransformInputBase { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:rep:src)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:rep:src)", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; [Argument(ArgumentType.AtMostOnce, HelpText = "The replacement method to utilize", ShortName = "kind", SortOrder = 2)] public ReplacementKind ReplaceWith = ReplacementKind.DefaultValue; @@ -120,7 +120,7 @@ public static IDataView Create(IHostEnvironment env, IDataView input, string nam { var args = new Arguments() { - Column = new[] + Columns = new[] { new Column() { Source = source ?? name, Name = name } }, @@ -136,18 +136,18 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat var h = env.Register("Categorical"); h.CheckValue(args, nameof(args)); h.CheckValue(input, nameof(input)); - h.CheckUserArg(Utils.Size(args.Column) > 0, nameof(args.Column)); + h.CheckUserArg(Utils.Size(args.Columns) > 0, nameof(args.Columns)); var replaceCols = new List(); var naIndicatorCols = new List(); var naConvCols = new List(); var concatCols = new List(); var dropCols = new List(); - var tmpIsMissingColNames = input.Schema.GetTempColumnNames(args.Column.Length, "IsMissing"); - var tmpReplaceColNames = input.Schema.GetTempColumnNames(args.Column.Length, "Replace"); - for (int i = 0; i < args.Column.Length; i++) + var tmpIsMissingColNames = input.Schema.GetTempColumnNames(args.Columns.Length, "IsMissing"); + var tmpReplaceColNames = input.Schema.GetTempColumnNames(args.Columns.Length, "Replace"); + for (int i = 0; i < args.Columns.Length; i++) { - var column = args.Column[i]; + var column = args.Columns[i]; var addInd = column.ConcatIndicator ?? args.Concat; if (!addInd) @@ -215,7 +215,7 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat // Create the indicator columns. if (naIndicatorCols.Count > 0) - output = MissingValueIndicatorTransformer.Create(h, new MissingValueIndicatorTransformer.Arguments() { Column = naIndicatorCols.ToArray() }, input); + output = MissingValueIndicatorTransformer.Create(h, new MissingValueIndicatorTransformer.Arguments() { Columns = naIndicatorCols.ToArray() }, input); // Convert the indicator columns to the correct type so that they can be concatenated to the NAReplace outputs. if (naConvCols.Count > 0) @@ -229,7 +229,7 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat // Concat the NAReplaceTransform output and the NAIndicatorTransform output. if (naIndicatorCols.Count > 0) - output = ColumnConcatenatingTransformer.Create(h, new ColumnConcatenatingTransformer.TaggedArguments() { Column = concatCols.ToArray() }, output); + output = ColumnConcatenatingTransformer.Create(h, new ColumnConcatenatingTransformer.TaggedArguments() { Columns = concatCols.ToArray() }, output); // Finally, drop the temporary indicator columns. if (dropCols.Count > 0) diff --git a/src/Microsoft.ML.Transforms/MissingValueIndicatorTransform.cs b/src/Microsoft.ML.Transforms/MissingValueIndicatorTransform.cs index df268e845e..4b719239f5 100644 --- a/src/Microsoft.ML.Transforms/MissingValueIndicatorTransform.cs +++ b/src/Microsoft.ML.Transforms/MissingValueIndicatorTransform.cs @@ -43,8 +43,8 @@ public bool TryUnparse(StringBuilder sb) public sealed class Arguments { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; } public const string LoaderSignature = "MissingIndicatorFunction"; @@ -74,11 +74,11 @@ private static VersionInfo GetVersionInfo() /// Public constructor corresponding to SignatureDataTransform. /// public MissingValueIndicatorTransform(IHostEnvironment env, Arguments args, IDataView input) - : base(env, RegistrationName, Contracts.CheckRef(args, nameof(args)).Column, + : base(env, RegistrationName, Contracts.CheckRef(args, nameof(args)).Columns, input, TestIsFloatItem) { Host.AssertNonEmpty(Infos); - Host.Assert(Infos.Length == Utils.Size(args.Column)); + Host.Assert(Infos.Length == Utils.Size(args.Columns)); _types = GetTypesAndMetadata(); } diff --git a/src/Microsoft.ML.Transforms/MissingValueIndicatorTransformer.cs b/src/Microsoft.ML.Transforms/MissingValueIndicatorTransformer.cs index 16009b0b38..4977bd18ac 100644 --- a/src/Microsoft.ML.Transforms/MissingValueIndicatorTransformer.cs +++ b/src/Microsoft.ML.Transforms/MissingValueIndicatorTransformer.cs @@ -53,8 +53,8 @@ public bool TryUnparse(StringBuilder sb) public sealed class Arguments : TransformInputBase { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; } internal const string LoadName = "NaIndicatorTransform"; @@ -90,7 +90,7 @@ public MissingValueIndicatorTransformer(IHostEnvironment env, params (string inp } internal MissingValueIndicatorTransformer(IHostEnvironment env, Arguments args) - : base(Contracts.CheckRef(env, nameof(env)).Register(nameof(MissingValueIndicatorTransformer)), GetColumnPairs(args.Column)) + : base(Contracts.CheckRef(env, nameof(env)).Register(nameof(MissingValueIndicatorTransformer)), GetColumnPairs(args.Columns)) { } diff --git a/src/Microsoft.ML.Transforms/MissingValueReplacing.cs b/src/Microsoft.ML.Transforms/MissingValueReplacing.cs index e262a184a5..7489868a12 100644 --- a/src/Microsoft.ML.Transforms/MissingValueReplacing.cs +++ b/src/Microsoft.ML.Transforms/MissingValueReplacing.cs @@ -115,8 +115,8 @@ public bool TryUnparse(StringBuilder sb) public sealed class Arguments : TransformInputBase { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:rep:src)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:rep:src)", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; [Argument(ArgumentType.AtMostOnce, HelpText = "The replacement method to utilize", ShortName = "kind")] public ReplacementKind ReplacementKind = (ReplacementKind)MissingValueReplacingEstimator.Defaults.ReplacementMode; @@ -470,11 +470,11 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat env.CheckValue(args, nameof(args)); env.CheckValue(input, nameof(input)); - env.CheckValue(args.Column, nameof(args.Column)); - var cols = new ColumnInfo[args.Column.Length]; + env.CheckValue(args.Columns, nameof(args.Columns)); + var cols = new ColumnInfo[args.Columns.Length]; for (int i = 0; i < cols.Length; i++) { - var item = args.Column[i]; + var item = args.Columns[i]; var kind = item.Kind ?? args.ReplacementKind; if (!Enum.IsDefined(typeof(ReplacementKind), kind)) throw env.ExceptUserArg(nameof(args.ReplacementKind), "Undefined sorting criteria '{0}' detected for column '{1}'", kind, item.Name); diff --git a/src/Microsoft.ML.Transforms/MutualInformationFeatureSelection.cs b/src/Microsoft.ML.Transforms/MutualInformationFeatureSelection.cs index 2b014b1c8b..a8b2e32a0f 100644 --- a/src/Microsoft.ML.Transforms/MutualInformationFeatureSelection.cs +++ b/src/Microsoft.ML.Transforms/MutualInformationFeatureSelection.cs @@ -41,9 +41,11 @@ public static class Defaults public sealed class Arguments : TransformInputBase { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "Columns to use for feature selection", ShortName = "col", + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "Columns to use for feature selection", + Name = "Column", + ShortName = "col", SortOrder = 1)] - public string[] Column; + public string[] Columns; [Argument(ArgumentType.LastOccurenceWins, HelpText = "Column to use for labels", ShortName = "lab", SortOrder = 4, Purpose = SpecialPurpose.ColumnName)] @@ -194,12 +196,12 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat var host = env.Register(RegistrationName); host.CheckValue(args, nameof(args)); host.CheckValue(input, nameof(input)); - host.CheckUserArg(Utils.Size(args.Column) > 0, nameof(args.Column)); + host.CheckUserArg(Utils.Size(args.Columns) > 0, nameof(args.Columns)); host.CheckUserArg(args.SlotsInOutput > 0, nameof(args.SlotsInOutput)); host.CheckNonWhiteSpace(args.LabelColumn, nameof(args.LabelColumn)); host.Check(args.NumBins > 1, "numBins must be greater than 1."); - (string input, string output)[] cols = args.Column.Select(col => (col, col)).ToArray(); + (string input, string output)[] cols = args.Columns.Select(col => (col, col)).ToArray(); return new MutualInformationFeatureSelectingEstimator(env, args.LabelColumn, args.SlotsInOutput, args.NumBins, cols).Fit(input).Transform(input) as IDataTransform; } @@ -388,20 +390,20 @@ public float[][] GetScores(IDataView input, string labelColumnName, string[] col var colName = columns[i]; if (!schema.TryGetColumnIndex(colName, out int colSrc)) { - throw _host.ExceptUserArg(nameof(MutualInformationFeatureSelectingEstimator.Arguments.Column), + throw _host.ExceptUserArg(nameof(MutualInformationFeatureSelectingEstimator.Arguments.Columns), "Source column '{0}' not found", colName); } var colType = schema[colSrc].Type; if (colType.IsVector && !colType.IsKnownSizeVector) { - throw _host.ExceptUserArg(nameof(MutualInformationFeatureSelectingEstimator.Arguments.Column), + throw _host.ExceptUserArg(nameof(MutualInformationFeatureSelectingEstimator.Arguments.Columns), "Variable length column '{0}' is not allowed", colName); } if (!IsValidColumnType(colType.ItemType)) { - throw _host.ExceptUserArg(nameof(MutualInformationFeatureSelectingEstimator.Arguments.Column), + throw _host.ExceptUserArg(nameof(MutualInformationFeatureSelectingEstimator.Arguments.Columns), "Column '{0}' of type '{1}' does not have compatible type.", colName, colType); } diff --git a/src/Microsoft.ML.Transforms/OneHotEncoding.cs b/src/Microsoft.ML.Transforms/OneHotEncoding.cs index faf682da4c..cb6b56aab8 100644 --- a/src/Microsoft.ML.Transforms/OneHotEncoding.cs +++ b/src/Microsoft.ML.Transforms/OneHotEncoding.cs @@ -98,8 +98,8 @@ public bool TryUnparse(StringBuilder sb) public sealed class Arguments : ValueToKeyMappingTransformer.ArgumentsBase { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; [Argument(ArgumentType.AtMostOnce, HelpText = "Output kind: Bag (multi-set vector), Ind (indicator vector), or Key (index)", ShortName = "kind", SortOrder = 102)] @@ -124,10 +124,10 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat var h = env.Register("Categorical"); h.CheckValue(args, nameof(args)); h.CheckValue(input, nameof(input)); - h.CheckUserArg(Utils.Size(args.Column) > 0, nameof(args.Column)); + h.CheckUserArg(Utils.Size(args.Columns) > 0, nameof(args.Columns)); var columns = new List(); - foreach (var column in args.Column) + foreach (var column in args.Columns) { var col = new OneHotEncodingEstimator.ColumnInfo( column.Source ?? column.Name, @@ -135,8 +135,8 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat column.OutputKind ?? args.OutputKind, column.MaxNumTerms ?? args.MaxNumTerms, column.Sort ?? args.Sort, - column.Term ?? args.Term); - col.SetTerms(column.Terms ?? args.Terms); + column.Term ?? args.Terms); + col.SetTerms(column.Terms ?? args.TermsList); columns.Add(col); } return new OneHotEncodingEstimator(env, columns.ToArray(), args.DataFile, args.TermsColumn, args.Loader).Fit(input).Transform(input) as IDataTransform; diff --git a/src/Microsoft.ML.Transforms/OneHotHashEncoding.cs b/src/Microsoft.ML.Transforms/OneHotHashEncoding.cs index 05478790d9..a0da03b1d9 100644 --- a/src/Microsoft.ML.Transforms/OneHotHashEncoding.cs +++ b/src/Microsoft.ML.Transforms/OneHotHashEncoding.cs @@ -97,8 +97,8 @@ private static class Defaults /// public sealed class Arguments : TransformInputBase { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:hashBits:src)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:hashBits:src)", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; [Argument(ArgumentType.AtMostOnce, HelpText = "Number of bits to hash into. Must be between 1 and 30, inclusive.", ShortName = "bits", SortOrder = 2)] @@ -155,10 +155,10 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat var h = env.Register("Categorical"); h.CheckValue(args, nameof(args)); h.CheckValue(input, nameof(input)); - h.CheckUserArg(Utils.Size(args.Column) > 0, nameof(args.Column)); + h.CheckUserArg(Utils.Size(args.Columns) > 0, nameof(args.Columns)); var columns = new List(); - foreach (var column in args.Column) + foreach (var column in args.Columns) { var col = new OneHotHashEncodingEstimator.ColumnInfo( column.Source ?? column.Name, diff --git a/src/Microsoft.ML.Transforms/OptionalColumnTransform.cs b/src/Microsoft.ML.Transforms/OptionalColumnTransform.cs index ae76e16122..745faf45d8 100644 --- a/src/Microsoft.ML.Transforms/OptionalColumnTransform.cs +++ b/src/Microsoft.ML.Transforms/OptionalColumnTransform.cs @@ -31,8 +31,8 @@ public class OptionalColumnTransform : RowToRowMapperTransformBase { public sealed class Arguments : TransformInputBase { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s)", ShortName = "col", SortOrder = 1)] - public string[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s)", Name = "Column", ShortName = "col", SortOrder = 1)] + public string[] Columns; } private sealed class Bindings : ColumnBindingsBase @@ -67,15 +67,15 @@ private Bindings(OptionalColumnTransform parent, ColumnType[] columnTypes, int[] public static Bindings Create(Arguments args, Schema input, OptionalColumnTransform parent) { - var names = new string[args.Column.Length]; - var columnTypes = new ColumnType[args.Column.Length]; - var srcCols = new int[args.Column.Length]; - for (int i = 0; i < args.Column.Length; i++) + var names = new string[args.Columns.Length]; + var columnTypes = new ColumnType[args.Columns.Length]; + var srcCols = new int[args.Columns.Length]; + for (int i = 0; i < args.Columns.Length; i++) { - names[i] = args.Column[i]; + names[i] = args.Columns[i]; int col; bool success = input.TryGetColumnIndex(names[i], out col); - Contracts.CheckUserArg(success, nameof(args.Column)); + Contracts.CheckUserArg(success, nameof(args.Columns)); columnTypes[i] = input[col].Type; srcCols[i] = col; } @@ -241,7 +241,7 @@ private static VersionInfo GetVersionInfo() /// Input . This is the output from previous transform or loader. /// Columns to transform. public OptionalColumnTransform(IHostEnvironment env, IDataView input, params string[] columns) - : this(env, new Arguments() { Column = columns }, input) + : this(env, new Arguments() { Columns = columns }, input) { } @@ -252,7 +252,7 @@ public OptionalColumnTransform(IHostEnvironment env, Arguments args, IDataView i : base(env, RegistrationName, input) { Host.CheckValue(args, nameof(args)); - Host.CheckUserArg(Utils.Size(args.Column) > 0, nameof(args.Column)); + Host.CheckUserArg(Utils.Size(args.Columns) > 0, nameof(args.Columns)); _bindings = Bindings.Create(args, Source.Schema, this); } diff --git a/src/Microsoft.ML.Transforms/RandomFourierFeaturizing.cs b/src/Microsoft.ML.Transforms/RandomFourierFeaturizing.cs index 66ff4c3f21..8c08f08f75 100644 --- a/src/Microsoft.ML.Transforms/RandomFourierFeaturizing.cs +++ b/src/Microsoft.ML.Transforms/RandomFourierFeaturizing.cs @@ -33,8 +33,8 @@ public sealed class RandomFourierFeaturizingTransformer : OneToOneTransformerBas { public sealed class Arguments { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; [Argument(ArgumentType.AtMostOnce, HelpText = "The number of random Fourier features to create", ShortName = "dim")] public int NewDim = RandomFourierFeaturizingEstimator.Defaults.NewDim; @@ -452,14 +452,14 @@ private static IDataTransform Create(IHostEnvironment env, Arguments args, IData env.CheckValue(args, nameof(args)); env.CheckValue(input, nameof(input)); - env.CheckValue(args.Column, nameof(args.Column)); - var cols = new ColumnInfo[args.Column.Length]; + env.CheckValue(args.Columns, nameof(args.Columns)); + var cols = new ColumnInfo[args.Columns.Length]; using (var ch = env.Start("ValidateArgs")) { for (int i = 0; i < cols.Length; i++) { - var item = args.Column[i]; + var item = args.Columns[i]; cols[i] = new ColumnInfo(item.Source ?? item.Name, item.Name, item.NewDim ?? args.NewDim, diff --git a/src/Microsoft.ML.Transforms/Text/LdaTransform.cs b/src/Microsoft.ML.Transforms/Text/LdaTransform.cs index 9a2bc1adfa..3d839a4477 100644 --- a/src/Microsoft.ML.Transforms/Text/LdaTransform.cs +++ b/src/Microsoft.ML.Transforms/Text/LdaTransform.cs @@ -52,8 +52,8 @@ public sealed class LatentDirichletAllocationTransformer : OneToOneTransformerBa { public sealed class Arguments : TransformInputBase { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:srcs)", ShortName = "col", SortOrder = 49)] - public Column[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:srcs)", Name = "Column", ShortName = "col", SortOrder = 49)] + public Column[] Columns; [Argument(ArgumentType.AtMostOnce, HelpText = "The number of topics", SortOrder = 50)] [TGUI(SuggestedSweeps = "20,40,100,200")] @@ -871,9 +871,9 @@ private static IDataTransform Create(IHostEnvironment env, Arguments args, IData Contracts.CheckValue(env, nameof(env)); env.CheckValue(args, nameof(args)); env.CheckValue(input, nameof(input)); - env.CheckValue(args.Column, nameof(args.Column)); + env.CheckValue(args.Columns, nameof(args.Columns)); - var cols = args.Column.Select(colPair => new ColumnInfo(colPair, args)).ToArray(); + var cols = args.Columns.Select(colPair => new ColumnInfo(colPair, args)).ToArray(); return TrainLdaTransformer(env, input, cols).MakeDataTransform(input); } diff --git a/src/Microsoft.ML.Transforms/Text/NgramTransform.cs b/src/Microsoft.ML.Transforms/Text/NgramTransform.cs index f7dafb0b80..917c08fafb 100644 --- a/src/Microsoft.ML.Transforms/Text/NgramTransform.cs +++ b/src/Microsoft.ML.Transforms/Text/NgramTransform.cs @@ -78,8 +78,8 @@ public bool TryUnparse(StringBuilder sb) public sealed class Arguments : TransformInputBase { - [Argument(ArgumentType.Multiple, HelpText = "New column definition(s) (optional form: name:src)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple, HelpText = "New column definition(s) (optional form: name:src)", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; [Argument(ArgumentType.AtMostOnce, HelpText = "Maximum ngram length", ShortName = "ngram")] public int NgramLength = NgramExtractingEstimator.Defaults.NgramLength; @@ -485,14 +485,14 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat env.CheckValue(args, nameof(args)); env.CheckValue(input, nameof(input)); - env.CheckValue(args.Column, nameof(args.Column)); - var cols = new ColumnInfo[args.Column.Length]; + env.CheckValue(args.Columns, nameof(args.Columns)); + var cols = new ColumnInfo[args.Columns.Length]; using (var ch = env.Start("ValidateArgs")) { for (int i = 0; i < cols.Length; i++) { - var item = args.Column[i]; + var item = args.Columns[i]; var maxNumTerms = Utils.Size(item.MaxNumTerms) > 0 ? item.MaxNumTerms : args.MaxNumTerms; cols[i] = new ColumnInfo(item.Source ?? item.Name, item.Name, diff --git a/src/Microsoft.ML.Transforms/Text/StopWordsRemovingTransformer.cs b/src/Microsoft.ML.Transforms/Text/StopWordsRemovingTransformer.cs index 75361ed1b9..9e6fec3721 100644 --- a/src/Microsoft.ML.Transforms/Text/StopWordsRemovingTransformer.cs +++ b/src/Microsoft.ML.Transforms/Text/StopWordsRemovingTransformer.cs @@ -102,8 +102,8 @@ public bool TryUnparse(StringBuilder sb) public sealed class Arguments { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s)", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; [Argument(ArgumentType.AtMostOnce, HelpText = "Optional column to use for languages. This overrides language value.", @@ -281,11 +281,11 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat env.CheckValue(args, nameof(args)); env.CheckValue(input, nameof(input)); - env.CheckValue(args.Column, nameof(args.Column)); - var cols = new ColumnInfo[args.Column.Length]; + env.CheckValue(args.Columns, nameof(args.Columns)); + var cols = new ColumnInfo[args.Columns.Length]; for (int i = 0; i < cols.Length; i++) { - var item = args.Column[i]; + var item = args.Columns[i]; cols[i] = new ColumnInfo(item.Source ?? item.Name, item.Name, item.Language ?? args.Language, @@ -616,11 +616,11 @@ public bool TryUnparse(StringBuilder sb) public abstract class ArgumentsBase { - [Argument(ArgumentType.AtMostOnce, HelpText = "Comma separated list of stopwords", Visibility = ArgumentAttribute.VisibilityType.CmdLineOnly)] - public string Stopwords; + [Argument(ArgumentType.AtMostOnce, HelpText = "Comma separated list of stopwords", Name = "Stopwords", Visibility = ArgumentAttribute.VisibilityType.CmdLineOnly)] + public string StopwordsList; [Argument(ArgumentType.AtMostOnce, HelpText = "List of stopwords", Visibility = ArgumentAttribute.VisibilityType.EntryPointsOnly)] - public string[] Stopword; + public string[] Stopwords; [Argument(ArgumentType.AtMostOnce, IsInputFileName = true, HelpText = "Data file containing the stopwords", ShortName = "data", SortOrder = 2, Visibility = ArgumentAttribute.VisibilityType.CmdLineOnly)] public string DataFile; @@ -634,8 +634,8 @@ public abstract class ArgumentsBase public sealed class Arguments : ArgumentsBase { - [Argument(ArgumentType.Multiple, HelpText = "New column definition(s)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple, HelpText = "New column definition(s)", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; } [TlcModule.Component(Name = "Custom", FriendlyName = "Custom Stopwords Remover", Alias = "CustomStopWordsRemover,CustomStopWords", @@ -644,10 +644,10 @@ public sealed class LoaderArguments : ArgumentsBase, IStopWordsRemoverFactory { public IDataTransform CreateComponent(IHostEnvironment env, IDataView input, OneToOneColumn[] column) { - if (Utils.Size(Stopword) > 0) - return new CustomStopWordsRemovingTransform(env, Stopword, column.Select(x => (x.Source, x.Name)).ToArray()).Transform(input) as IDataTransform; + if (Utils.Size(Stopwords) > 0) + return new CustomStopWordsRemovingTransform(env, Stopwords, column.Select(x => (x.Source, x.Name)).ToArray()).Transform(input) as IDataTransform; else - return new CustomStopWordsRemovingTransform(env, Stopwords, DataFile, StopwordsColumn, Loader, column.Select(x => (x.Source, x.Name)).ToArray()).Transform(input) as IDataTransform; + return new CustomStopWordsRemovingTransform(env, StopwordsList, DataFile, StopwordsColumn, Loader, column.Select(x => (x.Source, x.Name)).ToArray()).Transform(input) as IDataTransform; } } @@ -762,7 +762,7 @@ private void LoadStopWords(IChannel ch, ReadOnlyMemory stopwords, string d warnEmpty = false; } } - ch.CheckUserArg(stopWordsMap.Count > 0, nameof(Arguments.Stopwords), "stopwords is empty"); + ch.CheckUserArg(stopWordsMap.Count > 0, nameof(Arguments.StopwordsList), "stopwords is empty"); } else { @@ -934,18 +934,18 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat env.CheckValue(args, nameof(args)); env.CheckValue(input, nameof(input)); - env.CheckValue(args.Column, nameof(args.Column)); - var cols = new (string input, string output)[args.Column.Length]; + env.CheckValue(args.Columns, nameof(args.Columns)); + var cols = new (string input, string output)[args.Columns.Length]; for (int i = 0; i < cols.Length; i++) { - var item = args.Column[i]; + var item = args.Columns[i]; cols[i] = (item.Source ?? item.Name, item.Name); } CustomStopWordsRemovingTransform transfrom = null; - if (Utils.Size(args.Stopword) > 0) - transfrom = new CustomStopWordsRemovingTransform(env, args.Stopword, cols); + if (Utils.Size(args.Stopwords) > 0) + transfrom = new CustomStopWordsRemovingTransform(env, args.Stopwords, cols); else - transfrom = new CustomStopWordsRemovingTransform(env, args.Stopwords, args.DataFile, args.StopwordsColumn, args.Loader, cols); + transfrom = new CustomStopWordsRemovingTransform(env, args.StopwordsList, args.DataFile, args.StopwordsColumn, args.Loader, cols); return transfrom.MakeDataTransform(input); } diff --git a/src/Microsoft.ML.Transforms/Text/TextFeaturizingEstimator.cs b/src/Microsoft.ML.Transforms/Text/TextFeaturizingEstimator.cs index b5bab84cb0..4785ca40bc 100644 --- a/src/Microsoft.ML.Transforms/Text/TextFeaturizingEstimator.cs +++ b/src/Microsoft.ML.Transforms/Text/TextFeaturizingEstimator.cs @@ -80,8 +80,8 @@ public bool TryUnparse(StringBuilder sb) /// public sealed class Arguments : TransformInputBase { - [Argument(ArgumentType.Required, HelpText = "New column definition (optional form: name:srcs).", ShortName = "col", SortOrder = 1)] - public Column Column; + [Argument(ArgumentType.Required, HelpText = "New column definition (optional form: name:srcs).", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column Columns; [Argument(ArgumentType.AtMostOnce, HelpText = "Dataset language or 'AutoDetect' to detect language per row.", ShortName = "lang", SortOrder = 3)] public Language Language = DefaultLanguage; @@ -515,7 +515,7 @@ public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataV s.UseCharExtractor = args.CharFeatureExtractor != null; }; - var estimator = new TextFeaturizingEstimator(env, args.Column.Source ?? new[] { args.Column.Name }, args.Column.Name, settings); + var estimator = new TextFeaturizingEstimator(env, args.Columns.Source ?? new[] { args.Columns.Name }, args.Columns.Name, settings); estimator._dictionary = args.Dictionary; estimator._wordFeatureExtractor = args.WordFeatureExtractor; estimator._charFeatureExtractor = args.CharFeatureExtractor; diff --git a/src/Microsoft.ML.Transforms/Text/TextNormalizing.cs b/src/Microsoft.ML.Transforms/Text/TextNormalizing.cs index 9246ba196d..ddf91f2d09 100644 --- a/src/Microsoft.ML.Transforms/Text/TextNormalizing.cs +++ b/src/Microsoft.ML.Transforms/Text/TextNormalizing.cs @@ -56,8 +56,8 @@ public bool TryUnparse(StringBuilder sb) public sealed class Arguments { - [Argument(ArgumentType.Multiple, HelpText = "New column definition(s)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple, HelpText = "New column definition(s)", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; [Argument(ArgumentType.AtMostOnce, HelpText = "Casing text using the rules of the invariant culture.", ShortName = "case", SortOrder = 1)] public TextNormalizingEstimator.CaseNormalizationMode TextCase = TextNormalizingEstimator.Defaults.TextCase; @@ -174,11 +174,11 @@ private static IDataTransform Create(IHostEnvironment env, Arguments args, IData env.CheckValue(args, nameof(args)); env.CheckValue(input, nameof(input)); - env.CheckValue(args.Column, nameof(args.Column)); - var cols = new (string input, string output)[args.Column.Length]; + env.CheckValue(args.Columns, nameof(args.Columns)); + var cols = new (string input, string output)[args.Columns.Length]; for (int i = 0; i < cols.Length; i++) { - var item = args.Column[i]; + var item = args.Columns[i]; cols[i] = (item.Source ?? item.Name, item.Name); } return new TextNormalizingTransformer(env, args.TextCase, args.KeepDiacritics, args.KeepPunctuations, args.KeepNumbers, cols).MakeDataTransform(input); diff --git a/src/Microsoft.ML.Transforms/Text/TokenizingByCharacters.cs b/src/Microsoft.ML.Transforms/Text/TokenizingByCharacters.cs index ea89edd19c..1693b74db6 100644 --- a/src/Microsoft.ML.Transforms/Text/TokenizingByCharacters.cs +++ b/src/Microsoft.ML.Transforms/Text/TokenizingByCharacters.cs @@ -56,8 +56,8 @@ public bool TryUnparse(StringBuilder sb) public sealed class Arguments : TransformInputBase { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; [Argument(ArgumentType.Multiple, HelpText = "Whether to mark the beginning/end of each row/slot with start of text character (0x02)/end of text character (0x03)", ShortName = "mark", SortOrder = 2)] @@ -167,11 +167,11 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat env.CheckValue(args, nameof(args)); env.CheckValue(input, nameof(input)); - env.CheckValue(args.Column, nameof(args.Column)); - var cols = new (string input, string output)[args.Column.Length]; + env.CheckValue(args.Columns, nameof(args.Columns)); + var cols = new (string input, string output)[args.Columns.Length]; for (int i = 0; i < cols.Length; i++) { - var item = args.Column[i]; + var item = args.Columns[i]; cols[i] = (item.Source ?? item.Name, item.Name); } return new TokenizingByCharactersTransformer(env, args.UseMarkerChars, cols).MakeDataTransform(input); diff --git a/src/Microsoft.ML.Transforms/Text/WordBagTransform.cs b/src/Microsoft.ML.Transforms/Text/WordBagTransform.cs index 2fa512058e..cff29df23b 100644 --- a/src/Microsoft.ML.Transforms/Text/WordBagTransform.cs +++ b/src/Microsoft.ML.Transforms/Text/WordBagTransform.cs @@ -95,8 +95,8 @@ public sealed class TokenizeColumn : OneToOneColumn { } public sealed class Arguments : NgramExtractorTransform.ArgumentsBase { - [Argument(ArgumentType.Multiple, HelpText = "New column definition(s) (optional form: name:srcs)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple, HelpText = "New column definition(s) (optional form: name:srcs)", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; } private const string RegistrationName = "WordBagTransform"; @@ -110,7 +110,7 @@ public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataV var h = env.Register(RegistrationName); h.CheckValue(args, nameof(args)); h.CheckValue(input, nameof(input)); - h.CheckUserArg(Utils.Size(args.Column) > 0, nameof(args.Column), "Columns must be specified"); + h.CheckUserArg(Utils.Size(args.Columns) > 0, nameof(args.Columns), "Columns must be specified"); // Compose the WordBagTransform from a tokenize transform, // followed by a NgramExtractionTransform. @@ -123,7 +123,7 @@ public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataV // REVIEW: In order to make it possible to output separate bags for different columns // using the same dictionary, we need to find a way to make ConcatTransform remember the boundaries. - var tokenizeColumns = new WordTokenizingTransformer.ColumnInfo[args.Column.Length]; + var tokenizeColumns = new WordTokenizingTransformer.ColumnInfo[args.Columns.Length]; var extractorArgs = new NgramExtractorTransform.Arguments() @@ -133,19 +133,19 @@ public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataV SkipLength = args.SkipLength, AllLengths = args.AllLengths, Weighting = args.Weighting, - Column = new NgramExtractorTransform.Column[args.Column.Length] + Columns = new NgramExtractorTransform.Column[args.Columns.Length] }; - for (int iinfo = 0; iinfo < args.Column.Length; iinfo++) + for (int iinfo = 0; iinfo < args.Columns.Length; iinfo++) { - var column = args.Column[iinfo]; + var column = args.Columns[iinfo]; h.CheckUserArg(!string.IsNullOrWhiteSpace(column.Name), nameof(column.Name)); h.CheckUserArg(Utils.Size(column.Source) > 0, nameof(column.Source)); h.CheckUserArg(column.Source.All(src => !string.IsNullOrWhiteSpace(src)), nameof(column.Source)); tokenizeColumns[iinfo] = new WordTokenizingTransformer.ColumnInfo(column.Source.Length > 1 ? column.Name : column.Source[0], column.Name); - extractorArgs.Column[iinfo] = + extractorArgs.Columns[iinfo] = new NgramExtractorTransform.Column() { Name = column.Name, @@ -159,7 +159,7 @@ public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataV } IDataView view = input; - view = NgramExtractionUtils.ApplyConcatOnSources(h, args.Column, view); + view = NgramExtractionUtils.ApplyConcatOnSources(h, args.Columns, view); view = new WordTokenizingEstimator(env, tokenizeColumns).Fit(view).Transform(view); return NgramExtractorTransform.Create(h, extractorArgs, view); } @@ -255,8 +255,8 @@ public INgramExtractorFactory CreateComponent(IHostEnvironment env, TermLoaderAr public sealed class Arguments : ArgumentsBase { - [Argument(ArgumentType.Multiple, HelpText = "New column definition(s) (optional form: name:src)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple, HelpText = "New column definition(s) (optional form: name:src)", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; } internal const string Summary = "A transform that turns a collection of tokenized text ReadOnlyMemory, or vectors of keys into numerical " + @@ -271,15 +271,15 @@ public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataV var h = env.Register(LoaderSignature); h.CheckValue(args, nameof(args)); h.CheckValue(input, nameof(input)); - h.CheckUserArg(Utils.Size(args.Column) > 0, nameof(args.Column), "Columns must be specified"); + h.CheckUserArg(Utils.Size(args.Columns) > 0, nameof(args.Columns), "Columns must be specified"); IDataView view = input; var termCols = new List(); - var isTermCol = new bool[args.Column.Length]; + var isTermCol = new bool[args.Columns.Length]; - for (int i = 0; i < args.Column.Length; i++) + for (int i = 0; i < args.Columns.Length; i++) { - var col = args.Column[i]; + var col = args.Columns[i]; h.CheckNonWhiteSpace(col.Name, nameof(col.Name)); h.CheckNonWhiteSpace(col.Source, nameof(col.Source)); @@ -307,13 +307,13 @@ public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataV new ValueToKeyMappingTransformer.Arguments() { MaxNumTerms = int.MaxValue, + TermsList = termLoaderArgs.TermsList, Terms = termLoaderArgs.Terms, - Term = termLoaderArgs.Term, DataFile = termLoaderArgs.DataFile, Loader = termLoaderArgs.Loader, TermsColumn = termLoaderArgs.TermsColumn, Sort = termLoaderArgs.Sort, - Column = new ValueToKeyMappingTransformer.Column[termCols.Count] + Columns = new ValueToKeyMappingTransformer.Column[termCols.Count] }; if (termLoaderArgs.DropUnknowns) missingDropColumns = new string[termCols.Count]; @@ -324,14 +324,14 @@ public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataV new ValueToKeyMappingTransformer.Arguments() { MaxNumTerms = Utils.Size(args.MaxNumTerms) > 0 ? args.MaxNumTerms[0] : NgramExtractingEstimator.Defaults.MaxNumTerms, - Column = new ValueToKeyMappingTransformer.Column[termCols.Count] + Columns = new ValueToKeyMappingTransformer.Column[termCols.Count] }; } for (int iinfo = 0; iinfo < termCols.Count; iinfo++) { var column = termCols[iinfo]; - termArgs.Column[iinfo] = + termArgs.Columns[iinfo] = new ValueToKeyMappingTransformer.Column() { Name = column.Name, @@ -348,10 +348,10 @@ public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataV view = new MissingValueDroppingTransformer(h, missingDropColumns.Select(x => (x, x)).ToArray()).Transform(view); } - var ngramColumns = new NgramExtractingTransformer.ColumnInfo[args.Column.Length]; - for (int iinfo = 0; iinfo < args.Column.Length; iinfo++) + var ngramColumns = new NgramExtractingTransformer.ColumnInfo[args.Columns.Length]; + for (int iinfo = 0; iinfo < args.Columns.Length; iinfo++) { - var column = args.Column[iinfo]; + var column = args.Columns[iinfo]; ngramColumns[iinfo] = new NgramExtractingTransformer.ColumnInfo(isTermCol[iinfo] ? column.Name : column.Source, column.Name, column.NgramLength ?? args.NgramLength, column.SkipLength ?? args.SkipLength, @@ -372,7 +372,7 @@ public static IDataTransform Create(IHostEnvironment env, NgramExtractorArgument h.CheckValue(extractorArgs, nameof(extractorArgs)); h.CheckValue(input, nameof(input)); h.CheckUserArg(extractorArgs.SkipLength < extractorArgs.NgramLength, nameof(extractorArgs.SkipLength), "Should be less than " + nameof(extractorArgs.NgramLength)); - h.CheckUserArg(Utils.Size(cols) > 0, nameof(Arguments.Column), "Must be specified"); + h.CheckUserArg(Utils.Size(cols) > 0, nameof(Arguments.Columns), "Must be specified"); h.CheckValueOrNull(termLoaderArgs); var extractorCols = new Column[cols.Length]; @@ -384,7 +384,7 @@ public static IDataTransform Create(IHostEnvironment env, NgramExtractorArgument var args = new Arguments { - Column = extractorCols, + Columns = extractorCols, NgramLength = extractorArgs.NgramLength, SkipLength = extractorArgs.SkipLength, AllLengths = extractorArgs.AllLengths, @@ -413,11 +413,11 @@ public static INgramExtractorFactory Create(IHostEnvironment env, NgramExtractor /// public sealed class TermLoaderArguments { - [Argument(ArgumentType.AtMostOnce, HelpText = "Comma separated list of terms", SortOrder = 1, Visibility = ArgumentAttribute.VisibilityType.CmdLineOnly)] - public string Terms; + [Argument(ArgumentType.AtMostOnce, HelpText = "Comma separated list of terms", Name = "Terms", SortOrder = 1, Visibility = ArgumentAttribute.VisibilityType.CmdLineOnly)] + public string TermsList; [Argument(ArgumentType.AtMostOnce, HelpText = "List of terms", SortOrder = 1, Visibility = ArgumentAttribute.VisibilityType.EntryPointsOnly)] - public string[] Term; + public string[] Terms; [Argument(ArgumentType.AtMostOnce, IsInputFileName = true, HelpText = "Data file containing the terms", ShortName = "data", SortOrder = 2, Visibility = ArgumentAttribute.VisibilityType.CmdLineOnly)] public string DataFile; @@ -515,7 +515,7 @@ public static IDataView ApplyConcatOnSources(IHostEnvironment env, ManyToOneColu var concatColumns = new List(); foreach (var col in columns) { - env.CheckUserArg(col != null, nameof(WordBagBuildingTransformer.Arguments.Column)); + env.CheckUserArg(col != null, nameof(WordBagBuildingTransformer.Arguments.Columns)); env.CheckUserArg(!string.IsNullOrWhiteSpace(col.Name), nameof(col.Name)); env.CheckUserArg(Utils.Size(col.Source) > 0, nameof(col.Source)); env.CheckUserArg(col.Source.All(src => !string.IsNullOrWhiteSpace(src)), nameof(col.Source)); @@ -543,7 +543,7 @@ public static string[][] GenerateUniqueSourceNames(IHostEnvironment env, ManyToO for (int iinfo = 0; iinfo < columns.Length; iinfo++) { var col = columns[iinfo]; - env.CheckUserArg(col != null, nameof(WordHashBagProducingTransformer.Arguments.Column)); + env.CheckUserArg(col != null, nameof(WordHashBagProducingTransformer.Arguments.Columns)); env.CheckUserArg(!string.IsNullOrWhiteSpace(col.Name), nameof(col.Name)); env.CheckUserArg(Utils.Size(col.Source) > 0 && col.Source.All(src => !string.IsNullOrWhiteSpace(src)), nameof(col.Source)); diff --git a/src/Microsoft.ML.Transforms/Text/WordEmbeddingsExtractor.cs b/src/Microsoft.ML.Transforms/Text/WordEmbeddingsExtractor.cs index c01dfe7150..6b71c46dfa 100644 --- a/src/Microsoft.ML.Transforms/Text/WordEmbeddingsExtractor.cs +++ b/src/Microsoft.ML.Transforms/Text/WordEmbeddingsExtractor.cs @@ -58,8 +58,8 @@ public bool TryUnparse(StringBuilder sb) public sealed class Arguments : TransformInputBase { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", ShortName = "col", SortOrder = 0)] - public Column[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", Name = "Column", ShortName = "col", SortOrder = 0)] + public Column[] Columns; [Argument(ArgumentType.AtMostOnce, HelpText = "Pre-trained model used to create the vocabulary", ShortName = "model", SortOrder = 1)] public PretrainedModelKind? ModelKind = PretrainedModelKind.Sswe; @@ -245,12 +245,12 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat args.ModelKind = PretrainedModelKind.Sswe; env.CheckUserArg(!args.ModelKind.HasValue || Enum.IsDefined(typeof(PretrainedModelKind), args.ModelKind), nameof(args.ModelKind)); - env.CheckValue(args.Column, nameof(args.Column)); + env.CheckValue(args.Columns, nameof(args.Columns)); - var cols = new ColumnInfo[args.Column.Length]; + var cols = new ColumnInfo[args.Columns.Length]; for (int i = 0; i < cols.Length; i++) { - var item = args.Column[i]; + var item = args.Columns[i]; cols[i] = new ColumnInfo( item.Source ?? item.Name, item.Name); diff --git a/src/Microsoft.ML.Transforms/Text/WordHashBagProducingTransform.cs b/src/Microsoft.ML.Transforms/Text/WordHashBagProducingTransform.cs index e911dbbafe..f32c86c076 100644 --- a/src/Microsoft.ML.Transforms/Text/WordHashBagProducingTransform.cs +++ b/src/Microsoft.ML.Transforms/Text/WordHashBagProducingTransform.cs @@ -75,8 +75,8 @@ public bool TryUnparse(StringBuilder sb) public sealed class Arguments : NgramHashExtractingTransformer.ArgumentsBase { [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:hashBits:srcs)", - ShortName = "col", SortOrder = 1)] - public Column[] Column; + Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; } private const string RegistrationName = "WordHashBagTransform"; @@ -89,7 +89,7 @@ public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataV var h = env.Register(RegistrationName); h.CheckValue(args, nameof(args)); h.CheckValue(input, nameof(input)); - h.CheckUserArg(Utils.Size(args.Column) > 0, nameof(args.Column), "Columns must be specified"); + h.CheckUserArg(Utils.Size(args.Columns) > 0, nameof(args.Columns), "Columns must be specified"); // To each input column to the WordHashBagTransform, a tokenize transform is applied, // followed by applying WordHashVectorizeTransform. @@ -99,21 +99,21 @@ public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataV // The intermediate columns are dropped at the end of using a DropColumnsTransform. IDataView view = input; - var uniqueSourceNames = NgramExtractionUtils.GenerateUniqueSourceNames(h, args.Column, view.Schema); - Contracts.Assert(uniqueSourceNames.Length == args.Column.Length); + var uniqueSourceNames = NgramExtractionUtils.GenerateUniqueSourceNames(h, args.Columns, view.Schema); + Contracts.Assert(uniqueSourceNames.Length == args.Columns.Length); var tokenizeColumns = new List(); - var extractorCols = new NgramHashExtractingTransformer.Column[args.Column.Length]; - var colCount = args.Column.Length; + var extractorCols = new NgramHashExtractingTransformer.Column[args.Columns.Length]; + var colCount = args.Columns.Length; List tmpColNames = new List(); for (int iinfo = 0; iinfo < colCount; iinfo++) { - var column = args.Column[iinfo]; + var column = args.Columns[iinfo]; int srcCount = column.Source.Length; var curTmpNames = new string[srcCount]; - Contracts.Assert(uniqueSourceNames[iinfo].Length == args.Column[iinfo].Source.Length); + Contracts.Assert(uniqueSourceNames[iinfo].Length == args.Columns[iinfo].Source.Length); for (int isrc = 0; isrc < srcCount; isrc++) - tokenizeColumns.Add(new WordTokenizingTransformer.ColumnInfo(args.Column[iinfo].Source[isrc], curTmpNames[isrc] = uniqueSourceNames[iinfo][isrc])); + tokenizeColumns.Add(new WordTokenizingTransformer.ColumnInfo(args.Columns[iinfo].Source[isrc], curTmpNames[isrc] = uniqueSourceNames[iinfo][isrc])); tmpColNames.AddRange(curTmpNames); extractorCols[iinfo] = @@ -127,7 +127,7 @@ public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataV SkipLength = column.SkipLength, Ordered = column.Ordered, InvertHash = column.InvertHash, - FriendlyNames = args.Column[iinfo].Source, + FriendlyNames = args.Columns[iinfo].Source, AllLengths = column.AllLengths }; } @@ -143,7 +143,7 @@ public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataV SkipLength = args.SkipLength, Ordered = args.Ordered, Seed = args.Seed, - Column = extractorCols.ToArray(), + Columns = extractorCols.ToArray(), InvertHash = args.InvertHash }; @@ -305,8 +305,8 @@ public INgramExtractorFactory CreateComponent(IHostEnvironment env, TermLoaderAr public sealed class Arguments : ArgumentsBase { - [Argument(ArgumentType.Multiple, HelpText = "New column definition(s) (optional form: name:srcs)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple, HelpText = "New column definition(s) (optional form: name:srcs)", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; } internal const string Summary = "A transform that turns a collection of tokenized text (vector of ReadOnlyMemory) into numerical feature vectors using the hashing trick."; @@ -320,7 +320,7 @@ public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataV var h = env.Register(LoaderSignature); h.CheckValue(args, nameof(args)); h.CheckValue(input, nameof(input)); - h.CheckUserArg(Utils.Size(args.Column) > 0, nameof(args.Column), "Columns must be specified"); + h.CheckUserArg(Utils.Size(args.Columns) > 0, nameof(args.Columns), "Columns must be specified"); // To each input column to the NgramHashExtractorArguments, a HashTransform using 31 // bits (to minimize collisions) is applied first, followed by an NgramHashTransform. @@ -330,15 +330,15 @@ public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataV if (termLoaderArgs != null) termCols = new List(); var hashColumns = new List(); - var ngramHashColumns = new NgramHashingTransformer.ColumnInfo[args.Column.Length]; + var ngramHashColumns = new NgramHashingTransformer.ColumnInfo[args.Columns.Length]; - var colCount = args.Column.Length; + var colCount = args.Columns.Length; // The NGramHashExtractor has a ManyToOne column type. To avoid stepping over the source // column name when a 'name' destination column name was specified, we use temporary column names. string[][] tmpColNames = new string[colCount][]; for (int iinfo = 0; iinfo < colCount; iinfo++) { - var column = args.Column[iinfo]; + var column = args.Columns[iinfo]; h.CheckUserArg(!string.IsNullOrWhiteSpace(column.Name), nameof(column.Name)); h.CheckUserArg(Utils.Size(column.Source) > 0 && column.Source.All(src => !string.IsNullOrWhiteSpace(src)), nameof(column.Source)); @@ -382,13 +382,13 @@ public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataV new ValueToKeyMappingTransformer.Arguments() { MaxNumTerms = int.MaxValue, + TermsList = termLoaderArgs.TermsList, Terms = termLoaderArgs.Terms, - Term = termLoaderArgs.Term, DataFile = termLoaderArgs.DataFile, Loader = termLoaderArgs.Loader, TermsColumn = termLoaderArgs.TermsColumn, Sort = termLoaderArgs.Sort, - Column = termCols.ToArray() + Columns = termCols.ToArray() }; view = ValueToKeyMappingTransformer.Create(h, termArgs, view); @@ -413,7 +413,7 @@ public static IDataTransform Create(NgramHashExtractorArguments extractorArgs, I h.CheckValue(extractorArgs, nameof(extractorArgs)); h.CheckValue(input, nameof(input)); h.CheckUserArg(extractorArgs.SkipLength < extractorArgs.NgramLength, nameof(extractorArgs.SkipLength), "Should be less than " + nameof(extractorArgs.NgramLength)); - h.CheckUserArg(Utils.Size(cols) > 0, nameof(Arguments.Column), "Must be specified"); + h.CheckUserArg(Utils.Size(cols) > 0, nameof(Arguments.Columns), "Must be specified"); h.AssertValueOrNull(termLoaderArgs); var extractorCols = new Column[cols.Length]; @@ -430,7 +430,7 @@ public static IDataTransform Create(NgramHashExtractorArguments extractorArgs, I var args = new Arguments { - Column = extractorCols, + Columns = extractorCols, NgramLength = extractorArgs.NgramLength, SkipLength = extractorArgs.SkipLength, HashBits = extractorArgs.HashBits, diff --git a/src/Microsoft.ML.Transforms/Text/WordTokenizing.cs b/src/Microsoft.ML.Transforms/Text/WordTokenizing.cs index 53880db9d8..5d7488c3c0 100644 --- a/src/Microsoft.ML.Transforms/Text/WordTokenizing.cs +++ b/src/Microsoft.ML.Transforms/Text/WordTokenizing.cs @@ -82,8 +82,8 @@ public abstract class ArgumentsBase : TransformInputBase public sealed class Arguments : ArgumentsBase { - [Argument(ArgumentType.Multiple, HelpText = "New column definition(s)", ShortName = "col", SortOrder = 1)] - public Column[] Column; + [Argument(ArgumentType.Multiple, HelpText = "New column definition(s)", Name = "Column", ShortName = "col", SortOrder = 1)] + public Column[] Columns; } public sealed class TokenizeArguments : ArgumentsBase @@ -204,11 +204,11 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat env.CheckValue(args, nameof(args)); env.CheckValue(input, nameof(input)); - env.CheckValue(args.Column, nameof(args.Column)); - var cols = new ColumnInfo[args.Column.Length]; + env.CheckValue(args.Columns, nameof(args.Columns)); + var cols = new ColumnInfo[args.Columns.Length]; for (int i = 0; i < cols.Length; i++) { - var item = args.Column[i]; + var item = args.Columns[i]; var separators = args.CharArrayTermSeparators ?? PredictionUtil.SeparatorFromString(item.TermSeparators ?? args.TermSeparators); cols[i] = new ColumnInfo(item.Source ?? item.Name, item.Name, separators); diff --git a/src/Microsoft.ML.Transforms/Text/WrappedTextTransformers.cs b/src/Microsoft.ML.Transforms/Text/WrappedTextTransformers.cs index 2924651115..7fbb938ffe 100644 --- a/src/Microsoft.ML.Transforms/Text/WrappedTextTransformers.cs +++ b/src/Microsoft.ML.Transforms/Text/WrappedTextTransformers.cs @@ -109,7 +109,7 @@ public override TransformWrapper Fit(IDataView input) // Create arguments. var args = new WordBagBuildingTransformer.Arguments { - Column = _columns.Select(x => new WordBagBuildingTransformer.Column { Source = x.inputs, Name = x.output }).ToArray(), + Columns = _columns.Select(x => new WordBagBuildingTransformer.Column { Source = x.inputs, Name = x.output }).ToArray(), NgramLength = _ngramLength, SkipLength = _skipLength, AllLengths = _allLengths, @@ -246,7 +246,7 @@ public override TransformWrapper Fit(IDataView input) // Create arguments. var args = new WordHashBagProducingTransformer.Arguments { - Column = _columns.Select(x => new WordHashBagProducingTransformer.Column { Source = x.inputs, Name = x.output }).ToArray(), + Columns = _columns.Select(x => new WordHashBagProducingTransformer.Column { Source = x.inputs, Name = x.output }).ToArray(), HashBits = _hashBits, NgramLength = _ngramLength, SkipLength = _skipLength, diff --git a/src/Microsoft.ML.Transforms/UngroupTransform.cs b/src/Microsoft.ML.Transforms/UngroupTransform.cs index f720d07668..e08fe5cc49 100644 --- a/src/Microsoft.ML.Transforms/UngroupTransform.cs +++ b/src/Microsoft.ML.Transforms/UngroupTransform.cs @@ -85,8 +85,8 @@ public enum UngroupMode public sealed class Arguments : TransformInputBase { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "Columns to unroll, or 'pivot'", ShortName = "col")] - public string[] Column; + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "Columns to unroll, or 'pivot'", Name = "Column", ShortName = "col")] + public string[] Columns; [Argument(ArgumentType.AtMostOnce, HelpText = "Specifies how to unroll multiple pivot columns of different size.")] public UngroupMode Mode = UngroupMode.Inner; @@ -102,7 +102,7 @@ public sealed class Arguments : TransformInputBase /// Specifies how to unroll multiple pivot columns of different size. /// Columns to unroll, or 'pivot' public UngroupTransform(IHostEnvironment env, IDataView input, UngroupMode mode, params string[] columns) - : this(env, new Arguments() { Column = columns, Mode = mode }, input) + : this(env, new Arguments() { Columns = columns, Mode = mode }, input) { } @@ -110,11 +110,11 @@ public UngroupTransform(IHostEnvironment env, Arguments args, IDataView input) : base(env, LoaderSignature, input) { Host.CheckValue(args, nameof(args)); - Host.CheckUserArg(Utils.Size(args.Column) > 0, nameof(args.Column), "There must be at least one pivot column"); - Host.CheckUserArg(args.Column.Distinct().Count() == args.Column.Length, nameof(args.Column), + Host.CheckUserArg(Utils.Size(args.Columns) > 0, nameof(args.Columns), "There must be at least one pivot column"); + Host.CheckUserArg(args.Columns.Distinct().Count() == args.Columns.Length, nameof(args.Columns), "Duplicate pivot columns are not allowed"); - _ungroupBinding = new UngroupBinding(Host, Source.Schema, args.Mode, args.Column); + _ungroupBinding = new UngroupBinding(Host, Source.Schema, args.Mode, args.Columns); } public static UngroupTransform Create(IHostEnvironment env, ModelLoadContext ctx, IDataView input) @@ -323,13 +323,13 @@ private static void Bind(IExceptionContext ectx, Schema inputSchema, { var name = pivotColumns[i]; // REVIEW: replace Check with CheckUser, once existing CheckUser is renamed to CheckUserArg or something. - ectx.CheckUserArg(!string.IsNullOrEmpty(name), nameof(Arguments.Column), "Column name cannot be empty"); + ectx.CheckUserArg(!string.IsNullOrEmpty(name), nameof(Arguments.Columns), "Column name cannot be empty"); int col; if (!inputSchema.TryGetColumnIndex(name, out col)) - throw ectx.ExceptUserArg(nameof(Arguments.Column), "Pivot column '{0}' is not found", name); + throw ectx.ExceptUserArg(nameof(Arguments.Columns), "Pivot column '{0}' is not found", name); var colType = inputSchema[col].Type; if (!colType.IsVector || !(colType.ItemType is PrimitiveType)) - throw ectx.ExceptUserArg(nameof(Arguments.Column), + throw ectx.ExceptUserArg(nameof(Arguments.Columns), "Pivot column '{0}' has type '{1}', but must be a vector of primitive types", name, colType); infos[i] = new PivotColumnInfo(name, col, colType.VectorSize, (PrimitiveType)colType.ItemType); } diff --git a/test/Microsoft.ML.Benchmarks/RffTransform.cs b/test/Microsoft.ML.Benchmarks/RffTransform.cs index 1b486a1551..32c1f7b240 100644 --- a/test/Microsoft.ML.Benchmarks/RffTransform.cs +++ b/test/Microsoft.ML.Benchmarks/RffTransform.cs @@ -29,7 +29,7 @@ public void CV_Multiclass_Digits_RffTransform_OVAAveragedPerceptron() var mlContext = new MLContext(); var reader = mlContext.Data.CreateTextReader(new TextLoader.Arguments { - Column = new[] + Columns = new[] { new TextLoader.Column("Label", DataKind.R4, 64), new TextLoader.Column("Features", DataKind.R4, new [] { new TextLoader.Range() { Min = 0, Max = 63 }}) diff --git a/test/Microsoft.ML.Benchmarks/StochasticDualCoordinateAscentClassifierBench.cs b/test/Microsoft.ML.Benchmarks/StochasticDualCoordinateAscentClassifierBench.cs index 176d41bfa7..7f29c609f8 100644 --- a/test/Microsoft.ML.Benchmarks/StochasticDualCoordinateAscentClassifierBench.cs +++ b/test/Microsoft.ML.Benchmarks/StochasticDualCoordinateAscentClassifierBench.cs @@ -76,7 +76,7 @@ public void TrainSentiment() // Pipeline var arguments = new TextLoader.Arguments() { - Column = new TextLoader.Column[] + Columns = new TextLoader.Column[] { new TextLoader.Column() { diff --git a/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs b/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs index 6fccdc8774..0303944020 100644 --- a/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs +++ b/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs @@ -54,7 +54,7 @@ private IDataView GetBreastCancerDataView() { Arguments = { - Column = new[] + Columns = new[] { new TextLoader.Column("Label", DataKind.R4, 0), new TextLoader.Column("Features", DataKind.R4, @@ -75,7 +75,7 @@ private IDataView GetBreastCancerDataviewWithTextColumns() Arguments = { HasHeader = true, - Column = new[] + Columns = new[] { new TextLoader.Column("Label", type: null, 0), new TextLoader.Column("F1", DataKind.Text, 1), @@ -966,7 +966,7 @@ public void EntryPointPipelineEnsembleText() Arguments = { HasHeader = true, - Column = new[] + Columns = new[] { new TextLoader.Column("Label", DataKind.TX, 0), new TextLoader.Column("Text", DataKind.TX, 3) @@ -1006,7 +1006,7 @@ public void EntryPointPipelineEnsembleText() data = WordHashBagProducingTransformer.Create(Env, new WordHashBagProducingTransformer.Arguments() { - Column = + Columns = new[] { new WordHashBagProducingTransformer.Column() { Name = "Features", Source = new[] { "Text" } }, } }, data); @@ -1177,7 +1177,7 @@ public void EntryPointMulticlassPipelineEnsemble() { Arguments = { - Column = new[] + Columns = new[] { new TextLoader.Column("Label", DataKind.R4, 0), new TextLoader.Column("Features", DataKind.R4, new [] { new TextLoader.Range(1, 4) }) @@ -1323,7 +1323,7 @@ public void EntryPointPipelineEnsembleGetSummary() InputFile = inputFile, Arguments = { - Column = new[] + Columns = new[] { new TextLoader.Column("Label", DataKind.R4, 0), new TextLoader.Column("Features", DataKind.R4, new[] { new TextLoader.Range(1, 8) }), @@ -2433,7 +2433,7 @@ public void TestInputBuilderBasicArgs() var args = new NormalizeTransform.MinMaxArguments() { - Column = new[] + Columns = new[] { NormalizeTransform.AffineColumn.Parse("A"), new NormalizeTransform.AffineColumn() { Name = "B", Source = "B", FixZero = false }, @@ -3331,7 +3331,7 @@ public void EntryPointLinearPredictorSummary() { SeparatorChars = new []{'\t' }, HasHeader = true, - Column = new[] + Columns = new[] { new TextLoader.Column("Label", type: null, 0), new TextLoader.Column("Features", DataKind.Num, new [] { new TextLoader.Range(1, 9) }) @@ -3405,7 +3405,7 @@ public void EntryPointPcaPredictorSummary() { SeparatorChars = new []{'\t' }, HasHeader = false, - Column = new[] + Columns = new[] { new TextLoader.Column("Features", DataKind.R4, new [] { new TextLoader.Range(1, 784) }) } @@ -3541,12 +3541,12 @@ public void EntryPointTreeLeafFeaturizer() var cat = Categorical.CatTransformDict(Env, new OneHotEncodingTransformer.Arguments() { Data = dataView, - Column = new[] { new OneHotEncodingTransformer.Column { Name = "Categories", Source = "Categories" } } + Columns = new[] { new OneHotEncodingTransformer.Column { Name = "Categories", Source = "Categories" } } }); var concat = SchemaManipulation.ConcatColumns(Env, new ColumnConcatenatingTransformer.Arguments() { Data = cat.OutputData, - Column = new[] { new ColumnConcatenatingTransformer.Column { Name = "Features", Source = new[] { "Categories", "NumericFeatures" } } } + Columns = new[] { new ColumnConcatenatingTransformer.Column { Name = "Features", Source = new[] { "Categories", "NumericFeatures" } } } }); var fastTree = FastTree.TrainBinary(Env, new FastTreeBinaryClassificationTrainer.Arguments @@ -3618,7 +3618,7 @@ public void EntryPointWordEmbeddings() Arguments = { SeparatorChars = new []{' '}, - Column = new[] + Columns = new[] { new TextLoader.Column("Text", DataKind.Text, new [] { new TextLoader.Range() { Min = 0, VariableEnd=true, ForceVector=true} }) @@ -3629,7 +3629,7 @@ public void EntryPointWordEmbeddings() var embedding = Transforms.Text.TextAnalytics.WordEmbeddings(Env, new WordEmbeddingsExtractingTransformer.Arguments() { Data = dataView, - Column = new[] { new WordEmbeddingsExtractingTransformer.Column { Name = "Features", Source = "Text" } }, + Columns = new[] { new WordEmbeddingsExtractingTransformer.Column { Name = "Features", Source = "Text" } }, ModelKind = WordEmbeddingsExtractingTransformer.PretrainedModelKind.Sswe }); var result = embedding.OutputData; diff --git a/test/Microsoft.ML.Predictor.Tests/TestIniModels.cs b/test/Microsoft.ML.Predictor.Tests/TestIniModels.cs index edb6bd5e86..aa306c867a 100644 --- a/test/Microsoft.ML.Predictor.Tests/TestIniModels.cs +++ b/test/Microsoft.ML.Predictor.Tests/TestIniModels.cs @@ -525,7 +525,7 @@ public void TestGamRegressionIni() new TextLoader.Arguments() { HasHeader = false, - Column = new[] + Columns = new[] { new TextLoader.Column("Label", DataKind.R4, 0), new TextLoader.Column("Features", DataKind.R4, 1, 9) @@ -564,7 +564,7 @@ public void TestGamBinaryClassificationIni() new TextLoader.Arguments() { HasHeader = false, - Column = new[] + Columns = new[] { new TextLoader.Column("Label", DataKind.BL, 0), new TextLoader.Column("Features", DataKind.R4, 1, 9) diff --git a/test/Microsoft.ML.TestFramework/DataPipe/TestDataPipe.cs b/test/Microsoft.ML.TestFramework/DataPipe/TestDataPipe.cs index ef37c9cad4..dd2b5eaaea 100644 --- a/test/Microsoft.ML.TestFramework/DataPipe/TestDataPipe.cs +++ b/test/Microsoft.ML.TestFramework/DataPipe/TestDataPipe.cs @@ -1227,7 +1227,7 @@ public void TestLdaTransformerEmptyDocumentException() }; var args = new LatentDirichletAllocationTransformer.Arguments() { - Column = new[] { col } + Columns = new[] { col } }; try diff --git a/test/Microsoft.ML.TestFramework/DataPipe/TestDataPipeBase.cs b/test/Microsoft.ML.TestFramework/DataPipe/TestDataPipeBase.cs index 1f6781c274..6eab5a3642 100644 --- a/test/Microsoft.ML.TestFramework/DataPipe/TestDataPipeBase.cs +++ b/test/Microsoft.ML.TestFramework/DataPipe/TestDataPipeBase.cs @@ -353,7 +353,7 @@ protected void VerifyArgParsing(IHostEnvironment env, string[] strs) // For the loader and each transform, verify that custom unparsing is correct. VerifyCustArgs(env, args.Loader); - foreach (var kvp in args.Transform) + foreach (var kvp in args.Transforms) VerifyCustArgs(env, kvp.Value); } @@ -423,7 +423,7 @@ protected bool SaveLoadText(IDataView view, IHostEnvironment env, { // Restrict the comparison to the subset of columns we were able to save. var chooseargs = new ChooseColumnsByIndexTransform.Arguments(); - chooseargs.Index = savable.ToArray(); + chooseargs.Indices = savable.ToArray(); view = new ChooseColumnsByIndexTransform(env, chooseargs, view); } @@ -692,7 +692,7 @@ protected bool SaveLoad(IDataView view, IHostEnvironment env, string suffix = "" { // Restrict the comparison to the subset of columns we were able to save. var chooseargs = new ChooseColumnsByIndexTransform.Arguments(); - chooseargs.Index = savable.ToArray(); + chooseargs.Indices = savable.ToArray(); view = new ChooseColumnsByIndexTransform(env, chooseargs, view); } @@ -743,7 +743,7 @@ protected bool SaveLoadTransposed(IDataView view, IHostEnvironment env, string s { // Restrict the comparison to the subset of columns we were able to save. var chooseargs = new ChooseColumnsByIndexTransform.Arguments(); - chooseargs.Index = savable.ToArray(); + chooseargs.Indices = savable.ToArray(); view = new ChooseColumnsByIndexTransform(env, chooseargs, view); } diff --git a/test/Microsoft.ML.Tests/ImagesTests.cs b/test/Microsoft.ML.Tests/ImagesTests.cs index 755ff169bb..18a1fabf13 100644 --- a/test/Microsoft.ML.Tests/ImagesTests.cs +++ b/test/Microsoft.ML.Tests/ImagesTests.cs @@ -29,7 +29,7 @@ public void TestEstimatorChain() var imageFolder = Path.GetDirectoryName(dataFile); var data = TextLoader.Create(env, new TextLoader.Arguments() { - Column = new[] + Columns = new[] { new TextLoader.Column("ImagePath", DataKind.TX, 0), new TextLoader.Column("Name", DataKind.TX, 1), @@ -37,7 +37,7 @@ public void TestEstimatorChain() }, new MultiFileSource(dataFile)); var invalidData = TextLoader.Create(env, new TextLoader.Arguments() { - Column = new[] + Columns = new[] { new TextLoader.Column("ImagePath", DataKind.R4, 0), } @@ -60,7 +60,7 @@ public void TestEstimatorSaveLoad() var imageFolder = Path.GetDirectoryName(dataFile); var data = TextLoader.Create(env, new TextLoader.Arguments() { - Column = new[] + Columns = new[] { new TextLoader.Column("ImagePath", DataKind.TX, 0), new TextLoader.Column("Name", DataKind.TX, 1), @@ -99,7 +99,7 @@ public void TestSaveImages() var imageFolder = Path.GetDirectoryName(dataFile); var data = TextLoader.Create(env, new TextLoader.Arguments() { - Column = new[] + Columns = new[] { new TextLoader.Column("ImagePath", DataKind.TX, 0), new TextLoader.Column("Name", DataKind.TX, 1), @@ -138,7 +138,7 @@ public void TestGreyscaleTransformImages() var imageFolder = Path.GetDirectoryName(dataFile); var data = TextLoader.Create(env, new TextLoader.Arguments() { - Column = new[] + Columns = new[] { new TextLoader.Column("ImagePath", DataKind.TX, 0), new TextLoader.Column("Name", DataKind.TX, 1), @@ -189,7 +189,7 @@ public void TestBackAndForthConversionWithAlphaInterleave() var imageFolder = Path.GetDirectoryName(dataFile); var data = TextLoader.Create(env, new TextLoader.Arguments() { - Column = new[] + Columns = new[] { new TextLoader.Column("ImagePath", DataKind.TX, 0), new TextLoader.Column("Name", DataKind.TX, 1), @@ -204,7 +204,7 @@ public void TestBackAndForthConversionWithAlphaInterleave() InterleaveArgb = true, Offset = -1f, Scale = 255f / 2, - Column = new VectorToImageTransform.Column[1]{ + Columns = new VectorToImageTransform.Column[1]{ new VectorToImageTransform.Column() { Source= "ImagePixels", Name = "ImageRestored" , ImageHeight=imageHeight, ImageWidth=imageWidth, ContainsAlpha=true} } }, pixels); @@ -256,7 +256,7 @@ public void TestBackAndForthConversionWithoutAlphaInterleave() var imageFolder = Path.GetDirectoryName(dataFile); var data = TextLoader.Create(env, new TextLoader.Arguments() { - Column = new[] + Columns = new[] { new TextLoader.Column("ImagePath", DataKind.TX, 0), new TextLoader.Column("Name", DataKind.TX, 1), @@ -271,7 +271,7 @@ public void TestBackAndForthConversionWithoutAlphaInterleave() InterleaveArgb = true, Offset = -1f, Scale = 255f / 2, - Column = new VectorToImageTransform.Column[1]{ + Columns = new VectorToImageTransform.Column[1]{ new VectorToImageTransform.Column() { Source= "ImagePixels", Name = "ImageRestored" , ImageHeight=imageHeight, ImageWidth=imageWidth, ContainsAlpha=false} } }, pixels); @@ -323,7 +323,7 @@ public void TestBackAndForthConversionWithAlphaNoInterleave() var imageFolder = Path.GetDirectoryName(dataFile); var data = TextLoader.Create(env, new TextLoader.Arguments() { - Column = new[] + Columns = new[] { new TextLoader.Column("ImagePath", DataKind.TX, 0), new TextLoader.Column("Name", DataKind.TX, 1), @@ -338,7 +338,7 @@ public void TestBackAndForthConversionWithAlphaNoInterleave() InterleaveArgb = false, Offset = -1f, Scale = 255f / 2, - Column = new VectorToImageTransform.Column[1]{ + Columns = new VectorToImageTransform.Column[1]{ new VectorToImageTransform.Column() { Source= "ImagePixels", Name = "ImageRestored" , ImageHeight=imageHeight, ImageWidth=imageWidth, ContainsAlpha=true} } }, pixels); @@ -390,7 +390,7 @@ public void TestBackAndForthConversionWithoutAlphaNoInterleave() var imageFolder = Path.GetDirectoryName(dataFile); var data = TextLoader.Create(env, new TextLoader.Arguments() { - Column = new[] + Columns = new[] { new TextLoader.Column("ImagePath", DataKind.TX, 0), new TextLoader.Column("Name", DataKind.TX, 1), @@ -405,7 +405,7 @@ public void TestBackAndForthConversionWithoutAlphaNoInterleave() InterleaveArgb = false, Offset = -1f, Scale = 255f / 2, - Column = new VectorToImageTransform.Column[1]{ + Columns = new VectorToImageTransform.Column[1]{ new VectorToImageTransform.Column() { Source= "ImagePixels", Name = "ImageRestored" , ImageHeight=imageHeight, ImageWidth=imageWidth, ContainsAlpha=false} } }, pixels); @@ -457,7 +457,7 @@ public void TestBackAndForthConversionWithAlphaInterleaveNoOffset() var imageFolder = Path.GetDirectoryName(dataFile); var data = TextLoader.Create(env, new TextLoader.Arguments() { - Column = new[] + Columns = new[] { new TextLoader.Column("ImagePath", DataKind.TX, 0), new TextLoader.Column("Name", DataKind.TX, 1), @@ -471,7 +471,7 @@ public void TestBackAndForthConversionWithAlphaInterleaveNoOffset() IDataView backToBitmaps = new VectorToImageTransform(env, new VectorToImageTransform.Arguments() { InterleaveArgb = true, - Column = new VectorToImageTransform.Column[1]{ + Columns = new VectorToImageTransform.Column[1]{ new VectorToImageTransform.Column() { Source= "ImagePixels", Name = "ImageRestored" , ImageHeight=imageHeight, ImageWidth=imageWidth, ContainsAlpha=true} } }, pixels); @@ -523,7 +523,7 @@ public void TestBackAndForthConversionWithoutAlphaInterleaveNoOffset() var imageFolder = Path.GetDirectoryName(dataFile); var data = TextLoader.Create(env, new TextLoader.Arguments() { - Column = new[] + Columns = new[] { new TextLoader.Column("ImagePath", DataKind.TX, 0), new TextLoader.Column("Name", DataKind.TX, 1), @@ -537,7 +537,7 @@ public void TestBackAndForthConversionWithoutAlphaInterleaveNoOffset() IDataView backToBitmaps = new VectorToImageTransform(env, new VectorToImageTransform.Arguments() { InterleaveArgb = true, - Column = new VectorToImageTransform.Column[1]{ + Columns = new VectorToImageTransform.Column[1]{ new VectorToImageTransform.Column() { Source= "ImagePixels", Name = "ImageRestored" , ImageHeight=imageHeight, ImageWidth=imageWidth, ContainsAlpha=false} } }, pixels); @@ -589,7 +589,7 @@ public void TestBackAndForthConversionWithAlphaNoInterleaveNoOffset() var imageFolder = Path.GetDirectoryName(dataFile); var data = TextLoader.Create(env, new TextLoader.Arguments() { - Column = new[] + Columns = new[] { new TextLoader.Column("ImagePath", DataKind.TX, 0), new TextLoader.Column("Name", DataKind.TX, 1), @@ -603,7 +603,7 @@ public void TestBackAndForthConversionWithAlphaNoInterleaveNoOffset() IDataView backToBitmaps = new VectorToImageTransform(env, new VectorToImageTransform.Arguments() { InterleaveArgb = false, - Column = new VectorToImageTransform.Column[1]{ + Columns = new VectorToImageTransform.Column[1]{ new VectorToImageTransform.Column() { Source= "ImagePixels", Name = "ImageRestored" , ImageHeight=imageHeight, ImageWidth=imageWidth, ContainsAlpha=true} } }, pixels); @@ -655,7 +655,7 @@ public void TestBackAndForthConversionWithoutAlphaNoInterleaveNoOffset() var imageFolder = Path.GetDirectoryName(dataFile); var data = TextLoader.Create(env, new TextLoader.Arguments() { - Column = new[] + Columns = new[] { new TextLoader.Column("ImagePath", DataKind.TX, 0), new TextLoader.Column("Name", DataKind.TX, 1), @@ -668,7 +668,7 @@ public void TestBackAndForthConversionWithoutAlphaNoInterleaveNoOffset() IDataView backToBitmaps = new VectorToImageTransform(env, new VectorToImageTransform.Arguments() { InterleaveArgb = false, - Column = new VectorToImageTransform.Column[1]{ + Columns = new VectorToImageTransform.Column[1]{ new VectorToImageTransform.Column() { Source= "ImagePixels", Name = "ImageRestored" , ImageHeight=imageHeight, ImageWidth=imageWidth, ContainsAlpha=false} } }, pixels); diff --git a/test/Microsoft.ML.Tests/Scenarios/OvaTest.cs b/test/Microsoft.ML.Tests/Scenarios/OvaTest.cs index e3e84bccd5..bc1a122a51 100644 --- a/test/Microsoft.ML.Tests/Scenarios/OvaTest.cs +++ b/test/Microsoft.ML.Tests/Scenarios/OvaTest.cs @@ -23,7 +23,7 @@ public void OvaLogisticRegression() var mlContext = new MLContext(seed: 1); var reader = new TextLoader(mlContext, new TextLoader.Arguments() { - Column = new[] + Columns = new[] { new TextLoader.Column("Label", DataKind.R4, 0), new TextLoader.Column("Features", DataKind.R4, new [] { new TextLoader.Range(1, 4) }), @@ -57,7 +57,7 @@ public void OvaAveragedPerceptron() var mlContext = new MLContext(seed: 1); var reader = new TextLoader(mlContext, new TextLoader.Arguments() { - Column = new[] + Columns = new[] { new TextLoader.Column("Label", DataKind.R4, 0), new TextLoader.Column("Features", DataKind.R4, new [] { new TextLoader.Range(1, 4) }), @@ -91,7 +91,7 @@ public void OvaFastTree() var mlContext = new MLContext(seed: 1); var reader = new TextLoader(mlContext, new TextLoader.Arguments() { - Column = new[] + Columns = new[] { new TextLoader.Column("Label", DataKind.R4, 0), new TextLoader.Column("Features", DataKind.R4, new [] { new TextLoader.Range(1, 4) }), @@ -125,7 +125,7 @@ public void OvaLinearSvm() var mlContext = new MLContext(seed: 1); var reader = new TextLoader(mlContext, new TextLoader.Arguments() { - Column = new[] + Columns = new[] { new TextLoader.Column("Label", DataKind.R4, 0), new TextLoader.Column("Features", DataKind.R4, new [] { new TextLoader.Range(1, 4) }), diff --git a/test/Microsoft.ML.Tests/Scenarios/TensorflowTests.cs b/test/Microsoft.ML.Tests/Scenarios/TensorflowTests.cs index 430ae1c28e..c53cc380c7 100644 --- a/test/Microsoft.ML.Tests/Scenarios/TensorflowTests.cs +++ b/test/Microsoft.ML.Tests/Scenarios/TensorflowTests.cs @@ -27,7 +27,7 @@ public void TensorFlowTransforCifarEndToEndTest() var mlContext = new MLContext(seed: 1, conc: 1); var data = TextLoader.Create(mlContext, new TextLoader.Arguments() { - Column = new[] + Columns = new[] { new TextLoader.Column("ImagePath", DataKind.TX, 0), new TextLoader.Column("Label", DataKind.TX, 1), diff --git a/test/Microsoft.ML.Tests/TermEstimatorTests.cs b/test/Microsoft.ML.Tests/TermEstimatorTests.cs index 84bf72e876..ed4a5b9d74 100644 --- a/test/Microsoft.ML.Tests/TermEstimatorTests.cs +++ b/test/Microsoft.ML.Tests/TermEstimatorTests.cs @@ -56,7 +56,7 @@ void TestDifferentTypes() var loader = new TextLoader(Env, new TextLoader.Arguments { - Column = new[]{ + Columns = new[]{ new TextLoader.Column("float1", DataKind.R4, 9), new TextLoader.Column("float4", DataKind.R4, new[]{new TextLoader.Range(9), new TextLoader.Range(10), new TextLoader.Range(11), new TextLoader.Range(12) }), new TextLoader.Column("double1", DataKind.R8, 9), diff --git a/test/Microsoft.ML.Tests/TrainerEstimators/FAFMEstimator.cs b/test/Microsoft.ML.Tests/TrainerEstimators/FAFMEstimator.cs index 85b096ad30..af38e0da2b 100644 --- a/test/Microsoft.ML.Tests/TrainerEstimators/FAFMEstimator.cs +++ b/test/Microsoft.ML.Tests/TrainerEstimators/FAFMEstimator.cs @@ -38,7 +38,7 @@ private TextLoader.Arguments GetFafmBCLoaderArgs() { Separator = "\t", HasHeader = false, - Column = new[] + Columns = new[] { new TextLoader.Column("Feature1", DataKind.R4, new [] { new TextLoader.Range(1, 2) }), new TextLoader.Column("Feature2", DataKind.R4, new [] { new TextLoader.Range(3, 4) }), diff --git a/test/Microsoft.ML.Tests/TrainerEstimators/MatrixFactorizationTests.cs b/test/Microsoft.ML.Tests/TrainerEstimators/MatrixFactorizationTests.cs index 811cec012a..9233eb2a5f 100644 --- a/test/Microsoft.ML.Tests/TrainerEstimators/MatrixFactorizationTests.cs +++ b/test/Microsoft.ML.Tests/TrainerEstimators/MatrixFactorizationTests.cs @@ -124,7 +124,7 @@ private TextLoader.Arguments GetLoaderArgs(string labelColumnName, string matrix { Separator = "\t", HasHeader = true, - Column = new[] + Columns = new[] { new TextLoader.Column(labelColumnName, DataKind.R4, new [] { new TextLoader.Range(0) }), new TextLoader.Column(matrixColumnIndexColumnName, DataKind.U4, new [] { new TextLoader.Range(1) }, new KeyRange(0, 19)), diff --git a/test/Microsoft.ML.Tests/TrainerEstimators/PriorRandomTests.cs b/test/Microsoft.ML.Tests/TrainerEstimators/PriorRandomTests.cs index a5aef45e2f..8a2c13751b 100644 --- a/test/Microsoft.ML.Tests/TrainerEstimators/PriorRandomTests.cs +++ b/test/Microsoft.ML.Tests/TrainerEstimators/PriorRandomTests.cs @@ -17,7 +17,7 @@ private IDataView GetBreastCancerDataviewWithTextColumns() new TextLoader.Arguments() { HasHeader = true, - Column = new[] + Columns = new[] { new TextLoader.Column("Label", type: null, 0), new TextLoader.Column("F1", DataKind.Text, 1), diff --git a/test/Microsoft.ML.Tests/TrainerEstimators/TrainerEstimators.cs b/test/Microsoft.ML.Tests/TrainerEstimators/TrainerEstimators.cs index 85af744ac7..4e438f7cb0 100644 --- a/test/Microsoft.ML.Tests/TrainerEstimators/TrainerEstimators.cs +++ b/test/Microsoft.ML.Tests/TrainerEstimators/TrainerEstimators.cs @@ -33,7 +33,7 @@ public void PCATrainerEstimator() { HasHeader = true, Separator = "\t", - Column = new[] + Columns = new[] { new TextLoader.Column(featureColumn, DataKind.R4, new [] { new TextLoader.Range(1, 784) }) } @@ -61,7 +61,7 @@ public void KMeansEstimator() { HasHeader = true, Separator = "\t", - Column = new[] + Columns = new[] { new TextLoader.Column(featureColumn, DataKind.R4, new [] { new TextLoader.Range(1, 784) }), new TextLoader.Column(weights, DataKind.R4, 0) @@ -116,7 +116,7 @@ public void TestEstimatorMultiClassNaiveBayesTrainer() { Separator = "\t", HasHeader = true, - Column = new[] + Columns = new[] { new TextLoader.Column("Label", DataKind.BL, 0), new TextLoader.Column("SentimentText", DataKind.Text, 1) @@ -136,7 +136,7 @@ public void TestEstimatorMultiClassNaiveBayesTrainer() { HasHeader = true, Separator = "\t", - Column = new[] + Columns = new[] { new TextLoader.Column("Label", DataKind.R4, 0), new TextLoader.Column("Workclass", DataKind.Text, 1), @@ -159,7 +159,7 @@ private IDataView GetRegressionPipeline() { Separator = ";", HasHeader = true, - Column = new[] + Columns = new[] { new TextLoader.Column("Label", DataKind.R4, 11), new TextLoader.Column("Features", DataKind.R4, new [] { new TextLoader.Range(0, 10) } ) @@ -173,7 +173,7 @@ private TextLoader.Arguments GetIrisLoaderArgs() { Separator = "comma", HasHeader = true, - Column = new[] + Columns = new[] { new TextLoader.Column("Features", DataKind.R4, new [] { new TextLoader.Range(0, 3) }), new TextLoader.Column("Label", DataKind.Text, 4) @@ -186,7 +186,7 @@ private TextLoader.Arguments GetIrisLoaderArgs() var data = new TextLoader(Env, new TextLoader.Arguments() { Separator = "comma", - Column = new[] + Columns = new[] { new TextLoader.Column("Features", DataKind.R4, new [] { new TextLoader.Range(0, 3) }), new TextLoader.Column("Label", DataKind.Text, 4) diff --git a/test/Microsoft.ML.Tests/Transformers/ConcatTests.cs b/test/Microsoft.ML.Tests/Transformers/ConcatTests.cs index c1b08aaa36..bcf638f977 100644 --- a/test/Microsoft.ML.Tests/Transformers/ConcatTests.cs +++ b/test/Microsoft.ML.Tests/Transformers/ConcatTests.cs @@ -26,7 +26,7 @@ void TestConcat() var source = new MultiFileSource(dataPath); var loader = new TextLoader(Env, new TextLoader.Arguments { - Column = new[]{ + Columns = new[]{ new TextLoader.Column("float1", DataKind.R4, 9), new TextLoader.Column("float4", DataKind.R4, new[]{new TextLoader.Range(9), new TextLoader.Range(10), new TextLoader.Range(11), new TextLoader.Range(12) }), new TextLoader.Column("float6", DataKind.R4, new[]{new TextLoader.Range(9), new TextLoader.Range(10), new TextLoader.Range(11), new TextLoader.Range(12, 14) }), @@ -83,7 +83,7 @@ public void ConcatWithAliases() var source = new MultiFileSource(dataPath); var loader = new TextLoader(Env, new TextLoader.Arguments { - Column = new[]{ + Columns = new[]{ new TextLoader.Column("float1", DataKind.R4, 9), new TextLoader.Column("float4", DataKind.R4, new[]{new TextLoader.Range(9), new TextLoader.Range(10), new TextLoader.Range(11), new TextLoader.Range(12) }), new TextLoader.Column("vfloat", DataKind.R4, new[]{new TextLoader.Range(9), new TextLoader.Range(10), new TextLoader.Range(11), new TextLoader.Range(12, null) { AutoEnd = false, VariableEnd = true } }) diff --git a/test/Microsoft.ML.Tests/Transformers/CopyColumnEstimatorTests.cs b/test/Microsoft.ML.Tests/Transformers/CopyColumnEstimatorTests.cs index 775c428b29..328c2d8490 100644 --- a/test/Microsoft.ML.Tests/Transformers/CopyColumnEstimatorTests.cs +++ b/test/Microsoft.ML.Tests/Transformers/CopyColumnEstimatorTests.cs @@ -128,7 +128,7 @@ void TestMetadataCopy() var dataView = ComponentCreation.CreateDataView(env, data); var term = ValueToKeyMappingTransformer.Create(env, new ValueToKeyMappingTransformer.Arguments() { - Column = new[] { new ValueToKeyMappingTransformer.Column() { Source = "Term", Name = "T" } } + Columns = new[] { new ValueToKeyMappingTransformer.Column() { Source = "Term", Name = "T" } } }, dataView); var est = new ColumnCopyingEstimator(env, "T", "T1"); var transformer = est.Fit(term); diff --git a/test/Microsoft.ML.Tests/Transformers/KeyToValueTests.cs b/test/Microsoft.ML.Tests/Transformers/KeyToValueTests.cs index 9331c73b0e..9be2649597 100644 --- a/test/Microsoft.ML.Tests/Transformers/KeyToValueTests.cs +++ b/test/Microsoft.ML.Tests/Transformers/KeyToValueTests.cs @@ -27,7 +27,7 @@ public void KeyToValueWorkout() var reader = new TextLoader(Env, new TextLoader.Arguments { - Column = new[] + Columns = new[] { new TextLoader.Column("ScalarString", DataKind.TX, 1), new TextLoader.Column("VectorString", DataKind.TX, new[] {new TextLoader.Range(1, 4) }), diff --git a/test/Microsoft.ML.Tests/Transformers/NormalizerTests.cs b/test/Microsoft.ML.Tests/Transformers/NormalizerTests.cs index d199c0618e..4ee05d259b 100644 --- a/test/Microsoft.ML.Tests/Transformers/NormalizerTests.cs +++ b/test/Microsoft.ML.Tests/Transformers/NormalizerTests.cs @@ -31,7 +31,7 @@ public void NormalizerWorkout() var loader = new TextLoader(Env, new TextLoader.Arguments { - Column = new[] { + Columns = new[] { new TextLoader.Column("float1", DataKind.R4, 1), new TextLoader.Column("float4", DataKind.R4, new[]{new TextLoader.Range(1, 4) }), new TextLoader.Column("double1", DataKind.R8, 1), @@ -95,7 +95,7 @@ public void NormalizerParameters() var loader = new TextLoader(Env, new TextLoader.Arguments { - Column = new[] { + Columns = new[] { new TextLoader.Column("float1", DataKind.R4, 1), new TextLoader.Column("float4", DataKind.R4, new[]{new TextLoader.Range(1, 4) }), new TextLoader.Column("double1", DataKind.R8, 1), @@ -212,7 +212,7 @@ public void SimpleConstructorsAndExtensions() var loader = new TextLoader(Env, new TextLoader.Arguments { - Column = new[] { + Columns = new[] { new TextLoader.Column("Label", DataKind.R4, 0), new TextLoader.Column("float4", DataKind.R4, new[]{new TextLoader.Range(1, 4) }), } diff --git a/test/Microsoft.ML.Tests/Transformers/TextFeaturizerTests.cs b/test/Microsoft.ML.Tests/Transformers/TextFeaturizerTests.cs index 432bbb8291..0367a4e13b 100644 --- a/test/Microsoft.ML.Tests/Transformers/TextFeaturizerTests.cs +++ b/test/Microsoft.ML.Tests/Transformers/TextFeaturizerTests.cs @@ -173,7 +173,7 @@ public void StopWordsRemoverFromFactory() string sentimentDataPath = GetDataPath("wikipedia-detox-250-line-data.tsv"); var data = TextLoader.Create(ML, new TextLoader.Arguments() { - Column = new[] + Columns = new[] { new TextLoader.Column("Text", DataKind.TX, 1) } From 361e990e336759a5150d672f3201b274b064f916 Mon Sep 17 00:00:00 2001 From: "REDMOND\\nakazmi" Date: Wed, 16 Jan 2019 15:08:21 -0800 Subject: [PATCH 2/7] Fixing CmdParser and EntryPoints InputBuilder to not breaks cmd line and ep tests --- .../CommandLine/CmdParser.cs | 12 +++++++++++ .../EntryPoints/InputBuilder.cs | 2 +- .../ValueToKeyMappingTransformer.cs | 20 +++++++++---------- .../ValueToKeyMappingTransformerImpl.cs | 4 ++-- .../CrossValidationMacro.cs | 4 ++-- .../FeatureCombiner.cs | 2 +- src/Microsoft.ML.Transforms/OneHotEncoding.cs | 4 ++-- .../Text/StopWordsRemovingTransformer.cs | 10 +++++----- .../Text/WordBagTransform.cs | 6 +++--- .../Text/WordHashBagProducingTransform.cs | 2 +- .../Common/EntryPoints/core_manifest.json | 4 ++-- .../UnitTests/TestEntryPoints.cs | 2 +- 12 files changed, 42 insertions(+), 30 deletions(-) diff --git a/src/Microsoft.ML.Core/CommandLine/CmdParser.cs b/src/Microsoft.ML.Core/CommandLine/CmdParser.cs index cecb73fb4b..b8e6c69cf9 100644 --- a/src/Microsoft.ML.Core/CommandLine/CmdParser.cs +++ b/src/Microsoft.ML.Core/CommandLine/CmdParser.cs @@ -477,6 +477,11 @@ private static ArgumentInfo GetArgumentInfo(Type type, object defaults) throw Contracts.Except("Duplicate default argument '{0}' vs '{1}'", def.LongName, field.Name); string name = ArgCase(field.Name); + + string attrName = null; + if (attr.Name != null && attr.Name.ToLowerInvariant() != name.ToLowerInvariant()) + attrName = attr.Name; + string[] nicks; // Semantics of ShortName: // The string provided represents an array of names separated by commas and spaces, once empty entries are removed. @@ -495,6 +500,11 @@ private static ArgumentInfo GetArgumentInfo(Type type, object defaults) if (map.ContainsKey(name.ToLowerInvariant())) throw Contracts.Except("Duplicate name '{0}' in argument type '{1}'", name, type.Name); + if (attrName != null) + { + if (map.ContainsKey(attrName.ToLowerInvariant())) + throw Contracts.Except("Duplicate name '{0}' in argument type '{1}'", attrName, type.Name); + } if (nicks != null) { foreach (var nick in nicks) @@ -508,6 +518,8 @@ private static ArgumentInfo GetArgumentInfo(Type type, object defaults) // Note that we put the default arg in the map to ensure that no other args use the same name. map.Add(name.ToLowerInvariant(), arg); + if (attrName != null) + map.Add(attrName.ToLowerInvariant(), arg); if (nicks != null) { foreach (var nick in nicks) diff --git a/src/Microsoft.ML.Data/EntryPoints/InputBuilder.cs b/src/Microsoft.ML.Data/EntryPoints/InputBuilder.cs index 40a9e2a5b5..1b28e956dd 100644 --- a/src/Microsoft.ML.Data/EntryPoints/InputBuilder.cs +++ b/src/Microsoft.ML.Data/EntryPoints/InputBuilder.cs @@ -98,7 +98,7 @@ private int GetFieldIndex(string name) _ectx.AssertNonEmpty(name); for (int i = 0; i < _attrs.Length; i++) { - if (name == (_attrs[i].Input.Name ?? _fields[i].Name) || AnyMatch(name, _attrs[i].Input.Aliases)) + if (name == _attrs[i].Input.Name || name == _fields[i].Name || AnyMatch(name, _attrs[i].Input.Aliases)) return i; } return -1; diff --git a/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingTransformer.cs b/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingTransformer.cs index 3f1ec8de7d..2586940303 100644 --- a/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingTransformer.cs +++ b/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingTransformer.cs @@ -49,11 +49,11 @@ public abstract class ColumnBase : OneToOneColumn [Argument(ArgumentType.AtMostOnce, HelpText = "Maximum number of terms to keep when auto-training", ShortName = "max")] public int? MaxNumTerms; - [Argument(ArgumentType.AtMostOnce, HelpText = "Comma separated list of terms", Visibility = ArgumentAttribute.VisibilityType.CmdLineOnly)] - public string Terms; + [Argument(ArgumentType.AtMostOnce, HelpText = "Comma separated list of terms", Name = "Terms", Visibility = ArgumentAttribute.VisibilityType.CmdLineOnly)] + public string Term; - [Argument(ArgumentType.AtMostOnce, HelpText = "List of terms", Visibility = ArgumentAttribute.VisibilityType.EntryPointsOnly)] - public string[] Term; + [Argument(ArgumentType.AtMostOnce, HelpText = "List of terms", Name = "Term", Visibility = ArgumentAttribute.VisibilityType.EntryPointsOnly)] + public string[] Terms; [Argument(ArgumentType.AtMostOnce, HelpText = "How items should be ordered when vectorized. By default, they will be in the order encountered. " + "If by value items are sorted according to their default comparison, for example, text sorting will be case sensitive (for example, 'A' then 'Z' then 'a').")] @@ -68,7 +68,7 @@ protected override bool TryUnparseCore(StringBuilder sb) // REVIEW: This pattern isn't robust enough. If a new field is added, this code needs // to be updated accordingly, or it will break. The only protection we have against this // is unit tests.... - if (MaxNumTerms != null || !string.IsNullOrEmpty(Terms) || Sort != null || TextKeyValues != null) + if (MaxNumTerms != null || !string.IsNullOrEmpty(Term) || Sort != null || TextKeyValues != null) return false; return base.TryUnparseCore(sb); } @@ -108,9 +108,9 @@ public abstract class ArgumentsBase : TransformInputBase public int MaxNumTerms = ValueToKeyMappingEstimator.Defaults.MaxNumTerms; [Argument(ArgumentType.AtMostOnce, HelpText = "Comma separated list of terms", Name = "Terms", SortOrder = 105, Visibility = ArgumentAttribute.VisibilityType.CmdLineOnly)] - public string TermsList; + public string Term; - [Argument(ArgumentType.AtMostOnce, HelpText = "List of terms", SortOrder = 106, Visibility = ArgumentAttribute.VisibilityType.EntryPointsOnly)] + [Argument(ArgumentType.AtMostOnce, HelpText = "List of terms", Name = "Term", SortOrder = 106, Visibility = ArgumentAttribute.VisibilityType.EntryPointsOnly)] public string[] Terms; [Argument(ArgumentType.AtMostOnce, IsInputFileName = true, HelpText = "Data file containing the terms", ShortName = "data", SortOrder = 110, Visibility = ArgumentAttribute.VisibilityType.CmdLineOnly)] @@ -321,7 +321,7 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat var cols = new ColumnInfo[args.Columns.Length]; using (var ch = env.Start("ValidateArgs")) { - if ((args.Terms != null || !string.IsNullOrEmpty(args.TermsList)) && + if ((args.Terms != null || !string.IsNullOrEmpty(args.Term)) && (!string.IsNullOrWhiteSpace(args.DataFile) || args.Loader != null || !string.IsNullOrWhiteSpace(args.TermsColumn))) { @@ -341,9 +341,9 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat item.Name, item.MaxNumTerms ?? args.MaxNumTerms, sortOrder, - item.Term, + item.Terms, item.TextKeyValues ?? args.TextKeyValues); - cols[i].Terms = item.Terms ?? args.TermsList; + cols[i].Terms = item.Term ?? args.Term; }; } return new ValueToKeyMappingTransformer(env, input, cols, args.DataFile, args.TermsColumn, args.Loader).MakeDataTransform(input); diff --git a/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingTransformerImpl.cs b/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingTransformerImpl.cs index 0a116e2763..90f9d15d45 100644 --- a/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingTransformerImpl.cs +++ b/src/Microsoft.ML.Data/Transforms/ValueToKeyMappingTransformerImpl.cs @@ -219,7 +219,7 @@ public override void ParseAddTermArg(ref ReadOnlyMemory terms, IChannel ch } if (Count == 0) - throw ch.ExceptUserArg(nameof(Arguments.TermsList), "Nothing parsed as '{0}'", ItemType); + throw ch.ExceptUserArg(nameof(Arguments.Term), "Nothing parsed as '{0}'", ItemType); } /// @@ -244,7 +244,7 @@ public override void ParseAddTermArg(string[] terms, IChannel ch) } if (Count == 0) - throw ch.ExceptUserArg(nameof(Arguments.TermsList), "Nothing parsed as '{0}'", ItemType); + throw ch.ExceptUserArg(nameof(Arguments.Term), "Nothing parsed as '{0}'", ItemType); } } diff --git a/src/Microsoft.ML.EntryPoints/CrossValidationMacro.cs b/src/Microsoft.ML.EntryPoints/CrossValidationMacro.cs index 5b196a6ee3..72e72fbe30 100644 --- a/src/Microsoft.ML.EntryPoints/CrossValidationMacro.cs +++ b/src/Microsoft.ML.EntryPoints/CrossValidationMacro.cs @@ -95,7 +95,7 @@ public sealed class Output { [TlcModule.Output(Desc = "The final model including the trained predictor model and the model from the transforms, " + "provided as the Input.TransformModel.", SortOrder = 1)] - public PredictorModel[] PredictorModels; + public PredictorModel[] PredictorModel; [TlcModule.Output(Desc = "Warning dataset", SortOrder = 3)] public IDataView Warnings; @@ -289,7 +289,7 @@ public static CommonOutputs.MacroOutput CrossValidate( } // Convert the predictor models to an array of predictor models. - MacroUtils.ConvertIPredictorModelsToArray(env, node.Context, subGraphNodes, predModelVars, node.GetOutputVariableName(nameof(Output.PredictorModels))); + MacroUtils.ConvertIPredictorModelsToArray(env, node.Context, subGraphNodes, predModelVars, node.GetOutputVariableName(nameof(Output.PredictorModel))); // Convert the warnings, overall, per instance and confusion matrix data views into an array. var warningsArrayVar = new ArrayVar(); diff --git a/src/Microsoft.ML.EntryPoints/FeatureCombiner.cs b/src/Microsoft.ML.EntryPoints/FeatureCombiner.cs index c057b8c890..29d0a73730 100644 --- a/src/Microsoft.ML.EntryPoints/FeatureCombiner.cs +++ b/src/Microsoft.ML.EntryPoints/FeatureCombiner.cs @@ -101,7 +101,7 @@ private static IDataView ApplyKeyToVec(List new ValueToKeyMappingTransformer.Column() { Name = c.Output, Source = c.Output, Terms = GetTerms(viewTrain, c.Input) }) + .Select(c => new ValueToKeyMappingTransformer.Column() { Name = c.Output, Source = c.Output, Term = GetTerms(viewTrain, c.Input) }) .ToArray(), TextKeyValues = true }, diff --git a/src/Microsoft.ML.Transforms/OneHotEncoding.cs b/src/Microsoft.ML.Transforms/OneHotEncoding.cs index cb6b56aab8..745ad180fd 100644 --- a/src/Microsoft.ML.Transforms/OneHotEncoding.cs +++ b/src/Microsoft.ML.Transforms/OneHotEncoding.cs @@ -135,8 +135,8 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat column.OutputKind ?? args.OutputKind, column.MaxNumTerms ?? args.MaxNumTerms, column.Sort ?? args.Sort, - column.Term ?? args.Terms); - col.SetTerms(column.Terms ?? args.TermsList); + column.Terms ?? args.Terms); + col.SetTerms(column.Term ?? args.Term); columns.Add(col); } return new OneHotEncodingEstimator(env, columns.ToArray(), args.DataFile, args.TermsColumn, args.Loader).Fit(input).Transform(input) as IDataTransform; diff --git a/src/Microsoft.ML.Transforms/Text/StopWordsRemovingTransformer.cs b/src/Microsoft.ML.Transforms/Text/StopWordsRemovingTransformer.cs index 9e6fec3721..e3e73ad06e 100644 --- a/src/Microsoft.ML.Transforms/Text/StopWordsRemovingTransformer.cs +++ b/src/Microsoft.ML.Transforms/Text/StopWordsRemovingTransformer.cs @@ -617,9 +617,9 @@ public bool TryUnparse(StringBuilder sb) public abstract class ArgumentsBase { [Argument(ArgumentType.AtMostOnce, HelpText = "Comma separated list of stopwords", Name = "Stopwords", Visibility = ArgumentAttribute.VisibilityType.CmdLineOnly)] - public string StopwordsList; + public string Stopword; - [Argument(ArgumentType.AtMostOnce, HelpText = "List of stopwords", Visibility = ArgumentAttribute.VisibilityType.EntryPointsOnly)] + [Argument(ArgumentType.AtMostOnce, HelpText = "List of stopwords", Name = "Stopword", Visibility = ArgumentAttribute.VisibilityType.EntryPointsOnly)] public string[] Stopwords; [Argument(ArgumentType.AtMostOnce, IsInputFileName = true, HelpText = "Data file containing the stopwords", ShortName = "data", SortOrder = 2, Visibility = ArgumentAttribute.VisibilityType.CmdLineOnly)] @@ -647,7 +647,7 @@ public IDataTransform CreateComponent(IHostEnvironment env, IDataView input, One if (Utils.Size(Stopwords) > 0) return new CustomStopWordsRemovingTransform(env, Stopwords, column.Select(x => (x.Source, x.Name)).ToArray()).Transform(input) as IDataTransform; else - return new CustomStopWordsRemovingTransform(env, StopwordsList, DataFile, StopwordsColumn, Loader, column.Select(x => (x.Source, x.Name)).ToArray()).Transform(input) as IDataTransform; + return new CustomStopWordsRemovingTransform(env, Stopword, DataFile, StopwordsColumn, Loader, column.Select(x => (x.Source, x.Name)).ToArray()).Transform(input) as IDataTransform; } } @@ -762,7 +762,7 @@ private void LoadStopWords(IChannel ch, ReadOnlyMemory stopwords, string d warnEmpty = false; } } - ch.CheckUserArg(stopWordsMap.Count > 0, nameof(Arguments.StopwordsList), "stopwords is empty"); + ch.CheckUserArg(stopWordsMap.Count > 0, nameof(Arguments.Stopword), "stopwords is empty"); } else { @@ -945,7 +945,7 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat if (Utils.Size(args.Stopwords) > 0) transfrom = new CustomStopWordsRemovingTransform(env, args.Stopwords, cols); else - transfrom = new CustomStopWordsRemovingTransform(env, args.StopwordsList, args.DataFile, args.StopwordsColumn, args.Loader, cols); + transfrom = new CustomStopWordsRemovingTransform(env, args.Stopword, args.DataFile, args.StopwordsColumn, args.Loader, cols); return transfrom.MakeDataTransform(input); } diff --git a/src/Microsoft.ML.Transforms/Text/WordBagTransform.cs b/src/Microsoft.ML.Transforms/Text/WordBagTransform.cs index cff29df23b..f7b6fb5b53 100644 --- a/src/Microsoft.ML.Transforms/Text/WordBagTransform.cs +++ b/src/Microsoft.ML.Transforms/Text/WordBagTransform.cs @@ -307,7 +307,7 @@ public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataV new ValueToKeyMappingTransformer.Arguments() { MaxNumTerms = int.MaxValue, - TermsList = termLoaderArgs.TermsList, + Term = termLoaderArgs.Term, Terms = termLoaderArgs.Terms, DataFile = termLoaderArgs.DataFile, Loader = termLoaderArgs.Loader, @@ -414,9 +414,9 @@ public static INgramExtractorFactory Create(IHostEnvironment env, NgramExtractor public sealed class TermLoaderArguments { [Argument(ArgumentType.AtMostOnce, HelpText = "Comma separated list of terms", Name = "Terms", SortOrder = 1, Visibility = ArgumentAttribute.VisibilityType.CmdLineOnly)] - public string TermsList; + public string Term; - [Argument(ArgumentType.AtMostOnce, HelpText = "List of terms", SortOrder = 1, Visibility = ArgumentAttribute.VisibilityType.EntryPointsOnly)] + [Argument(ArgumentType.AtMostOnce, HelpText = "List of terms", Name = "Term", SortOrder = 1, Visibility = ArgumentAttribute.VisibilityType.EntryPointsOnly)] public string[] Terms; [Argument(ArgumentType.AtMostOnce, IsInputFileName = true, HelpText = "Data file containing the terms", ShortName = "data", SortOrder = 2, Visibility = ArgumentAttribute.VisibilityType.CmdLineOnly)] diff --git a/src/Microsoft.ML.Transforms/Text/WordHashBagProducingTransform.cs b/src/Microsoft.ML.Transforms/Text/WordHashBagProducingTransform.cs index f32c86c076..1213de9941 100644 --- a/src/Microsoft.ML.Transforms/Text/WordHashBagProducingTransform.cs +++ b/src/Microsoft.ML.Transforms/Text/WordHashBagProducingTransform.cs @@ -382,7 +382,7 @@ public static IDataTransform Create(IHostEnvironment env, Arguments args, IDataV new ValueToKeyMappingTransformer.Arguments() { MaxNumTerms = int.MaxValue, - TermsList = termLoaderArgs.TermsList, + Term = termLoaderArgs.Term, Terms = termLoaderArgs.Terms, DataFile = termLoaderArgs.DataFile, Loader = termLoaderArgs.Loader, diff --git a/test/BaselineOutput/Common/EntryPoints/core_manifest.json b/test/BaselineOutput/Common/EntryPoints/core_manifest.json index 518b863f2f..4393bbc085 100644 --- a/test/BaselineOutput/Common/EntryPoints/core_manifest.json +++ b/test/BaselineOutput/Common/EntryPoints/core_manifest.json @@ -97,7 +97,7 @@ "ShortName": null, "Inputs": [ { - "Name": "Model", + "Name": "Models", "Type": { "Kind": "Array", "ItemType": "PredictorModel" @@ -110,7 +110,7 @@ ], "Outputs": [ { - "Name": "OutputModel", + "Name": "OutputModels", "Type": { "Kind": "Array", "ItemType": "PredictorModel" diff --git a/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs b/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs index 0303944020..48b8939bab 100644 --- a/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs +++ b/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs @@ -2454,7 +2454,7 @@ public void TestInputBuilderBasicArgs() var expected = @"{ - ""Column"": [ + ""Columns"": [ { ""Name"": ""A"", ""Source"": ""A"" From 11c16427837c1fc569476f5ffc790d35242b8d84 Mon Sep 17 00:00:00 2001 From: "REDMOND\\nakazmi" Date: Thu, 17 Jan 2019 18:08:01 -0800 Subject: [PATCH 3/7] Fix build and tests --- src/Microsoft.ML.Data/Transforms/ColumnBindingsBase.cs | 2 +- test/Microsoft.ML.Core.Tests/UnitTests/TestHosts.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Microsoft.ML.Data/Transforms/ColumnBindingsBase.cs b/src/Microsoft.ML.Data/Transforms/ColumnBindingsBase.cs index 18d20695b4..a8ca6f59af 100644 --- a/src/Microsoft.ML.Data/Transforms/ColumnBindingsBase.cs +++ b/src/Microsoft.ML.Data/Transforms/ColumnBindingsBase.cs @@ -329,7 +329,7 @@ protected ColumnBindingsBase(Schema input, bool user, params string[] names) // In lieu of actual protections, I have the following silly asserts, so we can have some // warning if we decide to rename this argument, and so know to change the below hard-coded // standard column name. - const string standardColumnArgName = "Column"; + const string standardColumnArgName = "Columns"; Contracts.Assert(nameof(ValueToKeyMappingTransformer.Arguments.Columns) == standardColumnArgName); Contracts.Assert(nameof(ColumnConcatenatingTransformer.Arguments.Columns) == standardColumnArgName); diff --git a/test/Microsoft.ML.Core.Tests/UnitTests/TestHosts.cs b/test/Microsoft.ML.Core.Tests/UnitTests/TestHosts.cs index 0c91818e12..faa1ba5f26 100644 --- a/test/Microsoft.ML.Core.Tests/UnitTests/TestHosts.cs +++ b/test/Microsoft.ML.Core.Tests/UnitTests/TestHosts.cs @@ -83,8 +83,8 @@ public void LogEventProcessesMessages() env.Log += (sender, e) => messages.Add(e.Message); // create a dummy text reader to trigger log messages - env.Data.CreateTextReader( - new TextLoader.Arguments {Column = new[] {new TextLoader.Column("TestColumn", null, 0)}}); + env.Data.CreateTextLoader( + new TextLoader.Arguments {Columns = new[] {new TextLoader.Column("TestColumn", null, 0)}}); Assert.True(messages.Count > 0); } From 7aceae59198f88c3106eb39af4caeef2f7969eac Mon Sep 17 00:00:00 2001 From: "REDMOND\\nakazmi" Date: Fri, 25 Jan 2019 11:56:55 -0800 Subject: [PATCH 4/7] Fixing CmdParser and EntryPoints InputBuilder to override field name with attribute name if attribute name is present --- .../CommandLine/CmdParser.cs | 19 ++++------------ .../Dirty/ChooseColumnsByIndexTransform.cs | 6 ++--- .../EntryPoints/InputBuilder.cs | 22 +++++++++---------- .../EntryPoints/ScoreColumnSelector.cs | 2 +- .../Evaluators/EvaluatorBase.cs | 2 +- .../ImageLoaderTransform.cs | 3 +-- .../Standard/Online/AveragedLinear.cs | 6 ++--- .../MutualInformationFeatureSelection.cs | 5 +---- .../Common/EntryPoints/core_manifest.json | 2 +- .../UnitTests/TestEntryPoints.cs | 2 +- 10 files changed, 27 insertions(+), 42 deletions(-) diff --git a/src/Microsoft.ML.Core/CommandLine/CmdParser.cs b/src/Microsoft.ML.Core/CommandLine/CmdParser.cs index b8e6c69cf9..8a4186b443 100644 --- a/src/Microsoft.ML.Core/CommandLine/CmdParser.cs +++ b/src/Microsoft.ML.Core/CommandLine/CmdParser.cs @@ -474,13 +474,9 @@ private static ArgumentInfo GetArgumentInfo(Type type, object defaults) Contracts.Check(!field.IsStatic && !field.IsInitOnly && !field.IsLiteral); bool isDefault = attr is DefaultArgumentAttribute; if (isDefault && def != null) - throw Contracts.Except("Duplicate default argument '{0}' vs '{1}'", def.LongName, field.Name); + throw Contracts.Except($"Duplicate default argument '{def.LongName}' vs '{field.Name}'"); - string name = ArgCase(field.Name); - - string attrName = null; - if (attr.Name != null && attr.Name.ToLowerInvariant() != name.ToLowerInvariant()) - attrName = attr.Name; + string name = ArgCase(attr.Name ?? field.Name); string[] nicks; // Semantics of ShortName: @@ -499,18 +495,13 @@ private static ArgumentInfo GetArgumentInfo(Type type, object defaults) Contracts.Assert(!isDefault || nicks == null); if (map.ContainsKey(name.ToLowerInvariant())) - throw Contracts.Except("Duplicate name '{0}' in argument type '{1}'", name, type.Name); - if (attrName != null) - { - if (map.ContainsKey(attrName.ToLowerInvariant())) - throw Contracts.Except("Duplicate name '{0}' in argument type '{1}'", attrName, type.Name); - } + throw Contracts.Except($"Duplicate name '{name}' in argument type '{type.Name}'"); if (nicks != null) { foreach (var nick in nicks) { if (map.ContainsKey(nick.ToLowerInvariant())) - throw Contracts.Except("Duplicate name '{0}' in argument type '{1}'", nick, type.Name); + throw Contracts.Except($"Duplicate name '{nick}' in argument type '{type.Name}'"); } } @@ -518,8 +509,6 @@ private static ArgumentInfo GetArgumentInfo(Type type, object defaults) // Note that we put the default arg in the map to ensure that no other args use the same name. map.Add(name.ToLowerInvariant(), arg); - if (attrName != null) - map.Add(attrName.ToLowerInvariant(), arg); if (nicks != null) { foreach (var nick in nicks) diff --git a/src/Microsoft.ML.Data/Dirty/ChooseColumnsByIndexTransform.cs b/src/Microsoft.ML.Data/Dirty/ChooseColumnsByIndexTransform.cs index 85ee9a129c..1697ad55d8 100644 --- a/src/Microsoft.ML.Data/Dirty/ChooseColumnsByIndexTransform.cs +++ b/src/Microsoft.ML.Data/Dirty/ChooseColumnsByIndexTransform.cs @@ -22,7 +22,7 @@ public sealed class ChooseColumnsByIndexTransform : RowToRowTransformBase { public sealed class Arguments { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "Column index to select", Name = "Index", ShortName = "ind")] + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "Column indices to select", Name = "Index", ShortName = "ind")] public int[] Indices; [Argument(ArgumentType.LastOccurenceWins, HelpText = "If true, selected columns are dropped instead of kept, with the order of kept columns being the same as the original", ShortName = "d")] @@ -83,10 +83,10 @@ private static void ComputeSources(bool drop, int[] selectedColumnIndexes, Schem { // Compute the mapping, , from output column index to input column index. if (drop) - // Drop columns indexed by args.Index + // Drop columns indexed by args.Indices sources = Enumerable.Range(0, sourceSchema.Count).Except(selectedColumnIndexes).ToArray(); else - // Keep columns indexed by args.Index + // Keep columns indexed by args.Indices sources = selectedColumnIndexes; // Make sure the output of this transform is meaningful. diff --git a/src/Microsoft.ML.Data/EntryPoints/InputBuilder.cs b/src/Microsoft.ML.Data/EntryPoints/InputBuilder.cs index 1b28e956dd..0668ebe358 100644 --- a/src/Microsoft.ML.Data/EntryPoints/InputBuilder.cs +++ b/src/Microsoft.ML.Data/EntryPoints/InputBuilder.cs @@ -98,7 +98,7 @@ private int GetFieldIndex(string name) _ectx.AssertNonEmpty(name); for (int i = 0; i < _attrs.Length; i++) { - if (name == _attrs[i].Input.Name || name == _fields[i].Name || AnyMatch(name, _attrs[i].Input.Aliases)) + if (name == (_attrs[i].Input.Name ?? _fields[i].Name) || AnyMatch(name, _attrs[i].Input.Aliases)) return i; } return -1; @@ -234,7 +234,7 @@ public JObject GetJsonObject(object instance, Dictionary)) || type.GetGenericTypeDefinition() == typeof(ArrayVar<>) || type.GetGenericTypeDefinition() == typeof(DictionaryVar<>))) { - result.Add(field.Name, new JValue($"${((IVarSerializationHelper)instanceVal).VarName}")); + result.Add(attr.Input.Name ?? field.Name, new JValue($"${((IVarSerializationHelper)instanceVal).VarName}")); } else if (type == typeof(bool) || type == typeof(string) || @@ -294,12 +294,12 @@ public JObject GetJsonObject(object instance, Dictionary) && type.GetGenericArguments()[0] == typeof(string)) @@ -363,7 +363,7 @@ public JObject GetJsonObject(object instance, Dictionary>(), + result.Add(attr.Input.Name ?? field.Name, builder.GetJsonObject(instanceVal, new Dictionary>(), new Dictionary())); } } diff --git a/src/Microsoft.ML.Data/EntryPoints/ScoreColumnSelector.cs b/src/Microsoft.ML.Data/EntryPoints/ScoreColumnSelector.cs index 3c3bbf4869..645f2ae0ae 100644 --- a/src/Microsoft.ML.Data/EntryPoints/ScoreColumnSelector.cs +++ b/src/Microsoft.ML.Data/EntryPoints/ScoreColumnSelector.cs @@ -19,7 +19,7 @@ public sealed class ScoreColumnSelectorInput : TransformInputBase public string[] ExtraColumns; } - [TlcModule.EntryPoint(Name = "Transforms.ScoreColumnSelector", Desc = "Selects only the last score columns and the extra columns specified in the arguments.", UserName = "Choose Columns By Index")] + [TlcModule.EntryPoint(Name = "Transforms.ScoreColumnSelector", Desc = "Selects only the last score columns and the extra columns specified in the arguments.", UserName = "Choose Columns By Indices")] public static CommonOutputs.TransformOutput SelectColumns(IHostEnvironment env, ScoreColumnSelectorInput input) { Contracts.CheckValue(env, nameof(env)); diff --git a/src/Microsoft.ML.Data/Evaluators/EvaluatorBase.cs b/src/Microsoft.ML.Data/Evaluators/EvaluatorBase.cs index 74552667e1..6c7e7f2c15 100644 --- a/src/Microsoft.ML.Data/Evaluators/EvaluatorBase.cs +++ b/src/Microsoft.ML.Data/Evaluators/EvaluatorBase.cs @@ -368,7 +368,7 @@ internal static AggregatorDictionaryBase Create(RoleMappedSchema schema, string if (stratType.GetKeyCount() == 0 && !(stratType is TextType)) { throw Contracts.ExceptUserArg(nameof(MamlEvaluatorBase.ArgumentsBase.StratColumns), - "Stratification column '{0}' has type '{1}', but must be a known count key or text", stratCol, stratType); + "Stratification column '{stratCol}' has type '{stratType}', but must be a known count key or text"); } return Utils.MarshalInvoke(CreateDictionary, stratType.RawType, schema, stratCol, stratType, createAgg); } diff --git a/src/Microsoft.ML.ImageAnalytics/ImageLoaderTransform.cs b/src/Microsoft.ML.ImageAnalytics/ImageLoaderTransform.cs index 38786271d8..c1da4e850a 100644 --- a/src/Microsoft.ML.ImageAnalytics/ImageLoaderTransform.cs +++ b/src/Microsoft.ML.ImageAnalytics/ImageLoaderTransform.cs @@ -55,8 +55,7 @@ public bool TryUnparse(StringBuilder sb) public sealed class Arguments : TransformInputBase { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", - Name = "Column", ShortName = "col", SortOrder = 1)] + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "New column definition(s) (optional form: name:src)", Name = "Column", ShortName = "col", SortOrder = 1)] public Column[] Columns; [Argument(ArgumentType.AtMostOnce, HelpText = "Folder where to search for images", ShortName = "folder")] diff --git a/src/Microsoft.ML.StandardLearners/Standard/Online/AveragedLinear.cs b/src/Microsoft.ML.StandardLearners/Standard/Online/AveragedLinear.cs index 3e5fbbd0ea..abbfe31549 100644 --- a/src/Microsoft.ML.StandardLearners/Standard/Online/AveragedLinear.cs +++ b/src/Microsoft.ML.StandardLearners/Standard/Online/AveragedLinear.cs @@ -78,13 +78,13 @@ private protected abstract class AveragedTrainStateBase : TrainStateBase // For computing averaged weights and bias (if needed) protected VBuffer TotalWeights; protected float TotalBias; - protected Double NumWeightUpdates; + protected double NumWeightUpdates; // The accumulated gradient of loss against gradient for all updates so far in the // totalled model, versus those pending in the weight vector that have not yet been // added to the total model. - protected Double TotalMultipliers; - protected Double PendingMultipliers; + protected double TotalMultipliers; + protected double PendingMultipliers; protected readonly bool Averaged; private readonly long _resetWeightsAfterXExamples; diff --git a/src/Microsoft.ML.Transforms/MutualInformationFeatureSelection.cs b/src/Microsoft.ML.Transforms/MutualInformationFeatureSelection.cs index 5409dc6a17..265de3364e 100644 --- a/src/Microsoft.ML.Transforms/MutualInformationFeatureSelection.cs +++ b/src/Microsoft.ML.Transforms/MutualInformationFeatureSelection.cs @@ -41,10 +41,7 @@ public static class Defaults public sealed class Arguments : TransformInputBase { - [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "Columns to use for feature selection", - Name = "Column", - ShortName = "col", - SortOrder = 1)] + [Argument(ArgumentType.Multiple | ArgumentType.Required, HelpText = "Columns to use for feature selection", Name = "Column", ShortName = "col", SortOrder = 1)] public string[] Columns; [Argument(ArgumentType.LastOccurenceWins, HelpText = "Column to use for labels", ShortName = "lab", diff --git a/test/BaselineOutput/Common/EntryPoints/core_manifest.json b/test/BaselineOutput/Common/EntryPoints/core_manifest.json index 79a9d311f7..23b2c7e016 100644 --- a/test/BaselineOutput/Common/EntryPoints/core_manifest.json +++ b/test/BaselineOutput/Common/EntryPoints/core_manifest.json @@ -21922,7 +21922,7 @@ { "Name": "Transforms.ScoreColumnSelector", "Desc": "Selects only the last score columns and the extra columns specified in the arguments.", - "FriendlyName": "Choose Columns By Index", + "FriendlyName": "Choose Columns By Indices", "ShortName": null, "Inputs": [ { diff --git a/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs b/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs index 20a52ed06c..4b1b418a12 100644 --- a/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs +++ b/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs @@ -2454,7 +2454,7 @@ public void TestInputBuilderBasicArgs() var expected = @"{ - ""Columns"": [ + ""Column"": [ { ""Name"": ""A"", ""Source"": ""A"" From ac7ee5a2dd0695ddbcf4b1d37a17123d1b7e1776 Mon Sep 17 00:00:00 2001 From: "REDMOND\\nakazmi" Date: Fri, 25 Jan 2019 12:12:19 -0800 Subject: [PATCH 5/7] Fix build errors --- src/Microsoft.ML.Data/DataLoadSave/Text/TextLoader.cs | 2 +- test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Microsoft.ML.Data/DataLoadSave/Text/TextLoader.cs b/src/Microsoft.ML.Data/DataLoadSave/Text/TextLoader.cs index 85f69cb855..c3c58e00fd 100644 --- a/src/Microsoft.ML.Data/DataLoadSave/Text/TextLoader.cs +++ b/src/Microsoft.ML.Data/DataLoadSave/Text/TextLoader.cs @@ -983,7 +983,7 @@ public TextLoader(IHostEnvironment env, Column[] columns, bool hasHeader = false private static Arguments MakeArgs(Column[] columns, bool hasHeader, char[] separatorChars) { Contracts.AssertValue(separatorChars); - var result = new Arguments { Columns = columns, HasHeader = hasHeader, SeparatorChars = separatorChars}; + var result = new Arguments { Columns = columns, HasHeader = hasHeader, Separators = separatorChars}; return result; } diff --git a/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs b/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs index a2b509a904..d3daf227d4 100644 --- a/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs +++ b/test/Microsoft.ML.Core.Tests/UnitTests/TestEntryPoints.cs @@ -3617,7 +3617,7 @@ public void EntryPointWordEmbeddings() { Arguments = { - SeparatorChars = new []{' '}, + Separators = new []{' '}, Columns = new[] { new TextLoader.Column("Text", DataKind.Text, From 81d660c754f5a1b01c0534271986bffaaf3ca9b2 Mon Sep 17 00:00:00 2001 From: "REDMOND\\nakazmi" Date: Thu, 31 Jan 2019 19:30:18 -0800 Subject: [PATCH 6/7] Fixing a test --- .../Text/StopWordsRemovingTransformer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Microsoft.ML.Transforms/Text/StopWordsRemovingTransformer.cs b/src/Microsoft.ML.Transforms/Text/StopWordsRemovingTransformer.cs index 2a7e309cf8..9b6ae91cca 100644 --- a/src/Microsoft.ML.Transforms/Text/StopWordsRemovingTransformer.cs +++ b/src/Microsoft.ML.Transforms/Text/StopWordsRemovingTransformer.cs @@ -952,7 +952,7 @@ internal static IDataTransform Create(IHostEnvironment env, Arguments args, IDat cols[i] = (item.Name, item.Source ?? item.Name); } CustomStopWordsRemovingTransformer transfrom = null; - if (Utils.Size(args.Stopword) > 0) + if (Utils.Size(args.Stopwords) > 0) transfrom = new CustomStopWordsRemovingTransformer(env, args.Stopwords, cols); else transfrom = new CustomStopWordsRemovingTransformer(env, args.Stopword, args.DataFile, args.StopwordsColumn, args.Loader, cols); From 2523832de928eab3931c316c5ac4a66ab225dfa8 Mon Sep 17 00:00:00 2001 From: "REDMOND\\nakazmi" Date: Thu, 31 Jan 2019 20:27:54 -0800 Subject: [PATCH 7/7] Fix build errors --- test/Microsoft.ML.Tests/Transformers/WordEmbeddingsTests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/Microsoft.ML.Tests/Transformers/WordEmbeddingsTests.cs b/test/Microsoft.ML.Tests/Transformers/WordEmbeddingsTests.cs index 5da13b88cb..37dfe4cd9b 100644 --- a/test/Microsoft.ML.Tests/Transformers/WordEmbeddingsTests.cs +++ b/test/Microsoft.ML.Tests/Transformers/WordEmbeddingsTests.cs @@ -30,7 +30,7 @@ public void TestWordEmbeddings() { Separator = "\t", HasHeader = true, - Column = new[] + Columns = new[] { new TextLoader.Column("Label", DataKind.BL, 0), new TextLoader.Column("SentimentText", DataKind.Text, 1) @@ -69,7 +69,7 @@ public void TestCustomWordEmbeddings() { Separator = "\t", HasHeader = true, - Column = new[] + Columns = new[] { new TextLoader.Column("Label", DataKind.BL, 0), new TextLoader.Column("SentimentText", DataKind.Text, 1)