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")