ML.NET-使用ML.NET進行異常偵測
安裝完ML.NET跟讀好資料庫資料,現在就來跑個異常偵測測試一下。 主要用到IidSpikeEstimator Class這個類別 根據微軟敘述 可偵測到的時間序列異常有兩種:尖峰表示系統中異常行為的暫時高載。變更點表示系統開頭的持續性隨著時間變更。 首先把DB讀到的data轉成ml看得懂的形式,iidSpikeEstimator 類似python的model,給他input跟output(需寫成類別可參考 ML.NET從資料庫讀取資料 ),p-value信心水準95%,pvalueHistoryLength:計算p-value的滑動窗口大小,這兩個參數可調整,找出來的異常值會有差異。 下一步把資料餵到model裡面並把資料轉成列舉,從列舉中取出預測值,最後就是把結果印出來而已,因為我是用asp.net專案,所以簡單用label顯示。 var mlData = mlContext.Data.LoadFromEnumerable(data); DetectSpike(mlContext, mlData); static IDataView CreateEmptyDataView(MLContext mlContext) { // Create empty DataView. We just need the schema to call Fit() for the time series transforms IEnumerable<geodaily_model> enumerableData = new List<geodaily_model>(); return mlContext.Data.LoadFromEnumerable(enumerableData); } public void DetectSpike(MLContext mlContext, IDataView productSales) ...