前一陣參加比賽,NILM就放了放,開始填坑、、、
GOGOGO~
資料準備
根據上一篇中提到的,我這里使用的是UK-DALE
沒有下載的同學可以回到上一篇看一下(學習分享——基于深度學習的NILM負荷分解(一)對DL的看法&準備作業)
這里我直接用已經轉好格式的ukdale.h5
讀取資料還是用NILMTK
如何配置nilmtk,可以參照我另一篇博文,里面寫的比較詳細(NILM(非侵入式電力負荷監測)學習筆記 —— 準備作業(一)配置環境NILMTK Toolkit)
我們這次只需要用到其中讀取data資料的方法就行了,之后我們自己來處理資料,
from nilmtk import DataSet
test = DataSet('E:\\Download\\UK-DALE-disaggregated\\ukdale.h5\\ukdale.h5')
加載資料只需要一句代碼就行了,可以讀到五間房子中幾年的電器用電資料,
可以看到資料包含3項,

- 其中buildings包含5個房間的所用用電器的資料

上圖可見第一間房子中包含了69個電器,53個計量表,
我們之后讀取計量表的資訊為用電總功率,
-
其中metadata里面是這份資料的介紹,

-
其中store是HDF格式的資料,

提取資料

我這邊使用第一個房子的資料來進行試驗,上圖可以看到第一間房子的資訊是從2012到2015,資料量對于測驗來講還是比較多,還考慮到測驗所選取的五個電器的共存時間,我們這里選取18-03-2013之后的資料,
building = 1 ## 選擇家庭house
test.set_window(start="18-03-2013") ## 2013年3月18號之后的作為資料集
test_elec = test.buildings[building].elec
取出第一個房子的電器串列后,我們遍歷所有電表
用 電器名稱+電器序號 作為檔案名,保存每個電器的資料(一些電器,例如燈,會有多個,就是序號)
gt= {}
for meter in test_elec.submeters().meters:
gen = next(meter.load())
values = gen.values
index = gen.index
label = meter.label()
i = 0;
while(1):
name = label+str(i)
if name not in gt:
break
else:
i += 1
np.save('UKData/'+name,values)
gt[name] = 1
print(values.shape,' ',index.shape)
print('saving...', name)
我這保存的路徑是當前py目錄下的UKData檔案夾里面,自行修改,
運行中如下

之后可以看到我們保存出來的所有電器的資料

今天就先到這,
下一文從電器中挑選五個典型電器,
來生成訓練資料和標簽,以及訓練,
To be continued.

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/172768.html
標籤:其他
