ml.net是微軟機器學習的東西,如果你的需求是需要一個固定的模型來進行操作的話那就按著官網的教程來就可以,但是大部分的模型可能不滿足現有的需求,那么我們需要對模型進行重新訓練,
重新訓練模型有限制條件,你重新訓練模型的資料分類必須是原有模型已有的分類,如果想增加分類的話只能重新訓練一個新的模型來進行操作,
模型重新訓練的話在第一次模型生成時候需要保存另外一個模型檔案,如圖:

modle的生成是通過定義的ogdEstimator演算法進行生成的,而ogdEstimator里的演算法需要和上面你生成模型的管道的演算法一致,演算法所需要的引數labelColumnName和featureColumnName也需要一一對應,
第一次建模型階段準備作業已完成,需要保存的兩個zip盡量保存到專案中去,
后續訓練已有的模型開始的話是這樣的:

首先加載你所保存的兩個模型檔案,originalModelParameters所轉換的引數型別需要跟你模型的演算法引數型別匹配,不然會提示無法轉換成功,

然后加載你匯入的新資料,轉為IDataview,

這部分是主要是重新訓練模型的演算法,LbfgsMaximumEntropy里面的引數要相對應,這個就不用說了,當然你的演算法要是其他的也差不太多,
Fit所傳入的兩個變數,第一個是你的新資料,第二個是你的老資料,新的訓練模型將以老資料為起點進行訓練,

所生成的retrainedModel模型資料直接保存到modelZip就可以,
接下來在進行使用這個模型的時候需要進行一些改變,
如果你不需要重新訓練模型的話,進行預測是這樣的:

直接拿第一次生成的模型進行預測,然后回傳給你預測的結果,
但是當我們重新訓練過模型的時候需要對預測方法進行一些改變:

需要加載初始的模型和訓練后的模型,
重新訓練模型的正常流程大概就是這樣的了,正常生成模型以及進行預測的方法官方的demo里就可以找到,
注:保存模型之后的Weights會獲取不到,提示非公開成員,然后我這邊需要進行這樣一個操作:

先定義然后通過GetWeights獲取Weights的資料,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/240727.html
標籤:.NET技术
