Share via


CategoricalCatalog.OneHotEncoding Méthode

Définition

Surcharges

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

Créez un OneHotEncodingEstimator, qui convertit une ou plusieurs colonnes de texte d’entrée spécifiées en columns autant de colonnes de vecteurs codés à chaud.

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

Créez un OneHotEncodingEstimator, qui convertit la colonne d’entrée spécifiée en inputColumnName une colonne de vecteurs codés à chaud nommé outputColumnName.

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

Créez un OneHotEncodingEstimator, qui convertit une ou plusieurs colonnes de texte d’entrée spécifiées en columns autant de colonnes de vecteurs codés à chaud.

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

Paramètres

catalog
TransformsCatalog.CategoricalTransforms

Catalogue de transformations.

columns
InputOutputColumnPair[]

Paires de colonnes d’entrée et de sortie. Le type de données des colonnes de sortie sera un vecteur de Single si outputKind c’est Bag, Indicatoret Binary. Si outputKind c’est le cas Key, le type de données des colonnes de sortie est une clé dans le cas d’une colonne d’entrée scalaire ou d’un vecteur de clés dans le cas d’une colonne d’entrée vectorielle.

outputKind
OneHotEncodingEstimator.OutputKind

Type de sortie : Bag (vecteur à plusieurs ensembles), Ind (vecteur d’indicateur), Clé (index) ou Vecteur d’indicateur encodé binaire.

maximumNumberOfKeys
Int32

Nombre maximal de termes à conserver par colonne lors de l’entraînement automatique.

keyOrdinality
ValueToKeyMappingEstimator.KeyOrdinality

Comment les éléments doivent être classés lorsqu’ils sont vectorisés. Si ByOccurrence elles sont choisies, elles seront dans l’ordre rencontré. Si ByValue, les éléments sont triés en fonction de leur comparaison par défaut, par exemple, le tri de texte respecte la casse (par exemple, « A », « Z », puis « a »).

keyData
IDataView

Spécifie un ordre pour l’encodage. S’il est spécifié, il doit s’agir d’une vue de données de colonne unique, et les valeurs clés sont extraites de cette colonne. S’il n’est pas spécifié, l’ordre est déterminé à partir des données d’entrée lors de l’ajustement.

Retours

Exemples

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

Remarques

Si plusieurs colonnes sont passées à l’estimateur, toutes les colonnes sont traitées dans un seul passage sur les données. Par conséquent, il est plus efficace de spécifier un estimateur avec de nombreuses colonnes que de spécifier de nombreux estimateurs chacun avec une seule colonne.

S’applique à

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

Créez un OneHotEncodingEstimator, qui convertit la colonne d’entrée spécifiée en inputColumnName une colonne de vecteurs codés à chaud nommé 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

Paramètres

catalog
TransformsCatalog.CategoricalTransforms

Catalogue de transformations.

outputColumnName
String

Nom de la colonne résultant de la transformation de inputColumnName. Le type de données de cette colonne sera un vecteur de Single si outputKind c’est Bag, Indicatoret Binary. Si outputKind c’est le cas Key, le type de données de cette colonne est une clé dans le cas d’une colonne d’entrée scalaire ou d’un vecteur de clés dans le cas d’une colonne d’entrée vectorielle.

inputColumnName
String

Nom de colonne à convertir en vecteurs à chaud. Si la valeur est définie null, la valeur du outputColumnName fichier sera utilisée comme source. Le type de données de cette colonne peut être scalaire ou vecteur numérique, texte, booléen DateTime ou DateTimeOffset,

outputKind
OneHotEncodingEstimator.OutputKind

Type de sortie : Bag (vecteur à plusieurs ensembles), Indicateur (vecteur d’indicateur), Clé (index) ou Vecteur d’indicateur codé binaire.

maximumNumberOfKeys
Int32

Nombre maximal de termes à conserver par colonne lors de l’entraînement automatique.

keyOrdinality
ValueToKeyMappingEstimator.KeyOrdinality

Comment les éléments doivent être classés lorsqu’ils sont vectorisés. Si ByOccurrence elles sont choisies, elles seront dans l’ordre rencontré. Si ByValue, les éléments sont triés en fonction de leur comparaison par défaut, par exemple, le tri de texte respecte la casse (par exemple, « A », « Z », puis « a »).

keyData
IDataView

Spécifie un ordre pour l’encodage. S’il est spécifié, il doit s’agir d’une vue de données de colonne unique, et les valeurs clés sont extraites de cette colonne. S’il n’est pas spécifié, l’ordre est déterminé à partir des données d’entrée lors de l’ajustement.

Retours

Exemples

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

S’applique à