CategoricalCatalog.OneHotEncoding Metodo

Definizione

Overload

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

Creare un OneHotEncodingEstimatoroggetto , che converte una o più colonne di testo di input specificate in in columns quante colonne di vettori codificati a caldo.

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

Creare un OneHotEncodingEstimatoroggetto , che converte la colonna di input specificata da inputColumnName in una colonna di vettori con codifica uno a caldo denominati outputColumnName.

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

Creare un OneHotEncodingEstimatoroggetto , che converte una o più colonne di testo di input specificate in in columns quante colonne di vettori codificati a caldo.

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

Parametri

catalog
TransformsCatalog.CategoricalTransforms

Catalogo di trasformazione.

columns
InputOutputColumnPair[]

Coppie di colonne di input e output. Il tipo di dati delle colonne di output sarà un vettore di Single se outputKind è Bag, Indicatore Binary. Se outputKind è Key, il tipo di dati delle colonne di output sarà una chiave nel caso di colonna di input scalare o di un vettore di chiavi nel caso di una colonna di input vettore.

outputKind
OneHotEncodingEstimator.OutputKind

Tipo di output: contenitore (vettore multi set), Ind (vettore indicatore), Chiave (indice) o Vettore indicatore con codifica binaria.

maximumNumberOfKeys
Int32

Numero massimo di termini da mantenere per colonna quando si esegue il training automatico.

keyOrdinality
ValueToKeyMappingEstimator.KeyOrdinality

Come è necessario ordinare gli elementi quando viene vettorializzato. Se ByOccurrence si sceglie che saranno nell'ordine rilevato. Se ByValue, gli elementi vengono ordinati in base al confronto predefinito, ad esempio, l'ordinamento del testo sarà distinzione tra maiuscole e minuscole(ad esempio, 'A' e 'Z', 'a').

keyData
IDataView

Specifica un ordinamento per la codifica. Se specificato, deve essere una singola visualizzazione dati di colonna e i valori chiave verranno presi da tale colonna. Se non specificato, l'ordinamento verrà determinato dai dati di input al momento dell'adattamento.

Restituisce

Esempio

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

Commenti

Se più colonne vengono passate allo strumento di stima, tutte le colonne verranno elaborate in un singolo passaggio sui dati. Pertanto, è più efficiente specificare uno stimatore con molte colonne che è quello di specificare molti stimatori ognuno con una singola colonna.

Si applica a

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

Creare un OneHotEncodingEstimatoroggetto , che converte la colonna di input specificata da inputColumnName in una colonna di vettori con codifica uno a caldo denominati 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

Parametri

catalog
TransformsCatalog.CategoricalTransforms

Catalogo di trasformazione.

outputColumnName
String

Nome della colonna risultante dalla trasformazione di inputColumnName. Il tipo di dati di questa colonna sarà un vettore di Single se outputKind è Bag, Indicatore Binary. Se outputKind è Key, il tipo di dati di questa colonna sarà una chiave nel caso di una colonna di input scalare o di un vettore di chiavi nel caso di una colonna di input vettore.

inputColumnName
String

Nome della colonna da convertire in vettori a caldo. Se impostato su null, il valore dell'oggetto outputColumnName verrà usato come origine. Il tipo di dati di questa colonna può essere scalare o vettore di numeri, testo, booleano DateTime o DateTimeOffset,

outputKind
OneHotEncodingEstimator.OutputKind

Tipo di output: Vettore indicatore (vettore multi set), Indicatore (vettore indicatore), Chiave (indice) o Vettore indicatore con codifica binaria.

maximumNumberOfKeys
Int32

Numero massimo di termini da mantenere per colonna quando si esegue il training automatico.

keyOrdinality
ValueToKeyMappingEstimator.KeyOrdinality

Come è necessario ordinare gli elementi quando viene vettorializzato. Se ByOccurrence si sceglie che saranno nell'ordine rilevato. Se ByValue, gli elementi vengono ordinati in base al confronto predefinito, ad esempio, l'ordinamento del testo sarà distinzione tra maiuscole e minuscole(ad esempio, 'A' e 'Z', 'a').

keyData
IDataView

Specifica un ordinamento per la codifica. Se specificato, deve essere una singola visualizzazione dati di colonna e i valori chiave verranno presi da tale colonna. Se non specificato, l'ordinamento verrà determinato dai dati di input al momento dell'adattamento.

Restituisce

Esempio

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

Si applica a