色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Python在數(shù)據(jù)流中查找異常值的方法

汽車玩家 ? 來源:未知 ? 作者:聞數(shù)起舞 ? 2020-05-03 18:17 ? 次閱讀

一種簡單的方法,可通過Python實(shí)現(xiàn)在數(shù)據(jù)流中查找異常值

在上一篇文章中,我解釋了流算法的概念,并給出了許多如何應(yīng)用流算法的示例。 其中之一是在不保存數(shù)據(jù)流元素的情況下計算數(shù)據(jù)流的滾動平均值。 現(xiàn)在,我想擴(kuò)展這個示例,并在異常值檢測的背景下向您展示另一種流算法的用例。

當(dāng)我們監(jiān)視機(jī)器的功耗以檢測任何異常行為時,可能會出現(xiàn)類似的問題。 如果我們發(fā)現(xiàn)異常值有所增加(異常觀察),則可能表明這臺機(jī)器的默認(rèn)值,可能值得檢查。

定義和示例

離群值可以通過多種方式定義。 在本文中,我們將使用以下定義:

如果數(shù)字?jǐn)?shù)據(jù)流中的元素與到目前為止所見元素的平均值不在3個標(biāo)準(zhǔn)偏差之內(nèi),則該元素被視為離群值。

這需要一個小例子。 假設(shè)我們按順序獲得數(shù)據(jù)3、2、4、3、5、3、2、10、2、3、1。 讓我們進(jìn)一步假設(shè),我們從零的均值和方差(以及因此的標(biāo)準(zhǔn)差)開始,即,如果不等于零,則始終將第一個元素視為離群值。

因此,將3視為離群值,因為3> 0 3 * 0。 現(xiàn)在,我們根據(jù)到目前為止看到的元素(僅是數(shù)字3)更新均值和方差。因此,新均值是3,方差是0。

然后我們看到2。我們有2> 3 3 * 0,所以2也被認(rèn)為是離群值。 這是有道理的,因為到目前為止我們只看到了3,所以其他任何數(shù)字都不適合該模式。 平均值更新為(3 2)/2=2.5,方差更新為((3-2.5)2(2-2.5)2)/2=0.25,這意味著標(biāo)準(zhǔn)偏差為0.5。

現(xiàn)在我們看到4。由于2.5–3 *0.5≤4≤2.53 * 0.5,因此該數(shù)字不是異常值(即正常值)。 平均值更新為(3 2 4)/ 3 = 3,方差更新為((3–3)2(2–3)2(4–3)2)/ 3 = 2/3,因此標(biāo)準(zhǔn)偏差為 約0.81。

以下數(shù)字3、5、3、2被認(rèn)為是正常的。 憑直覺,我們將下面的數(shù)字10視為離群值。 讓我們看看該算法的作用。 此時的平均值約為3.1,標(biāo)準(zhǔn)偏差約為1。由于10> 3.1 3 * 1,因此我們希望將10視為離群值。

如果繼續(xù)最后三個元素,您將看到它們都是正常的。

問題:要計算平均值和標(biāo)準(zhǔn)偏差,我們必須記住到目前為止看到的所有元素。 如果我們有一個每天輸出成千上萬個元素的系統(tǒng),那么這不是一個選擇。

救援的流式算法

解決此問題的一種方法是使用流算法,該算法在從數(shù)據(jù)流中每個被掃描元素之后更新其內(nèi)部狀態(tài)。 內(nèi)部狀態(tài)由到目前為止在任何點(diǎn)看到的所有元素的均值和方差組成,從看到任何元素之前的均值和方差為零開始。 確切地說,在看到數(shù)據(jù)流的第n個元素之后,令m?為平均值,v?為方差,并附加定義m?=v?= 0。

計算均值

