5
5
using System . Collections . Generic ;
6
6
using System . Linq ;
7
7
using Microsoft . ML . Data ;
8
+ using Microsoft . ML . Runtime ;
8
9
using Microsoft . ML . Transforms ;
9
10
10
11
namespace Microsoft . ML
@@ -65,6 +66,22 @@ public static TypeConvertingEstimator ConvertType(this TransformsCatalog.Convers
65
66
DataKind outputKind = ConvertDefaults . DefaultOutputKind )
66
67
=> new TypeConvertingEstimator ( CatalogUtils . GetEnvironment ( catalog ) , new [ ] { new TypeConvertingEstimator . ColumnOptions ( outputColumnName , outputKind , inputColumnName ) } ) ;
67
68
69
+ /// <summary>
70
+ /// Changes column type of the input columns.
71
+ /// </summary>
72
+ /// <param name="catalog">The conversion transform's catalog.</param>
73
+ /// <param name="columns">Specifies the names of the columns on which to apply the transformation.</param>
74
+ /// <param name="outputKind">The expected kind of the output column.</param>
75
+ public static TypeConvertingEstimator ConvertType ( this TransformsCatalog . ConversionTransforms catalog ,
76
+ InputOutputColumnPair [ ] columns ,
77
+ DataKind outputKind = ConvertDefaults . DefaultOutputKind )
78
+ {
79
+ var env = CatalogUtils . GetEnvironment ( catalog ) ;
80
+ env . CheckValue ( columns , nameof ( columns ) ) ;
81
+ var columnOptions = columns . Select ( x => new TypeConvertingEstimator . ColumnOptions ( x . OutputColumnName , outputKind , x . InputColumnName ) ) . ToArray ( ) ;
82
+ return new TypeConvertingEstimator ( env , columnOptions ) ;
83
+ }
84
+
68
85
/// <summary>
69
86
/// Changes column type of the input column.
70
87
/// </summary>
@@ -90,20 +107,16 @@ public static KeyToValueMappingEstimator MapKeyToValue(this TransformsCatalog.Co
90
107
=> new KeyToValueMappingEstimator ( CatalogUtils . GetEnvironment ( catalog ) , outputColumnName , inputColumnName ) ;
91
108
92
109
/// <summary>
93
- /// Convert the key types (name of the column specified in the first item of the tuple) back to their original values
94
- /// (named as specified in the second item of the tuple).
110
+ /// Convert the key types back to their original values.
95
111
/// </summary>
96
- /// <param name="catalog">The conversion transform's catalog</param>
97
- /// <param name="columns">The pairs of input and output columns.</param>
98
- /// <example>
99
- /// <format type="text/markdown">
100
- /// <]
102
- /// ]]></format>
103
- /// </example>
104
- [ BestFriend ]
105
- internal static KeyToValueMappingEstimator MapKeyToValue ( this TransformsCatalog . ConversionTransforms catalog , params ColumnOptions [ ] columns )
106
- => new KeyToValueMappingEstimator ( CatalogUtils . GetEnvironment ( catalog ) , ColumnOptions . ConvertToValueTuples ( columns ) ) ;
112
+ /// <param name="catalog">The conversion transform's catalog.</param>
113
+ /// <param name="columns">Specifies the names of the columns on which to apply the transformation.</param>
114
+ public static KeyToValueMappingEstimator MapKeyToValue ( this TransformsCatalog . ConversionTransforms catalog , InputOutputColumnPair [ ] columns )
115
+ {
116
+ var env = CatalogUtils . GetEnvironment ( catalog ) ;
117
+ env . CheckValue ( columns , nameof ( columns ) ) ;
118
+ return new KeyToValueMappingEstimator ( env , columns . Select ( x => ( x . OutputColumnName , x . InputColumnName ) ) . ToArray ( ) ) ;
119
+ }
107
120
108
121
/// <summary>
109
122
/// Maps key types or key values into a floating point vector.
@@ -127,6 +140,23 @@ public static KeyToVectorMappingEstimator MapKeyToVector(this TransformsCatalog.
127
140
string outputColumnName , string inputColumnName = null , bool outputCountVector = KeyToVectorMappingEstimator . Defaults . OutputCountVector )
128
141
=> new KeyToVectorMappingEstimator ( CatalogUtils . GetEnvironment ( catalog ) , outputColumnName , inputColumnName , outputCountVector ) ;
129
142
143
+ /// <summary>
144
+ /// Maps columns of key types or key values into columns of floating point vectors.
145
+ /// </summary>
146
+ /// <param name="catalog">The conversion transform's catalog.</param>
147
+ /// <param name="columns">Specifies the names of the columns on which to apply the transformation.</param>
148
+ /// <param name="outputCountVector">Whether to combine multiple indicator vectors into a single vector of counts instead of concatenating them.
149
+ /// This is only relevant when the input column is a vector of keys.</param>
150
+ public static KeyToVectorMappingEstimator MapKeyToVector ( this TransformsCatalog . ConversionTransforms catalog ,
151
+ InputOutputColumnPair [ ] columns , bool outputCountVector = KeyToVectorMappingEstimator . Defaults . OutputCountVector )
152
+ {
153
+ var env = CatalogUtils . GetEnvironment ( catalog ) ;
154
+ env . CheckValue ( columns , nameof ( columns ) ) ;
155
+ var columnOptions = columns . Select ( x => new KeyToVectorMappingEstimator . ColumnOptions ( x . OutputColumnName , x . InputColumnName , outputCountVector ) ) . ToArray ( ) ;
156
+ return new KeyToVectorMappingEstimator ( env , columnOptions ) ;
157
+
158
+ }
159
+
130
160
/// <summary>
131
161
/// Converts value types into <see cref="KeyDataViewType"/>.
132
162
/// </summary>
@@ -157,6 +187,31 @@ public static ValueToKeyMappingEstimator MapValueToKey(this TransformsCatalog.Co
157
187
=> new ValueToKeyMappingEstimator ( CatalogUtils . GetEnvironment ( catalog ) ,
158
188
new [ ] { new ValueToKeyMappingEstimator . ColumnOptions ( outputColumnName , inputColumnName , maximumNumberOfKeys , keyOrdinality , addKeyValueAnnotationsAsText ) } , keyData ) ;
159
189
190
+ /// <summary>
191
+ /// Converts value types into <see cref="KeyDataViewType"/>.
192
+ /// </summary>
193
+ /// <param name="catalog">The conversion transform's catalog.</param>
194
+ /// <param name="columns">Specifies the names of the columns on which to apply the transformation.</param>
195
+ /// <param name="maximumNumberOfKeys">Maximum number of keys to keep per column when auto-training.</param>
196
+ /// <param name="keyOrdinality">How items should be ordered when vectorized. If <see cref="ValueToKeyMappingEstimator.KeyOrdinality.ByOccurrence"/> choosen they will be in the order encountered.
197
+ /// If <see cref="ValueToKeyMappingEstimator.KeyOrdinality.ByValue"/>, items are sorted according to their default comparison, for example, text sorting will be case sensitive (for example, 'A' then 'Z' then 'a').</param>
198
+ /// <param name="addKeyValueAnnotationsAsText">Whether key value annotations should be text, regardless of the actual input type.</param>
199
+ /// <param name="keyData">The data view containing the terms. If specified, this should be a single column data
200
+ /// view, and the key-values will be taken from that column. If unspecified, the key-values will be determined
201
+ /// from the input data upon fitting.</param>
202
+ public static ValueToKeyMappingEstimator MapValueToKey ( this TransformsCatalog . ConversionTransforms catalog ,
203
+ InputOutputColumnPair [ ] columns ,
204
+ int maximumNumberOfKeys = ValueToKeyMappingEstimator . Defaults . MaximumNumberOfKeys ,
205
+ ValueToKeyMappingEstimator . KeyOrdinality keyOrdinality = ValueToKeyMappingEstimator . Defaults . Ordinality ,
206
+ bool addKeyValueAnnotationsAsText = ValueToKeyMappingEstimator . Defaults . AddKeyValueAnnotationsAsText ,
207
+ IDataView keyData = null )
208
+ {
209
+ var env = CatalogUtils . GetEnvironment ( catalog ) ;
210
+ env . CheckValue ( columns , nameof ( columns ) ) ;
211
+ var columnOptions = columns . Select ( x => new ValueToKeyMappingEstimator . ColumnOptions ( x . OutputColumnName , x . InputColumnName , maximumNumberOfKeys , keyOrdinality , addKeyValueAnnotationsAsText ) ) . ToArray ( ) ;
212
+ return new ValueToKeyMappingEstimator ( env , columnOptions , keyData ) ;
213
+ }
214
+
160
215
/// <summary>
161
216
/// Converts value types into <see cref="KeyDataViewType"/>, optionally loading the keys to use from <paramref name="keyData"/>.
162
217
/// </summary>
@@ -232,11 +287,13 @@ public static ValueMappingEstimator<TInputType, TOutputType> MapValue<TInputType
232
287
internal static ValueMappingEstimator < TInputType , TOutputType > MapValue < TInputType , TOutputType > (
233
288
this TransformsCatalog . ConversionTransforms catalog ,
234
289
IEnumerable < KeyValuePair < TInputType , TOutputType > > keyValuePairs ,
235
- params ColumnOptions [ ] columns )
290
+ params InputOutputColumnPair [ ] columns )
236
291
{
292
+ var env = CatalogUtils . GetEnvironment ( catalog ) ;
293
+ env . CheckValue ( columns , nameof ( columns ) ) ;
237
294
var keys = keyValuePairs . Select ( pair => pair . Key ) ;
238
295
var values = keyValuePairs . Select ( pair => pair . Value ) ;
239
- return new ValueMappingEstimator < TInputType , TOutputType > ( CatalogUtils . GetEnvironment ( catalog ) , keys , values , ColumnOptions . ConvertToValueTuples ( columns ) ) ;
296
+ return new ValueMappingEstimator < TInputType , TOutputType > ( env , keys , values , InputOutputColumnPair . ConvertToValueTuples ( columns ) ) ;
240
297
}
241
298
242
299
/// <summary>
@@ -260,12 +317,14 @@ internal static ValueMappingEstimator<TInputType, TOutputType> MapValue<TInputTy
260
317
this TransformsCatalog . ConversionTransforms catalog ,
261
318
IEnumerable < KeyValuePair < TInputType , TOutputType > > keyValuePairs ,
262
319
bool treatValuesAsKeyType ,
263
- params ColumnOptions [ ] columns )
320
+ params InputOutputColumnPair [ ] columns )
264
321
{
322
+ var env = CatalogUtils . GetEnvironment ( catalog ) ;
323
+ env . CheckValue ( columns , nameof ( columns ) ) ;
265
324
var keys = keyValuePairs . Select ( pair => pair . Key ) ;
266
325
var values = keyValuePairs . Select ( pair => pair . Value ) ;
267
- return new ValueMappingEstimator < TInputType , TOutputType > ( CatalogUtils . GetEnvironment ( catalog ) , keys , values , treatValuesAsKeyType ,
268
- ColumnOptions . ConvertToValueTuples ( columns ) ) ;
326
+ return new ValueMappingEstimator < TInputType , TOutputType > ( env , keys , values , treatValuesAsKeyType ,
327
+ InputOutputColumnPair . ConvertToValueTuples ( columns ) ) ;
269
328
}
270
329
271
330
/// <summary>
@@ -321,12 +380,14 @@ public static ValueMappingEstimator<TInputType, TOutputType> MapValue<TInputType
321
380
internal static ValueMappingEstimator < TInputType , TOutputType > MapValue < TInputType , TOutputType > (
322
381
this TransformsCatalog . ConversionTransforms catalog ,
323
382
IEnumerable < KeyValuePair < TInputType , TOutputType [ ] > > keyValuePairs ,
324
- params ColumnOptions [ ] columns )
383
+ params InputOutputColumnPair [ ] columns )
325
384
{
385
+ var env = CatalogUtils . GetEnvironment ( catalog ) ;
386
+ env . CheckValue ( columns , nameof ( columns ) ) ;
326
387
var keys = keyValuePairs . Select ( pair => pair . Key ) ;
327
388
var values = keyValuePairs . Select ( pair => pair . Value ) ;
328
- return new ValueMappingEstimator < TInputType , TOutputType > ( CatalogUtils . GetEnvironment ( catalog ) , keys , values ,
329
- ColumnOptions . ConvertToValueTuples ( columns ) ) ;
389
+ return new ValueMappingEstimator < TInputType , TOutputType > ( env , keys , values ,
390
+ InputOutputColumnPair . ConvertToValueTuples ( columns ) ) ;
330
391
}
331
392
332
393
/// <summary>
@@ -377,8 +438,12 @@ public static ValueMappingEstimator MapValue(
377
438
[ BestFriend ]
378
439
internal static ValueMappingEstimator MapValue (
379
440
this TransformsCatalog . ConversionTransforms catalog ,
380
- IDataView lookupMap , DataViewSchema . Column keyColumn , DataViewSchema . Column valueColumn , params ColumnOptions [ ] columns )
381
- => new ValueMappingEstimator ( CatalogUtils . GetEnvironment ( catalog ) , lookupMap , keyColumn . Name , valueColumn . Name ,
382
- ColumnOptions . ConvertToValueTuples ( columns ) ) ;
441
+ IDataView lookupMap , DataViewSchema . Column keyColumn , DataViewSchema . Column valueColumn , params InputOutputColumnPair [ ] columns )
442
+ {
443
+ var env = CatalogUtils . GetEnvironment ( catalog ) ;
444
+ env . CheckValue ( columns , nameof ( columns ) ) ;
445
+ return new ValueMappingEstimator ( env , lookupMap , keyColumn . Name , valueColumn . Name ,
446
+ InputOutputColumnPair . ConvertToValueTuples ( columns ) ) ;
447
+ }
383
448
}
384
449
}
0 commit comments