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); }
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."); }
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); }