在我有關(guān)流算法的文章中,我們看到了如何僅使用舊的均值,正在掃描的最新元素以及到目前為止看到的元素數(shù)量來更新均值。 這意味著我們只需要隨時使用這種方法存儲兩個數(shù)字,而不是像幼稚的方法那樣存儲n。 讓我再次顯示它,將數(shù)據(jù)流的第i個傳入元素表示為a?:

基于Python在數(shù)據(jù)流中查找異常值的方法

這個公式不難開發(fā),對吧? 有了它,我們就有了我們期望的元素大小的基線。 現(xiàn)在,我們只需要可以用均值圍繞的標(biāo)準(zhǔn)偏差即可將輸入的示例分類為離群值和正常數(shù)據(jù)點(diǎn)。 我們通過計算方差來做到這一點(diǎn),然后取其平方根即可達(dá)到標(biāo)準(zhǔn)偏差。

計算方差

在這種情況下,我們也可以輕松找到遞歸公式。 首先,看到n個元素后的方差為

基于Python在數(shù)據(jù)流中查找異常值的方法

讓我們嘗試再次根據(jù)n,v?和最新元素來寫。 由于方差取決于均值,因此我們也要包含m?。 在開始之前,讓我們重新安排這個公式,以使事情變得更容易:

基于Python在數(shù)據(jù)流中查找異常值的方法

現(xiàn)在,目標(biāo)是使v?進(jìn)入那里。 一種進(jìn)行方式是從以下簡單的重新排列開始,以隔離平方和直到索引n,它也以v?中的一項出現(xiàn):

基于Python在數(shù)據(jù)流中查找異常值的方法

這相當(dāng)于

基于Python在數(shù)據(jù)流中查找異常值的方法

反過來導(dǎo)致

基于Python在數(shù)據(jù)流中查找異常值的方法

現(xiàn)在,我們有了公式,讓我們看看它在Python中是如何工作的!

用Python實(shí)現(xiàn)

我們可以通過以下方式實(shí)現(xiàn)上述解釋:

class StreamingMeanAndVariance:

def __init__(self):

self.mean = 0

self.variance = 0

self.n_elements = 0

def update(self, element):

self.variance = ((self.variance + self.mean ** 2) * self.n_elements + element ** 2) / (self.n_elements + 1)

self.mean = ((self.mean * self.n_elements) + element) / (self.n_elements + 1)

self.variance = self.variance - self.mean ** 2

self.n_elements += 1

關(guān)于此的注釋:update方法的第一行計算方差,但不減去當(dāng)前均方根。 在第二行中,計算當(dāng)前平均值。 在第三行中,然后將其從方差中減去,因為在第一行中仍然缺少此值。

要使用它,我們會

import numpy as np

m = StreamingMeanAndVariance()

n = 10000

for i, s in enumerate(np.random.randn(n)):

if not - 3 <= (s - m.mean) / np.sqrt(m.variance) <= 3:

print(i, s)

m.update(s)

這將掃描數(shù)據(jù)流,該數(shù)據(jù)流在此示例中由10000個正態(tài)分布的數(shù)字組成(我們將其表示為N(0,1)),并在出現(xiàn)異常時打印異常值。

如果將法線的間隔和平均值(以黃色表示)作圖,則會得到以下圖片:

以藍(lán)色顯示,您可以看到測量值。綠色區(qū)域包含法線點(diǎn),其外部的測量值(紅色表示)被認(rèn)為是異常值。以黃色顯示您的期望值(平均值)。

討論區(qū)

該算法可以達(dá)到我們的期望! 但是,到目前為止,我們還沒有看到它如何處理分配的變化,而是始終只有標(biāo)準(zhǔn)的正態(tài)分布數(shù)。

讓我們測試執(zhí)行以下操作時算法的行為:

結(jié)果看起來像這樣:

Everything adapts slowly to the new data.

優(yōu)點(diǎn)

