Skip to content

Commit b0a1701

Browse files
authored
Introduce SimpleColumnInfo class (#2641)
1 parent bd00c1e commit b0a1701

File tree

14 files changed

+67
-39
lines changed

14 files changed

+67
-39
lines changed

docs/samples/Microsoft.ML.Samples/Dynamic/Normalizer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public static void Example()
6666

6767
// Composing a different pipeline if we wanted to normalize more than one column at a time.
6868
// Using log scale as the normalization mode.
69-
var multiColPipeline = ml.Transforms.Normalize(NormalizingEstimator.NormalizerMode.LogMeanVariance, new[] { ("LogInduced", "Induced"), ("LogSpontaneous", "Spontaneous") });
69+
var multiColPipeline = ml.Transforms.Normalize(NormalizingEstimator.NormalizerMode.LogMeanVariance, new SimpleColumnInfo[] { ("LogInduced", "Induced"), ("LogSpontaneous", "Spontaneous") });
7070
// The transformed data.
7171
var multiColtransformer = multiColPipeline.Fit(trainData);
7272
var multiColtransformedData = multiColtransformer.Transform(trainData);

docs/samples/Microsoft.ML.Samples/Dynamic/TensorFlow/TextClassification.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public static void Example()
7070
};
7171

7272
var engine = mlContext.Transforms.Text.TokenizeWords("TokenizedWords", "Sentiment_Text")
73-
.Append(mlContext.Transforms.Conversion.ValueMap(lookupMap, "Words", "Ids", new[] { ("VariableLenghtFeatures", "TokenizedWords") }))
73+
.Append(mlContext.Transforms.Conversion.ValueMap(lookupMap, "Words", "Ids", new SimpleColumnInfo[] { ("VariableLenghtFeatures", "TokenizedWords") }))
7474
.Append(mlContext.Transforms.CustomMapping(ResizeFeaturesAction, "Resize"))
7575
.Append(mlContext.Transforms.ScoreTensorFlowModel(modelInfo, new[] { "Prediction/Softmax" }, new[] { "Features" }))
7676
.Append(mlContext.Transforms.CopyColumns(("Prediction", "Prediction/Softmax")))

src/Microsoft.ML.Data/Transforms/ConversionsExtensionsCatalog.cs

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,8 @@ public static KeyToValueMappingEstimator MapKeyToValue(this TransformsCatalog.Co
8686
/// [!code-csharp[KeyToValueMappingEstimator](~/../docs/samples/docs/samples/Microsoft.ML.Samples/Dynamic/ValueMappingStringToKeyType.cs)]
8787
/// ]]></format>
8888
/// </example>
89-
public static KeyToValueMappingEstimator MapKeyToValue(this TransformsCatalog.ConversionTransforms catalog, params (string outputColumnName, string inputColumnName)[] columns)
90-
=> new KeyToValueMappingEstimator(CatalogUtils.GetEnvironment(catalog), columns);
89+
public static KeyToValueMappingEstimator MapKeyToValue(this TransformsCatalog.ConversionTransforms catalog, params SimpleColumnInfo[] columns)
90+
=> new KeyToValueMappingEstimator(CatalogUtils.GetEnvironment(catalog), SimpleColumnInfo.ConvertToValueTuples(columns));
9191

9292
/// <summary>
9393
/// Convert the key types back to their original vectors.
@@ -175,8 +175,8 @@ public static ValueMappingEstimator<TInputType, TOutputType> ValueMap<TInputType
175175
this TransformsCatalog.ConversionTransforms catalog,
176176
IEnumerable<TInputType> keys,
177177
IEnumerable<TOutputType> values,
178-
params (string outputColumnName, string inputColumnName)[] columns)
179-
=> new ValueMappingEstimator<TInputType, TOutputType>(CatalogUtils.GetEnvironment(catalog), keys, values, columns);
178+
params SimpleColumnInfo[] columns)
179+
=> new ValueMappingEstimator<TInputType, TOutputType>(CatalogUtils.GetEnvironment(catalog), keys, values, SimpleColumnInfo.ConvertToValueTuples(columns));
180180

