ML .NET 二手车价格预测(一)
本文将使用ML .NET的回归模型
对二手车的价格进行训练,得到模型;
并且开发一个简单的预测程序用来预测二手车的价格。
数据集来源
在kaggle Used Cars Price Prediction中下载train-data.csv
和test-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_Type
、Transmission
、Owner_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
进行正确率的验证,不符合条件则重新训练
示例代码
参考资料
10分钟快速入门
官方示例machinelearning-samples
教程:将回归与 ML.NET 配合使用以预测价格
学习技术最好的文档就是【官方文档】,没有之一。
还有学习资料【Microsoft Learn】、【CSharp Learn】、【My Note】。
如果,你认为阅读这篇博客让你有些收获,不妨点击一下右下角的【推荐】按钮。
如果,你希望更容易地发现我的新博客,不妨点击一下【关注】。