這看起來很有希望! 一切都會自動適應(yīng)新數(shù)據(jù)。 當(dāng)數(shù)據(jù)的平均值從0變?yōu)?時,我們可以看到很多離群值,這是有道理的。 新平均值2越多,觀測到的異常值就越少,因為2左右是新的常態(tài)。

當(dāng)將平均值從2更改為-2時,我們可以看到更多的離群值,因為這種變化要嚴(yán)重得多。 到目前為止,一切都很好。

缺點(diǎn)

如果查看圖的右半部分,可以看到對新數(shù)據(jù)的適應(yīng)非常慢。 如您所見,平均值和標(biāo)準(zhǔn)偏差將在一段時間后再次達(dá)到正確的水平,因為黃線(均值)下降并且綠色區(qū)域再次變窄。 但是直到穩(wěn)定為止,沒有發(fā)現(xiàn)異常值。

為了解決這個問題,我們只能使用最后k個樣本來計算均值和標(biāo)準(zhǔn)差,因為


這會破壞第一次測量的影響。 如果將k設(shè)置為無窮大,則可以從之前獲得算法。

我們將k設(shè)置得越低,算法就越快地適應(yīng)新數(shù)據(jù)。 但是,將k設(shè)置得太小可能會導(dǎo)致丟棄異常值,因為該算法認(rèn)為新數(shù)據(jù)就是這樣。 在設(shè)置k = 1的極端情況下,沒有元素被視為離群值,因為僅考慮了最新元素。

根據(jù)用例,可能幾百或幾千個就可以了。

結(jié)論

在本文中,我們已經(jīng)看到了如何為數(shù)據(jù)流建立一個非常簡單的異常檢測機(jī)制。 我們的算法不需要存儲所有測量值,因此非常容易應(yīng)用,也可以在極其受限制的硬件上使用,并且只需固定存儲即可。 該算法甚至可以適應(yīng)數(shù)據(jù)更改,因此無需手動更新。

唯一需要調(diào)整的是自適應(yīng)率,我們在本文中沒有介紹,但是很容易做到。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)流
    +關(guān)注

    關(guān)注

    0

    文章

    122

    瀏覽量

    14632
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4822

    瀏覽量

    85810