181181
/// <summary>
182182
/// <see cref="ValueMappingEstimator"/>
@@ -201,8 +201,9 @@ public static ValueMappingEstimator<TInputType, TOutputType> ValueMap<TInputType
201201
IEnumerable<TInputType> keys,
202202
IEnumerable<TOutputType> values,
203203
bool treatValuesAsKeyType,
204-
params (string outputColumnName, string inputColumnName)[] columns)
205-
=> new ValueMappingEstimator<TInputType, TOutputType>(CatalogUtils.GetEnvironment(catalog), keys, values, treatValuesAsKeyType, columns);
204+
params SimpleColumnInfo[] columns)
205+
=> new ValueMappingEstimator<TInputType, TOutputType>(CatalogUtils.GetEnvironment(catalog), keys, values, treatValuesAsKeyType,
206+
SimpleColumnInfo.ConvertToValueTuples(columns));
206207

207208
/// <summary>
208209
/// <see cref="ValueMappingEstimator"/>
@@ -228,8 +229,9 @@ public static ValueMappingEstimator<TInputType, TOutputType> ValueMap<TInputType
228229
this TransformsCatalog.ConversionTransforms catalog,
229230
IEnumerable<TInputType> keys,
230231
IEnumerable<TOutputType[]> values,
231-
params (string outputColumnName, string inputColumnName)[] columns)
232-
=> new ValueMappingEstimator<TInputType, TOutputType>(CatalogUtils.GetEnvironment(catalog), keys, values, columns);
232+
params SimpleColumnInfo[] columns)
233+
=> new ValueMappingEstimator<TInputType, TOutputType>(CatalogUtils.GetEnvironment(catalog), keys, values,
234+
SimpleColumnInfo.ConvertToValueTuples(columns));
233235

234236
/// <summary>
235237
/// <see cref="ValueMappingEstimator"/>
@@ -251,7 +253,8 @@ public static ValueMappingEstimator<TInputType, TOutputType> ValueMap<TInputType
251253
/// </example>
252254
public static ValueMappingEstimator ValueMap(
253255
this TransformsCatalog.ConversionTransforms catalog,
254-
IDataView lookupMap, string keyColumn, string valueColumn, params (string outputColumnName, string inputColumnName)[] columns)
255-
=> new ValueMappingEstimator(CatalogUtils.GetEnvironment(catalog), lookupMap, keyColumn, valueColumn, columns);
256+
IDataView lookupMap, string keyColumn, string valueColumn, params SimpleColumnInfo[] columns)
257+
=> new ValueMappingEstimator(CatalogUtils.GetEnvironment(catalog), lookupMap, keyColumn, valueColumn,
258+
SimpleColumnInfo.ConvertToValueTuples(columns));
256259
}
257260
}

src/Microsoft.ML.Data/Transforms/ExtensionsCatalog.cs

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,36 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33
// See the LICENSE file in the project root for more information.
44

5+
using System.Linq;
56
using Microsoft.Data.DataView;
67
using Microsoft.ML.Data;
78
using Microsoft.ML.Transforms;
89

