ML.NET Cookbook:(7)如何训练回归模型?
生活随笔
收集整理的這篇文章主要介紹了
ML.NET Cookbook:(7)如何训练回归模型?
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
通常,為了在ML.NET中訓(xùn)練任何模型,您將經(jīng)歷三個步驟:
弄清楚訓(xùn)練數(shù)據(jù)如何以IDataView形式進入ML.NET。
將“學(xué)習管道”構(gòu)建為一系列基本的“運算符”(估計器)。
在管道上調(diào)用Fit以獲得經(jīng)過訓(xùn)練的模型。
示例文件[1]:
feature_0;feature_1;feature_2;feature_3;feature_4;feature_5;feature_6;feature_7;feature_8;feature_9;feature_10;target -2.75;0.77;-0.61;0.14;1.39;0.38;-0.53;-0.50;-2.13;-0.39;0.46;140.66 -0.61;-0.37;-0.12;0.55;-1.00;0.84;-0.02;1.30;-0.24;-0.50;-2.12;148.12 -0.85;-0.91;1.81;0.02;-0.78;-1.41;-1.09;-0.65;0.90;-0.37;-0.22;402.20在上面的文件中,最后一列(第12列)是我們預(yù)測的標簽,前面所有的都是特征。
//?第一步:將數(shù)據(jù)加載為IDataView。 //?首先,我們定義加載器:指定數(shù)據(jù)列以及它們在文本文件中的位置。 //?將數(shù)據(jù)加載到數(shù)據(jù)視圖中。但是請記住,加載器是延遲執(zhí)行的,所以實際加載將在訪問數(shù)據(jù)時發(fā)生。 var?trainData?=?mlContext.Data.LoadFromTextFile<RegressionData>(dataPath,//?默認分隔符是tab,但數(shù)據(jù)集使用分號。separatorChar:?';' );//?有時,當數(shù)據(jù)要在某個地方多次使用時,在首次訪問后將數(shù)據(jù)緩存在內(nèi)存中可以節(jié)省一些加載時間。緩存機制也是延遲執(zhí)行的;它只在使用后才緩存東西。用戶可以用“cachedTrainData”替換“trainData”的所有后續(xù)用法。 //?我們?nèi)匀皇褂谩皌rainData”,因為提供相同緩存功能的緩存步驟將插入到所考慮的“管道”中。 var?cachedTrainData?=?mlContext.Data.Cache(trainData);//?第二步:定義學(xué)習管道。//?我們用加載器的輸出“啟動”管道。 var?pipeline?=//?首先“規(guī)范化”數(shù)據(jù)(對于所有樣本,重新縮放到-1和1之間)mlContext.Transforms.NormalizeMinMax("FeatureVector")//?我們增加了一個在內(nèi)存中緩存數(shù)據(jù)的步驟,使得下游的迭代訓(xùn)練算法能夠有效地對數(shù)據(jù)進行多次掃描。否則,下面的訓(xùn)練器將多次從磁盤加載數(shù)據(jù)。緩存機制使用按需策略。//?在任何下游步驟中訪問的數(shù)據(jù)都將在首次使用后被緩存。通常,您只需要在可訓(xùn)練步驟之前添加一個緩存步驟,因為如果數(shù)據(jù)只掃描一次,則緩存沒有幫助。如果用戶沒有足夠的內(nèi)存來存儲整個數(shù)據(jù)集,則可以刪除此步驟。請注意,在上游Transforms.Normalize步驟中,我們只掃描數(shù)據(jù)一次,因此添加緩存步驟是沒有幫助的。.AppendCacheCheckpoint(mlContext)//?添加SDCA回歸訓(xùn)練器。.Append(mlContext.Regression.Trainers.Sdca(labelColumnName:?"Target",?featureColumnName:?"FeatureVector"));//第三步:?在管道上調(diào)用`Fit` var?model?=?pipeline.Fit(trainData);參考資料
[1]
示例文件: https://github.com/dotnet/machinelearning/blob/main/test/data/generated_regression_dataset.csv
總結(jié)
以上是生活随笔為你收集整理的ML.NET Cookbook:(7)如何训练回归模型?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 技术分享|手机推送原理剖析指南
- 下一篇: C# 消息队列之MSMQ