Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

ConversionsCatalog.MapKeyToBinaryVector Method

Definition

Namespace:
Microsoft.ML
Assembly:
Microsoft.ML.Transforms.dll
Package:
Microsoft.ML v4.0.1
Package:
Microsoft.ML v1.0.0
Package:
Microsoft.ML v1.1.0
Package:
Microsoft.ML v1.2.0
Package:
Microsoft.ML v1.3.1
Package:
Microsoft.ML v1.4.0
Package:
Microsoft.ML v1.5.5
Package:
Microsoft.ML v1.6.0
Package:
Microsoft.ML v1.7.0
Package:
Microsoft.ML v2.0.1
Package:
Microsoft.ML v3.0.1
Package:
Microsoft.ML v5.0.0-preview.1.25125.4
Source:
ConversionsCatalog.cs
Source:
ConversionsCatalog.cs
Source:
ConversionsCatalog.cs

Important

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

Create a KeyToBinaryVectorMappingEstimator, which converts key types to their corresponding binary representation of the original value.

public static Microsoft.ML.Transforms.KeyToBinaryVectorMappingEstimator MapKeyToBinaryVector(this Microsoft.ML.TransformsCatalog.ConversionTransforms catalog, string outputColumnName, string inputColumnName = default);
static member MapKeyToBinaryVector : Microsoft.ML.TransformsCatalog.ConversionTransforms * string * string -> Microsoft.ML.Transforms.KeyToBinaryVectorMappingEstimator
<Extension()>
Public Function MapKeyToBinaryVector (catalog As TransformsCatalog.ConversionTransforms, outputColumnName As String, Optional inputColumnName As String = Nothing) As KeyToBinaryVectorMappingEstimator

Parameters

catalog
TransformsCatalog.ConversionTransforms

The categorical transform's catalog.

outputColumnName
String

Name of the column resulting from the transformation of inputColumnName. The data type is a known-size vector of Single representing the input value.

inputColumnName
String

Name of column to transform. If set to null, the value of the outputColumnName will be used as source. The data type is a key or a known-size vector of keys.

Returns

Examples

using System;
using System.Collections.Generic;
using Microsoft.ML;
using Microsoft.ML.Data;

namespace Samples.Dynamic
{
 class MapKeyToBinaryVector
 {
 /// This example demonstrates the use of MapKeyToVector by mapping keys to
 /// floats[] of 0 and 1, representing the number in binary format.
 /// Because the ML.NET KeyType maps the missing value to zero, counting
 /// starts at 1, so the uint values converted to KeyTypes will appear
 /// skewed by one.
 /// See https://github.com/dotnet/machinelearning/blob/main/docs/code/IDataViewTypeSystem.md#key-types
 public static void Example()
 {
 // Create a new ML context, for ML.NET operations. It can be used for
 // exception tracking and logging, as well as the source of randomness.
 var mlContext = new MLContext();

 // Get a small dataset as an IEnumerable.
 var rawData = new[] {
 new DataPoint() { Timeframe = 9 },
 new DataPoint() { Timeframe = 8 },
 new DataPoint() { Timeframe = 8 },
 new DataPoint() { Timeframe = 9 },
 new DataPoint() { Timeframe = 2 },
 new DataPoint() { Timeframe = 3 }
 };

 var data = mlContext.Data.LoadFromEnumerable(rawData);

 // Constructs the ML.net pipeline
 var pipeline = mlContext.Transforms.Conversion.MapKeyToBinaryVector(
 "TimeframeVector", "Timeframe");

 // Fits the pipeline to the data.
 IDataView transformedData = pipeline.Fit(data).Transform(data);

 // Getting the resulting data as an IEnumerable.
 // This will contain the newly created columns.
 IEnumerable<TransformedData> features = mlContext.Data.CreateEnumerable<
 TransformedData>(transformedData, reuseRowObject: false);

 Console.WriteLine($" Timeframe TimeframeVector");
 foreach (var featureRow in features)
 Console.WriteLine($"{featureRow.Timeframe}\t\t\t" +
 $"{string.Join(',', featureRow.TimeframeVector)}");

 // Timeframe TimeframeVector
 // 10 0,1,0,0,1 //binary representation of 9, the original value
 // 9 0,1,0,0,0 //binary representation of 8, the original value
 // 9 0,1,0,0,0
 // 10 0,1,0,0,1
 // 3 0,0,0,1,0
 // 4 0,0,0,1,1
 }

 private class DataPoint
 {
 [KeyType(10)]
 public uint Timeframe { get; set; }

 }

 private class TransformedData : DataPoint
 {
 public float[] TimeframeVector { get; set; }
 }
 }
}

Applies to