收藏 1人收藏

    評論

    相關(guān)推薦

    ad77681數(shù)據(jù)讀取異常的原因?

    數(shù)據(jù)發(fā)送到arm,兩個spi均使用了DMA。 在采樣率為128KHz時,adc的數(shù)據(jù)異常,會有接近于參考電壓的突變值,并且會有其他異常值,正常的數(shù)據(jù)
    發(fā)表于 04-16 07:26

    利用SSIS源、查找及目標(biāo)組件集成PostgreSQL數(shù)據(jù)至ETL流程

    的 Devart SSIS 數(shù)據(jù)流組件,您可以: 快速構(gòu)建基于 SSIS 的 PostgreSQL 集成解決方案 通過 SSIS 數(shù)據(jù)流任務(wù)自動
    的頭像 發(fā)表于 02-07 09:24 ?1240次閱讀
    利用SSIS源、<b class='flag-5'>查找</b>及目標(biāo)組件集成PostgreSQL<b class='flag-5'>數(shù)據(jù)</b>至ETL流程

    使用ADS1281做調(diào)制器,兩個調(diào)制器都是輸出1位的數(shù)據(jù)流,那合并之后數(shù)據(jù)流是幾位的呢?

    ]). 現(xiàn)在有以下兩個問題: 1.兩個調(diào)制器都是輸出1位的數(shù)據(jù)流,那合并之后數(shù)據(jù)流是幾位的呢? 2.如果取所有可能的情況,Y[n]的輸出范圍就是-24~+25,這個又要怎么理解呢?
    發(fā)表于 02-05 09:10

    適用于Oracle的SSIS數(shù)據(jù)流組件:提供快速導(dǎo)入及導(dǎo)出功能

    使用SSIS 數(shù)據(jù)流組件,通過與關(guān)鍵數(shù)據(jù)庫和云服務(wù)的 Oracle 數(shù)據(jù)集成來改進(jìn)您的 ETL 流程,這些組件提供快捷和可靠的數(shù)據(jù)導(dǎo)入和導(dǎo)出功能。 ? Oracle SSIS
    的頭像 發(fā)表于 01-15 10:51 ?492次閱讀
    適用于Oracle的SSIS<b class='flag-5'>數(shù)據(jù)流</b>組件:提供快速導(dǎo)入及導(dǎo)出功能

    Devart SSIS數(shù)據(jù)流組件

    Devart SSIS 數(shù)據(jù)流組件是功能強(qiáng)大的工具,旨在簡化 SQL Server Integration Services (SSIS) 包內(nèi)的 ETL 流程,使用戶無需編寫復(fù)雜的代碼即可
    的頭像 發(fā)表于 01-05 11:08 ?937次閱讀
    Devart SSIS<b class='flag-5'>數(shù)據(jù)流</b>組件

    cmp在數(shù)據(jù)處理的應(yīng)用 如何優(yōu)化cmp性能

    CMP在數(shù)據(jù)處理的應(yīng)用 CMP(并行處理)技術(shù)在數(shù)據(jù)處理領(lǐng)域扮演著越來越重要的角色。隨著數(shù)據(jù)量的爆炸性增長,傳統(tǒng)的串行處理方法已經(jīng)無法滿足
    的頭像 發(fā)表于 12-17 09:27 ?768次閱讀

    ADS1299+RK3399在數(shù)據(jù)采樣的過程,有數(shù)據(jù)丟失的情況怎么解決?

    我們在數(shù)據(jù)采樣的過程,發(fā)現(xiàn)有數(shù)據(jù)丟失的情況,通過邏輯分析儀發(fā)現(xiàn),出現(xiàn)數(shù)據(jù)丟失時,時序存在問題。具體見下圖: 從圖中可以看出,DRDY出現(xiàn)了異常
    發(fā)表于 12-16 06:58

    Pythondict支持多個key的方法

    ? 在Python,字典(dict)是一種非常強(qiáng)大的數(shù)據(jù)結(jié)構(gòu),它允許我們通過鍵(key)來存儲和檢索值(value)。有時候,我們可能想要根據(jù)多個鍵來檢索或操作字典
    的頭像 發(fā)表于 11-29 15:59 ?371次閱讀

    柔性測斜儀數(shù)據(jù)異常故障分析及解決方法

    ?在土木工程、地質(zhì)勘探和結(jié)構(gòu)監(jiān)測等領(lǐng)域,柔性測斜儀作為一種重要的測量工具,被廣泛應(yīng)用于深層水平位移的監(jiān)測。然而,在實(shí)際使用過程,柔性測斜儀有時會出現(xiàn)數(shù)據(jù)異常故障,如測量
    的頭像 發(fā)表于 11-20 14:37 ?556次閱讀
    柔性測斜儀<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>異常</b>故障分析及解決<b class='flag-5'>方法</b>

    魯棒性算法在數(shù)據(jù)處理的應(yīng)用

    一、魯棒性算法的基本概念 魯棒性算法是指在面對數(shù)據(jù)異常值、噪聲和不確定性時,仍能保持穩(wěn)定性能的算法。這類算法的核心思想是提高算法對數(shù)據(jù)異常
    的頭像 發(fā)表于 11-11 10:22 ?1377次閱讀

    理解ECU數(shù)據(jù)流的分析方法

    隨著汽車電子化程度的提高,ECU在車輛扮演的角色越來越重要。它們不僅控制著發(fā)動機(jī)管理、變速箱、制動系統(tǒng)等關(guān)鍵功能,還涉及到車輛的舒適性和安全性。 ECU數(shù)據(jù)流分析的重要性 故障診斷 :通過
    的頭像 發(fā)表于 11-05 11:07 ?904次閱讀

    請問TLV320AIC3254EVM-K怎么讀取音頻數(shù)據(jù)流

    您好,我在學(xué)習(xí)TLV320AIC3254EVM-K開發(fā)板的過程碰到一個這樣的問題,TI提供的軟件是否具備讀取I2S的音頻數(shù)據(jù)流的功能,或者是否有PC機(jī)軟件可以讀取音頻數(shù)據(jù)流,或者其它方法
    發(fā)表于 10-31 06:14

    統(tǒng)一日志數(shù)據(jù)流

    統(tǒng)一日志數(shù)據(jù)流圖 日志系統(tǒng)數(shù)據(jù)流圖 系統(tǒng)進(jìn)行日志收集的過程可以分為三個環(huán)節(jié): (1)日志收集和導(dǎo)入ElasticSearch (2)ElasticSearch進(jìn)行索引等處理 (3)可視化操作,查詢等
    的頭像 發(fā)表于 08-21 15:00 ?460次閱讀
    統(tǒng)一日志<b class='flag-5'>數(shù)據(jù)流</b>圖

    使用CYUSB3014實(shí)現(xiàn)USB3VISION,不能成功發(fā)送DSI數(shù)據(jù)流是怎么回事?

    /USB3-Vision-DMA-on-Leader-packet-on-FX3...。目前使用eBUS Player這個軟件能夠成功識別到U3V設(shè)備,并且連接成功,但是啟動發(fā)送數(shù)據(jù)流時,僅能夠發(fā)送leader數(shù)據(jù),不能夠正常發(fā)送有效負(fù)載
    發(fā)表于 07-05 07:58

    ESP32如何在不漏數(shù)據(jù)的情況下采集數(shù)據(jù)流

    esp32作為spi從機(jī)連接一款A(yù)D,該AD芯片上電后就會持續(xù)不斷地向外發(fā)送數(shù)據(jù),如果循環(huán)調(diào)用spi_slave_transmit(),那么兩次調(diào)用之間就會漏掉一些數(shù)據(jù)。 請問從機(jī)有沒有辦法在不漏數(shù)據(jù)的情況下采集這個
    發(fā)表于 06-19 08:02
    主站蜘蛛池模板: 在线不卡日本v二区到六区 在线不卡日本v二区 | 亚洲精品高清在线观看 | 久久免费精品国产72精品剧情 | 国产精品亚洲精品影院 | 亚洲欧洲日韩天堂无吗 | 久久久性色精品国产免费观看 | 麻豆高清区在线 | 国产精品女上位在线观看 | 国产精品九九九久久九九 | 日日噜噜夜夜狠狠扒开双腿 | 中文字幕一区二区三区在线不卡 | 好大好硬好爽好深好硬视频 | 野花日本大全免费观看3中文版 | 国产激情视频在线观看 | 狠很橹快播 | 久久亚洲精品成人综合 | qvod小电影| 国产午夜精品久久久久九九 | 日本阿v片在线播放免费 | 久久er国产精品免费观看2 | 大地影院在线播放 | 在线播放性xxx欧美 在线播放午夜理论片 | 忘忧草在线社区WWW日本直播 | 97国产精品久久精品国产 | 欧美性爱 先锋影音 | 啊轻点啊再深点视频免费 | 亚洲精品国产自在在线观看 | 中国农村妇女真实BBWBBWBBW | 亚洲国产剧情中文视频在线 | 亚洲欧美自拍清纯中文字幕 | 91日本在线观看亚洲精品 | 1000部做羞羞事禁片免费视频网站 | 麻豆无人区乱码 | 超碰久久国产vs | 99精品国产高清自在线看超 | 韩国伦理片2018在线播放免费观看 | 国产精品久久人妻无码网站一区无 | 国产精品无需播放器 | 色迷迷导航 | 视频一区二区中文字幕 | 亚洲欧美日韩高清中文在线 |

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品