Partager via


CategoricalCatalog.OneHotHashEncoding Méthode

Définition

Surcharges

OneHotHashEncoding(TransformsCatalog+CategoricalTransforms, InputOutputColumnPair[], OneHotEncodingEstimator+OutputKind, Int32, UInt32, Boolean, Int32)

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

OneHotHashEncoding(TransformsCatalog+CategoricalTransforms, String, String, OneHotEncodingEstimator+OutputKind, Int32, UInt32, Boolean, Int32)

Créez une OneHotHashEncodingEstimatorcolonne de texte qui convertit une colonne de texte spécifiée inputColumnName en une colonne de vecteur codée à chaud à chaud basée sur un hachage nommée outputColumnName.

OneHotHashEncoding(TransformsCatalog+CategoricalTransforms, InputOutputColumnPair[], OneHotEncodingEstimator+OutputKind, Int32, UInt32, Boolean, Int32)

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

public static Microsoft.ML.Transforms.OneHotHashEncodingEstimator OneHotHashEncoding (this Microsoft.ML.TransformsCatalog.CategoricalTransforms catalog, Microsoft.ML.InputOutputColumnPair[] columns, Microsoft.ML.Transforms.OneHotEncodingEstimator.OutputKind outputKind = Microsoft.ML.Transforms.OneHotEncodingEstimator+OutputKind.Indicator, int numberOfBits = 16, uint seed = 314489979, bool useOrderedHashing = true, int maximumNumberOfInverts = 0);
static member OneHotHashEncoding : Microsoft.ML.TransformsCatalog.CategoricalTransforms * Microsoft.ML.InputOutputColumnPair[] * Microsoft.ML.Transforms.OneHotEncodingEstimator.OutputKind * int * uint32 * bool * int -> Microsoft.ML.Transforms.OneHotHashEncodingEstimator
<Extension()>
Public Function OneHotHashEncoding (catalog As TransformsCatalog.CategoricalTransforms, columns As InputOutputColumnPair(), Optional outputKind As OneHotEncodingEstimator.OutputKind = Microsoft.ML.Transforms.OneHotEncodingEstimator+OutputKind.Indicator, Optional numberOfBits As Integer = 16, Optional seed As UInteger = 314489979, Optional useOrderedHashing As Boolean = true, Optional maximumNumberOfInverts As Integer = 0) As OneHotHashEncodingEstimator

Paramètres

catalog
TransformsCatalog.CategoricalTransforms

Catalogue de transformation

columns
InputOutputColumnPair[]

Paires de colonnes d’entrée et de sortie. Le type de données des colonnes de sortie est un vecteur de Single si outputKind c’est Bag, Indicatoret Binary. Si outputKind c’est Keyle cas, 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

Mode de conversion.

numberOfBits
Int32

Nombre de bits à hacher. Doit être compris entre 1 et 30 (inclus).

seed
UInt32

Seed de hachage.

useOrderedHashing
Boolean

Indique si la position de chaque terme doit être incluse dans le hachage.

maximumNumberOfInverts
Int32

Pendant le hachage, nous constuctons des mappages entre les valeurs d’origine et les valeurs de hachage produites. La représentation textuelle des valeurs d’origine est stockée dans les noms d’emplacements des métadonnées pour la nouvelle colonne. Le hachage, par exemple, peut mapper de nombreuses valeurs initiales à une. maximumNumberOfInverts spécifie la limite supérieure du nombre de valeurs d’entrée distinctes mappées à un hachage qui doit être conservé. 0 ne conserve aucune valeur d’entrée. -1 conserve tous les mappages de valeurs d’entrée à chaque hachage.

Retours

Exemples

using System;
using Microsoft.ML;

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

            // Get 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 has encoding two
            // columns 'Education' and 'ZipCode'.
            var multiColumnKeyPipeline =
                mlContext.Transforms.Categorical.OneHotHashEncoding(
                    new[]
                    {
                        new InputOutputColumnPair("Education"),
                        new InputOutputColumnPair("ZipCode")
                    },
                    numberOfBits: 3);

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

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

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

            // One Hot Hash 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));

            // We have 8 slots, because we used numberOfBits = 3.

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

        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 seront 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 à

OneHotHashEncoding(TransformsCatalog+CategoricalTransforms, String, String, OneHotEncodingEstimator+OutputKind, Int32, UInt32, Boolean, Int32)

Créez une OneHotHashEncodingEstimatorcolonne de texte qui convertit une colonne de texte spécifiée inputColumnName en une colonne de vecteur codée à chaud à chaud basée sur un hachage nommée outputColumnName.

public static Microsoft.ML.Transforms.OneHotHashEncodingEstimator OneHotHashEncoding (this Microsoft.ML.TransformsCatalog.CategoricalTransforms catalog, string outputColumnName, string inputColumnName = default, Microsoft.ML.Transforms.OneHotEncodingEstimator.OutputKind outputKind = Microsoft.ML.Transforms.OneHotEncodingEstimator+OutputKind.Indicator, int numberOfBits = 16, uint seed = 314489979, bool useOrderedHashing = true, int maximumNumberOfInverts = 0);
static member OneHotHashEncoding : Microsoft.ML.TransformsCatalog.CategoricalTransforms * string * string * Microsoft.ML.Transforms.OneHotEncodingEstimator.OutputKind * int * uint32 * bool * int -> Microsoft.ML.Transforms.OneHotHashEncodingEstimator
<Extension()>
Public Function OneHotHashEncoding (catalog As TransformsCatalog.CategoricalTransforms, outputColumnName As String, Optional inputColumnName As String = Nothing, Optional outputKind As OneHotEncodingEstimator.OutputKind = Microsoft.ML.Transforms.OneHotEncodingEstimator+OutputKind.Indicator, Optional numberOfBits As Integer = 16, Optional seed As UInteger = 314489979, Optional useOrderedHashing As Boolean = true, Optional maximumNumberOfInverts As Integer = 0) As OneHotHashEncodingEstimator

Paramètres

catalog
TransformsCatalog.CategoricalTransforms

Catalogue de transformation.

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 Keyle cas, 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 la colonne à transformer. Si elle est définie sur null, la valeur du outputColumnName fichier sera utilisée comme source. Le type de données de cette colonne peut être scalaire ou vecteur de données numériques, texte, booléen DateTime ou DateTimeOffset.

outputKind
OneHotEncodingEstimator.OutputKind

Mode de conversion.

numberOfBits
Int32

Nombre de bits à hacher. Doit être compris entre 1 et 30 (inclus).

seed
UInt32

Seed de hachage.

useOrderedHashing
Boolean

Indique si la position de chaque terme doit être incluse dans le hachage.

maximumNumberOfInverts
Int32

Pendant le hachage, nous constuctons des mappages entre les valeurs d’origine et les valeurs de hachage produites. La représentation textuelle des valeurs d’origine est stockée dans les noms d’emplacements des métadonnées pour la nouvelle colonne. Le hachage, par exemple, peut mapper de nombreuses valeurs initiales à une. maximumNumberOfInverts spécifie la limite supérieure du nombre de valeurs d’entrée distinctes mappées à un hachage qui doit être conservé. 0 ne conserve aucune valeur d’entrée. -1 conserve tous les mappages de valeurs d’entrée à chaque hachage.

Retours

Exemples

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

namespace Samples.Dynamic.Transforms.Categorical
{
    public static class OneHotHashEncoding
    {
        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 an IDataView.
            IDataView data = mlContext.Data.LoadFromEnumerable(samples);

            // A pipeline for one hot hash encoding the 'Education' column.
            var pipeline = mlContext.Transforms.Categorical.OneHotHashEncoding(
                "EducationOneHotHashEncoded", "Education", numberOfBits: 3);

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

            PrintDataColumn(hashEncodedData, "EducationOneHotHashEncoded");
            // We have 8 slots, because we used numberOfBits = 3.

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

            // A pipeline for one hot hash encoding the 'Education' column
            // (using keying strategy).
            var keyPipeline = mlContext.Transforms.Categorical.OneHotHashEncoding(
                "EducationOneHotHashEncoded", "Education",
                OneHotEncodingEstimator.OutputKind.Key, 3);

            // Fit and transform the data.
            IDataView hashKeyEncodedData = keyPipeline.Fit(data).Transform(data);

            // Get the data of the newly created column for inspecting.
            var keyEncodedColumn =
                hashKeyEncodedData.GetColumn<uint>("EducationOneHotHashEncoded");

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

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

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

            // 4
            // 4
            // 5
            // 5
            // 8
        }

        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 à