Exemple #1
0
        public static void DoAutoML()
        {
            // Load Data
            IDataView trainingDataView = mlContext.Data.LoadFromTextFile <ModelInput>(
                path: TRAIN_DATA_FILEPATH,
                hasHeader: true,
                separatorChar: ',',
                allowQuoting: true,
                allowSparse: false);
            var experimentSettings = new MulticlassExperimentSettings();

            experimentSettings.MaxExperimentTimeInSeconds = 10;

            MulticlassClassificationExperiment experiment = mlContext.Auto().CreateMulticlassClassificationExperiment(experimentSettings);

            var dataProcessPipeline = mlContext.Transforms.Categorical.OneHotEncoding(new[] { new InputOutputColumnPair("Vehicle Type", "Vehicle Type"), new InputOutputColumnPair("Day", "Day") })
                                      .Append(mlContext.Transforms.Concatenate("Features", new[] { "Vehicle Type", "Day", "Ride Distance (km)", "Hour" }));

            ExperimentResult <Microsoft.ML.Data.MulticlassClassificationMetrics> experimentResult = experiment.Execute(trainingDataView, labelColumnName: "Saving", preFeaturizer: dataProcessPipeline);
            var metrics = experimentResult.BestRun.ValidationMetrics;

            Console.WriteLine($"Macro Accuracy: {metrics.MacroAccuracy:0.##}");
            Console.WriteLine($"Micro Accuracy: {metrics.MicroAccuracy:0.##}");

            // Save model
            SaveModel(mlContext, experimentResult.BestRun.Model, MODEL_FILEPATH, trainingDataView.Schema);
        }
Exemple #2
0
        public static void CreateExperiment()
        {
            // Load Data
            var       tmpPath          = GetAbsolutePath(TRAIN_DATA_FILEPATH);
            IDataView trainingDataView = mlContext.Data.LoadFromTextFile <ModelInput>(
                path: tmpPath,
                hasHeader: true,
                separatorChar: '\t',
                allowQuoting: true,
                allowSparse: false);

            IDataView testDataView = mlContext.Data.BootstrapSample(trainingDataView);

            // STEP 2: Run AutoML experiment
            Console.WriteLine($"Running AutoML Multiclass classification experiment for {ExperimentTime} seconds...");
            //ExperimentResult<MulticlassClassificationMetrics> experimentResult = mlContext.Auto()
            //    .CreateMulticlassClassificationExperiment(ExperimentTime)
            //    .Execute(trainingDataView, labelColumnName: "reservation_status");
            MulticlassClassificationExperiment experiment = mlContext.Auto()
                                                            .CreateMulticlassClassificationExperiment(ExperimentTime);
            ExperimentResult <MulticlassClassificationMetrics> experimentResult = experiment.Execute(trainingDataView, labelColumnName: "reservation_status");

            // STEP 3: Print metric from the best model
            RunDetail <MulticlassClassificationMetrics> bestRun = experimentResult.BestRun;

            Console.WriteLine($"Total models produced: {experimentResult.RunDetails.Count()}");
            Console.WriteLine($"Best model's trainer: {bestRun.TrainerName}");
            Console.WriteLine($"Metrics of best model from validation data --");
            PrintMulticlassClassificationMetrics(bestRun.ValidationMetrics);

            // STEP 4: Evaluate test data
            IDataView testDataViewWithBestScore = bestRun.Model.Transform(testDataView);

            try
            {
                var testMetrics = mlContext.MulticlassClassification.CrossValidate(testDataViewWithBestScore, bestRun.Estimator, numberOfFolds: 5, labelColumnName: "reservation_status");
                Console.WriteLine($"Metrics of best model on test data --");
                PrintMulticlassClassificationFoldsAverageMetrics(testMetrics);
            }
            catch
            {
                Console.WriteLine($"Metrics not supported in this version");
            }


            // Save model
            tmpPath = GetAbsolutePath(MODEL_FILEPATH2);
            SaveModel(mlContext, bestRun.Model, tmpPath, trainingDataView.Schema);
        }
        public void SetUpExperiment()
        {
            var settings = new MulticlassExperimentSettings
            {
                MaxExperimentTimeInSeconds = 180,
                OptimizingMetric           = MulticlassClassificationMetric.LogLoss,
                CacheDirectory             = null
            };

            // These two trainers yield no metrics in UWP:
            settings.Trainers.Remove(MulticlassClassificationTrainer.FastTreeOva);
            settings.Trainers.Remove(MulticlassClassificationTrainer.FastForestOva);

            _experiment = MLContext.Auto().CreateMulticlassClassificationExperiment(settings);
        }
Exemple #4
0
 static void Main(string[] args)
 {
     MulticlassClassificationExperiment.Run();
 }