在模型生成后,可以通过Evaluate
方法进行评估
//注意,这里使用txt或者tsv格式的文件 string testCsvPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TrainData", "test-data2.txt"); string modelDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Model"); string modelPath = Path.Combine(modelDirectory, "UsedCarsPricePredictionMLModel.zip"); MLContext mlContext = new MLContext(seed: 0); ITransformer loadedModel = mlContext.Model.Load(modelPath, out _); var testDataView = mlContext.Data.LoadFromTextFile<ModelInput>(testCsvPath, hasHeader: true); //https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.ml.data.regressionmetrics?view=ml-dotnet&WT.mc_id=DT-MVP-5003010 var testMetrics = mlContext.Regression.Evaluate(loadedModel.Transform(testDataView), labelColumnName: "Price"); //获取模型的绝对损失 vm.MeanAbsoluteError = testMetrics.MeanAbsoluteError; //获取模型的平方损失 vm.MeanSquaredError = testMetrics.MeanSquaredError; //获取均方根损失(或 RMS),它是 L2 损失 MeanSquaredError 的平方根 vm.RootMeanSquaredError = testMetrics.RootMeanSquaredError; //获取用户定义的丢失函数的结果 vm.LossFunction = testMetrics.LossFunction; //获取模型的 R 平方值,也称为决定系数。 R-Squared 接近 1 表示模型拟合度更好。 vm.RSquared = testMetrics.RSquared;
评估结果如图
由于训练模型的时候使用的是MlContext.Regression.Trainers.LightGbm
,所以评估也应该使用对应的方法MlContext.Regression.Evaluate
ML .NET提供了很多训练算法,可以在这里查看,包括:
二元分类 BinaryClassificationCatalog 多类分类 MulticlassClassificationCatalog 异常情况检测 AnomalyDetectionCatalog 聚类分析 ClusteringCatalog 预测 ForecastingCatalog 排名 RankingCatalog 回归测试 RegressionCatalog 建议 RecommendationCatalog TimeSeries TimeSeriesCatalog
示例代码
RegressionCatalog.Evaluate(IDataView, String, String) 方法
RegressionMetrics 类
10分钟快速入门
什么是 ML.NET 以及它如何工作?
官方示例machinelearning-samples
教程:将回归与 ML.NET 配合使用以预测价格