Compartir a través de


CategoricalCatalog.OneHotEncoding Método

Definición

Sobrecargas

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

Cree un OneHotEncodingEstimator, que convierte una o varias columnas de texto de entrada especificadas en columns en tantas columnas de vectores codificados con un solo acceso.

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

Cree un OneHotEncodingEstimatorobjeto , que convierte la columna de entrada especificada por inputColumnName en una columna de vectores codificados con un solo acceso denominado outputColumnName.

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

Cree un OneHotEncodingEstimator, que convierte una o varias columnas de texto de entrada especificadas en columns en tantas columnas de vectores codificados con un solo acceso.

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

Catálogo de transformación.

columns
InputOutputColumnPair[]

Pares de columnas de entrada y salida. El tipo de datos de las columnas de salida será un vector de Single si outputKind es Bag, Indicatory Binary. Si outputKind es Key, el tipo de datos de las columnas de salida será una clave en el caso de una columna de entrada escalar o un vector de claves en el caso de una columna de entrada vectorial.

outputKind
OneHotEncodingEstimator.OutputKind

Tipo de salida: contenedor (vector de varios conjuntos), Ind (vector de indicador), clave (índice) o vector de indicador codificado binario.

maximumNumberOfKeys
Int32

Número máximo de términos que se mantendrán por columna cuando se entrena automáticamente.

keyOrdinality
ValueToKeyMappingEstimator.KeyOrdinality

Cómo se deben ordenar los elementos cuando se vectorizan. Si ByOccurrence elige, estará en el orden encontrado. Si ByValuees , los elementos se ordenan según su comparación predeterminada, por ejemplo, la ordenación de texto distingue mayúsculas de minúsculas (por ejemplo, "A", "Z" y luego "a").

keyData
IDataView

Especifica una ordenación para la codificación. Si se especifica, debe ser una vista de datos de una sola columna y los valores de clave se tomarán de esa columna. Si no se especifica, la ordenación se determinará a partir de los datos de entrada tras el ajuste.

Devoluciones

Ejemplos

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

Comentarios

Si se pasan varias columnas al estimador, todas las columnas se procesarán en un solo paso sobre los datos. Por lo tanto, es más eficaz especificar un estimador con muchas columnas de lo que es especificar muchos estimadores cada uno con una sola columna.

Se aplica a

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

Cree un OneHotEncodingEstimatorobjeto , que convierte la columna de entrada especificada por inputColumnName en una columna de vectores codificados con un solo acceso denominado 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

Catálogo de transformación.

outputColumnName
String

Nombre de la columna resultante de la transformación de inputColumnName. El tipo de datos de esta columna será un vector de Single si outputKind es Bag, Indicatory Binary. Si outputKind es Key, el tipo de datos de esta columna será una clave en el caso de una columna de entrada escalar o un vector de claves en el caso de una columna de entrada vectorial.

inputColumnName
String

Nombre de la columna que se va a convertir en vectores de un solo acceso. Si se establece nullen , el valor de outputColumnName se usará como origen. El tipo de datos de esta columna puede ser escalar o vector de numérico, texto, booleano DateTime o DateTimeOffset,

outputKind
OneHotEncodingEstimator.OutputKind

Tipo de salida: Contenedor (vector de conjunto múltiple), Indicador (vector de indicador), Clave (índice) o Vector de indicador codificado binario.

maximumNumberOfKeys
Int32

Número máximo de términos que se mantendrán por columna cuando se entrena automáticamente.

keyOrdinality
ValueToKeyMappingEstimator.KeyOrdinality

Cómo se deben ordenar los elementos cuando se vectorizan. Si ByOccurrence elige, estará en el orden encontrado. Si ByValuees , los elementos se ordenan según su comparación predeterminada, por ejemplo, la ordenación de texto distingue mayúsculas de minúsculas (por ejemplo, "A", "Z" y luego "a").

keyData
IDataView

Especifica una ordenación para la codificación. Si se especifica, debe ser una vista de datos de una sola columna y los valores de clave se tomarán de esa columna. Si no se especifica, la ordenación se determinará a partir de los datos de entrada tras el ajuste.

Devoluciones

Ejemplos

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

Se aplica a