@@ -264,7 +264,14 @@ public static ValueMappingEstimator<TInputType, TOutputType> MapValue<TInputType
264
264
{
265
265
var keys = keyValuePairs . Select ( pair => pair . Key ) ;
266
266
var values = keyValuePairs . Select ( pair => pair . Value ) ;
267
- return new ValueMappingEstimator < TInputType , TOutputType > ( CatalogUtils . GetEnvironment ( catalog ) , keys , values , treatValuesAsKeyType ,
267
+
268
+ var lookupMap = DataViewHelper . CreateDataView ( catalog . GetEnvironment ( ) , keys , values ,
269
+ ValueMappingTransformer . DefaultKeyColumnName ,
270
+ ValueMappingTransformer . DefaultValueColumnName , treatValuesAsKeyType ) ;
271
+
272
+ return new ValueMappingEstimator < TInputType , TOutputType > ( catalog . GetEnvironment ( ) , lookupMap ,
273
+ lookupMap . Schema [ ValueMappingTransformer . DefaultKeyColumnName ] ,
274
+ lookupMap . Schema [ ValueMappingTransformer . DefaultValueColumnName ] ,
268
275
new [ ] { ( outputColumnName , inputColumnName ?? outputColumnName ) } ) ;
269
276
}
270
277
@@ -287,7 +294,15 @@ internal static ValueMappingEstimator<TInputType, TOutputType> MapValue<TInputTy
287
294
env . CheckValue ( columns , nameof ( columns ) ) ;
288
295
var keys = keyValuePairs . Select ( pair => pair . Key ) ;
289
296
var values = keyValuePairs . Select ( pair => pair . Value ) ;
290
- return new ValueMappingEstimator < TInputType , TOutputType > ( env , keys , values , InputOutputColumnPair . ConvertToValueTuples ( columns ) ) ;
297
+
298
+ var lookupMap = DataViewHelper . CreateDataView ( catalog . GetEnvironment ( ) , keys , values ,
299
+ ValueMappingTransformer . DefaultKeyColumnName ,
300
+ ValueMappingTransformer . DefaultValueColumnName , false ) ;
301
+
302
+ return new ValueMappingEstimator < TInputType , TOutputType > ( catalog . GetEnvironment ( ) , lookupMap ,
303
+ lookupMap . Schema [ ValueMappingTransformer . DefaultKeyColumnName ] ,
304
+ lookupMap . Schema [ ValueMappingTransformer . DefaultValueColumnName ] ,
305
+ InputOutputColumnPair . ConvertToValueTuples ( columns ) ) ;
291
306
}
292
307
293
308
/// <summary>
@@ -311,8 +326,15 @@ internal static ValueMappingEstimator<TInputType, TOutputType> MapValue<TInputTy
311
326
env . CheckValue ( columns , nameof ( columns ) ) ;
312
327
var keys = keyValuePairs . Select ( pair => pair . Key ) ;
313
328
var values = keyValuePairs . Select ( pair => pair . Value ) ;
314
- return new ValueMappingEstimator < TInputType , TOutputType > ( env , keys , values , treatValuesAsKeyType ,
315
- InputOutputColumnPair . ConvertToValueTuples ( columns ) ) ;
329
+
330
+ var lookupMap = DataViewHelper . CreateDataView ( catalog . GetEnvironment ( ) , keys , values ,
331
+ ValueMappingTransformer . DefaultKeyColumnName ,
332
+ ValueMappingTransformer . DefaultValueColumnName , treatValuesAsKeyType ) ;
333
+
334
+ return new ValueMappingEstimator < TInputType , TOutputType > ( catalog . GetEnvironment ( ) , lookupMap ,
335
+ lookupMap . Schema [ ValueMappingTransformer . DefaultKeyColumnName ] ,
336
+ lookupMap . Schema [ ValueMappingTransformer . DefaultValueColumnName ] ,
337
+ InputOutputColumnPair . ConvertToValueTuples ( columns ) ) ;
316
338
}
317
339
318
340
/// <summary>
@@ -339,7 +361,15 @@ public static ValueMappingEstimator<TInputType, TOutputType> MapValue<TInputType
339
361
{
340
362
var keys = keyValuePairs . Select ( pair => pair . Key ) ;
341
363
var values = keyValuePairs . Select ( pair => pair . Value ) ;
342
- return new ValueMappingEstimator < TInputType , TOutputType > ( CatalogUtils . GetEnvironment ( catalog ) , keys , values ,
364
+
365
+ // Convert parallel key and value lists to IDataView with two columns, so that the underlying infra can use it.
366
+ var lookupMap = DataViewHelper . CreateDataView ( catalog . GetEnvironment ( ) , keys , values ,
367
+ ValueMappingTransformer . DefaultKeyColumnName ,
368
+ ValueMappingTransformer . DefaultValueColumnName ) ;
369
+
370
+ return new ValueMappingEstimator < TInputType , TOutputType > ( catalog . GetEnvironment ( ) , lookupMap ,
371
+ lookupMap . Schema [ ValueMappingTransformer . DefaultKeyColumnName ] ,
372
+ lookupMap . Schema [ ValueMappingTransformer . DefaultValueColumnName ] ,
343
373
new [ ] { ( outputColumnName , inputColumnName ?? outputColumnName ) } ) ;
344
374
}
345
375
@@ -362,8 +392,15 @@ internal static ValueMappingEstimator<TInputType, TOutputType> MapValue<TInputTy
362
392
env . CheckValue ( columns , nameof ( columns ) ) ;
363
393
var keys = keyValuePairs . Select ( pair => pair . Key ) ;
364
394
var values = keyValuePairs . Select ( pair => pair . Value ) ;
365
- return new ValueMappingEstimator < TInputType , TOutputType > ( env , keys , values ,
366
- InputOutputColumnPair . ConvertToValueTuples ( columns ) ) ;
395
+
396
+ var lookupMap = DataViewHelper . CreateDataView ( catalog . GetEnvironment ( ) , keys , values ,
397
+ ValueMappingTransformer . DefaultKeyColumnName ,
398
+ ValueMappingTransformer . DefaultValueColumnName ) ;
399
+
400
+ return new ValueMappingEstimator < TInputType , TOutputType > ( catalog . GetEnvironment ( ) , lookupMap ,
401
+ lookupMap . Schema [ ValueMappingTransformer . DefaultKeyColumnName ] ,
402
+ lookupMap . Schema [ ValueMappingTransformer . DefaultValueColumnName ] ,
403
+ InputOutputColumnPair . ConvertToValueTuples ( columns ) ) ;
367
404
}
368
405
369
406
/// <summary>
@@ -386,7 +423,7 @@ public static ValueMappingEstimator MapValue(
386
423
this TransformsCatalog . ConversionTransforms catalog ,
387
424
string outputColumnName , IDataView lookupMap , DataViewSchema . Column keyColumn , DataViewSchema . Column valueColumn , string inputColumnName = null )
388
425
{
389
- return new ValueMappingEstimator ( CatalogUtils . GetEnvironment ( catalog ) , lookupMap , keyColumn . Name , valueColumn . Name ,
426
+ return new ValueMappingEstimator ( CatalogUtils . GetEnvironment ( catalog ) , lookupMap , keyColumn , valueColumn ,
390
427
new [ ] { ( outputColumnName , inputColumnName ?? outputColumnName ) } ) ;
391
428
}
392
429
@@ -406,8 +443,7 @@ internal static ValueMappingEstimator MapValue(
406
443
{
407
444
var env = CatalogUtils . GetEnvironment ( catalog ) ;
408
445
env . CheckValue ( columns , nameof ( columns ) ) ;
409
- return new ValueMappingEstimator ( env , lookupMap , keyColumn . Name , valueColumn . Name ,
410
- InputOutputColumnPair . ConvertToValueTuples ( columns ) ) ;
446
+ return new ValueMappingEstimator ( env , lookupMap , keyColumn , valueColumn , InputOutputColumnPair . ConvertToValueTuples ( columns ) ) ;
411
447
}
412
448
}
413
449
}
0 commit comments