public static void Train(MLContext mlContext) { try { // STEP 1: Load the data var trainData = mlContext.Data.LoadFromTextFile(path: "AgeRangeData03_AgeGenderLabelEncodedMoreData.csv", columns: new[] { new TextLoader.Column("Age", DataKind.Single, 0), new TextLoader.Column("Gender", DataKind.Single, 1) , new TextLoader.Column("Label", DataKind.Single, 2) }, hasHeader: true, separatorChar: ',' ); var progressHandler = new MulticlassExperimentProgressHandler(); ConsoleHelper.ConsoleWriteHeader("=============== Running AutoML experiment ==============="); Console.WriteLine($"Running AutoML multiclass classification experiment for {ExperimentTime} seconds..."); ExperimentResult <MulticlassClassificationMetrics> experimentResult = mlContext.Auto() .CreateMulticlassClassificationExperiment(ExperimentTime) .Execute(trainData, "Label", progressHandler: progressHandler); // Print top models found by AutoML Console.WriteLine(); PrintTopModels(experimentResult); Console.WriteLine(); } catch (Exception ex) { Console.WriteLine(ex); } }
public static void AutoTrain() { // STEP 1: data loading IDataView trainingDataView = LoadDataFromCsv(trainingCsv); IDataView testingDataView = LoadDataFromCsv(testingCsv); // STEP 2: run an AutoML multiclass classification experiment WriteLineColor($"{Environment.NewLine}AutoML multiclass classification experiment for {ExperimentTime} seconds...", ConsoleColor.Yellow); var progressHandler = new MulticlassExperimentProgressHandler(); ExperimentResult <MulticlassClassificationMetrics> experimentResult = Context.Auto() .CreateMulticlassClassificationExperiment(ExperimentTime) .Execute(trainingDataView, Label, progressHandler: progressHandler); // STEP 3: evaluate the model and print metrics RunDetail <MulticlassClassificationMetrics> bestRun = experimentResult.BestRun; WriteLineColor($"{Environment.NewLine}Top Trainer (by accuracy)", ConsoleColor.Yellow); PrintTopModels(experimentResult); WriteLineColor($"{Environment.NewLine}TRAINING USING: {bestRun.TrainerName}", ConsoleColor.Cyan); Model = bestRun.Model; var predictions = Model.Transform(testingDataView); var metrics = Context.MulticlassClassification.Evaluate(data: predictions, labelColumnName: Label, scoreColumnName: Score, predictedLabelColumnName: PredictedLabel); PrintMultiClassClassificationMetrics(bestRun.TrainerName, metrics); // STEP 4: save the model Context.Model.Save(Model, trainingDataView.Schema, modelPath); }
public static void Train(MLContext mlContext) { try { // STEP 1: Load the data var trainData = mlContext.Data.LoadFromTextFile(path: TrainDataPath, columns: new[] { new TextLoader.Column(nameof(InputData.PixelValues), DataKind.Single, 0, 63), new TextLoader.Column("Number", DataKind.Single, 64) }, hasHeader: false, separatorChar: ',' ); var testData = mlContext.Data.LoadFromTextFile(path: TestDataPath, columns: new[] { new TextLoader.Column(nameof(InputData.PixelValues), DataKind.Single, 0, 63), new TextLoader.Column("Number", DataKind.Single, 64) }, hasHeader: false, separatorChar: ',' ); // STEP 2: Initialize our user-defined progress handler that AutoML will // invoke after each model it produces and evaluates. var progressHandler = new MulticlassExperimentProgressHandler(); // STEP 3: Run an AutoML multiclass classification experiment ConsoleHelper.ConsoleWriteHeader("=============== Running AutoML experiment ==============="); Console.WriteLine($"Running AutoML multiclass classification experiment for {ExperimentTime} seconds..."); ExperimentResult <MulticlassClassificationMetrics> experimentResult = mlContext.Auto() .CreateMulticlassClassificationExperiment(ExperimentTime) .Execute(trainData, "Number", progressHandler: progressHandler); // Print top models found by AutoML Console.WriteLine(); PrintTopModels(experimentResult); // STEP 4: Evaluate the model and print metrics ConsoleHelper.ConsoleWriteHeader("===== Evaluating model's accuracy with test data ====="); RunDetail <MulticlassClassificationMetrics> bestRun = experimentResult.BestRun; ITransformer trainedModel = bestRun.Model; var predictions = trainedModel.Transform(testData); var metrics = mlContext.MulticlassClassification.Evaluate(data: predictions, labelColumnName: "Number", scoreColumnName: "Score"); ConsoleHelper.PrintMulticlassClassificationMetrics(bestRun.TrainerName, metrics); // STEP 5: Save/persist the trained model to a .ZIP file mlContext.Model.Save(trainedModel, trainData.Schema, ModelPath); Console.WriteLine("The model is saved to {0}", ModelPath); } catch (Exception ex) { Console.WriteLine(ex); } }