AutoMLExperiment Classe

Definição

A classe para experimento do AutoML

public class AutoMLExperiment
type AutoMLExperiment = class
Public Class AutoMLExperiment
Herança
AutoMLExperiment

Exemplos

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.ML.Data;

namespace Microsoft.ML.AutoML.Samples
{
    public static class AutoMLExperiment
    {
        public static async Task RunAsync()
        {
            var seed = 0;

            // Create a new context for ML.NET operations. It can be used for
            // exception tracking and logging, as a catalog of available operations
            // and as the source of randomness. Setting the seed to a fixed number
            // in this example to make outputs deterministic.
            var context = new MLContext(seed);

            // Create a list of training data points and convert it to IDataView.
            var data = GenerateRandomBinaryClassificationDataPoints(100, seed);
            var dataView = context.Data.LoadFromEnumerable(data);

            var trainTestSplit = context.Data.TrainTestSplit(dataView);

            // Define the sweepable pipeline using predefined binary trainers and search space.
            var pipeline = context.Auto().BinaryClassification(labelColumnName: "Label", featureColumnName: "Features");

            // Create an AutoML experiment
            var experiment = context.Auto().CreateExperiment();

            // Redirect AutoML log to console
            context.Log += (object o, LoggingEventArgs e) =>
            {
                if (e.Source == nameof(AutoMLExperiment) && e.Kind > Runtime.ChannelMessageKind.Trace)
                {
                    Console.WriteLine(e.RawMessage);
                }
            };

            // Config experiment to optimize "Accuracy" metric on given dataset.
            // This experiment will run hyper-parameter optimization on given pipeline
            experiment.SetPipeline(pipeline)
                      .SetDataset(trainTestSplit.TrainSet, fold: 5) // use 5-fold cross validation to evaluate each trial
                      .SetBinaryClassificationMetric(BinaryClassificationMetric.Accuracy, "Label")
                      .SetMaxModelToExplore(100); // explore 100 trials

            // start automl experiment
            var result = await experiment.RunAsync();

            // Expected output samples during training:
            //      Update Running Trial - Id: 0
            //      Update Completed Trial - Id: 0 - Metric: 0.5536912515402218 - Pipeline: FastTreeBinary - Duration: 595 - Peak CPU: 0.00 % -Peak Memory in MB: 35.81
            //      Update Best Trial - Id: 0 - Metric: 0.5536912515402218 - Pipeline: FastTreeBinary

            // evaluate test dataset on best model.
            var bestModel = result.Model;
            var eval = bestModel.Transform(trainTestSplit.TestSet);
            var metrics = context.BinaryClassification.Evaluate(eval);

            PrintMetrics(metrics);

            // Expected output:
            //  Accuracy: 0.67
            //  AUC: 0.75
            //  F1 Score: 0.33
            //  Negative Precision: 0.88
            //  Negative Recall: 0.70
            //  Positive Precision: 0.25
            //  Positive Recall: 0.50

            //  TEST POSITIVE RATIO: 0.1667(2.0 / (2.0 + 10.0))
            //  Confusion table
            //            ||======================
            //  PREDICTED || positive | negative | Recall
            //  TRUTH     ||======================
            //   positive || 1 | 1 | 0.5000
            //   negative || 3 | 7 | 0.7000
            //            ||======================
            //  Precision || 0.2500 | 0.8750 |
        }

        private static IEnumerable<BinaryClassificationDataPoint> GenerateRandomBinaryClassificationDataPoints(int count,
            int seed = 0)

        {
            var random = new Random(seed);
            float randomFloat() => (float)random.NextDouble();
            for (int i = 0; i < count; i++)
            {
                var label = randomFloat() > 0.5f;
                yield return new BinaryClassificationDataPoint
                {
                    Label = label,
                    // Create random features that are correlated with the label.
                    // For data points with false label, the feature values are
                    // slightly increased by adding a constant.
                    Features = Enumerable.Repeat(label, 50)
                        .Select(x => x ? randomFloat() : randomFloat() +
                        0.1f).ToArray()

                };
            }
        }

