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