NormalizationCatalog.NormalizeLogMeanVariance 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
NormalizeLogMeanVariance(TransformsCatalog, InputOutputColumnPair[], Int64, Boolean) |
创建一个 NormalizingEstimator,它根据数据的对数的计算平均值和方差进行规范化。 |
NormalizeLogMeanVariance(TransformsCatalog, InputOutputColumnPair[], Boolean, Int64, Boolean) |
创建一个 NormalizingEstimator,它根据数据的对数的计算平均值和方差进行规范化。 |
NormalizeLogMeanVariance(TransformsCatalog, String, String, Int64, Boolean) |
创建一个 NormalizingEstimator,它根据数据的对数的计算平均值和方差进行规范化。 |
NormalizeLogMeanVariance(TransformsCatalog, String, Boolean, String, Int64, Boolean) |
创建一个 NormalizingEstimator,它根据数据的对数的计算平均值和方差进行规范化。 |
NormalizeLogMeanVariance(TransformsCatalog, InputOutputColumnPair[], Int64, Boolean)
创建一个 NormalizingEstimator,它根据数据的对数的计算平均值和方差进行规范化。
public static Microsoft.ML.Transforms.NormalizingEstimator NormalizeLogMeanVariance (this Microsoft.ML.TransformsCatalog catalog, Microsoft.ML.InputOutputColumnPair[] columns, long maximumExampleCount = 1000000000, bool useCdf = true);
static member NormalizeLogMeanVariance : Microsoft.ML.TransformsCatalog * Microsoft.ML.InputOutputColumnPair[] * int64 * bool -> Microsoft.ML.Transforms.NormalizingEstimator
<Extension()>
Public Function NormalizeLogMeanVariance (catalog As TransformsCatalog, columns As InputOutputColumnPair(), Optional maximumExampleCount As Long = 1000000000, Optional useCdf As Boolean = true) As NormalizingEstimator
参数
- catalog
- TransformsCatalog
转换目录
- columns
- InputOutputColumnPair[]
输入和输出列对。 输入列必须是数据类型 Single, Double 或者是这些类型的已知大小的向量。 输出列的数据类型将与关联的输入列相同。
- maximumExampleCount
- Int64
用于训练规范化器的最大示例数。
- useCdf
- Boolean
是否使用 CDF 作为输出。
返回
适用于
NormalizeLogMeanVariance(TransformsCatalog, InputOutputColumnPair[], Boolean, Int64, Boolean)
创建一个 NormalizingEstimator,它根据数据的对数的计算平均值和方差进行规范化。
public static Microsoft.ML.Transforms.NormalizingEstimator NormalizeLogMeanVariance (this Microsoft.ML.TransformsCatalog catalog, Microsoft.ML.InputOutputColumnPair[] columns, bool fixZero, long maximumExampleCount = 1000000000, bool useCdf = true);
static member NormalizeLogMeanVariance : Microsoft.ML.TransformsCatalog * Microsoft.ML.InputOutputColumnPair[] * bool * int64 * bool -> Microsoft.ML.Transforms.NormalizingEstimator
<Extension()>
Public Function NormalizeLogMeanVariance (catalog As TransformsCatalog, columns As InputOutputColumnPair(), fixZero As Boolean, Optional maximumExampleCount As Long = 1000000000, Optional useCdf As Boolean = true) As NormalizingEstimator
参数
- catalog
- TransformsCatalog
转换目录
- columns
- InputOutputColumnPair[]
输入和输出列对。 输入列必须是数据类型 Single, Double 或者是这些类型的已知大小的向量。 输出列的数据类型将与关联的输入列相同。
- fixZero
- Boolean
是否将零映射到零,保留稀疏。
- maximumExampleCount
- Int64
用于训练规范化器的最大示例数。
- useCdf
- Boolean
是否使用 CDF 作为输出。
返回
适用于
NormalizeLogMeanVariance(TransformsCatalog, String, String, Int64, Boolean)
创建一个 NormalizingEstimator,它根据数据的对数的计算平均值和方差进行规范化。
public static Microsoft.ML.Transforms.NormalizingEstimator NormalizeLogMeanVariance (this Microsoft.ML.TransformsCatalog catalog, string outputColumnName, string inputColumnName = default, long maximumExampleCount = 1000000000, bool useCdf = true);
static member NormalizeLogMeanVariance : Microsoft.ML.TransformsCatalog * string * string * int64 * bool -> Microsoft.ML.Transforms.NormalizingEstimator
<Extension()>
Public Function NormalizeLogMeanVariance (catalog As TransformsCatalog, outputColumnName As String, Optional inputColumnName As String = Nothing, Optional maximumExampleCount As Long = 1000000000, Optional useCdf As Boolean = true) As NormalizingEstimator
参数
- catalog
- TransformsCatalog
转换目录
- outputColumnName
- String
由转换 inputColumnName
生成的列的名称。
此列上的数据类型与输入列相同。
- inputColumnName
- String
要转换的列的名称。 If set to null
, the value of the outputColumnName
will be used as source.
此列上的数据类型应为SingleDouble已知大小的向量,或这些类型的已知大小向量。
- maximumExampleCount
- Int64
用于训练规范化器的最大示例数。
- useCdf
- Boolean
是否使用 CDF 作为输出。
返回
示例
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using Microsoft.ML;
using Microsoft.ML.Data;
using static Microsoft.ML.Transforms.NormalizingTransformer;
namespace Samples.Dynamic
{
public class NormalizeLogMeanVariance
{
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();
var samples = new List<DataPoint>()
{
new DataPoint(){ Features = new float[5] { 1, 1, 3, 0, float.MaxValue } },
new DataPoint(){ Features = new float[5] { 2, 2, 2, 0, float.MinValue } },
new DataPoint(){ Features = new float[5] { 0, 0, 1, 0, 0} },
new DataPoint(){ Features = new float[5] {-1,-1,-1, 1, 1} }
};
// Convert training data to IDataView, the general data type used in
// ML.NET.
var data = mlContext.Data.LoadFromEnumerable(samples);
// NormalizeLogMeanVariance normalizes the data based on the computed
// mean and variance of the logarithm of the data.
// Uses Cumulative distribution function as output.
var normalize = mlContext.Transforms.NormalizeLogMeanVariance(
"Features", useCdf: true);
// NormalizeLogMeanVariance normalizes the data based on the computed
// mean and variance of the logarithm of the data.
var normalizeNoCdf = mlContext.Transforms.NormalizeLogMeanVariance(
"Features", useCdf: false);
// Now we can transform the data and look at the output to confirm the
// behavior of the estimator.
// This operation doesn't actually evaluate data until we read the data
// below.
var normalizeTransform = normalize.Fit(data);
var transformedData = normalizeTransform.Transform(data);
var normalizeNoCdfTransform = normalizeNoCdf.Fit(data);
var noCdfData = normalizeNoCdfTransform.Transform(data);
var column = transformedData.GetColumn<float[]>("Features").ToArray();
foreach (var row in column)
Console.WriteLine(string.Join(", ", row.Select(x => x.ToString(
"f4"))));
// Expected output:
// 0.1587, 0.1587, 0.8654, 0.0000, 0.8413
// 0.8413, 0.8413, 0.5837, 0.0000, 0.0000
// 0.0000, 0.0000, 0.0940, 0.0000, 0.0000
// 0.0000, 0.0000, 0.0000, 0.0000, 0.1587
var columnFixZero = noCdfData.GetColumn<float[]>("Features").ToArray();
foreach (var row in columnFixZero)
Console.WriteLine(string.Join(", ", row.Select(x => x.ToString(
"f4"))));
// Expected output:
// 1.8854, 1.8854, 5.2970, 0.0000, 7670682000000000000000000000000000000.0000
// 4.7708, 4.7708, 3.0925, 0.0000, -7670682000000000000000000000000000000.0000
// -1.0000,-1.0000, 0.8879, 0.0000, -1.0000
// -3.8854,-3.8854,-3.5213, 0.0000, -0.9775
// Let's get transformation parameters. Since we work with only one
// column we need to pass 0 as parameter for
// GetNormalizerModelParameters. If we have multiple columns
// transformations we need to pass index of InputOutputColumnPair.
var transformParams = normalizeTransform.GetNormalizerModelParameters(0)
as CdfNormalizerModelParameters<ImmutableArray<float>>;
Console.WriteLine("The 1-index value in resulting array would be " +
"produce by:");
Console.WriteLine("y = 0.5* (1 + ERF((Math.Log(x)- " + transformParams
.Mean[1] + ") / (" + transformParams.StandardDeviation[1] +
" * sqrt(2)))");
// ERF is https://en.wikipedia.org/wiki/Error_function.
// Expected output:
// The 1-index value in resulting array would be produce by:
// y = 0.5* (1 + ERF((Math.Log(x)- 0.3465736) / (0.3465736 * sqrt(2)))
var noCdfParams = normalizeNoCdfTransform.GetNormalizerModelParameters(
0) as AffineNormalizerModelParameters<ImmutableArray<float>>;
var offset = noCdfParams.Offset.Length == 0 ? 0 : noCdfParams.Offset[1];
var scale = noCdfParams.Scale[1];
Console.WriteLine($"The 1-index value in resulting array would be " +
$"produce by: y = (x - ({offset})) * {scale}");
// Expected output:
// The 1-index value in resulting array would be produce by: y = (x - (0.3465736)) * 2.88539
}
private class DataPoint
{
[VectorType(5)]
public float[] Features { get; set; }
}
}
}
适用于
NormalizeLogMeanVariance(TransformsCatalog, String, Boolean, String, Int64, Boolean)
创建一个 NormalizingEstimator,它根据数据的对数的计算平均值和方差进行规范化。
public static Microsoft.ML.Transforms.NormalizingEstimator NormalizeLogMeanVariance (this Microsoft.ML.TransformsCatalog catalog, string outputColumnName, bool fixZero, string inputColumnName = default, long maximumExampleCount = 1000000000, bool useCdf = true);
static member NormalizeLogMeanVariance : Microsoft.ML.TransformsCatalog * string * bool * string * int64 * bool -> Microsoft.ML.Transforms.NormalizingEstimator
<Extension()>
Public Function NormalizeLogMeanVariance (catalog As TransformsCatalog, outputColumnName As String, fixZero As Boolean, Optional inputColumnName As String = Nothing, Optional maximumExampleCount As Long = 1000000000, Optional useCdf As Boolean = true) As NormalizingEstimator
参数
- catalog
- TransformsCatalog
转换目录
- outputColumnName
- String
由转换 inputColumnName
生成的列的名称。
此列上的数据类型与输入列相同。
- fixZero
- Boolean
是否将零映射到零,保留稀疏。
- inputColumnName
- String
要转换的列的名称。 If set to null
, the value of the outputColumnName
will be used as source.
此列上的数据类型应为SingleDouble已知大小的向量,或这些类型的已知大小向量。
- maximumExampleCount
- Int64
用于训练规范化器的最大示例数。
- useCdf
- Boolean
是否使用 CDF 作为输出。
返回
示例
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using Microsoft.ML;
using Microsoft.ML.Data;
using static Microsoft.ML.Transforms.NormalizingTransformer;
namespace Samples.Dynamic
{
public class NormalizeLogMeanVarianceFixZero
{
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();
var samples = new List<DataPoint>()
{
new DataPoint(){ Features = new float[5] { 1, 1, 3, 0, float.MaxValue } },
new DataPoint(){ Features = new float[5] { 2, 2, 2, 0, float.MinValue } },
new DataPoint(){ Features = new float[5] { 0, 0, 1, 0, 0} },
new DataPoint(){ Features = new float[5] {-1,-1,-1, 1, 1} }
};
// Convert training data to IDataView, the general data type used in ML.NET.
var data = mlContext.Data.LoadFromEnumerable(samples);
// NormalizeLogMeanVariance normalizes the data based on the computed mean and variance of the logarithm of the data.
// Uses Cumulative distribution function as output.
var normalize = mlContext.Transforms.NormalizeLogMeanVariance("Features", true, useCdf: true);
// NormalizeLogMeanVariance normalizes the data based on the computed mean and variance of the logarithm of the data.
var normalizeNoCdf = mlContext.Transforms.NormalizeLogMeanVariance("Features", true, useCdf: false);
// Now we can transform the data and look at the output to confirm the behavior of the estimator.
// This operation doesn't actually evaluate data until we read the data below.
var normalizeTransform = normalize.Fit(data);
var transformedData = normalizeTransform.Transform(data);
var normalizeNoCdfTransform = normalizeNoCdf.Fit(data);
var noCdfData = normalizeNoCdfTransform.Transform(data);
var column = transformedData.GetColumn<float[]>("Features").ToArray();
foreach (var row in column)
Console.WriteLine(string.Join(", ", row.Select(x => x.ToString("f4"))));
// Expected output:
// 0.1587, 0.1587, 0.8654, 0.0000, 0.8413
// 0.8413, 0.8413, 0.5837, 0.0000, 0.0000
// 0.0000, 0.0000, 0.0940, 0.0000, 0.0000
// 0.0000, 0.0000, 0.0000, 0.0000, 0.1587
var columnFixZero = noCdfData.GetColumn<float[]>("Features").ToArray();
foreach (var row in columnFixZero)
Console.WriteLine(string.Join(", ", row.Select(x => x.ToString("f4"))));
// Expected output:
// 2.0403, 2.0403, 4.0001, 0.0000, 5423991000000000000000000000000000000.0000
// 4.0806, 4.0806, 2.6667, 0.0000,-5423991000000000000000000000000000000.0000
// 0.0000, 0.0000, 1.3334, 0.0000, 0.0000
// -2.0403,-2.0403,-1.3334, 0.0000, 0.0159
// Let's get transformation parameters. Since we work with only one column we need to pass 0 as parameter for GetNormalizerModelParameters.
// If we have multiple columns transformations we need to pass index of InputOutputColumnPair.
var transformParams = normalizeTransform.GetNormalizerModelParameters(0) as CdfNormalizerModelParameters<ImmutableArray<float>>;
Console.WriteLine("The values in the column with index 1 in the resulting array would be produced by:");
Console.WriteLine($"y = 0.5* (1 + ERF((Math.Log(x)- {transformParams.Mean[1]}) / ({transformParams.StandardDeviation[1]} * sqrt(2)))");
// ERF is https://en.wikipedia.org/wiki/Error_function.
// Expected output:
// The values in the column with index 1 in the resulting array would be produced by:
// y = 0.5 * (1 + ERF((Math.Log(x) - 0.3465736) / (0.3465736 * sqrt(2)))
var noCdfParams = normalizeNoCdfTransform.GetNormalizerModelParameters(0) as AffineNormalizerModelParameters<ImmutableArray<float>>;
var offset = noCdfParams.Offset.Length == 0 ? 0 : noCdfParams.Offset[1];
var scale = noCdfParams.Scale[1];
Console.WriteLine($"The values in the column with index 1 in the resulting array would be produced by: y = (x - ({offset})) * {scale}");
// Expected output:
// The values in the column with index 1 in the resulting array would be produced by: y = (x - (0)) * 2.040279
}
private class DataPoint
{
[VectorType(5)]
public float[] Features { get; set; }
}
}
}