Udostępnij za pośrednictwem


CategoricalCatalog.OneHotEncoding Metoda

Definicja

Przeciążenia

OneHotEncoding(TransformsCatalog+CategoricalTransforms, InputOutputColumnPair[], OneHotEncodingEstimator+OutputKind, Int32, ValueToKeyMappingEstimator+KeyOrdinality, IDataView)

Utwórz obiekt , który konwertuje co najmniej jedną kolumnę OneHotEncodingEstimatortekstu wejściowego określoną w columns kolumnie na dowolną liczbę kolumn wektorów zakodowanych na gorąco.

OneHotEncoding(TransformsCatalog+CategoricalTransforms, String, String, OneHotEncodingEstimator+OutputKind, Int32, ValueToKeyMappingEstimator+KeyOrdinality, IDataView)

Utwórz obiekt , który konwertuje kolumnę OneHotEncodingEstimatorwejściową określoną przez inputColumnName na kolumnę wektorów zakodowanych na gorąco o nazwie outputColumnName.

OneHotEncoding(TransformsCatalog+CategoricalTransforms, InputOutputColumnPair[], OneHotEncodingEstimator+OutputKind, Int32, ValueToKeyMappingEstimator+KeyOrdinality, IDataView)

Utwórz obiekt , który konwertuje co najmniej jedną kolumnę OneHotEncodingEstimatortekstu wejściowego określoną w columns kolumnie na dowolną liczbę kolumn wektorów zakodowanych na gorąco.

public static Microsoft.ML.Transforms.OneHotEncodingEstimator OneHotEncoding (this Microsoft.ML.TransformsCatalog.CategoricalTransforms catalog, Microsoft.ML.InputOutputColumnPair[] columns, Microsoft.ML.Transforms.OneHotEncodingEstimator.OutputKind outputKind = Microsoft.ML.Transforms.OneHotEncodingEstimator+OutputKind.Indicator, int maximumNumberOfKeys = 1000000, Microsoft.ML.Transforms.ValueToKeyMappingEstimator.KeyOrdinality keyOrdinality = Microsoft.ML.Transforms.ValueToKeyMappingEstimator+KeyOrdinality.ByOccurrence, Microsoft.ML.IDataView keyData = default);
static member OneHotEncoding : Microsoft.ML.TransformsCatalog.CategoricalTransforms * Microsoft.ML.InputOutputColumnPair[] * Microsoft.ML.Transforms.OneHotEncodingEstimator.OutputKind * int * Microsoft.ML.Transforms.ValueToKeyMappingEstimator.KeyOrdinality * Microsoft.ML.IDataView -> Microsoft.ML.Transforms.OneHotEncodingEstimator
<Extension()>
Public Function OneHotEncoding (catalog As TransformsCatalog.CategoricalTransforms, columns As InputOutputColumnPair(), Optional outputKind As OneHotEncodingEstimator.OutputKind = Microsoft.ML.Transforms.OneHotEncodingEstimator+OutputKind.Indicator, Optional maximumNumberOfKeys As Integer = 1000000, Optional keyOrdinality As ValueToKeyMappingEstimator.KeyOrdinality = Microsoft.ML.Transforms.ValueToKeyMappingEstimator+KeyOrdinality.ByOccurrence, Optional keyData As IDataView = Nothing) As OneHotEncodingEstimator

Parametry

catalog
TransformsCatalog.CategoricalTransforms

Wykaz przekształceń.

columns
InputOutputColumnPair[]

Pary kolumn wejściowych i wyjściowych. Typ danych kolumn wyjściowych będzie wektorem Single wartości if outputKind , BagIndicatori Binary. Jeśli outputKind jest Keyto , typ danych kolumn wyjściowych będzie kluczem w przypadku kolumny wejściowej skalarnej lub wektora kluczy w przypadku kolumny wejściowej wektora.

outputKind
OneHotEncodingEstimator.OutputKind

Rodzaj danych wyjściowych: Torba (wektor wielostawowy), Ind (wektor wskaźnika), Klucz (indeks) lub Wektor wskaźnika zakodowanego binarnie.

maximumNumberOfKeys
Int32

Maksymalna liczba terminów do zachowania na kolumnę podczas automatycznego trenowania.

keyOrdinality
ValueToKeyMappingEstimator.KeyOrdinality

Jak elementy powinny być uporządkowane po wektoryzowanym. Jeśli ByOccurrence wybierzesz, będą one w kolejności napotkanej. Jeśli ByValueelement zostanie posortowany zgodnie z ich domyślnym porównaniem, na przykład sortowanie tekstu będzie uwzględniane wielkość liter (na przykład "A", a następnie "Z").

keyData
IDataView

