ML .NET 二手车价格预测(一)

本文将使用ML .NET的回归模型对二手车的价格进行训练,得到模型;
并且开发一个简单的预测程序用来预测二手车的价格。

数据集来源

kaggle Used Cars Price Prediction中下载train-data.csvtest-data.csv
其中train-data.csv用于训练,test-data.csv用于评估
打开train-data.csv进行查看,

训练数据从左到右的列分别表示,序号、名称、所在地、年份、行驶车程、汽油种类、手动挡/自动挡、转手次数、里程、引擎、马力、座位、购买新车价格、当前价格
接下来对train-data.csv做一定的处理,
由于New_Price的数据不完整,且较少,将New_Price列去掉(这里也可以选择补齐数据)
由于Mileage列存在单位不同的问题,将Mileage列去掉(这里也可以选择对数据进行修改,保证数据一致)

开始训练

在项目中,创建训练模型

如图所示,进入一个可视化的配置页面,在方案一栏选择值预测

训练环境选择本地CPU

接下来选择数据源,数据源可以是.csv文件,.tsv文件,.txt文件,也可以是SQL Server数据库
这里我们选择.csv文件

读取文件后,选择高级数据选项,设置字段的具体作用
第一列是序号,是不需要的数据
第二列Name开始,到New Price都是影响二手车价格的因素,故设置为Feature
其中Fuel_TypeTransmissionOwner_Type为枚举字段,故勾选分类
最后一列为我们想要预测的数据,二手车价格,故设置为Label
最后为所有字段选择正确的数据类型,布尔、数字或者字符串


接下来ML .NET会进行训练,为我们选择合适的模型和参数


如果对训练结果不满意,可以增加训练时间,反复训练
以下是训练100秒后的结果

接下来有个预估功能,可以进行简单测试,如果不满意结果,就继续回到上一步重新训练

训练完成后,获得模型UsedCarsPricePredictionMLModel.zip

调用模型完成功能

写一个UI,输入数据,并预测价格

UsedCarsPricePredictionMLModel.consumption.cs文件中,
先读取模型文件,加载模型

private static PredictionEngine<ModelInput, ModelOutput> CreatePredictEngine()
{
    var mlContext = new MLContext();
    ITransformer mlModel = mlContext.Model.Load(MLNetModelPath, out var _);
    return mlContext.Model.CreatePredictionEngine<ModelInput, ModelOutput>(mlModel);
}

然后调用Predict方法,进行预测

var predEngine = PredictEngine.Value;
return predEngine.Predict(input);

注意,可以加载一次模型对象,然后重复利用,节省时间

关于评估

在模型正式投入使用之前,可以使用另外的数据集test-data.csv进行正确率的验证,不符合条件则重新训练

示例代码

UsedCarsPricePrediction

参考资料

10分钟快速入门
官方示例machinelearning-samples
教程:将回归与 ML.NET 配合使用以预测价格

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