我發現nilm領域中文的部落格還是很少的,比較系統講解的就更少,目前打算把這個部落格寫的全面些,而工欲善其事必先利其器,先說**似乎不太容易理解,先說下nilmtk這個工具包吧。然後再講幾個資料集,再說**。
nilmtk,顧名思義, nilm的tool kit,是專門為非侵入式負荷監測任務開發的開源工具包,包括了各大公開資料集的資料處理,也支援使用者自己採集的資料;內建了組合優化(co)和隱馬爾可夫模型(fhmm)兩種演算法以便和研究人員的演算法比較;提供了演算法封裝的函式,可以方便呼叫使用者自己寫的演算法;提供了負荷分解結果的評價指標。
**就如下圖。**: (有時需要fq) **是《nilmtk: an open source toolkit for non-intrusive load monitoring》
注意,這裡首先要宣告的是,nilmtk不支援高頻資料!!高頻資料指khz或mhz取樣的資料。比如blued資料集就是khz取樣資料,nilmtk是處理不了的,redd資料集既提供了15khz高頻資料也提供了3s取樣低頻資料,那nilmtk只能處理後者。因此,如果你研究的是用高頻電表資料識別電器開關(投切)事件,。。。。。。。你依然需要nilmtk,哈哈哈哈哈。
為什麼nilmtk處理不了高頻資料集還需要看它呢,因為如果你要用高頻的電表資料判斷電器開關事件,演算法的輸入特徵是電表資料,那label就是電器的開關事件啊,哪個電器在哪個短暫的0.幾秒的時間裡開了或關了是需要知道的。但遺憾的是,目前所有高頻公開資料集裡,(我知道的)只有blued這個資料集同時提供了每個電器開關的標籤。以redd的15khz資料為例,那就只有總電表的15khz取樣的資料,沒有電器的開關事件,那怎麼辦呢,你可以用nilmtk中的get_activationseries函式(雖然自己寫也不麻煩)和redd低頻的電器有功序列,找到低頻資料集中每一次電器開關的大致時刻(因為低頻3s取樣嘛),然後再從高頻電表資料波形中精準定位投切事件在3s中的**。(如果你真的不想用nilmtk,也不是不可以,nilmtk基本上也是numpy和pandas實現的)
可能描述起來比較困難,但是如果你做高頻事件檢測,自然看得懂;做低頻功率分解,也就沒必要看。
下面繼續說這個工具包,工具包的安裝就不多介紹了,**上有安裝教程,我用過windows10 和7的64位,使用都是沒問題的。linux安裝可能不會有什麼問題,windows安裝的話,注意上面說需要安裝:vs c++ compiler。其實有個簡單的安裝方法,你windows也下個wget,用wget安。
具體怎麼用,**上很詳細,自己研究吧,最後兩部分還提供了fhmm演算法和co演算法,有興趣你還可以看看原始碼怎麼實現。
這節對nilmtk的介紹只是為了後面講解**和操作流程做鋪墊,因此並沒有詳細講解。後面講實際資料處理流程時,用到nilmtk中什麼函式,再逐個詳細介紹,over。
NILM 非侵入式電力負荷監測之我見(二)
哈,我又來啦,第一篇扯完淡,這一篇就談技術吧。之前的研究集中在低頻 秒級 資料,用的是各種深度學習方法,因此我就談談這種方法。看雞尾酒會問題的舉例,如下圖,你走在路上聽見啥聲都有,你要分離出每種聲音 警笛,人聲,狗叫什麼的 再看nilm任務的圖如下。這是乙個家庭一段時間總電表的有功曲線,其中每種顏色...
非侵入式負荷分解之BLUED資料集
16個大壓縮包裡面,只有乙個壓縮包是包含430個小壓縮包,其餘都是400個。解壓後是包含檔案頭的txt文字,後面的資料分別是時間,a相電流,b相電流,a相電壓。這個時間是從0開始的,而這個0時刻對應的是start end.txt檔案裡面的開始時間。每100個txt文字對應乙個功率資料的mat檔案,所...
侵入式和非侵入式的區別
簡單說一下我的理解吧。假設大家都想要把使用者 塞到乙個框架裡。侵入式的做法就是要求使用者 知道 框架的 表現為使用者 需要繼承框架提供的類。非侵入式則不需要使用者 引入框架 的資訊,從類的編寫者角度來看,察覺不到框架的存在。例如 使用struts的時候,我需要繼承一些struts的類,這時strut...