CategoricalCatalog.OneHotHashEncoding Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
OneHotHashEncoding(TransformsCatalog+CategoricalTransforms, InputOutputColumnPair[], OneHotEncodingEstimator+OutputKind, Int32, UInt32, Boolean, Int32) |
OneHotHashEncodingEstimatorСоздайте объект, который преобразует один или несколько входных текстовых столбцов, указанных |
OneHotHashEncoding(TransformsCatalog+CategoricalTransforms, String, String, OneHotEncodingEstimator+OutputKind, Int32, UInt32, Boolean, Int32) |
OneHotHashEncodingEstimatorСоздайте столбец, преобразующий текстовый столбец, заданный в |
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
Параметры
Каталог преобразований
- 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
Параметры
Каталог преобразований.
- 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; }
}
}
}