LearningPipelineExtensions.WithOnFitDelegate<TTransformer> Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Étant donné un estimateur, retournez un objet de création de package de restrictions qui appellera un délégué une fois Fit(IDataView) appelé. Il est souvent important qu’un estimateur retourne des informations sur ce qui était adapté, c’est pourquoi la Fit(IDataView) méthode retourne un objet spécifiquement typé, plutôt que simplement un général ITransformer. Toutefois, en même temps, IEstimator<TTransformer> sont souvent formés en pipelines avec de nombreux objets. Nous pouvons donc avoir besoin de créer une chaîne d’estimateurs par EstimatorChain<TLastTransformer> le biais de laquelle l’estimateur pour lequel nous voulons obtenir le transformateur est enterré quelque part dans cette chaîne. Pour ce scénario, nous pouvons par le biais de cette méthode attacher un délégué qui sera appelé une fois l’ajustement appelé.
public static Microsoft.ML.IEstimator<TTransformer> WithOnFitDelegate<TTransformer>(this Microsoft.ML.IEstimator<TTransformer> estimator, Action<TTransformer> onFit) where TTransformer : class, Microsoft.ML.ITransformer;
static member WithOnFitDelegate : Microsoft.ML.IEstimator<'ransformer (requires 'ransformer : null and 'ransformer :> Microsoft.ML.ITransformer)> * Action<'ransformer (requires 'ransformer : null and 'ransformer :> Microsoft.ML.ITransformer)> -> Microsoft.ML.IEstimator<'ransformer (requires 'ransformer : null and 'ransformer :> Microsoft.ML.ITransformer)> (requires 'ransformer : null and 'ransformer :> Microsoft.ML.ITransformer)
<Extension()>
Public Function WithOnFitDelegate(Of TTransformer As {Class, ITransformer}) (estimator As IEstimator(Of TTransformer), onFit As Action(Of TTransformer)) As IEstimator(Of TTransformer)
Paramètres de type
- TTransformer
Type de ITransformer retour par estimator
Paramètres
- estimator
- IEstimator<TTransformer>
Estimateur à inclure dans un wrapper
- onFit
- Action<TTransformer>
Délégué appelé avec les instances résultantes TTransformer
une fois Fit(IDataView) appelé. Étant donné qu’il Fit(IDataView) peut être appelé plusieurs fois, ce délégué peut également être appelé plusieurs fois.
Retours
Estimateur d’habillage qui appelle le délégué indiqué chaque fois qu’il est appelé
Exemples
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using Microsoft.ML;
using Microsoft.ML.Data;
using Microsoft.ML.Transforms;
using static Microsoft.ML.Transforms.NormalizingTransformer;
namespace Samples.Dynamic
{
public class WithOnFitDelegate
{
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[4] { 8, 1, 3, 0},
Label = true },
new DataPoint(){ Features = new float[4] { 6, 2, 2, 0},
Label = true },
new DataPoint(){ Features = new float[4] { 4, 0, 1, 0},
Label = false },
new DataPoint(){ Features = new float[4] { 2,-1,-1, 1},
Label = false }
};
// Convert training data to IDataView, the general data type used in
// ML.NET.
var data = mlContext.Data.LoadFromEnumerable(samples);
// Create a pipeline to normalize the features and train a binary
// classifier. We use WithOnFitDelegate for the intermediate binning
// normalization step, so that we can inspect the properties of the
// normalizer after fitting.
NormalizingTransformer binningTransformer = null;
var pipeline =
mlContext.Transforms
.NormalizeBinning("Features", maximumBinCount: 3)
.WithOnFitDelegate(
fittedTransformer => binningTransformer = fittedTransformer)
.Append(mlContext.BinaryClassification.Trainers
.LbfgsLogisticRegression());
Console.WriteLine(binningTransformer == null);
// Expected Output:
// True
var model = pipeline.Fit(data);
// During fitting binningTransformer will get assigned a new value
Console.WriteLine(binningTransformer == null);
// Expected Output:
// False
// Inspect some of the properties of the binning transformer
var binningParam = binningTransformer.GetNormalizerModelParameters(0) as
BinNormalizerModelParameters<ImmutableArray<float>>;
for (int i = 0; i < binningParam.UpperBounds.Length; i++)
{
var upperBounds = string.Join(", ", binningParam.UpperBounds[i]);
Console.WriteLine(
$"Bin {i}: Density = {binningParam.Density[i]}, " +
$"Upper-bounds = {upperBounds}");
}
// Expected output:
// Bin 0: Density = 2, Upper-bounds = 3, 7, Infinity
// Bin 1: Density = 2, Upper-bounds = -0.5, 1.5, Infinity
// Bin 2: Density = 2, Upper-bounds = 0, 2.5, Infinity
// Bin 3: Density = 1, Upper-bounds = 0.5, Infinity
}
private class DataPoint
{
[VectorType(4)]
public float[] Features { get; set; }
public bool Label { get; set; }
}
}
}