        // Example with label and 50 feature values. A data set is a collection of
        // such examples.
        private class BinaryClassificationDataPoint
        {
            public bool Label { get; set; }

            [VectorType(50)]
            public float[] Features { get; set; }
        }

        // Class used to capture predictions.
        private class Prediction
        {
            // Original label.
            public bool Label { get; set; }
            // Predicted label from the trainer.
            public bool PredictedLabel { get; set; }
        }

        // Pretty-print BinaryClassificationMetrics objects.
        private static void PrintMetrics(BinaryClassificationMetrics metrics)
        {
            Console.WriteLine($"Accuracy: {metrics.Accuracy:F2}");
            Console.WriteLine($"AUC: {metrics.AreaUnderRocCurve:F2}");
            Console.WriteLine($"F1 Score: {metrics.F1Score:F2}");
            Console.WriteLine($"Negative Precision: " +
                $"{metrics.NegativePrecision:F2}");

            Console.WriteLine($"Negative Recall: {metrics.NegativeRecall:F2}");
            Console.WriteLine($"Positive Precision: " +
                $"{metrics.PositivePrecision:F2}");

            Console.WriteLine($"Positive Recall: {metrics.PositiveRecall:F2}\n");
            Console.WriteLine(metrics.ConfusionMatrix.GetFormattedConfusionTable());
        }
    }
}

Construtores

AutoMLExperiment(MLContext, AutoMLExperiment+AutoMLExperimentSettings)

A classe para experimento do AutoML

Métodos

AddSearchSpace(String, SearchSpace)

A classe para experimento do AutoML

Run()

Execute o experimento e retorne o melhor resultado de avaliação de forma sincronizada.

RunAsync(CancellationToken)

Execute o experimento e retorne o melhor resultado de avaliação de forma assíncrona. O experimento retornará o melhor resultado de avaliação atual se houver alguma avaliação concluída quando ct for cancelada e gerará TimeoutException a mensagem "Tempo de treinamento concluído sem concluir uma execução de avaliação" quando nenhuma avaliação for concluída. Outra coisa precisa observar é que essa função não retornará imediatamente após ct ser cancelada. Em vez disso, ele chamará Microsoft.ML.MLContext.CancelExecution para cancelar todo o processo de treinamento e aguardará que todas as avaliações em execução sejam canceladas ou concluídas.

SetMaximumMemoryUsageInMegaByte(Double)

A classe para experimento do AutoML

SetMaxModelToExplore(Int32)

A classe para experimento do AutoML

SetMonitor<TMonitor>()

A classe para experimento do AutoML

SetMonitor<TMonitor>(Func<IServiceProvider,TMonitor>)

A classe para experimento do AutoML

SetMonitor<TMonitor>(TMonitor)

A classe para experimento do AutoML

SetTrainingTimeInSeconds(UInt32)

A classe para experimento do AutoML

SetTrialRunner<TTrialRunner>()

A classe para experimento do AutoML

SetTrialRunner<TTrialRunner>(Func<IServiceProvider,TTrialRunner>)

A classe para experimento do AutoML

SetTrialRunner<TTrialRunner>(TTrialRunner)

A classe para experimento do AutoML

SetTuner<TTuner>()

A classe para experimento do AutoML

SetTuner<TTuner>(Func<IServiceProvider,TTuner>)

A classe para experimento do AutoML

SetTuner<TTuner>(TTuner)

A classe para experimento do AutoML

Métodos de Extensão

SetBinaryClassificationMetric(AutoMLExperiment, BinaryClassificationMetric, String, String)

Defina Microsoft.ML.AutoML.BinaryMetricManager como gerenciador de avaliação para AutoMLExperiment. Isso fará AutoMLExperiment usos como métrica de metric avaliação.

SetCheckpoint(AutoMLExperiment, String)

Defina a pasta de ponto de verificação para AutoMLExperiment. A pasta de ponto de verificação será usada para salvar a saída temporária, o histórico de execuções e muitas outras coisas que serão usadas para restaurar o processo de treinamento do último ponto de verificação e continuar o treinamento.

SetCostFrugalTuner(AutoMLExperiment)

Defina Microsoft.ML.AutoML.CostFrugalTuner como sintonizador para otimização de hiperparâmetro.

SetDataset(AutoMLExperiment, DataOperationsCatalog+TrainTestData)

Defina o conjunto de dados de treinamento e validação para AutoMLExperiment. Isso fará AutoMLExperiment uso de trainValidationSplitTrainSet para treinar um modelo e usar TestSet de trainValidationSplit para avaliar o modelo.

SetDataset(AutoMLExperiment, IDataView, IDataView, Boolean)

Defina o conjunto de dados de treinamento e validação para AutoMLExperiment. Isso fará AutoMLExperiment usos train para treinar um modelo e usar validation para avaliar o modelo.

SetDataset(AutoMLExperiment, IDataView, Int32, String)

Defina o conjunto de dados de validação cruzada para AutoMLExperiment. Isso fará AutoMLExperiment com que use n=fold divisão de validação cruzada para dataset treinar e avaliar um modelo.

SetEciCostFrugalTuner(AutoMLExperiment)

definido Microsoft.ML.AutoML.EciCostFrugalTuner como sintonizador para otimização de hiperparâmetro. Esse sintonizador só funciona com o espaço de pesquisa de SweepablePipeline.

SetGridSearchTuner(AutoMLExperiment, Int32)

definido Microsoft.ML.AutoML.GridSearchTuner como sintonizador para otimização de hiperparâmetro.

SetMulticlassClassificationMetric(AutoMLExperiment, MulticlassClassificationMetric, String, String)

Defina Microsoft.ML.AutoML.MultiClassMetricManager como gerenciador de avaliação para AutoMLExperiment. Isso fará AutoMLExperiment usos como métrica de metric avaliação.

SetPerformanceMonitor(AutoMLExperiment, Int32)

Defina DefaultPerformanceMonitor como IPerformanceMonitor para AutoMLExperiment.

SetPerformanceMonitor<TPerformanceMonitor>(AutoMLExperiment)

Defina um monitor de desempenho personalizado como IPerformanceMonitor para AutoMLExperiment.

SetPerformanceMonitor<TPerformanceMonitor>(AutoMLExperiment, Func<IServiceProvider,TPerformanceMonitor>)

Defina um monitor de desempenho personalizado como IPerformanceMonitor para AutoMLExperiment.

SetPipeline(AutoMLExperiment, SweepablePipeline)

Definido pipeline para treinamento. Isso também faz AutoMLExperiment uso de Microsoft.ML.AutoML.SweepablePipelineRunner , Microsoft.ML.AutoML.MLContextMonitor e Microsoft.ML.AutoML.EciCostFrugalTuner para traininng automl também.

SetRandomSearchTuner(AutoMLExperiment, Nullable<Int32>)

definido Microsoft.ML.AutoML.RandomSearchTuner como sintonizador para otimização de hiperparâmetro. Se seed for fornecido, ele usará essa semente para inicializar Microsoft.ML.AutoML.RandomSearchTuner. Caso contrário, Seed será usado.

SetRegressionMetric(AutoMLExperiment, RegressionMetric, String, String)

Defina Microsoft.ML.AutoML.RegressionMetricManager como gerenciador de avaliação para AutoMLExperiment. Isso fará AutoMLExperiment usos como métrica de metric avaliação.

SetSmacTuner(AutoMLExperiment, Int32, Int32, Int32, Int32, Single, Int32, Int32, Double, Int32)

Defina Microsoft.ML.AutoML.SmacTuner como sintonizador para otimização de hiperparâmetro. O desempenho de smac está em uma grande extensão determinada por numberOfTreese nMinForSpitsplitRatio, que são usados para se ajustar ao regressor interno do smac.

Aplica-se a