910
namespace Microsoft.ML
1011
{
12+
public sealed class SimpleColumnInfo
13+
{
14+
private readonly string _outputColumnName;
15+
private readonly string _inputColumnName;
16+
17+
public SimpleColumnInfo(string outputColumnName, string inputColumnName)
18+
{
19+
_outputColumnName = outputColumnName;
20+
_inputColumnName = inputColumnName;
21+
}
22+
23+
public static implicit operator SimpleColumnInfo((string outputColumnName, string inputColumnName) value)
24+
{
25+
return new SimpleColumnInfo(value.outputColumnName, value.inputColumnName);
26+
}
27+
28+
[BestFriend]
29+
internal static (string outputColumnName, string inputColumnName)[] ConvertToValueTuples(SimpleColumnInfo[] infos)
30+
{
31+
return infos.Select(info => (info._outputColumnName, info._inputColumnName)).ToArray();
32+
}
33+
}
34+
1135
/// <summary>
1236
/// Extension methods for the <see cref="TransformsCatalog"/>.
1337
/// </summary>
@@ -42,8 +66,8 @@ public static ColumnCopyingEstimator CopyColumns(this TransformsCatalog catalog,
4266
/// ]]>
4367
/// </format>
4468
/// </example>
45-
public static ColumnCopyingEstimator CopyColumns(this TransformsCatalog catalog, params (string outputColumnName, string inputColumnName)[] columns)
46-
=> new ColumnCopyingEstimator(CatalogUtils.GetEnvironment(catalog), columns);
69+
public static ColumnCopyingEstimator CopyColumns(this TransformsCatalog catalog, params SimpleColumnInfo[] columns)
70+
=> new ColumnCopyingEstimator(CatalogUtils.GetEnvironment(catalog), SimpleColumnInfo.ConvertToValueTuples(columns));
4771

4872
/// <summary>
4973
/// Concatenates columns together.

src/Microsoft.ML.Data/Transforms/NormalizerCatalog.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ public static NormalizingEstimator Normalize(this TransformsCatalog catalog,
4646
/// </example>
4747
public static NormalizingEstimator Normalize(this TransformsCatalog catalog,
4848
NormalizingEstimator.NormalizerMode mode,
49-
params (string outputColumnName, string inputColumnName)[] columns)
50-
=> new NormalizingEstimator(CatalogUtils.GetEnvironment(catalog), mode, columns);
49+
params SimpleColumnInfo[] columns)
50+
=> new NormalizingEstimator(CatalogUtils.GetEnvironment(catalog), mode, SimpleColumnInfo.ConvertToValueTuples(columns));
5151

5252
/// <summary>
5353
/// Normalize (rescale) columns according to specified custom parameters.

src/Microsoft.ML.ImageAnalytics/ExtensionsCatalog.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ public static class ImageEstimatorsCatalog
1818
/// [!code-csharp[ConvertToGrayscale](~/../docs/samples/docs/samples/Microsoft.ML.Samples/Dynamic/ImageAnalytics/ConvertToGrayscale.cs)]
1919
/// ]]></format>
2020
/// </example>
21-
public static ImageGrayscalingEstimator ConvertToGrayscale(this TransformsCatalog catalog, params (string outputColumnName, string inputColumnName)[] columnPairs)
22-
=> new ImageGrayscalingEstimator(CatalogUtils.GetEnvironment(catalog), columnPairs);
21+
public static ImageGrayscalingEstimator ConvertToGrayscale(this TransformsCatalog catalog, params SimpleColumnInfo[] columnPairs)
22+
=> new ImageGrayscalingEstimator(CatalogUtils.GetEnvironment(catalog), SimpleColumnInfo.ConvertToValueTuples(columnPairs));
2323

2424
/// <summary>
2525
/// Loads the images from the <see cref="ImageLoadingTransformer.ImageFolder" /> into memory.
@@ -41,8 +41,8 @@ public static ImageGrayscalingEstimator ConvertToGrayscale(this TransformsCatalo
4141
/// [!code-csharp[LoadImages](~/../docs/samples/docs/samples/Microsoft.ML.Samples/Dynamic/ImageAnalytics/LoadImages.cs)]
4242
/// ]]></format>
4343
/// </example>
44-
public static ImageLoadingEstimator LoadImages(this TransformsCatalog catalog, string imageFolder, params (string outputColumnName, string inputColumnName)[] columnPairs)
45-
=> new ImageLoadingEstimator(CatalogUtils.GetEnvironment(catalog), imageFolder, columnPairs);
44+
public static ImageLoadingEstimator LoadImages(this TransformsCatalog catalog, string imageFolder, params SimpleColumnInfo[] columnPairs)
45+
=> new ImageLoadingEstimator(CatalogUtils.GetEnvironment(catalog), imageFolder, SimpleColumnInfo.ConvertToValueTuples(columnPairs));
4646

4747
/// <include file='doc.xml' path='doc/members/member[@name="ImagePixelExtractingEstimator"]/*' />
4848
/// <param name="catalog"> The transform's catalog.</param>

src/Microsoft.ML.Transforms/ConversionsCatalog.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ public static class ConversionsCatalog
1919
/// <param name="catalog">The categorical transform's catalog.</param>
2020
/// <param name="columns">The input column.</param>
2121
public static KeyToBinaryVectorMappingEstimator MapKeyToBinaryVector(this TransformsCatalog.ConversionTransforms catalog,
22-
params (string outputColumnName, string inputColumnName)[] columns)
23-
=> new KeyToBinaryVectorMappingEstimator(CatalogUtils.GetEnvironment(catalog), columns);
22+
params SimpleColumnInfo[] columns)
23+
=> new KeyToBinaryVectorMappingEstimator(CatalogUtils.GetEnvironment(catalog), SimpleColumnInfo.ConvertToValueTuples(columns));
2424

2525
/// <summary>
2626
/// Convert the key types back to binary vector.

src/Microsoft.ML.Transforms/ExtensionsCatalog.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ public static class ExtensionsCatalog
1616
/// <param name="catalog">The transform extensions' catalog.</param>
1717
/// <param name="columns">The names of the input columns of the transformation and the corresponding names for the output columns.</param>
1818
public static MissingValueIndicatorEstimator IndicateMissingValues(this TransformsCatalog catalog,
19-
params (string outputColumnName, string inputColumnName)[] columns)
20-
=> new MissingValueIndicatorEstimator(CatalogUtils.GetEnvironment(catalog), columns);
19+
params SimpleColumnInfo[] columns)
20+
=> new MissingValueIndicatorEstimator(CatalogUtils.GetEnvironment(catalog), SimpleColumnInfo.ConvertToValueTuples(columns));
2121

2222
/// <summary>
2323
/// Creates a new output column, or replaces the source with a new column

src/Microsoft.ML.Transforms/FeatureSelectionCatalog.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,9 @@ public static MutualInformationFeatureSelectingEstimator SelectFeaturesBasedOnMu
2929
string labelColumn = MutualInfoSelectDefaults.LabelColumn,
3030
int slotsInOutput = MutualInfoSelectDefaults.SlotsInOutput,
3131
int numBins = MutualInfoSelectDefaults.NumBins,
32-
params (string outputColumnName, string inputColumnName)[] columns)
33-
=> new MutualInformationFeatureSelectingEstimator(CatalogUtils.GetEnvironment(catalog), labelColumn, slotsInOutput, numBins, columns);
32+
params SimpleColumnInfo[] columns)
33+
=> new MutualInformationFeatureSelectingEstimator(CatalogUtils.GetEnvironment(catalog), labelColumn, slotsInOutput, numBins,
34+
SimpleColumnInfo.ConvertToValueTuples(columns));
3435

