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 配合使用以預測價格


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM