ConversionsExtensionsCatalog.MapValue Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Sobrecargas
MapValue(TransformsCatalog+ConversionTransforms, String, IDataView, DataViewSchema+Column, DataViewSchema+Column, String) |
Cree un ValueMappingEstimatorobjeto , que convierte los tipos de valor en claves, cargando las claves para usarlas desde donde |
MapValue<TInputType,TOutputType>(TransformsCatalog+ConversionTransforms, String, IEnumerable<KeyValuePair<TInputType,TOutputType[]>>, String) |
Cree un ValueMappingEstimatorobjeto , que convierte los tipos de valor en claves, cargando las claves que se van a usar desde |
MapValue<TInputType,TOutputType>(TransformsCatalog+ConversionTransforms, String, IEnumerable<KeyValuePair<TInputType,TOutputType>>, String, Boolean) |
Cree un ValueMappingEstimatorobjeto , que convierte los tipos de valor en claves, cargando las claves que se van a usar desde |
MapValue(TransformsCatalog+ConversionTransforms, String, IDataView, DataViewSchema+Column, DataViewSchema+Column, String)
Cree un ValueMappingEstimatorobjeto , que convierte los tipos de valor en claves, cargando las claves para usarlas desde donde lookupMap
keyColumn
especifica las claves y el valueColumn
valor correspondiente.
public static Microsoft.ML.Transforms.ValueMappingEstimator MapValue (this Microsoft.ML.TransformsCatalog.ConversionTransforms catalog, string outputColumnName, Microsoft.ML.IDataView lookupMap, Microsoft.ML.DataViewSchema.Column keyColumn, Microsoft.ML.DataViewSchema.Column valueColumn, string inputColumnName = default);
static member MapValue : Microsoft.ML.TransformsCatalog.ConversionTransforms * string * Microsoft.ML.IDataView * Microsoft.ML.DataViewSchema.Column * Microsoft.ML.DataViewSchema.Column * string -> Microsoft.ML.Transforms.ValueMappingEstimator
<Extension()>
Public Function MapValue (catalog As TransformsCatalog.ConversionTransforms, outputColumnName As String, lookupMap As IDataView, keyColumn As DataViewSchema.Column, valueColumn As DataViewSchema.Column, Optional inputColumnName As String = Nothing) As ValueMappingEstimator
Parámetros
Catálogo de la transformación de conversión
- outputColumnName
- String
Nombre de la columna resultante de la transformación de inputColumnName
.
Los tipos de datos pueden ser primitivos o vectores de tipos numéricos, text, booleanos, DateTimeDateTimeOffset o DataViewRowId .
- keyColumn
- DataViewSchema.Column
Columna de clave en lookupMap
.
- valueColumn
- DataViewSchema.Column
Columna de valor en lookupMap
.
- inputColumnName
- String
Nombre de la columna que se va a transformar. Si se establece en null
, el valor de outputColumnName
se usará como origen.
Los tipos de datos pueden ser primitivos o vectores de tipos numéricos, text, booleanos, DateTimeDateTimeOffset o DataViewRowId .
Devoluciones
Ejemplos
using System;
using System.Collections.Generic;
using Microsoft.ML;
namespace Samples.Dynamic
{
public static class MapValueIdvLookup
{
/// This example demonstrates the use of MapValue by mapping floats to
/// strings, looking up the mapping in an IDataView. This is useful to map
/// types to a grouping.
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 rawData = new[] {
new DataPoint() { Price = 3.14f },
new DataPoint() { Price = 2000f },
new DataPoint() { Price = 1.19f },
new DataPoint() { Price = 2.17f },
new DataPoint() { Price = 33.784f },
};
// Convert to IDataView
var data = mlContext.Data.LoadFromEnumerable(rawData);
// Create the lookup map data IEnumerable.
var lookupData = new[] {
new LookupMap { Value = 3.14f, Category = "Low" },
new LookupMap { Value = 1.19f , Category = "Low" },
new LookupMap { Value = 2.17f , Category = "Low" },
new LookupMap { Value = 33.784f, Category = "Medium" },
new LookupMap { Value = 2000f, Category = "High"}
};
// Convert to IDataView
var lookupIdvMap = mlContext.Data.LoadFromEnumerable(lookupData);
// Constructs the ValueMappingEstimator making the ML.NET pipeline
var pipeline = mlContext.Transforms.Conversion.MapValue("PriceCategory",
lookupIdvMap, lookupIdvMap.Schema["Value"], lookupIdvMap.Schema[
"Category"], "Price");
// Fits the ValueMappingEstimator and transforms the data converting the
// Price to PriceCategory.
IDataView transformedData = pipeline.Fit(data).Transform(data);
// Getting the resulting data as an IEnumerable.
IEnumerable<TransformedData> features = mlContext.Data.CreateEnumerable<
TransformedData>(transformedData, reuseRowObject: false);
Console.WriteLine($" Price PriceCategory");
foreach (var featureRow in features)
Console.WriteLine($"{featureRow.Price}\t\t" +
$"{featureRow.PriceCategory}");
// TransformedData obtained post-transformation.
//
// Price PriceCategory
// 3.14 Low
// 2000 High
// 1.19 Low
// 2.17 Low
// 33.784 Medium
}
// Type for the IDataView that will be serving as the map
private class LookupMap
{
public float Value { get; set; }
public string Category { get; set; }
}
private class DataPoint
{
public float Price { get; set; }
}
private class TransformedData : DataPoint
{
public string PriceCategory { get; set; }
}
}
}
Se aplica a
MapValue<TInputType,TOutputType>(TransformsCatalog+ConversionTransforms, String, IEnumerable<KeyValuePair<TInputType,TOutputType[]>>, String)
Cree un ValueMappingEstimatorobjeto , que convierte los tipos de valor en claves, cargando las claves que se van a usar desde keyValuePairs
.
public static Microsoft.ML.Transforms.ValueMappingEstimator<TInputType,TOutputType> MapValue<TInputType,TOutputType> (this Microsoft.ML.TransformsCatalog.ConversionTransforms catalog, string outputColumnName, System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TInputType,TOutputType[]>> keyValuePairs, string inputColumnName = default);
static member MapValue : Microsoft.ML.TransformsCatalog.ConversionTransforms * string * seq<System.Collections.Generic.KeyValuePair<'InputType, 'OutputType[]>> * string -> Microsoft.ML.Transforms.ValueMappingEstimator<'InputType, 'OutputType>
<Extension()>
Public Function MapValue(Of TInputType, TOutputType) (catalog As TransformsCatalog.ConversionTransforms, outputColumnName As String, keyValuePairs As IEnumerable(Of KeyValuePair(Of TInputType, TOutputType())), Optional inputColumnName As String = Nothing) As ValueMappingEstimator(Of TInputType, TOutputType)
Parámetros de tipo
- TInputType
El tipo de clave.
- TOutputType
Tipo de valor.
Parámetros
Catálogo de la transformación de conversión
- outputColumnName
- String
Nombre de la columna resultante de la transformación de inputColumnName
.
Los tipos de datos pueden ser primitivos o vectores de tipos numéricos, text, booleanos, DateTimeDateTimeOffset o DataViewRowId , como se especifica en TOutputType
.
- keyValuePairs
- IEnumerable<KeyValuePair<TInputType,TOutputType[]>>
Especifica la asignación que se realizará. Las claves se asignarán a los valores especificados en .keyValuePairs
- inputColumnName
- String
Nombre de la columna que se va a transformar. Si se establece en null
, el valor de outputColumnName
se usará como origen.
Los tipos de datos pueden ser primitivos o vectores de tipos numéricos, text, booleanos, DateTimeDateTimeOffset o DataViewRowId , como se especifica en TInputType
.
Devoluciones
Ejemplos
using System;
using System.Collections.Generic;
using Microsoft.ML;
namespace Samples.Dynamic
{
public static class MapValueToArray
{
/// This example demonstrates the use of MapValue by mapping strings to
/// array values, which allows for mapping data to numeric arrays. This
/// functionality is useful when the generated column will serve as the
/// Features column for a trainer. Most of the trainers take a numeric
/// vector, as the Features column. In this example, we are mapping the
/// Timeframe data to arbitrary integer arrays.
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 rawData = new[] {
new DataPoint() { Timeframe = "0-4yrs" },
new DataPoint() { Timeframe = "6-11yrs" },
new DataPoint() { Timeframe = "12-25yrs" },
new DataPoint() { Timeframe = "0-5yrs" },
new DataPoint() { Timeframe = "12-25yrs" },
new DataPoint() { Timeframe = "25+yrs" },
};
var data = mlContext.Data.LoadFromEnumerable(rawData);
// Creating a list of key-value pairs to indicate the mapping between
// the DataPoint values, and the arrays they should map to.
var timeframeMap = new Dictionary<string, int[]>();
timeframeMap["0-4yrs"] = new int[] { 0, 5, 300 };
timeframeMap["0-5yrs"] = new int[] { 0, 5, 300 };
timeframeMap["6-11yrs"] = new int[] { 6, 11, 300 };
timeframeMap["12-25yrs"] = new int[] { 12, 50, 300 };
timeframeMap["25+yrs"] = new int[] { 12, 50, 300 };
// Constructs the ValueMappingEstimator making the ML.NET pipeline.
var pipeline = mlContext.Transforms.Conversion.MapValue("Features",
timeframeMap, "Timeframe");
// Fits the ValueMappingEstimator and transforms the data adding the
// Features column.
IDataView transformedData = pipeline.Fit(data).Transform(data);
// Getting the resulting data as an IEnumerable.
IEnumerable<TransformedData> featuresColumn = mlContext.Data
.CreateEnumerable<TransformedData>(transformedData, reuseRowObject:
false);
Console.WriteLine($"Timeframe Features");
foreach (var featureRow in featuresColumn)
Console.WriteLine($"{featureRow.Timeframe}\t\t " +
$"{string.Join(",", featureRow.Features)}");
// Timeframe Features
// 0-4yrs 0, 5, 300
// 6-11yrs 6, 11, 300
// 12-25yrs 12, 50, 300
// 0-5yrs 0, 5, 300
// 12-25yrs 12, 50,300
// 25+yrs 12, 50, 300
}
public class DataPoint
{
public string Timeframe { get; set; }
}
public class TransformedData : DataPoint
{
public int[] Features { get; set; }
}
}
}
Se aplica a
MapValue<TInputType,TOutputType>(TransformsCatalog+ConversionTransforms, String, IEnumerable<KeyValuePair<TInputType,TOutputType>>, String, Boolean)
Cree un ValueMappingEstimatorobjeto , que convierte los tipos de valor en claves, cargando las claves que se van a usar desde keyValuePairs
.
public static Microsoft.ML.Transforms.ValueMappingEstimator<TInputType,TOutputType> MapValue<TInputType,TOutputType> (this Microsoft.ML.TransformsCatalog.ConversionTransforms catalog, string outputColumnName, System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TInputType,TOutputType>> keyValuePairs, string inputColumnName = default, bool treatValuesAsKeyType = false);
static member MapValue : Microsoft.ML.TransformsCatalog.ConversionTransforms * string * seq<System.Collections.Generic.KeyValuePair<'InputType, 'OutputType>> * string * bool -> Microsoft.ML.Transforms.ValueMappingEstimator<'InputType, 'OutputType>
<Extension()>
Public Function MapValue(Of TInputType, TOutputType) (catalog As TransformsCatalog.ConversionTransforms, outputColumnName As String, keyValuePairs As IEnumerable(Of KeyValuePair(Of TInputType, TOutputType)), Optional inputColumnName As String = Nothing, Optional treatValuesAsKeyType As Boolean = false) As ValueMappingEstimator(Of TInputType, TOutputType)
Parámetros de tipo
- TInputType
El tipo de clave.
- TOutputType
Tipo de valor.
Parámetros
Catálogo de la transformación de conversión
- outputColumnName
- String
Nombre de la columna resultante de la transformación de inputColumnName
.
Los tipos de datos de salida pueden ser primitivos o vectores de tipos numéricos, text, booleanosDateTimeDateTimeOffset, o DataViewRowId .
- keyValuePairs
- IEnumerable<KeyValuePair<TInputType,TOutputType>>
Especifica la asignación que se realizará. Las claves se asignarán a los valores especificados en .keyValuePairs
- inputColumnName
- String
Nombre de la columna que se va a transformar.
Si se establece en null
, el valor de outputColumnName
se usará como origen.
Los tipos de datos de entrada pueden ser primitivos o vectores de tipos numéricos, text, booleanosDateTimeDateTimeOffset, o DataViewRowId .
- treatValuesAsKeyType
- Boolean
Si se deben tratar los valores como una clave.
Devoluciones
Instancia de ValueMappingEstimator
Ejemplos
using System;
using System.Collections.Generic;
using Microsoft.ML;
namespace Samples.Dynamic
{
public static class MapValue
{
/// This example demonstrates the use of the ValueMappingEstimator by
/// mapping strings to other string values, or floats to strings. This is
/// useful to map types to a category.
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 rawData = new[] {
new DataPoint() { Timeframe = "0-4yrs" , Score = 1 },
new DataPoint() { Timeframe = "6-11yrs" , Score = 2 },
new DataPoint() { Timeframe = "12-25yrs" , Score = 3 },
new DataPoint() { Timeframe = "0-5yrs" , Score = 4 },
new DataPoint() { Timeframe = "12-25yrs" , Score = 5 },
new DataPoint() { Timeframe = "25+yrs" , Score = 5 },
};
var data = mlContext.Data.LoadFromEnumerable(rawData);
// Construct the mapping to other strings for the Timeframe column.
var timeframeMap = new Dictionary<string, string>();
timeframeMap["0-4yrs"] = "Short";
timeframeMap["0-5yrs"] = "Short";
timeframeMap["6-11yrs"] = "Medium";
timeframeMap["12-25yrs"] = "Long";
timeframeMap["25+yrs"] = "Long";
// Construct the mapping of strings to keys(uints) for the Timeframe
// column.
var timeframeKeyMap = new Dictionary<string, uint>();
timeframeKeyMap["0-4yrs"] = 1;
timeframeKeyMap["0-5yrs"] = 1;
timeframeKeyMap["6-11yrs"] = 2;
timeframeKeyMap["12-25yrs"] = 3;
timeframeKeyMap["25+yrs"] = 3;
// Construct the mapping of ints to strings for the Score column.
var scoreMap = new Dictionary<int, string>();
scoreMap[1] = "Low";
scoreMap[2] = "Low";
scoreMap[3] = "Average";
scoreMap[4] = "High";
scoreMap[5] = "High";
// Constructs the ML.net pipeline
var pipeline = mlContext.Transforms.Conversion.MapValue(
"TimeframeCategory", timeframeMap, "Timeframe").Append(mlContext.
Transforms.Conversion.MapValue("ScoreCategory", scoreMap, "Score"))
// on the MapValue below, the treatValuesAsKeyType is set to true.
// The type of the Label column will be a KeyDataViewType type,
// and it can be used as input for trainers performing multiclass
// classification.
.Append(mlContext.Transforms.Conversion.MapValue("Label",
timeframeKeyMap, "Timeframe", treatValuesAsKeyType: true));
// Fits the pipeline to the data.
IDataView transformedData = pipeline.Fit(data).Transform(data);
// Getting the resulting data as an IEnumerable.
// This will contain the newly created columns.
IEnumerable<TransformedData> features = mlContext.Data.CreateEnumerable<
TransformedData>(transformedData, reuseRowObject: false);
Console.WriteLine(" Timeframe TimeframeCategory Label Score " +
"ScoreCategory");
foreach (var featureRow in features)
Console.WriteLine($"{featureRow.Timeframe}\t\t" +
$"{featureRow.TimeframeCategory}\t\t\t{featureRow.Label}\t\t" +
$"{featureRow.Score}\t{featureRow.ScoreCategory}");
// TransformedData obtained post-transformation.
//
// Timeframe TimeframeCategory Label Score ScoreCategory
// 0-4yrs Short 1 1 Low
// 6-11yrs Medium 2 2 Low
// 12-25yrs Long 3 3 Average
// 0-5yrs Short 1 4 High
// 12-25yrs Long 3 5 High
// 25+yrs Long 3 5 High
}
private class DataPoint
{
public string Timeframe { get; set; }
public int Score { get; set; }
}
private class TransformedData : DataPoint
{
public string TimeframeCategory { get; set; }
public string ScoreCategory { get; set; }
public uint Label { get; set; }
}
}
}