3536
/// <include file='doc.xml' path='doc/members/member[@name="MutualInformationFeatureSelection"]/*' />
3637
/// <param name="catalog">The transform's catalog.</param>

src/Microsoft.ML.Transforms/Text/TextCatalog.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@ public static TokenizingByCharactersEstimator TokenizeCharacters(this Transforms
7373

7474
public static TokenizingByCharactersEstimator TokenizeCharacters(this TransformsCatalog.TextTransforms catalog,
7575
bool useMarkerCharacters = CharTokenizingDefaults.UseMarkerCharacters,
76-
params (string outputColumnName, string inputColumnName)[] columns)
77-
=> new TokenizingByCharactersEstimator(Contracts.CheckRef(catalog, nameof(catalog)).GetEnvironment(), useMarkerCharacters, columns);
76+
params SimpleColumnInfo[] columns)
77+
=> new TokenizingByCharactersEstimator(Contracts.CheckRef(catalog, nameof(catalog)).GetEnvironment(), useMarkerCharacters, SimpleColumnInfo.ConvertToValueTuples(columns));
7878

7979
/// <summary>
8080
/// Normalizes incoming text in <paramref name="inputColumnName"/> by changing case, removing diacritical marks, punctuation marks and/or numbers

0 commit comments

Comments
 (0)