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 配合使用以预测价格
学习技术最好的文档就是【官方文档】,没有之一。
还有学习资料【Microsoft Learn】、【CSharp Learn】、【My Note】。
如果,你认为阅读这篇博客让你有些收获,不妨点击一下右下角的【推荐】按钮。
如果,你希望更容易地发现我的新博客,不妨点击一下【关注】。