diff --git a/machine-learning/tutorials/GitHubIssueClassification/GitHubIssueClassification.csproj b/machine-learning/tutorials/GitHubIssueClassification/GitHubIssueClassification.csproj
index 9f0fdc281c3..904dbb36461 100644
--- a/machine-learning/tutorials/GitHubIssueClassification/GitHubIssueClassification.csproj
+++ b/machine-learning/tutorials/GitHubIssueClassification/GitHubIssueClassification.csproj
@@ -15,7 +15,7 @@
-
+
diff --git a/machine-learning/tutorials/GitHubIssueClassification/Program.cs b/machine-learning/tutorials/GitHubIssueClassification/Program.cs
index 6cfd5b8a3fc..c06e57da286 100644
--- a/machine-learning/tutorials/GitHubIssueClassification/Program.cs
+++ b/machine-learning/tutorials/GitHubIssueClassification/Program.cs
@@ -2,10 +2,7 @@
using System;
using System.IO;
using System.Linq;
-using Microsoft.Data.DataView;
using Microsoft.ML;
-using Microsoft.ML.Data;
-using Microsoft.ML.Transforms;
//
namespace GitHubIssueClassification
@@ -55,7 +52,7 @@ static void Main(string[] args)
//
//
- Evaluate();
+ Evaluate(_trainingDataView.Schema);
//
//
@@ -95,7 +92,7 @@ public static IEstimator BuildAndTrainModel(IDataView trainingData
// Use the multi-class SDCA algorithm to predict the label using features.
//Set the trainer/algorithm and map label to value (original readable state)
//
- var trainingPipeline = pipeline.Append(_mlContext.MulticlassClassification.Trainers.StochasticDualCoordinateAscent(DefaultColumnNames.Label, DefaultColumnNames.Features))
+ var trainingPipeline = pipeline.Append(_mlContext.MulticlassClassification.Trainers.SdcaMaximumEntropy("Label", "Features"))
.Append(_mlContext.Transforms.Conversion.MapKeyToValue("PredictedLabel"));
//
@@ -112,7 +109,7 @@ public static IEstimator BuildAndTrainModel(IDataView trainingData
// Create prediction engine related to the loaded trained model
//
- _predEngine = _trainedModel.CreatePredictionEngine(_mlContext);
+ _predEngine = _mlContext.Model.CreatePredictionEngine(_trainedModel);
//
//
GitHubIssue issue = new GitHubIssue() {
@@ -135,7 +132,7 @@ public static IEstimator BuildAndTrainModel(IDataView trainingData
}
- public static void Evaluate()
+ public static void Evaluate(DataViewSchema trainingDataViewSchema)
{
// STEP 5: Evaluate the model in order to get the model's accuracy metrics
Console.WriteLine($"=============== Evaluating to get model's accuracy metrics - Starting time: {DateTime.Now.ToString()} ===============");
@@ -155,8 +152,8 @@ public static void Evaluate()
Console.WriteLine($"*************************************************************************************************************");
Console.WriteLine($"* Metrics for Multi-class Classification model - Test Data ");
Console.WriteLine($"*------------------------------------------------------------------------------------------------------------");
- Console.WriteLine($"* MicroAccuracy: {testMetrics.AccuracyMicro:0.###}");
- Console.WriteLine($"* MacroAccuracy: {testMetrics.AccuracyMacro:0.###}");
+ Console.WriteLine($"* MicroAccuracy: {testMetrics.MicroAccuracy:0.###}");
+ Console.WriteLine($"* MacroAccuracy: {testMetrics.MacroAccuracy:0.###}");
Console.WriteLine($"* LogLoss: {testMetrics.LogLoss:#.###}");
Console.WriteLine($"* LogLossReduction: {testMetrics.LogLossReduction:#.###}");
Console.WriteLine($"*************************************************************************************************************");
@@ -164,7 +161,7 @@ public static void Evaluate()
// Save the new model to .ZIP file
//
- SaveModelAsFile(_mlContext, _trainedModel);
+ SaveModelAsFile(_mlContext, trainingDataViewSchema, _trainedModel);
//
}
@@ -172,11 +169,7 @@ public static void Evaluate()
public static void PredictIssue()
{
//
- ITransformer loadedModel;
- using (var stream = new FileStream(_modelPath, FileMode.Open, FileAccess.Read, FileShare.Read))
- {
- loadedModel = _mlContext.Model.Load(stream);
- }
+ ITransformer loadedModel = _mlContext.Model.Load(_modelPath, out var modelInputSchema);
//
//
@@ -185,7 +178,7 @@ public static void PredictIssue()
//Predict label for single hard-coded issue
//
- _predEngine = loadedModel.CreatePredictionEngine(_mlContext);
+ _predEngine = _mlContext.Model.CreatePredictionEngine(loadedModel);
//
//
@@ -198,11 +191,10 @@ public static void PredictIssue()
}
- private static void SaveModelAsFile(MLContext mlContext, ITransformer model)
+ private static void SaveModelAsFile(MLContext mlContext,DataViewSchema trainingDataViewSchema, ITransformer model)
{
//
- using (var fs = new FileStream(_modelPath, FileMode.Create, FileAccess.Write, FileShare.Write))
- mlContext.Model.Save(model, fs);
+ mlContext.Model.Save(model, trainingDataViewSchema, _modelPath);
//
Console.WriteLine("The model is saved to {0}", _modelPath);