From ac86f7ff2856c0d97798e1dc2974a02d63269a51 Mon Sep 17 00:00:00 2001 From: Serghei Cebotari Date: Fri, 12 Jan 2024 00:00:57 +0300 Subject: [PATCH] Add Evaluate method --- RhSolutions.ML.Lib/RhSolutionsMLBuilder.cs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/RhSolutions.ML.Lib/RhSolutionsMLBuilder.cs b/RhSolutions.ML.Lib/RhSolutionsMLBuilder.cs index c984a39..b1a7a66 100644 --- a/RhSolutions.ML.Lib/RhSolutionsMLBuilder.cs +++ b/RhSolutions.ML.Lib/RhSolutionsMLBuilder.cs @@ -1,21 +1,31 @@ using Microsoft.ML; +using Microsoft.ML.Data; namespace RhSolutions.ML.Lib; public class RhSolutionsMLBuilder { private static string _appPath = Path.GetDirectoryName(Environment.GetCommandLineArgs()[0]) ?? "."; + private static string _testDataPath = Path.Combine(_appPath, "..", "..", "..", "..", "TestData", "*"); private static MLContext _mlContext = new MLContext(seed: 0); + private static ITransformer? _trainedModel = null; public static void RebuildModel() { var _trainDataView = _mlContext.Data.LoadFromTextFile( Path.Combine(_appPath, "..", "..", "..", "..", "TrainData", "*"), hasHeader: false); var pipeline = ProcessData(); - BuildAndTrainModel(_trainDataView, pipeline, out ITransformer trainedModel); - SaveModelAsFile(_mlContext, _trainDataView.Schema, trainedModel); + BuildAndTrainModel(_trainDataView, pipeline, out ITransformer _trainedModel); + SaveModelAsFile(_mlContext, _trainDataView.Schema, _trainedModel); } + + public static MulticlassClassificationMetrics? EvaluateModel() + { + var testDataView = _mlContext.Data.LoadFromTextFile(_testDataPath, hasHeader: false, separatorChar: ';'); + return _mlContext.MulticlassClassification.Evaluate(_trainedModel?.Transform(testDataView)); + } + private static IEstimator ProcessData() { var pipeline = _mlContext.Transforms.Conversion.MapValueToKey(inputColumnName: "Type", outputColumnName: "Label")