Bagikan melalui


CategoricalCatalog.OneHotHashEncoding Metode

Definisi

Overload

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

Buat OneHotHashEncodingEstimator, yang mengonversi satu atau beberapa kolom teks input yang ditentukan oleh columns menjadi kolom vektor yang dikodekan satu panas berbasis hash sebanyak mungkin.

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

Buat OneHotHashEncodingEstimator, yang mengonversi kolom teks yang ditentukan oleh inputColumnName menjadi kolom vektor berkode one-hot berbasis hash bernama outputColumnName.

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

Buat OneHotHashEncodingEstimator, yang mengonversi satu atau beberapa kolom teks input yang ditentukan oleh columns menjadi kolom vektor yang dikodekan satu panas berbasis hash sebanyak mungkin.

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

Parameter

catalog
TransformsCatalog.CategoricalTransforms

Katalog transformasi

columns
InputOutputColumnPair[]

Pasangan kolom input dan output. Jenis data kolom output akan menjadi vektor Single jika outputKind adalah Bag, , Indicatordan Binary. Jika outputKind adalah Key, jenis data kolom output akan menjadi kunci dalam kasus kolom input skalar atau vektor kunci dalam kasus kolom input vektor.

outputKind
OneHotEncodingEstimator.OutputKind

Mode konversi.

numberOfBits
Int32

Jumlah bit yang akan di-hash. Harus antara 1 dan 30, inklusif.

seed
UInt32

Benih hash.

useOrderedHashing
Boolean

Apakah posisi setiap istilah harus disertakan dalam hash.

maximumNumberOfInverts
Int32

Selama hashing, kami membangun pemetaan antara nilai asli dan nilai hash yang dihasilkan. Representasi teks nilai asli disimpan dalam nama slot metadata untuk kolom baru. Hashing, dengan demikian, dapat memetakan banyak nilai awal menjadi satu. maximumNumberOfInverts menentukan batas atas jumlah pemetaan nilai input yang berbeda ke hash yang harus dipertahankan. 0 tidak mempertahankan nilai input apa pun. -1 mempertahankan semua pemetaan nilai input ke setiap hash.

Mengembalikan

Contoh

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

Keterangan

Jika beberapa kolom diteruskan ke estimator, semua kolom akan diproses dalam satu kali melewati data. Oleh karena itu, lebih efisien untuk menentukan satu estimator dengan banyak kolom daripada menentukan banyak estimator masing-masing dengan satu kolom.

Berlaku untuk

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

Buat OneHotHashEncodingEstimator, yang mengonversi kolom teks yang ditentukan oleh inputColumnName menjadi kolom vektor berkode one-hot berbasis hash bernama 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

Parameter

catalog
TransformsCatalog.CategoricalTransforms

Katalog transformasi.

outputColumnName
String

Nama kolom yang dihasilkan dari transformasi inputColumnName. Jenis data kolom ini akan menjadi vektor Single jika outputKind adalah Bag, , Indicatordan Binary. Jika outputKind adalah Key, jenis data kolom ini akan menjadi kunci dalam kasus kolom input skalar atau vektor kunci dalam kasus kolom input vektor.

inputColumnName
String

Nama kolom yang akan diubah. Jika diatur ke null, nilai outputColumnName akan digunakan sebagai sumber. Jenis data kolom ini bisa bernilai skalar atau vektor numerik, teks, boolean, DateTime atau DateTimeOffset.

outputKind
OneHotEncodingEstimator.OutputKind

Mode konversi.

numberOfBits
Int32

Jumlah bit yang akan di-hash. Harus antara 1 dan 30, inklusif.

seed
UInt32

Benih hash.

useOrderedHashing
Boolean

Apakah posisi setiap istilah harus disertakan dalam hash.

maximumNumberOfInverts
Int32

Selama hashing, kami membangun pemetaan antara nilai asli dan nilai hash yang dihasilkan. Representasi teks nilai asli disimpan dalam nama slot metadata untuk kolom baru. Hashing, dengan demikian, dapat memetakan banyak nilai awal menjadi satu. maximumNumberOfInverts menentukan batas atas jumlah pemetaan nilai input yang berbeda ke hash yang harus dipertahankan. 0 tidak mempertahankan nilai input apa pun. -1 mempertahankan semua pemetaan nilai input ke setiap hash.

Mengembalikan

Contoh

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

Berlaku untuk