ML .NET 二手车价格预测之评估(三)

在模型生成后,可以通过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 配合使用以预测价格

posted @ 2022-03-07 19:55  Lulus  阅读(585)  评论(0编辑  收藏  举报