Freigeben über


StandardTrainersCatalog.LbfgsLogisticRegression Methode

Definition

Überlädt

LbfgsLogisticRegression(BinaryClassificationCatalog+BinaryClassificationTrainers, LbfgsLogisticRegressionBinaryTrainer+Options)

Erstellen Sie LbfgsLogisticRegressionBinaryTrainer mit erweiterten Optionen, die ein Ziel mithilfe eines linearen binären Klassifizierungsmodells vorhersagen, das über boolesche Bezeichnungsdaten trainiert wurde.

LbfgsLogisticRegression(BinaryClassificationCatalog+BinaryClassificationTrainers, String, String, String, Single, Single, Single, Int32, Boolean)

Erstellen Sie LbfgsLogisticRegressionBinaryTrainerein Ziel, das ein Ziel mithilfe eines linearen binären Klassifizierungsmodells angibt, das über boolesche Bezeichnungsdaten trainiert wurde.

LbfgsLogisticRegression(BinaryClassificationCatalog+BinaryClassificationTrainers, LbfgsLogisticRegressionBinaryTrainer+Options)

Erstellen Sie LbfgsLogisticRegressionBinaryTrainer mit erweiterten Optionen, die ein Ziel mithilfe eines linearen binären Klassifizierungsmodells vorhersagen, das über boolesche Bezeichnungsdaten trainiert wurde.

public static Microsoft.ML.Trainers.LbfgsLogisticRegressionBinaryTrainer LbfgsLogisticRegression (this Microsoft.ML.BinaryClassificationCatalog.BinaryClassificationTrainers catalog, Microsoft.ML.Trainers.LbfgsLogisticRegressionBinaryTrainer.Options options);
static member LbfgsLogisticRegression : Microsoft.ML.BinaryClassificationCatalog.BinaryClassificationTrainers * Microsoft.ML.Trainers.LbfgsLogisticRegressionBinaryTrainer.Options -> Microsoft.ML.Trainers.LbfgsLogisticRegressionBinaryTrainer
<Extension()>
Public Function LbfgsLogisticRegression (catalog As BinaryClassificationCatalog.BinaryClassificationTrainers, options As LbfgsLogisticRegressionBinaryTrainer.Options) As LbfgsLogisticRegressionBinaryTrainer

Parameter

catalog
BinaryClassificationCatalog.BinaryClassificationTrainers

Das Binärklassifizierungskatalog-Trainerobjekt.

options
LbfgsLogisticRegressionBinaryTrainer.Options

Erweiterte Argumente zum Algorithmus.

Gibt zurück

Beispiele

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.ML;
using Microsoft.ML.Data;
using Microsoft.ML.Trainers;

namespace Samples.Dynamic.Trainers.BinaryClassification
{
    public static class LbfgsLogisticRegressionWithOptions
    {
        public static void Example()
        {
            // 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 mlContext = new MLContext(seed: 0);

            // Create a list of training data points.
            var dataPoints = GenerateRandomDataPoints(1000);

            // Convert the list of data points to an IDataView object, which is
            // consumable by ML.NET API.
            var trainingData = mlContext.Data.LoadFromEnumerable(dataPoints);

            // Define trainer options.
            var options = new LbfgsLogisticRegressionBinaryTrainer.Options()
            {
                MaximumNumberOfIterations = 100,
                OptimizationTolerance = 1e-8f,
                L2Regularization = 0.01f
            };

            // Define the trainer.
            var pipeline = mlContext.BinaryClassification.Trainers
                .LbfgsLogisticRegression(options);

            // Train the model.
            var model = pipeline.Fit(trainingData);

            // Create testing data. Use different random seed to make it different
            // from training data.
            var testData = mlContext.Data
                .LoadFromEnumerable(GenerateRandomDataPoints(500, seed: 123));

            // Run the model on test data set.
            var transformedTestData = model.Transform(testData);

            // Convert IDataView object to a list.
            var predictions = mlContext.Data
                .CreateEnumerable<Prediction>(transformedTestData,
                reuseRowObject: false).ToList();

            // Print 5 predictions.
            foreach (var p in predictions.Take(5))
                Console.WriteLine($"Label: {p.Label}, "
                    + $"Prediction: {p.PredictedLabel}");

            // Expected output:
            //   Label: True, Prediction: True
            //   Label: False, Prediction: True
            //   Label: True, Prediction: True
            //   Label: True, Prediction: True
            //   Label: False, Prediction: False

            // Evaluate the overall metrics.
            var metrics = mlContext.BinaryClassification
                .Evaluate(transformedTestData);

            PrintMetrics(metrics);

            // Expected output:
            //   Accuracy: 0.87
            //   AUC: 0.96
            //   F1 Score: 0.87
            //   Negative Precision: 0.89
            //   Negative Recall: 0.87
            //   Positive Precision: 0.86
            //   Positive Recall: 0.88
            //   Log Loss: 0.37
            //   Log Loss Reduction: 0.63
            //   Entropy: 1.00
            //
            //   TEST POSITIVE RATIO:    0.4760 (238.0/(238.0+262.0))
            //   Confusion table
            //             ||======================
            //   PREDICTED || positive | negative | Recall
            //   TRUTH     ||======================
            //    positive ||      210 |       28 | 0.8824
            //    negative ||       35 |      227 | 0.8664
            //             ||======================
            //   Precision ||   0.8571 |   0.8902 |
        }

