Поделиться через


CategoricalCatalog.OneHotHashEncoding Метод

Определение

Перегрузки

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

OneHotHashEncodingEstimatorСоздайте объект, который преобразует один или несколько входных текстовых столбцов, указанных columns в столько столбцов векторов, основанных на хэш-кодировании.

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

OneHotHashEncodingEstimatorСоздайте столбец, преобразующий текстовый столбец, заданный в inputColumnName хэш-кодированный векторный столбец с outputColumnNameименем .

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

OneHotHashEncodingEstimatorСоздайте объект, который преобразует один или несколько входных текстовых столбцов, указанных columns в столько столбцов векторов, основанных на хэш-кодировании.

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

Параметры

catalog
TransformsCatalog.CategoricalTransforms

Каталог преобразований

columns
InputOutputColumnPair[]

Пары входных и выходных столбцов. Тип данных выходных столбцов будет вектором Single , если outputKind имеет значение Bag, Indicatorи Binary. Если outputKind это Keyтак, тип данных выходных столбцов будет ключом в случае скалярного входного столбца или вектора ключей в случае входного столбца вектора.

outputKind
OneHotEncodingEstimator.OutputKind

Режим преобразования.

numberOfBits
Int32

Число битов в результирующем хэше. Должно находиться в диапазоне от 1 до 30 включительно.

seed
UInt32

Начальное значение хэширования.

useOrderedHashing
Boolean

Следует ли включать позицию каждого термина в хэш.

maximumNumberOfInverts
Int32

Во время хэширования мы констуктируем сопоставления между исходными значениями и созданными хэш-значениями. Текстовое представление исходных значений хранится в именах слотов метаданных для нового столбца. Хэширование, например, может сопоставить с одним множеством начальных значений. maximumNumberOfInverts указывает верхнюю границу числа уникальных входных значений, сопоставленных с хэшом, который следует сохранить. 0 не сохраняет входные значения. -1 сохраняет все входные значения, сопоставленные с каждым хэшом.

Возвращаемое значение

Примеры

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

Комментарии

Если в оценщик передается несколько столбцов, все столбцы будут обрабатываться в одном проходе по данным. Поэтому более эффективно указать один оценщик со многими столбцами, чем указать множество оценщиков, каждый из которых имеет один столбец.

Применяется к

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

OneHotHashEncodingEstimatorСоздайте столбец, преобразующий текстовый столбец, заданный в inputColumnName хэш-кодированный векторный столбец с 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

Параметры

catalog
TransformsCatalog.CategoricalTransforms

Каталог преобразований.

outputColumnName
String

Имя столбца, полученного из преобразования inputColumnName. Тип данных этого столбца будет векторомSingle, если outputKind он имеет Bagзначение , и .BinaryIndicator Если outputKind это Keyтак, тип данных этого столбца будет ключом в случае скалярного входного столбца или вектора ключей в случае входного столбца вектора.

inputColumnName
String

Имя преобразуемого столбца. Если задано значение null, значение этого outputColumnName параметра будет использоваться в качестве источника. Тип данных этого столбца может быть скалярным или вектором числовых, текстовых, логических DateTime или DateTimeOffset.

outputKind
OneHotEncodingEstimator.OutputKind

Режим преобразования.

numberOfBits
Int32

Число битов в результирующем хэше. Должно находиться в диапазоне от 1 до 30 включительно.

seed
UInt32

Начальное значение хэширования.

useOrderedHashing
Boolean

Следует ли включать позицию каждого термина в хэш.

maximumNumberOfInverts
Int32

Во время хэширования мы констуктируем сопоставления между исходными значениями и созданными хэш-значениями. Текстовое представление исходных значений хранится в именах слотов метаданных для нового столбца. Хэширование, например, может сопоставить с одним множеством начальных значений. maximumNumberOfInverts указывает верхнюю границу числа уникальных входных значений, сопоставленных с хэшом, который следует сохранить. 0 не сохраняет входные значения. -1 сохраняет все входные значения, сопоставленные с каждым хэшом.

Возвращаемое значение

Примеры

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

Применяется к