日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

时间序列异常点检测算法(Smoothed z-score algorithm)

發(fā)布時(shí)間:2024/3/26 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 时间序列异常点检测算法(Smoothed z-score algorithm) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

  • 前言
  • 一、原理
  • 二、代碼實(shí)現(xiàn)
  • 總結(jié)


前言

時(shí)間序列異常點(diǎn)處理!


一、原理

  • 算法原理:利用滑動窗口對之后的節(jié)點(diǎn)值做一個范圍預(yù)測(利用平均值和方差),如果真實(shí)節(jié)點(diǎn)不在這個范圍,則表明該節(jié)點(diǎn)是異常值。
  • 平滑原理:對異常點(diǎn)做一個平滑,以用來評估之后的節(jié)點(diǎn)。(這里平滑的值=當(dāng)前異常節(jié)點(diǎn)的百分之五十+上一個被平滑后節(jié)點(diǎn)的百分之五十,百分之五十這個值可以調(diào)節(jié))
  • 缺點(diǎn):遇到連續(xù)的異常點(diǎn),可能不會檢測到第一個異常點(diǎn)之后的節(jié)點(diǎn)。
  • 建議1:咱這邊對于這個缺點(diǎn),給出的建議是,對異常點(diǎn)的平滑可以做一個修改,可以使用之前幾個值的一個平均值或者是中位數(shù)來做一個填充,如果咱這個技術(shù)過硬,可以采用機(jī)器學(xué)習(xí)預(yù)測異常點(diǎn),嗨嗨嗨,也是極好的。
  • 建議2:如果能大概測試到異常點(diǎn)有多少,可以使用之前平均值和跳過幾個異常點(diǎn)之后的平均值做差,當(dāng)作系數(shù)乘到這里threshold * stdFilter [i-1]。
  • 圖示解釋:可以看到紅色是序列數(shù)據(jù),灰色區(qū)域是程序可接受的范圍值,當(dāng)紅色點(diǎn)超出灰色區(qū)域,則在下面標(biāo)記一個信號量,其取值為-1,0,1.(可以理解為信號量是對程序處理異常點(diǎn)的一個直觀體現(xiàn))
  • 與代碼的對應(yīng):信號量對應(yīng)程序中的列表signals,方差列表對應(yīng)stdFilter ,修正后的輸入列表對應(yīng)filteredY

二、代碼實(shí)現(xiàn)

#!/usr/bin/env python # Implementation of algorithm from https://stackoverflow.com/a/22640362/6029703 import numpy as np import pylab# 源代碼地址 # https://stackoverflow.com/questions/22583391/peak-signal-detection-in-realtime-timeseries-data/43512887#43512887 # 參考文章 # https://zhuanlan.zhihu.com/p/39453139 def thresholding_algo(y, lag, threshold, influence):signals = np.zeros(len(y))filteredY = np.array(y)avgFilter = [0]*len(y)stdFilter = [0]*len(y)avgFilter[lag - 1] = np.mean(y[0:lag])stdFilter[lag - 1] = np.std(y[0:lag])for i in range(lag, len(y)):if abs(y[i] - avgFilter[i-1]) > threshold * stdFilter [i-1]:if y[i] > avgFilter[i-1]:signals[i] = 1else:signals[i] = -1filteredY[i] = influence * y[i] + (1 - influence) * filteredY[i-1]avgFilter[i] = np.mean(filteredY[(i-lag+1):i+1])stdFilter[i] = np.std(filteredY[(i-lag+1):i+1])else:signals[i] = 0filteredY[i] = y[i]avgFilter[i] = np.mean(filteredY[(i-lag+1):i+1])stdFilter[i] = np.std(filteredY[(i-lag+1):i+1])return dict(signals = np.asarray(signals),avgFilter = np.asarray(avgFilter),stdFilter = np.asarray(stdFilter))

總結(jié)

煩、裝linux環(huán)境裝的我心煩意亂! 裝了好久了還沒裝好,億點(diǎn)點(diǎn)毛病。

總結(jié)

以上是生活随笔為你收集整理的时间序列异常点检测算法(Smoothed z-score algorithm)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。