Określa kolejność kodowania. Jeśli zostanie określony, powinien to być widok danych z jedną kolumną, a wartości klucz-wartości zostaną pobrane z tej kolumny. Jeśli nie zostanie określone, kolejność zostanie określona na podstawie danych wejściowych po dopasowaniu.

Zwraca

Przykłady

using System;
using Microsoft.ML;

namespace Samples.Dynamic.Transforms.Categorical
{
    public static class OneHotEncodingMultiColumn
    {
        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();

            // Create a small dataset as an IEnumerable.
            var samples = new[]
            {
                new DataPoint {Education = "0-5yrs", ZipCode = "98005"},
                new DataPoint {Education = "0-5yrs", ZipCode = "98052"},
                new DataPoint {Education = "6-11yrs", ZipCode = "98005"},
                new DataPoint {Education = "6-11yrs", ZipCode = "98052"},
                new DataPoint {Education = "11-15yrs", ZipCode = "98005"}
            };

            // Convert training data to IDataView.
            IDataView data = mlContext.Data.LoadFromEnumerable(samples);

            // Multi column example: A pipeline for one hot encoding two columns
            // 'Education' and 'ZipCode'.
            var multiColumnKeyPipeline =
                mlContext.Transforms.Categorical.OneHotEncoding(
                    new[]
                    {
                        new InputOutputColumnPair("Education"),
                        new InputOutputColumnPair("ZipCode")
                    });

            // Fit and Transform data.
            IDataView transformedData =
                multiColumnKeyPipeline.Fit(data).Transform(data);

            var convertedData =
                mlContext.Data.CreateEnumerable<TransformedData>(transformedData,
                    true);

            Console.WriteLine(
                "One Hot Encoding of two columns 'Education' and 'ZipCode'.");

            // One Hot Encoding of two columns 'Education' and 'ZipCode'.

            foreach (TransformedData item in convertedData)
                Console.WriteLine("{0}\t\t\t{1}", string.Join(" ", item.Education),
                    string.Join(" ", item.ZipCode));

            // 1 0 0                   1 0
            // 1 0 0                   0 1
            // 0 1 0                   1 0
            // 0 1 0                   0 1
            // 0 0 1                   1 0
        }

        private class DataPoint
        {
            public string Education { get; set; }

            public string ZipCode { get; set; }
        }

        private class TransformedData
        {
            public float[] Education { get; set; }

            public float[] ZipCode { get; set; }
        }
    }
}

Uwagi

Jeśli do narzędzia do szacowania zostanie przekazanych wiele kolumn, wszystkie kolumny zostaną przetworzone w jednym przekazaniu danych. Dlatego bardziej wydajne jest określenie jednego narzędzia do szacowania z wieloma kolumnami niż określenie wielu narzędzi do szacowania z jedną kolumną.

Dotyczy

OneHotEncoding(TransformsCatalog+CategoricalTransforms, String, String, OneHotEncodingEstimator+OutputKind, Int32, ValueToKeyMappingEstimator+KeyOrdinality, IDataView)

Utwórz obiekt , który konwertuje kolumnę OneHotEncodingEstimatorwejściową określoną przez inputColumnName na kolumnę wektorów zakodowanych na gorąco o nazwie outputColumnName.

public static Microsoft.ML.Transforms.OneHotEncodingEstimator OneHotEncoding (this Microsoft.ML.TransformsCatalog.CategoricalTransforms catalog, string outputColumnName, string inputColumnName = default, Microsoft.ML.Transforms.OneHotEncodingEstimator.OutputKind outputKind = Microsoft.ML.Transforms.OneHotEncodingEstimator+OutputKind.Indicator, int maximumNumberOfKeys = 1000000, Microsoft.ML.Transforms.ValueToKeyMappingEstimator.KeyOrdinality keyOrdinality = Microsoft.ML.Transforms.ValueToKeyMappingEstimator+KeyOrdinality.ByOccurrence, Microsoft.ML.IDataView keyData = default);
static member OneHotEncoding : Microsoft.ML.TransformsCatalog.CategoricalTransforms * string * string * Microsoft.ML.Transforms.OneHotEncodingEstimator.OutputKind * int * Microsoft.ML.Transforms.ValueToKeyMappingEstimator.KeyOrdinality * Microsoft.ML.IDataView -> Microsoft.ML.Transforms.OneHotEncodingEstimator
<Extension()>
Public Function OneHotEncoding (catalog As TransformsCatalog.CategoricalTransforms, outputColumnName As String, Optional inputColumnName As String = Nothing, Optional outputKind As OneHotEncodingEstimator.OutputKind = Microsoft.ML.Transforms.OneHotEncodingEstimator+OutputKind.Indicator, Optional maximumNumberOfKeys As Integer = 1000000, Optional keyOrdinality As ValueToKeyMappingEstimator.KeyOrdinality = Microsoft.ML.Transforms.ValueToKeyMappingEstimator+KeyOrdinality.ByOccurrence, Optional keyData As IDataView = Nothing) As OneHotEncodingEstimator

