Esempio n. 1
0
        public void AutoFitImageClassificationTrainTest()
        {
            var           context             = new MLContext();
            var           datasetPath         = DatasetUtil.GetFlowersDataset();
            var           columnInference     = context.Auto().InferColumns(datasetPath, "Label");
            var           textLoader          = context.Data.CreateTextLoader(columnInference.TextLoaderOptions);
            var           trainData           = context.Data.ShuffleRows(textLoader.Load(datasetPath), seed: 1);
            var           originalColumnNames = trainData.Schema.Select(c => c.Name);
            TrainTestData trainTestData       = context.Data.TrainTestSplit(trainData, testFraction: 0.2, seed: 1);
            IDataView     trainDataset        = SplitUtil.DropAllColumnsExcept(context, trainTestData.TrainSet, originalColumnNames);
            IDataView     testDataset         = SplitUtil.DropAllColumnsExcept(context, trainTestData.TestSet, originalColumnNames);
            var           result = context.Auto()
                                   .CreateMulticlassClassificationExperiment(0)
                                   .Execute(trainDataset, testDataset, columnInference.ColumnInformation);

            //Known issue, where on Ubuntu there is degradation in accuracy.
            if (!(RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ||
                  RuntimeInformation.IsOSPlatform(OSPlatform.OSX)))
            {
                Assert.Equal(0.778, result.BestRun.ValidationMetrics.MicroAccuracy, 3);
            }
            else
            {
                Assert.Equal(1, result.BestRun.ValidationMetrics.MicroAccuracy, 3);
            }

            var scoredData = result.BestRun.Model.Transform(trainData);

            Assert.Equal(TextDataViewType.Instance, scoredData.Schema[DefaultColumnNames.PredictedLabel].Type);
        }
Esempio n. 2
0
        public void AutoFitContextLogTest()
        {
            // This test confirms that logs produced from contexts made during AutoML experiment
            // runs are correctly relayed to the main Experiment MLContext.
            _markerAutoFitContextLogTest = false;
            var context = new MLContext(1);

            context.Log += MlContextLog;
            var datasetPath     = DatasetUtil.GetFlowersDataset();
            var columnInference = context.Auto().InferColumns(datasetPath, "Label");
            var textLoader      = context.Data.CreateTextLoader(columnInference.TextLoaderOptions);
            var trainData       = textLoader.Load(datasetPath);
            var result          = context.Auto()
                                  .CreateMulticlassClassificationExperiment(15)
                                  .Execute(trainData, columnInference.ColumnInformation);

            Assert.True(_markerAutoFitContextLogTest, "Image classification trainer logs from Experiment's sub contexts" +
                        "were not relayed to the main MLContext.");
        }
Esempio n. 3
0
        public void AutoFitImageClassification()
        {
            // This test executes the code path that model builder code will take to get a model using image
            // classification API.

            var context = new MLContext(1);

            context.Log += Context_Log;
            var datasetPath     = DatasetUtil.GetFlowersDataset();
            var columnInference = context.Auto().InferColumns(datasetPath, "Label");
            var textLoader      = context.Data.CreateTextLoader(columnInference.TextLoaderOptions);
            var trainData       = textLoader.Load(datasetPath);
            var result          = context.Auto()
                                  .CreateMulticlassClassificationExperiment(0)
                                  .Execute(trainData, columnInference.ColumnInformation);

            Assert.InRange(result.BestRun.ValidationMetrics.MicroAccuracy, 0.80, 0.9);
            var scoredData = result.BestRun.Model.Transform(trainData);

            Assert.Equal(TextDataViewType.Instance, scoredData.Schema[DefaultColumnNames.PredictedLabel].Type);
        }