        private static IEnumerable<DataPoint> GenerateRandomDataPoints(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 DataPoint
                {
                    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 DataPoint
        {
            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());
        }
    }
}

Gilt für:

LbfgsLogisticRegression(BinaryClassificationCatalog+BinaryClassificationTrainers, String, String, String, Single, Single, Single, Int32, Boolean)

Erstellen Sie LbfgsLogisticRegressionBinaryTrainerein Ziel, das ein Ziel mithilfe eines linearen binären Klassifizierungsmodells angibt, das über boolesche Bezeichnungsdaten trainiert wurde.

public static Microsoft.ML.Trainers.LbfgsLogisticRegressionBinaryTrainer LbfgsLogisticRegression (this Microsoft.ML.BinaryClassificationCatalog.BinaryClassificationTrainers catalog, string labelColumnName = "Label", string featureColumnName = "Features", string exampleWeightColumnName = default, float l1Regularization = 1, float l2Regularization = 1, float optimizationTolerance = 1E-07, int historySize = 20, bool enforceNonNegativity = false);
static member LbfgsLogisticRegression : Microsoft.ML.BinaryClassificationCatalog.BinaryClassificationTrainers * string * string * string * single * single * single * int * bool -> Microsoft.ML.Trainers.LbfgsLogisticRegressionBinaryTrainer
<Extension()>
Public Function LbfgsLogisticRegression (catalog As BinaryClassificationCatalog.BinaryClassificationTrainers, Optional labelColumnName As String = "Label", Optional featureColumnName As String = "Features", Optional exampleWeightColumnName As String = Nothing, Optional l1Regularization As Single = 1, Optional l2Regularization As Single = 1, Optional optimizationTolerance As Single = 1E-07, Optional historySize As Integer = 20, Optional enforceNonNegativity As Boolean = false) As LbfgsLogisticRegressionBinaryTrainer

Parameter

catalog
BinaryClassificationCatalog.BinaryClassificationTrainers

Das Binärklassifizierungskatalog-Trainerobjekt.

labelColumnName
String

Der Name der Bezeichnungsspalte. Die Spaltendaten müssen sein Boolean.

featureColumnName
String

Der Name der Featurespalte. Die Spaltendaten müssen ein bekannter Vektor von Single.

exampleWeightColumnName
String

Der Name der Beispielgewichtungsspalte (optional).

l1Regularization
Single

Der L1-Normalisierungs-Hyperparameter . Höhere Werte führen tendenziell zu einem sparsameren Modell.

l2Regularization
Single

Das L2-Gewicht für die Regularisierung.

optimizationTolerance
Single

Schwellenwert für die Optimierungskonvergenz.

historySize
Int32

Speichergröße für LbfgsLogisticRegressionBinaryTrainer. Low=faster, weniger genau.

enforceNonNegativity
Boolean

Erzwingen sie nicht negative Gewichtungen.

Gibt zurück

Beispiele

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.ML;
using Microsoft.ML.Data;

namespace Samples.Dynamic.Trainers.BinaryClassification
{
    public static class LbfgsLogisticRegression
    {
        public static void Example()
        {
            // 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 mlContext = new MLContext(seed: 0);

            // Create a list of training data points.
            var dataPoints = GenerateRandomDataPoints(1000);

            // Convert the list of data points to an IDataView object, which is
            // consumable by ML.NET API.
            var trainingData = mlContext.Data.LoadFromEnumerable(dataPoints);

            // Define the trainer.
            var pipeline = mlContext.BinaryClassification.Trainers
                .LbfgsLogisticRegression();

            // Train the model.
            var model = pipeline.Fit(trainingData);

            // Create testing data. Use different random seed to make it different
            // from training data.
            var testData = mlContext.Data
                .LoadFromEnumerable(GenerateRandomDataPoints(500, seed: 123));

            // Run the model on test data set.
            var transformedTestData = model.Transform(testData);

            // Convert IDataView object to a list.
            var predictions = mlContext.Data
                .CreateEnumerable<Prediction>(transformedTestData,
                reuseRowObject: false).ToList();

            // Print 5 predictions.
            foreach (var p in predictions.Take(5))
                Console.WriteLine($"Label: {p.Label}, "
                    + $"Prediction: {p.PredictedLabel}");

            // Expected output:
            //   Label: True, Prediction: True
            //   Label: False, Prediction: True
            //   Label: True, Prediction: True
            //   Label: True, Prediction: True
            //   Label: False, Prediction: False

            // Evaluate the overall metrics.
            var metrics = mlContext.BinaryClassification
                .Evaluate(transformedTestData);

            PrintMetrics(metrics);

            // Expected output:
            //   Accuracy: 0.88
            //   AUC: 0.96
            //   F1 Score: 0.87
            //   Negative Precision: 0.90
            //   Negative Recall: 0.87
            //   Positive Precision: 0.86
            //   Positive Recall: 0.89
            //   Log Loss: 0.38
            //   Log Loss Reduction: 0.62
            //   Entropy: 1.00
            //
            //   TEST POSITIVE RATIO:    0.4760 (238.0/(238.0+262.0))
            //   Confusion table
            //             ||======================
            //   PREDICTED || positive | negative | Recall
            //   TRUTH     ||======================
            //    positive ||      212 |       26 | 0.8908
            //    negative ||       35 |      227 | 0.8664
            //             ||======================
            //   Precision ||   0.8583 |   0.8972 |
        }

        private static IEnumerable<DataPoint> GenerateRandomDataPoints(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 DataPoint
                {
                    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 DataPoint
        {
            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());
        }
    }
}

Gilt für: