CategoricalCatalog.OneHotHashEncoding Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Overload
OneHotHashEncoding(TransformsCatalog+CategoricalTransforms, InputOutputColumnPair[], OneHotEncodingEstimator+OutputKind, Int32, UInt32, Boolean, Int32) |
Creare un OneHotHashEncodingEstimatoroggetto , che converte una o più colonne di testo di input specificate da |
OneHotHashEncoding(TransformsCatalog+CategoricalTransforms, String, String, OneHotEncodingEstimator+OutputKind, Int32, UInt32, Boolean, Int32) |
Creare un OneHotHashEncodingEstimatoroggetto , che converte una colonna di testo specificata da |
OneHotHashEncoding(TransformsCatalog+CategoricalTransforms, InputOutputColumnPair[], OneHotEncodingEstimator+OutputKind, Int32, UInt32, Boolean, Int32)
Creare un OneHotHashEncodingEstimatoroggetto , che converte una o più colonne di testo di input specificate da columns
in quante colonne di vettori con codifica one-hot basati su hash.
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
Parametri
Catalogo di trasformazione
- columns
- InputOutputColumnPair[]
Coppie di colonne di input e output. Il tipo di dati delle colonne di output sarà un vettore di Single se outputKind
è Bag, Indicatore Binary.
Se outputKind
è Key, il tipo di dati delle colonne di output sarà una chiave nel caso di colonna di input scalare o di un vettore di chiavi nel caso di una colonna di input vettore.
- outputKind
- OneHotEncodingEstimator.OutputKind
Modalità di conversione.
- numberOfBits
- Int32
Numero di bit in cui eseguire l'hash. Deve essere compreso tra 1 e 30, inclusivo.
- seed
- UInt32
Hashing di inizializzazione.
- useOrderedHashing
- Boolean
Se la posizione di ogni termine deve essere inclusa nell'hash.
- maximumNumberOfInverts
- Int32
Durante l'hashing si constuct mapping tra i valori originali e i valori hash prodotti.
La rappresentazione testuale dei valori originali viene archiviata nei nomi degli slot dei metadati per la nuova colonna. L'hashing, ad esempio, può eseguire il mapping di molti valori iniziali a uno.
maximumNumberOfInverts
specifica il limite superiore del numero di valori di input distinti mappati a un hash che deve essere mantenuto.
0 non mantiene valori di input. -1 mantiene il mapping di tutti i valori di input a ogni hash.
Restituisce
Esempio
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; }
}
}
}
Commenti
Se più colonne vengono passate allo strumento di stima, tutte le colonne verranno elaborate in un singolo passaggio sui dati. Pertanto, è più efficiente specificare uno stimatore con molte colonne che è quello di specificare molti stimatori ognuno con una singola colonna.
Si applica a
OneHotHashEncoding(TransformsCatalog+CategoricalTransforms, String, String, OneHotEncodingEstimator+OutputKind, Int32, UInt32, Boolean, Int32)
Creare un OneHotHashEncodingEstimatoroggetto , che converte una colonna di testo specificata da inputColumnName
in una colonna vettoriale con codifica one-hot basata su hash denominata 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
Parametri
Catalogo di trasformazione.
- outputColumnName
- String
Nome della colonna risultante dalla trasformazione di inputColumnName
.
Il tipo di dati di questa colonna sarà un vettore di Single se outputKind
è Bag, Indicatore Binary.
Se outputKind
è Key, il tipo di dati di questa colonna sarà una chiave nel caso di una colonna di input scalare o di un vettore di chiavi nel caso di una colonna di input vettore.
- inputColumnName
- String
Nome della colonna da trasformare. Se impostato su null
, il valore dell'oggetto outputColumnName
verrà usato come origine.
Il tipo di dati di questa colonna può essere scalare o vettore di numeri, testo, booleano DateTime o DateTimeOffset.
- outputKind
- OneHotEncodingEstimator.OutputKind
Modalità di conversione.
- numberOfBits
- Int32
Numero di bit in cui eseguire l'hash. Deve essere compreso tra 1 e 30, inclusivo.
- seed
- UInt32
Hashing di inizializzazione.
- useOrderedHashing
- Boolean
Se la posizione di ogni termine deve essere inclusa nell'hash.
- maximumNumberOfInverts
- Int32
Durante l'hashing si constuct mapping tra i valori originali e i valori hash prodotti.
La rappresentazione testuale dei valori originali viene archiviata nei nomi degli slot dei metadati per la nuova colonna. L'hashing, ad esempio, può eseguire il mapping di molti valori iniziali a uno.
maximumNumberOfInverts
specifica il limite superiore del numero di valori di input distinti mappati a un hash che deve essere mantenuto.
0 non mantiene valori di input. -1 mantiene il mapping di tutti i valori di input a ogni hash.
Restituisce
Esempio
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; }
}
}
}