Parametry

catalog
TransformsCatalog.CategoricalTransforms

Wykaz przekształceń.

outputColumnName
String

Nazwa kolumny wynikającej z przekształcenia inputColumnNameelementu . Typ danych tej kolumny będzie wektorem Single , jeśli outputKind to Bag, Indicatori Binary. Jeśli outputKind jest to Key, typ danych tej kolumny będzie kluczem w przypadku kolumny wejściowej skalarnej lub wektora kluczy w przypadku kolumny wejściowej wektora.

inputColumnName
String

Nazwa kolumny, która ma być konwertowana na wektory jedno-gorące. Jeśli jest ustawiona nullwartość , wartość outputColumnName elementu będzie używana jako źródło. Typ danych tej kolumny może być skalarny lub wektor liczbowy, tekstowy, DateTime logiczny lub DateTimeOffset,

outputKind
OneHotEncodingEstimator.OutputKind

Rodzaj danych wyjściowych: worek (wektor wielostawowy), wskaźnik (wektor wskaźnika), klucz (indeks) lub wektor wskaźnika zakodowanego binarnie.

maximumNumberOfKeys
Int32

Maksymalna liczba terminów do zachowania na kolumnę podczas automatycznego trenowania.

keyOrdinality
ValueToKeyMappingEstimator.KeyOrdinality

Jak elementy powinny być uporządkowane po wektoryzowanym. Jeśli ByOccurrence wybierzesz, będą one w kolejności napotkanej. Jeśli ByValueelement zostanie posortowany zgodnie z ich domyślnym porównaniem, na przykład sortowanie tekstu będzie uwzględniane wielkość liter (na przykład "A", a następnie "Z").

keyData
IDataView

Określa kolejność kodowania. Jeśli zostanie określony, powinien to być widok danych z jedną kolumną, a wartości klucz-wartości zostaną pobrane z tej kolumny. Jeśli nie zostanie określone, kolejność zostanie określona na podstawie danych wejściowych po dopasowaniu.

Zwraca

Przykłady

using System;
using Microsoft.ML;
using Microsoft.ML.Data;
using Microsoft.ML.Transforms;

namespace Samples.Dynamic.Transforms.Categorical
{
    public static class OneHotEncoding
    {
        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();

            // Create a small dataset as an IEnumerable.
            var samples = new[]
            {
                new DataPoint {Education = "0-5yrs"},
                new DataPoint {Education = "0-5yrs"},
                new DataPoint {Education = "6-11yrs"},
                new DataPoint {Education = "6-11yrs"},
                new DataPoint {Education = "11-15yrs"}
            };

            // Convert training data to IDataView.
            IDataView data = mlContext.Data.LoadFromEnumerable(samples);

            // A pipeline for one hot encoding the Education column.
            var pipeline = mlContext.Transforms.Categorical.OneHotEncoding(
                "EducationOneHotEncoded", "Education");

            // Fit and transform the data.
            IDataView oneHotEncodedData = pipeline.Fit(data).Transform(data);

            PrintDataColumn(oneHotEncodedData, "EducationOneHotEncoded");

            // We have 3 slots because there are three categories in the
            // 'Education' column.

            // 1 0 0
            // 1 0 0
            // 0 1 0
            // 0 1 0
            // 0 0 1

            // A pipeline for one hot encoding the Education column (using keying).
            var keyPipeline = mlContext.Transforms.Categorical.OneHotEncoding(
                "EducationOneHotEncoded", "Education",
                OneHotEncodingEstimator.OutputKind.Key);

            // Fit and Transform data.
            oneHotEncodedData = keyPipeline.Fit(data).Transform(data);

            var keyEncodedColumn =
                oneHotEncodedData.GetColumn<uint>("EducationOneHotEncoded");

            Console.WriteLine(
                "One Hot Encoding of single column 'Education', with key type " +
                "output.");

            // One Hot Encoding of single column 'Education', with key type output.

            foreach (uint element in keyEncodedColumn)
                Console.WriteLine(element);

            // 1
            // 1
            // 2
            // 2
            // 3
        }

        private static void PrintDataColumn(IDataView transformedData,
            string columnName)
        {
            var countSelectColumn = transformedData.GetColumn<float[]>(
                transformedData.Schema[columnName]);

            foreach (var row in countSelectColumn)
            {
                for (var i = 0; i < row.Length; i++)
                    Console.Write($"{row[i]}\t");

                Console.WriteLine();
            }
        }

        private class DataPoint
        {
            public string Education { get; set; }
        }
    }
}

Dotyczy