diff --git a/docs/code/MlNetCookBook.md b/docs/code/MlNetCookBook.md index 727ed415e2..f509ebfe57 100644 --- a/docs/code/MlNetCookBook.md +++ b/docs/code/MlNetCookBook.md @@ -424,7 +424,7 @@ var pipeline = // Use the multi-class SDCA model to predict the label using features. .Append(mlContext.MulticlassClassification.Trainers.SdcaCalibrated()) // Apply the inverse conversion from 'PredictedLabel' column back to string value. - .Append(mlContext.Transforms.Conversion.MapKeyToValue(("PredictedLabel", "Data"))); + .Append(mlContext.Transforms.Conversion.MapKeyToValue("Data", "PredictedLabel")); // Train the model. var model = pipeline.Fit(trainData); diff --git a/src/Microsoft.ML.Data/Transforms/ConversionsExtensionsCatalog.cs b/src/Microsoft.ML.Data/Transforms/ConversionsExtensionsCatalog.cs index d755265ce5..ec61cbed5f 100644 --- a/src/Microsoft.ML.Data/Transforms/ConversionsExtensionsCatalog.cs +++ b/src/Microsoft.ML.Data/Transforms/ConversionsExtensionsCatalog.cs @@ -111,22 +111,6 @@ public static KeyToValueMappingEstimator MapKeyToValue(this TransformsCatalog.Co public static KeyToValueMappingEstimator MapKeyToValue(this TransformsCatalog.ConversionTransforms catalog, InputOutputColumnPair[] columns) => new KeyToValueMappingEstimator(CatalogUtils.GetEnvironment(catalog), columns.Select(x => (x.OutputColumnName, x.InputColumnName)).ToArray()); - /// - /// Convert the key types (name of the column specified in the first item of the tuple) back to their original values - /// (named as specified in the second item of the tuple). - /// - /// The conversion transform's catalog - /// The pairs of input and output columns. - /// - /// - /// - /// - [BestFriend] - internal static KeyToValueMappingEstimator MapKeyToValue(this TransformsCatalog.ConversionTransforms catalog, params ColumnOptions[] columns) - => new KeyToValueMappingEstimator(CatalogUtils.GetEnvironment(catalog), ColumnOptions.ConvertToValueTuples(columns)); - /// /// Maps key types or key values into a floating point vector. /// @@ -218,7 +202,7 @@ public static ValueToKeyMappingEstimator MapValueToKey(this TransformsCatalog.Co } /// - /// Converts value types into , optionally loading the keys to use from . + /// Converts value types into , optionally loading the keys to use from . /// /// The conversion transform's catalog. /// The data columns to map to keys. @@ -292,11 +276,11 @@ public static ValueMappingEstimator MapValue MapValue( this TransformsCatalog.ConversionTransforms catalog, IEnumerable> keyValuePairs, - params ColumnOptions[] columns) + params InputOutputColumnPair[] columns) { var keys = keyValuePairs.Select(pair => pair.Key); var values = keyValuePairs.Select(pair => pair.Value); - return new ValueMappingEstimator(CatalogUtils.GetEnvironment(catalog), keys, values, ColumnOptions.ConvertToValueTuples(columns)); + return new ValueMappingEstimator(CatalogUtils.GetEnvironment(catalog), keys, values, InputOutputColumnPair.ConvertToValueTuples(columns)); } /// @@ -320,12 +304,12 @@ internal static ValueMappingEstimator MapValue> keyValuePairs, bool treatValuesAsKeyType, - params ColumnOptions[] columns) + params InputOutputColumnPair[] columns) { var keys = keyValuePairs.Select(pair => pair.Key); var values = keyValuePairs.Select(pair => pair.Value); return new ValueMappingEstimator(CatalogUtils.GetEnvironment(catalog), keys, values, treatValuesAsKeyType, - ColumnOptions.ConvertToValueTuples(columns)); + InputOutputColumnPair.ConvertToValueTuples(columns)); } /// @@ -381,12 +365,12 @@ public static ValueMappingEstimator MapValue MapValue( this TransformsCatalog.ConversionTransforms catalog, IEnumerable> keyValuePairs, - params ColumnOptions[] columns) + params InputOutputColumnPair[] columns) { var keys = keyValuePairs.Select(pair => pair.Key); var values = keyValuePairs.Select(pair => pair.Value); return new ValueMappingEstimator(CatalogUtils.GetEnvironment(catalog), keys, values, - ColumnOptions.ConvertToValueTuples(columns)); + InputOutputColumnPair.ConvertToValueTuples(columns)); } /// @@ -437,8 +421,8 @@ public static ValueMappingEstimator MapValue( [BestFriend] internal static ValueMappingEstimator MapValue( this TransformsCatalog.ConversionTransforms catalog, - IDataView lookupMap, DataViewSchema.Column keyColumn, DataViewSchema.Column valueColumn, params ColumnOptions[] columns) + IDataView lookupMap, DataViewSchema.Column keyColumn, DataViewSchema.Column valueColumn, params InputOutputColumnPair[] columns) => new ValueMappingEstimator(CatalogUtils.GetEnvironment(catalog), lookupMap, keyColumn.Name, valueColumn.Name, - ColumnOptions.ConvertToValueTuples(columns)); + InputOutputColumnPair.ConvertToValueTuples(columns)); } } diff --git a/src/Microsoft.ML.Data/Transforms/ExtensionsCatalog.cs b/src/Microsoft.ML.Data/Transforms/ExtensionsCatalog.cs index f0de57e403..d5b1867fde 100644 --- a/src/Microsoft.ML.Data/Transforms/ExtensionsCatalog.cs +++ b/src/Microsoft.ML.Data/Transforms/ExtensionsCatalog.cs @@ -32,40 +32,11 @@ public InputOutputColumnPair(string outputColumnName, string inputColumnName = n InputColumnName = inputColumnName ?? outputColumnName; OutputColumnName = outputColumnName; } - } - - /// - /// Specifies input and output column names for a transformation. - /// - [BestFriend] - internal sealed class ColumnOptions - { - private readonly string _outputColumnName; - private readonly string _inputColumnName; - - /// - /// Specifies input and output column names for a transformation. - /// - /// Name of the column resulting from the transformation of . - /// Name of the column to transform. If set to , the value of the will be used as source. - public ColumnOptions(string outputColumnName, string inputColumnName = null) - { - _outputColumnName = outputColumnName; - _inputColumnName = inputColumnName ?? outputColumnName; - } - - /// - /// Instantiates a from a tuple of input and output column names. - /// - public static implicit operator ColumnOptions((string outputColumnName, string inputColumnName) value) - { - return new ColumnOptions(value.outputColumnName, value.inputColumnName); - } [BestFriend] - internal static (string outputColumnName, string inputColumnName)[] ConvertToValueTuples(ColumnOptions[] infos) + internal static (string outputColumnName, string inputColumnName)[] ConvertToValueTuples(InputOutputColumnPair[] infos) { - return infos.Select(info => (info._outputColumnName, info._inputColumnName)).ToArray(); + return infos.Select(info => (info.OutputColumnName, info.InputColumnName)).ToArray(); } } @@ -104,8 +75,8 @@ public static ColumnCopyingEstimator CopyColumns(this TransformsCatalog catalog, /// /// [BestFriend] - internal static ColumnCopyingEstimator CopyColumns(this TransformsCatalog catalog, params ColumnOptions[] columns) - => new ColumnCopyingEstimator(CatalogUtils.GetEnvironment(catalog), ColumnOptions.ConvertToValueTuples(columns)); + internal static ColumnCopyingEstimator CopyColumns(this TransformsCatalog catalog, params InputOutputColumnPair[] columns) + => new ColumnCopyingEstimator(CatalogUtils.GetEnvironment(catalog), InputOutputColumnPair.ConvertToValueTuples(columns)); /// /// Concatenates columns together. diff --git a/src/Microsoft.ML.ImageAnalytics/ExtensionsCatalog.cs b/src/Microsoft.ML.ImageAnalytics/ExtensionsCatalog.cs index ea203359a5..af6b4e89b8 100644 --- a/src/Microsoft.ML.ImageAnalytics/ExtensionsCatalog.cs +++ b/src/Microsoft.ML.ImageAnalytics/ExtensionsCatalog.cs @@ -32,8 +32,8 @@ public static ImageGrayscalingEstimator ConvertToGrayscale(this TransformsCatalo /// ]]> /// [BestFriend] - internal static ImageGrayscalingEstimator ConvertToGrayscale(this TransformsCatalog catalog, params ColumnOptions[] columns) - => new ImageGrayscalingEstimator(CatalogUtils.GetEnvironment(catalog), ColumnOptions.ConvertToValueTuples(columns)); + internal static ImageGrayscalingEstimator ConvertToGrayscale(this TransformsCatalog catalog, params InputOutputColumnPair[] columns) + => new ImageGrayscalingEstimator(CatalogUtils.GetEnvironment(catalog), InputOutputColumnPair.ConvertToValueTuples(columns)); /// /// Loads the images from the into memory. @@ -80,8 +80,8 @@ public static ImageLoadingEstimator LoadImages(this TransformsCatalog catalog, s /// ]]> /// [BestFriend] - internal static ImageLoadingEstimator LoadImages(this TransformsCatalog catalog, string imageFolder, params ColumnOptions[] columns) - => new ImageLoadingEstimator(CatalogUtils.GetEnvironment(catalog), imageFolder, ColumnOptions.ConvertToValueTuples(columns)); + internal static ImageLoadingEstimator LoadImages(this TransformsCatalog catalog, string imageFolder, params InputOutputColumnPair[] columns) + => new ImageLoadingEstimator(CatalogUtils.GetEnvironment(catalog), imageFolder, InputOutputColumnPair.ConvertToValueTuples(columns)); /// /// The transform's catalog. diff --git a/src/Microsoft.ML.Transforms/ConversionsCatalog.cs b/src/Microsoft.ML.Transforms/ConversionsCatalog.cs index 406cef8d2d..7409fc591b 100644 --- a/src/Microsoft.ML.Transforms/ConversionsCatalog.cs +++ b/src/Microsoft.ML.Transforms/ConversionsCatalog.cs @@ -20,8 +20,8 @@ public static class ConversionsCatalog /// Specifies the output and input columns on which the transformation should be applied. [BestFriend] internal static KeyToBinaryVectorMappingEstimator MapKeyToBinaryVector(this TransformsCatalog.ConversionTransforms catalog, - params ColumnOptions[] columns) - => new KeyToBinaryVectorMappingEstimator(CatalogUtils.GetEnvironment(catalog), ColumnOptions.ConvertToValueTuples(columns)); + params InputOutputColumnPair[] columns) + => new KeyToBinaryVectorMappingEstimator(CatalogUtils.GetEnvironment(catalog), InputOutputColumnPair.ConvertToValueTuples(columns)); /// /// Convert the key types back to binary vector. diff --git a/src/Microsoft.ML.Transforms/NormalizerCatalog.cs b/src/Microsoft.ML.Transforms/NormalizerCatalog.cs index 657e58bf32..a71e3834a7 100644 --- a/src/Microsoft.ML.Transforms/NormalizerCatalog.cs +++ b/src/Microsoft.ML.Transforms/NormalizerCatalog.cs @@ -43,8 +43,8 @@ public static NormalizingEstimator Normalize(this TransformsCatalog catalog, [BestFriend] internal static NormalizingEstimator Normalize(this TransformsCatalog catalog, NormalizingEstimator.NormalizationMode mode, - params ColumnOptions[] columns) - => new NormalizingEstimator(CatalogUtils.GetEnvironment(catalog), mode, ColumnOptions.ConvertToValueTuples(columns)); + params InputOutputColumnPair[] columns) + => new NormalizingEstimator(CatalogUtils.GetEnvironment(catalog), mode, InputOutputColumnPair.ConvertToValueTuples(columns)); /// /// Normalize (rescale) columns according to specified custom parameters. diff --git a/src/Microsoft.ML.Transforms/Text/TextCatalog.cs b/src/Microsoft.ML.Transforms/Text/TextCatalog.cs index 4aa28da763..bf811045ab 100644 --- a/src/Microsoft.ML.Transforms/Text/TextCatalog.cs +++ b/src/Microsoft.ML.Transforms/Text/TextCatalog.cs @@ -75,8 +75,8 @@ public static TokenizingByCharactersEstimator TokenizeIntoCharactersAsKeys(this [BestFriend] internal static TokenizingByCharactersEstimator TokenizeIntoCharactersAsKeys(this TransformsCatalog.TextTransforms catalog, bool useMarkerCharacters = CharTokenizingDefaults.UseMarkerCharacters, - params ColumnOptions[] columns) - => new TokenizingByCharactersEstimator(Contracts.CheckRef(catalog, nameof(catalog)).GetEnvironment(), useMarkerCharacters, ColumnOptions.ConvertToValueTuples(columns)); + params InputOutputColumnPair[] columns) + => new TokenizingByCharactersEstimator(Contracts.CheckRef(catalog, nameof(catalog)).GetEnvironment(), useMarkerCharacters, InputOutputColumnPair.ConvertToValueTuples(columns)); /// /// Normalizes incoming text in by changing case, removing diacritical marks, punctuation marks and/or numbers diff --git a/test/Microsoft.ML.Tests/Scenarios/Api/CookbookSamples/CookbookSamplesDynamicApi.cs b/test/Microsoft.ML.Tests/Scenarios/Api/CookbookSamples/CookbookSamplesDynamicApi.cs index e2a71c27cd..cb5c35793a 100644 --- a/test/Microsoft.ML.Tests/Scenarios/Api/CookbookSamples/CookbookSamplesDynamicApi.cs +++ b/test/Microsoft.ML.Tests/Scenarios/Api/CookbookSamples/CookbookSamplesDynamicApi.cs @@ -187,7 +187,7 @@ private ITransformer TrainOnIris(string irisDataPath) // [2] -9.709775 float // Apply the inverse conversion from 'PredictedLabel' column back to string value. - var finalPipeline = pipeline.Append(mlContext.Transforms.Conversion.MapKeyToValue(("Data", "PredictedLabel"))); + var finalPipeline = pipeline.Append(mlContext.Transforms.Conversion.MapKeyToValue("Data", "PredictedLabel")); dataPreview = finalPipeline.Preview(trainData); return finalPipeline.Fit(trainData); diff --git a/test/Microsoft.ML.Tests/Scenarios/IrisPlantClassificationWithStringLabelTests.cs b/test/Microsoft.ML.Tests/Scenarios/IrisPlantClassificationWithStringLabelTests.cs index 010a973741..1c05497e55 100644 --- a/test/Microsoft.ML.Tests/Scenarios/IrisPlantClassificationWithStringLabelTests.cs +++ b/test/Microsoft.ML.Tests/Scenarios/IrisPlantClassificationWithStringLabelTests.cs @@ -39,7 +39,7 @@ public void TrainAndPredictIrisModelWithStringLabelTest() .AppendCacheCheckpoint(mlContext) .Append(mlContext.MulticlassClassification.Trainers.SdcaCalibrated( new SdcaCalibratedMulticlassTrainer.Options { NumberOfThreads = 1 })) - .Append(mlContext.Transforms.Conversion.MapKeyToValue(("Plant", "PredictedLabel"))); + .Append(mlContext.Transforms.Conversion.MapKeyToValue("Plant", "PredictedLabel")); // Train the pipeline var trainedModel = pipe.Fit(trainData); diff --git a/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/TensorflowTests.cs b/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/TensorflowTests.cs index 20f97d63a8..9cab97c2e0 100644 --- a/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/TensorflowTests.cs +++ b/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/TensorflowTests.cs @@ -391,7 +391,7 @@ public void TensorFlowTransformInceptionTest() ); var data = reader.Load(new MultiFileSource(dataFile)); - var images = mlContext.Transforms.LoadImages(imageFolder, ("ImageReal", "ImagePath")).Fit(data).Transform(data); + var images = mlContext.Transforms.LoadImages("ImageReal", "ImagePath", imageFolder).Fit(data).Transform(data); var cropped = mlContext.Transforms.ResizeImages("ImageCropped", 224, 224, "ImageReal").Fit(images).Transform(images); var pixels = mlContext.Transforms.ExtractPixels(inputName, "ImageCropped", interleavePixelColors: true).Fit(cropped).Transform(cropped); var tf = mlContext.Model.LoadTensorFlowModel(modelLocation).ScoreTensorFlowModel(outputName, inputName, true).Fit(pixels).Transform(pixels); @@ -507,7 +507,7 @@ public void TensorFlowTransformMNISTConvTest() var trainData = reader.Load(GetDataPath(TestDatasets.mnistTiny28.trainFilename)); var testData = reader.Load(GetDataPath(TestDatasets.mnistOneClass.testFilename)); - var pipe = mlContext.Transforms.CopyColumns(("reshape_input", "Placeholder")) + var pipe = mlContext.Transforms.CopyColumns("reshape_input", "Placeholder") .Append(mlContext.Model.LoadTensorFlowModel("mnist_model/frozen_saved_model.pb").ScoreTensorFlowModel(new[] { "Softmax", "dense/Relu" }, new[] { "Placeholder", "reshape_input" })) .Append(mlContext.Transforms.Concatenate("Features", "Softmax", "dense/Relu")) .Append(mlContext.MulticlassClassification.Trainers.LightGbm("Label", "Features")); @@ -662,7 +662,7 @@ private void ExecuteTFTransformMNISTConvTrainingTest(bool shuffle, int? shuffleS preprocessedTestData = testData; } - var pipe = mlContext.Transforms.CopyColumns(("Features", "Placeholder")) + var pipe = mlContext.Transforms.CopyColumns("Features", "Placeholder") .Append(mlContext.Model.LoadTensorFlowModel(modelLocation).RetrainTensorFlowModel( inputColumnNames: new[] { "Features" }, outputColumnNames: new[] { "Prediction" }, @@ -729,7 +729,7 @@ public void TensorFlowTransformMNISTConvSavedModelTest() var trainData = reader.Load(GetDataPath(TestDatasets.mnistTiny28.trainFilename)); var testData = reader.Load(GetDataPath(TestDatasets.mnistOneClass.testFilename)); - var pipe = mlContext.Transforms.CopyColumns(("reshape_input", "Placeholder")) + var pipe = mlContext.Transforms.CopyColumns("reshape_input", "Placeholder") .Append(mlContext.Model.LoadTensorFlowModel("mnist_model").ScoreTensorFlowModel(new[] { "Softmax", "dense/Relu" }, new[] { "Placeholder", "reshape_input" })) .Append(mlContext.Transforms.Concatenate("Features", new[] { "Softmax", "dense/Relu" })) .Append(mlContext.MulticlassClassification.Trainers.LightGbm("Label", "Features")); @@ -898,7 +898,7 @@ public void TensorFlowTransformCifarSavedModel() new TextLoader.Column("Name", DataKind.String, 1), } ); - var images = mlContext.Transforms.LoadImages(imageFolder, ("ImageReal", "ImagePath")).Fit(data).Transform(data); + var images = mlContext.Transforms.LoadImages("ImageReal", imageFolder, "ImagePath").Fit(data).Transform(data); var cropped = mlContext.Transforms.ResizeImages("ImageCropped", imageWidth, imageHeight, "ImageReal").Fit(images).Transform(images); var pixels = mlContext.Transforms.ExtractPixels("Input", "ImageCropped", interleavePixelColors: true).Fit(cropped).Transform(cropped); IDataView trans = tensorFlowModel.ScoreTensorFlowModel("Output", "Input").Fit(pixels).Transform(pixels); @@ -1000,7 +1000,7 @@ public void TensorFlowSentimentClassificationTest() // The second pipeline 'tfEnginePipe' takes the resized integer vector and passes it to TensoFlow and gets the classification scores. var estimator = mlContext.Transforms.Text.TokenizeIntoWords("TokenizedWords", "Sentiment_Text") .Append(mlContext.Transforms.Conversion.MapValue(lookupMap, lookupMap.Schema["Words"], lookupMap.Schema["Ids"], - new ColumnOptions[] { ("Features", "TokenizedWords") })); + new[] { new InputOutputColumnPair("Features", "TokenizedWords") })); var model = estimator.Fit(dataView); var dataPipe = mlContext.Model.CreatePredictionEngine(model); @@ -1008,7 +1008,7 @@ public void TensorFlowSentimentClassificationTest() // c.f. https://github.com/dotnet/machinelearning-testdata/blob/master/Microsoft.ML.TensorFlow.TestModels/sentiment_model/README.md string modelLocation = @"sentiment_model"; var pipelineModel = mlContext.Model.LoadTensorFlowModel(modelLocation).ScoreTensorFlowModel(new[] { "Prediction/Softmax" }, new[] { "Features" }) - .Append(mlContext.Transforms.CopyColumns(("Prediction", "Prediction/Softmax"))) + .Append(mlContext.Transforms.CopyColumns("Prediction", "Prediction/Softmax")) .Fit(dataView); var tfEnginePipe = mlContext.Model.CreatePredictionEngine(pipelineModel); @@ -1052,7 +1052,7 @@ public void TensorFlowStringTest() var dataview = mlContext.Data.CreateTextLoader().Load(new MultiFileSource(null)); var pipeline = tensorFlowModel.ScoreTensorFlowModel(new[] { "Original_A", "Joined_Splited_Text" }, new[] { "A", "B" }) - .Append(mlContext.Transforms.CopyColumns(("AOut", "Original_A"), ("BOut", "Joined_Splited_Text"))); + .Append(mlContext.Transforms.CopyColumns(new[] { new InputOutputColumnPair("AOut", "Original_A"), new InputOutputColumnPair("BOut", "Joined_Splited_Text") })); var transformer = mlContext.Model.CreatePredictionEngine(pipeline.Fit(dataview)); var input = new TextInput diff --git a/test/Microsoft.ML.Tests/Transformers/KeyToBinaryVectorEstimatorTest.cs b/test/Microsoft.ML.Tests/Transformers/KeyToBinaryVectorEstimatorTest.cs index 0b9d1dd190..4dfe700764 100644 --- a/test/Microsoft.ML.Tests/Transformers/KeyToBinaryVectorEstimatorTest.cs +++ b/test/Microsoft.ML.Tests/Transformers/KeyToBinaryVectorEstimatorTest.cs @@ -51,7 +51,7 @@ public void KeyToBinaryVectorWorkout() new ValueToKeyMappingEstimator.ColumnOptions("TermC", "C", addKeyValueAnnotationsAsText:true) }).Fit(dataView).Transform(dataView); - var pipe = ML.Transforms.Conversion.MapKeyToBinaryVector(("CatA", "TermA"), ("CatC", "TermC")); + var pipe = ML.Transforms.Conversion.MapKeyToBinaryVector(new[] { new InputOutputColumnPair("CatA", "TermA"), new InputOutputColumnPair("CatC", "TermC") }); TestEstimatorCore(pipe, dataView); Done(); } @@ -105,7 +105,12 @@ public void TestMetadataPropagation() var termTransformer = termEst.Fit(dataView); dataView = termTransformer.Transform(dataView); - var pipe = ML.Transforms.Conversion.MapKeyToBinaryVector(("CatA", "TA"), ("CatB", "TB"), ("CatC", "TC"), ("CatD", "TD")); + var pipe = ML.Transforms.Conversion.MapKeyToBinaryVector(new[] { + new InputOutputColumnPair("CatA", "TA"), + new InputOutputColumnPair("CatB", "TB"), + new InputOutputColumnPair("CatC", "TC"), + new InputOutputColumnPair("CatD", "TD") + }); var result = pipe.Fit(dataView).Transform(dataView); ValidateMetadata(result); @@ -155,7 +160,7 @@ public void TestOldSavingAndLoading() }); var transformer = est.Fit(dataView); dataView = transformer.Transform(dataView); - var pipe = ML.Transforms.Conversion.MapKeyToBinaryVector(("CatA", "TermA"), ("CatB", "TermB"), ("CatC", "TermC")); + var pipe = ML.Transforms.Conversion.MapKeyToBinaryVector(new[] { new InputOutputColumnPair("CatA", "TermA"), new InputOutputColumnPair("CatB", "TermB"), new InputOutputColumnPair("CatC", "TermC") }); var result = pipe.Fit(dataView).Transform(dataView); var resultRoles = new RoleMappedData(result); using (var ms = new MemoryStream()) diff --git a/test/Microsoft.ML.Tests/Transformers/NormalizerTests.cs b/test/Microsoft.ML.Tests/Transformers/NormalizerTests.cs index 54cb4da52a..5b0b01abc7 100644 --- a/test/Microsoft.ML.Tests/Transformers/NormalizerTests.cs +++ b/test/Microsoft.ML.Tests/Transformers/NormalizerTests.cs @@ -225,7 +225,7 @@ public void SimpleConstructorsAndExtensions() var est1 = new NormalizingEstimator(Env, "float4"); var est2 = new NormalizingEstimator(Env, NormalizingEstimator.NormalizationMode.MinMax, ("float4", "float4")); var est3 = new NormalizingEstimator(Env, new NormalizingEstimator.MinMaxColumnOptions("float4")); - var est4 = ML.Transforms.Normalize(NormalizingEstimator.NormalizationMode.MinMax, ("float4", "float4")); + var est4 = ML.Transforms.Normalize("float4", "float4", NormalizingEstimator.NormalizationMode.MinMax); var est5 = ML.Transforms.Normalize("float4"); var data1 = est1.Fit(data).Transform(data); @@ -246,7 +246,7 @@ public void SimpleConstructorsAndExtensions() // Tests for MeanVariance var est6 = new NormalizingEstimator(Env, NormalizingEstimator.NormalizationMode.MeanVariance, ("float4", "float4")); var est7 = new NormalizingEstimator(Env, new NormalizingEstimator.MeanVarianceColumnOptions("float4")); - var est8 = ML.Transforms.Normalize(NormalizingEstimator.NormalizationMode.MeanVariance, ("float4", "float4")); + var est8 = ML.Transforms.Normalize("float4", "float4", NormalizingEstimator.NormalizationMode.MeanVariance); var data6 = est6.Fit(data).Transform(data); var data7 = est7.Fit(data).Transform(data); @@ -259,7 +259,7 @@ public void SimpleConstructorsAndExtensions() // Tests for LogMeanVariance var est9 = new NormalizingEstimator(Env, NormalizingEstimator.NormalizationMode.LogMeanVariance, ("float4", "float4")); var est10 = new NormalizingEstimator(Env, new NormalizingEstimator.LogMeanVarianceColumnOptions("float4")); - var est11 = ML.Transforms.Normalize(NormalizingEstimator.NormalizationMode.LogMeanVariance, ("float4", "float4")); + var est11 = ML.Transforms.Normalize("float4", "float4", NormalizingEstimator.NormalizationMode.LogMeanVariance); var data9 = est9.Fit(data).Transform(data); var data10 = est10.Fit(data).Transform(data); @@ -272,7 +272,7 @@ public void SimpleConstructorsAndExtensions() // Tests for Binning var est12 = new NormalizingEstimator(Env, NormalizingEstimator.NormalizationMode.Binning, ("float4", "float4")); var est13 = new NormalizingEstimator(Env, new NormalizingEstimator.BinningColumnOptions("float4")); - var est14 = ML.Transforms.Normalize(NormalizingEstimator.NormalizationMode.Binning, ("float4", "float4")); + var est14 = ML.Transforms.Normalize("float4", "float4", NormalizingEstimator.NormalizationMode.Binning); var data12 = est12.Fit(data).Transform(data); var data13 = est13.Fit(data).Transform(data); @@ -285,7 +285,7 @@ public void SimpleConstructorsAndExtensions() // Tests for SupervisedBinning var est15 = new NormalizingEstimator(Env, NormalizingEstimator.NormalizationMode.SupervisedBinning, ("float4", "float4")); var est16 = new NormalizingEstimator(Env, new NormalizingEstimator.SupervisedBinningColumOptions("float4")); - var est17 = ML.Transforms.Normalize(NormalizingEstimator.NormalizationMode.SupervisedBinning, ("float4", "float4")); + var est17 = ML.Transforms.Normalize("float4", "float4", NormalizingEstimator.NormalizationMode.SupervisedBinning); var data15 = est15.Fit(data).Transform(data); var data16 = est16.Fit(data).Transform(data); @@ -314,11 +314,11 @@ public void NormalizerExperimentalExtensions() var data = loader.Load(dataPath); // Normalizer Extensions - var est1 = ML.Transforms.Normalize(NormalizingEstimator.NormalizationMode.MinMax, ("float4", "float4")); - var est2 = ML.Transforms.Normalize(NormalizingEstimator.NormalizationMode.MeanVariance, ("float4", "float4")); - var est3 = ML.Transforms.Normalize(NormalizingEstimator.NormalizationMode.LogMeanVariance, ("float4", "float4")); - var est4 = ML.Transforms.Normalize(NormalizingEstimator.NormalizationMode.Binning, ("float4", "float4")); - var est5 = ML.Transforms.Normalize(NormalizingEstimator.NormalizationMode.SupervisedBinning, ("float4", "float4")); + var est1 = ML.Transforms.Normalize("float4", "float4", NormalizingEstimator.NormalizationMode.MinMax); + var est2 = ML.Transforms.Normalize("float4", "float4", NormalizingEstimator.NormalizationMode.MeanVariance); + var est3 = ML.Transforms.Normalize("float4", "float4", NormalizingEstimator.NormalizationMode.LogMeanVariance); + var est4 = ML.Transforms.Normalize("float4", "float4", NormalizingEstimator.NormalizationMode.Binning); + var est5 = ML.Transforms.Normalize("float4", "float4", NormalizingEstimator.NormalizationMode.SupervisedBinning); // Normalizer Extensions (Experimental) var est6 = ML.Transforms.NormalizeMinMax("float4", "float4"); diff --git a/test/Microsoft.ML.Tests/Transformers/ValueMappingTests.cs b/test/Microsoft.ML.Tests/Transformers/ValueMappingTests.cs index f6de4553db..090ab7e9d4 100644 --- a/test/Microsoft.ML.Tests/Transformers/ValueMappingTests.cs +++ b/test/Microsoft.ML.Tests/Transformers/ValueMappingTests.cs @@ -515,7 +515,7 @@ public void ValueMappingWorkout() }; // Workout on value mapping - var est = ML.Transforms.Conversion.MapValue(keyValuePairs, new ColumnOptions[] { ("D", "A"), ("E", "B"), ("F", "C") }); + var est = ML.Transforms.Conversion.MapValue(keyValuePairs, new[] { new InputOutputColumnPair("D", "A"), new InputOutputColumnPair("E", "B"), new InputOutputColumnPair("F", "C") }); TestEstimatorCore(est, validFitInput: dataView, invalidInput: badDataView); } @@ -534,7 +534,7 @@ public void ValueMappingValueTypeIsVectorWorkout() }; // Workout on value mapping - var est = ML.Transforms.Conversion.MapValue(keyValuePairs, new ColumnOptions[] { ("D", "A"), ("E", "B"), ("F", "C") }); + var est = ML.Transforms.Conversion.MapValue(keyValuePairs, new[] { new InputOutputColumnPair("D", "A"), new InputOutputColumnPair("E", "B"), new InputOutputColumnPair("F", "C") }); TestEstimatorCore(est, validFitInput: dataView, invalidInput: badDataView); } @@ -555,7 +555,7 @@ public void ValueMappingInputIsVectorWorkout() }; var est = ML.Transforms.Text.TokenizeIntoWords("TokenizeB", "B") - .Append(ML.Transforms.Conversion.MapValue(keyValuePairs, new ColumnOptions[] { ("VecB", "TokenizeB") })); + .Append(ML.Transforms.Conversion.MapValue("VecB", keyValuePairs, "TokenizeB")); TestEstimatorCore(est, validFitInput: dataView, invalidInput: badDataView); }