다음을 통해 공유


ConversionsCatalog.MapKeyToBinaryVector 메서드

정의

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

매개 변수

catalog
TransformsCatalog.ConversionTransforms

범주 변환의 카탈로그입니다.

outputColumnName
String

의 변환에서 생성된 열의 inputColumnName이름입니다. 데이터 형식은 입력 값을 나타내는 알려진 크기의 벡터 Single 입니다.

inputColumnName
String

변환할 열의 이름입니다. 이 값으로 null설정하면 값이 outputColumnName 원본으로 사용됩니다. 데이터 형식은 키 또는 키의 알려진 크기 벡터입니다.

반환

예제

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; }
        }
    }
}

적용 대상