Udostępnij za pośrednictwem


CategoricalCatalog.OneHotHashEncoding Metoda

Definicja

Przeciążenia

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

Utwórz obiekt , który konwertuje co najmniej jedną kolumnę OneHotHashEncodingEstimatortekstu wejściowego określoną przez columns wartość na dowolną liczbę kolumn wektorów zakodowanych na podstawie skrótu.

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

Utwórz obiekt , który konwertuje kolumnę OneHotHashEncodingEstimatortekstową określoną przez inputColumnName element na kolumnę wektora kodowanego na podstawie skrótu o nazwie outputColumnName.

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

Utwórz obiekt , który konwertuje co najmniej jedną kolumnę OneHotHashEncodingEstimatortekstu wejściowego określoną przez columns wartość na dowolną liczbę kolumn wektorów zakodowanych na podstawie skrótu.

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

Parametry

catalog
TransformsCatalog.CategoricalTransforms

Wykaz przekształceń

columns
InputOutputColumnPair[]

Pary kolumn wejściowych i wyjściowych. Typ danych kolumn wyjściowych będzie wektorem Single wartości if outputKind , BagIndicatori Binary. Jeśli outputKind jest Keyto , typ danych kolumn wyjściowych będzie kluczem w przypadku kolumny wejściowej skalarnej lub wektora kluczy w przypadku kolumny wejściowej wektora.

outputKind
OneHotEncodingEstimator.OutputKind

Tryb konwersji.

numberOfBits
Int32

Liczba bitów do skrótu. Musi należeć do zakresu od 1 do 30 włącznie.

seed
UInt32

Skrót nasion.

useOrderedHashing
Boolean

Czy pozycja każdego terminu powinna być uwzględniona w skrótzie.

maximumNumberOfInverts
Int32

Podczas tworzenia skrótów mapujemy mapowania między oryginalnymi wartościami a wygenerowanymi wartościami skrótu. Tekstowa reprezentacja oryginalnych wartości jest przechowywana w nazwach miejsc metadanych dla nowej kolumny. Skróty, w związku z tym, mogą mapować wiele wartości początkowych na jeden. maximumNumberOfInverts określa górną granicę liczby odrębnych wartości wejściowych mapowania na skrót, który należy zachować. Wartość 0 nie zachowuje żadnych wartości wejściowych. -1 zachowuje wszystkie wartości wejściowe mapowania na każdy skrót.

Zwraca

Przykłady

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

Uwagi

Jeśli do narzędzia do szacowania zostanie przekazanych wiele kolumn, wszystkie kolumny zostaną przetworzone w jednym przekazaniu danych. Dlatego bardziej wydajne jest określenie jednego narzędzia do szacowania z wieloma kolumnami niż określenie wielu narzędzi do szacowania z jedną kolumną.

Dotyczy

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

Utwórz obiekt , który konwertuje kolumnę OneHotHashEncodingEstimatortekstową określoną przez inputColumnName element na kolumnę wektora kodowanego na podstawie skrótu o nazwie 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

Parametry

catalog
TransformsCatalog.CategoricalTransforms

Wykaz przekształceń.

outputColumnName
String

Nazwa kolumny wynikającej z przekształcenia inputColumnNameelementu . Typ danych tej kolumny będzie wektorem Single , jeśli outputKind to Bag, Indicatori Binary. Jeśli outputKind jest to Key, typ danych tej kolumny będzie kluczem w przypadku kolumny wejściowej skalarnej lub wektora kluczy w przypadku kolumny wejściowej wektora.

inputColumnName
String

Nazwa kolumny do przekształcenia. Jeśli jest ustawiona nullwartość , wartość outputColumnName elementu będzie używana jako źródło. Typ danych tej kolumny może być skalarny lub wektor liczbowy, tekstowy, DateTime logiczny lub DateTimeOffset.

outputKind
OneHotEncodingEstimator.OutputKind

Tryb konwersji.

numberOfBits
Int32

Liczba bitów do skrótu. Musi należeć do zakresu od 1 do 30 włącznie.

seed
UInt32

Skrót nasion.

useOrderedHashing
Boolean

Czy pozycja każdego terminu powinna być uwzględniona w skrótzie.

maximumNumberOfInverts
Int32

Podczas tworzenia skrótów mapujemy mapowania między oryginalnymi wartościami a wygenerowanymi wartościami skrótu. Tekstowa reprezentacja oryginalnych wartości jest przechowywana w nazwach miejsc metadanych dla nowej kolumny. Skróty, w związku z tym, mogą mapować wiele wartości początkowych na jeden. maximumNumberOfInverts określa górną granicę liczby odrębnych wartości wejściowych mapowania na skrót, który należy zachować. Wartość 0 nie zachowuje żadnych wartości wejściowych. -1 zachowuje wszystkie wartości wejściowe mapowania na każdy skrót.

Zwraca

Przykłady

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

Dotyczy