CategoricalCatalog.OneHotEncoding Método

Definição

Sobrecargas

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

Crie um OneHotEncodingEstimator, que converte uma ou mais colunas de texto de entrada especificadas em columns tantas colunas de vetores codificados de um hot.

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

Crie um OneHotEncodingEstimator, que converte a coluna de entrada especificada por inputColumnName uma coluna de vetores codificados de um hot chamados outputColumnName.

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

Crie um OneHotEncodingEstimator, que converte uma ou mais colunas de texto de entrada especificadas em columns tantas colunas de vetores codificados de um hot.

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

Parâmetros

catalog
TransformsCatalog.CategoricalTransforms

O catálogo de transformação.

columns
InputOutputColumnPair[]

Os pares de colunas de entrada e saída. O tipo de dados das colunas de saída será um vetor de Single se outputKind for Bag, Indicatore Binary. Se outputKind for Key, o tipo de dados das colunas de saída será uma chave no caso da coluna de entrada escalar ou de um vetor de chaves no caso de uma coluna de entrada de vetor.

outputKind
OneHotEncodingEstimator.OutputKind

Tipo de saída: Bag (vetor de vários conjuntos), Ind (vetor indicador), Chave (índice) ou vetor de indicador codificado binário.

maximumNumberOfKeys
Int32

Número máximo de termos a serem mantidos por coluna durante o treinamento automático.

keyOrdinality
ValueToKeyMappingEstimator.KeyOrdinality

Como os itens devem ser ordenados quando vetoriais. Se ByOccurrence escolhido, eles estarão na ordem encontrada. Se ByValueos itens forem classificados de acordo com a comparação padrão, por exemplo, a classificação de texto diferenciará maiúsculas de minúsculas (por exemplo, 'A' e 'Z' e depois 'a').

keyData
IDataView

Especifica uma ordenação para a codificação. Se especificado, esse deve ser um modo de exibição de dados de coluna única e os valores-chave serão obtidos dessa coluna. Se não for especificado, a ordenação será determinada a partir dos dados de entrada ao se ajustar.

Retornos

Exemplos

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

Comentários

Se várias colunas forem passadas para o avaliador, todas as colunas serão processadas em uma única passagem sobre os dados. Portanto, é mais eficiente especificar um avaliador com muitas colunas do que especificar muitos estimadores cada um com uma única coluna.

Aplica-se a

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

Crie um OneHotEncodingEstimator, que converte a coluna de entrada especificada por inputColumnName uma coluna de vetores codificados de um hot chamados 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

Parâmetros

catalog
TransformsCatalog.CategoricalTransforms

O catálogo de transformação.

outputColumnName
String

Nome da coluna resultante da transformação de inputColumnName. O tipo de dados desta coluna será um vetor de Single se outputKind for Bag, Indicatore Binary. Se outputKind for Key, o tipo de dados desta coluna será uma chave no caso de uma coluna de entrada escalar ou um vetor de chaves no caso de uma coluna de entrada de vetor.

inputColumnName
String

Nome da coluna a ser convertida em vetores únicos. Se definido como null, o valor do outputColumnName será usado como origem. O tipo de dados desta coluna pode ser escalar ou vetor de numérico, texto, booliano DateTime ou DateTimeOffset,

outputKind
OneHotEncodingEstimator.OutputKind

Tipo de saída: Bag (vetor multi-set), Indicador (vetor indicador), Chave (índice) ou vetor de indicador codificado binário.

maximumNumberOfKeys
Int32

Número máximo de termos a serem mantidos por coluna durante o treinamento automático.

keyOrdinality
ValueToKeyMappingEstimator.KeyOrdinality

Como os itens devem ser ordenados quando vetoriais. Se ByOccurrence escolhido, eles estarão na ordem encontrada. Se ByValueos itens forem classificados de acordo com a comparação padrão, por exemplo, a classificação de texto diferenciará maiúsculas de minúsculas (por exemplo, 'A' e 'Z' e depois 'a').

keyData
IDataView

Especifica uma ordenação para a codificação. Se especificado, esse deve ser um modo de exibição de dados de coluna única e os valores-chave serão obtidos dessa coluna. Se não for especificado, a ordenação será determinada a partir dos dados de entrada ao se ajustar.

Retornos

Exemplos

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

Aplica-se a