CategoricalCatalog.OneHotEncoding Metode

Definisi

Overload

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

OneHotEncodingEstimatorBuat , yang mengonversi satu atau beberapa kolom teks input yang ditentukan columns menjadi kolom vektor berenkode satu panas sebanyak mungkin.

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

OneHotEncodingEstimatorBuat , yang mengonversi kolom input yang ditentukan oleh inputColumnName menjadi kolom vektor berkode satu panas bernama outputColumnName.

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

Sumber:
CategoricalCatalog.cs
Sumber:
CategoricalCatalog.cs
Sumber:
CategoricalCatalog.cs

OneHotEncodingEstimatorBuat , yang mengonversi satu atau beberapa kolom teks input yang ditentukan columns menjadi kolom vektor berenkode satu panas sebanyak mungkin.

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

Parameter

catalog
TransformsCatalog.CategoricalTransforms

Katalog transformasi.

columns
InputOutputColumnPair[]

Pasangan kolom input dan output. Jenis data kolom output akan menjadi vektor jika SingleoutputKind 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

Jenis output: Bag (vektor multi-set), Ind (vektor indikator), Kunci (indeks), atau vektor indikator yang dikodekan Biner.

maximumNumberOfKeys
Int32

Jumlah maksimum istilah yang akan disimpan per kolom saat pelatihan otomatis.

keyOrdinality
ValueToKeyMappingEstimator.KeyOrdinality

Bagaimana item harus diurutkan saat di-vektorisasi. Jika ByOccurrence dipilih, mereka akan berada dalam urutan yang ditemui. Jika ByValue, item diurutkan sesuai dengan perbandingan defaultnya, misalnya, pengurutan teks akan peka huruf besar/kecil (misalnya, 'A' lalu 'Z' lalu 'a').

keyData
IDataView

Menentukan urutan untuk pengodean. Jika ditentukan, ini harus berupa tampilan data kolom tunggal, dan nilai kunci akan diambil dari kolom tersebut. Jika tidak ditentukan, pengurutan akan ditentukan dari data input setelah pas.

Mengembalikan

Contoh

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

Keterangan

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

Berlaku untuk

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

Sumber:
CategoricalCatalog.cs
Sumber:
CategoricalCatalog.cs
Sumber:
CategoricalCatalog.cs

OneHotEncodingEstimatorBuat , yang mengonversi kolom input yang ditentukan oleh inputColumnName menjadi kolom vektor berkode satu panas bernama 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

Parameter

catalog
TransformsCatalog.CategoricalTransforms

Katalog transformasi.

outputColumnName
String

Nama kolom yang dihasilkan dari transformasi inputColumnName. Jenis data kolom ini akan menjadi vektor jika SingleoutputKind 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 untuk dikonversi ke vektor satu panas. Jika diatur ke null, nilai outputColumnName akan digunakan sebagai sumber. Tipe data kolom ini dapat berupa skalar atau vektor numerik, teks, boolean, DateTime atau DateTimeOffset,

outputKind
OneHotEncodingEstimator.OutputKind

Jenis output: Bag (vektor multi-set), Indikator (vektor indikator), Kunci (indeks), atau vektor indikator biner yang dikodekan.

maximumNumberOfKeys
Int32

Jumlah maksimum istilah yang akan disimpan per kolom saat pelatihan otomatis.

keyOrdinality
ValueToKeyMappingEstimator.KeyOrdinality

Bagaimana item harus diurutkan saat di-vektorisasi. Jika ByOccurrence dipilih, mereka akan berada dalam urutan yang ditemui. Jika ByValue, item diurutkan sesuai dengan perbandingan defaultnya, misalnya, pengurutan teks akan peka huruf besar/kecil (misalnya, 'A' lalu 'Z' lalu 'a').

keyData
IDataView

Menentukan urutan untuk pengodean. Jika ditentukan, ini harus berupa tampilan data kolom tunggal, dan nilai kunci akan diambil dari kolom tersebut. Jika tidak ditentukan, pengurutan akan ditentukan dari data input setelah pas.

Mengembalikan

Contoh

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

Berlaku untuk