ML.NET Cookbook:(10)如何使用模型做出一个预测?
生活随笔
收集整理的這篇文章主要介紹了
ML.NET Cookbook:(10)如何使用模型做出一个预测?
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
因為任何ML.NET模型都是一個轉(zhuǎn)換器,所以您當然可以使用model.Transform將該模型應用于“數(shù)據(jù)視圖”并以這種方式獲得預測。
不過,更典型的情況是,沒有我們想要預測的“數(shù)據(jù)集”,而是一次只接收一個樣本。例如,我們將模型作為ASP.NET網(wǎng)站的一部分運行,并且需要對傳入的HTTP請求進行預測。
對于這種情況,ML.NET提供了一個方便的PredictionEngine組件,它基本上是通過預測管道一次運行一個樣本。
下面是完整的例子。假設我們?yōu)橹腎ris預測數(shù)據(jù)集建立了一個模型:
//?第一步:將數(shù)據(jù)加載為IDataView。//?檢索訓練數(shù)據(jù)。 var?trainData?=?mlContext.Data.LoadFromTextFile<IrisInput>(irisDataPath,//?默認分隔符是tab,但數(shù)據(jù)集使用逗號。separatorChar:?',' );//?創(chuàng)建訓練管道。 var?pipeline?=//?將所有特征串聯(lián)到一列“Features”中。mlContext.Transforms.Concatenate("Features",?"SepalLength",?"SepalWidth",?"PetalLength",?"PetalWidth")//?請注意,標簽是文本,因此需要將其轉(zhuǎn)換為鍵。.Append(mlContext.Transforms.Categorical.MapValueToKey("Label"),?TransformerScope.TrainTest)//?在緩存檢查點階段之后的步驟中,將數(shù)據(jù)緩存在內(nèi)存中。.AppendCacheCheckpoint(mlContext)//?使用多類SDCA模型預測標簽。.Append(mlContext.MulticlassClassification.Trainers.SdcaMaximumEntropy())//?應用從“PredictedLabel”列到字符串值的逆轉(zhuǎn)換。.Append(mlContext.Transforms.Conversion.MapKeyToValue("Data",?"PredictedLabel"));//?訓練模型。 var?model?=?pipeline.Fit(trainData);現(xiàn)在,為了使用模式理解[1]進行預測,我們定義了一對類,如下所示:
private?class?IrisInput {//?不幸的是,我們?nèi)匀恍枰摂M的“Label”列。[ColumnName("Label")]public?string?IgnoredLabel?{?get;?set;?}public?float?SepalLength?{?get;?set;?}public?float?SepalWidth?{?get;?set;?}public?float?PetalLength?{?get;?set;?}public?float?PetalWidth?{?get;?set;?} }private?class?IrisPrediction {[ColumnName("Data")]public?string?PredictedClass?{?get;?set;?} }預測代碼如下所示:
//?使用該模型進行一次性預測。 //?使預測函數(shù)成為對象。請注意,平均而言,此調(diào)用所花費的時間比一個預測長200倍左右,因此您可能希望緩存和重用預測函數(shù),而不是為每個預測創(chuàng)建一個。 var?predictionFunc?=?mlContext.Model.CreatePredictionEngine<IrisInput,?IrisPrediction>(model);//?獲得預測。?請記住,“預測”不是可重入的。?如果要使用多個線程進行同時預測,請確保每個線程都使用自己的PredictionEngine。 var?prediction?=?predictionFunc.Predict(new?IrisInput {SepalLength?=?4.1f,SepalWidth?=?0.1f,PetalLength?=?3.2f,PetalWidth?=?1.4f });歡迎關(guān)注我的個人公眾號”My IO“參考資料
[1]
模式理解: https://github.com/dotnet/machinelearning/blob/main/docs/code/SchemaComprehension.md
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的ML.NET Cookbook:(10)如何使用模型做出一个预测?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Api网关Kong集成Consul做服务
- 下一篇: ASP.NET Core文件上传IFor