NILMTK的学习(所用数据集合REDD)

1相关API的理解

1.1 获取数据对象,convert and load data

redd = DataSet(‘/data/REDD/redd.h5’)

print redd.metadata#输出该数据集相关信息和实验环境

print redd.buildings#输出所有测试房间信息
OrderedDict([
(1, Building(instance=1, dataset=’REDD’)),
(2, Building(instance=2, dataset=’REDD’)),
(3, Building(instance=3, dataset=’REDD’)),
(4, Building(instance=4, dataset=’REDD’)),
(6, Building(instance=6, dataset=’REDD’))]

print redd.buildings[1].metadata
‘instance’: 1, ‘dataset’: ‘REDD’, ‘original_name’: ‘house_1’}
输出如下信息:
MeterGroup(meters=
ElecMeter(instance=1, building=1, dataset=’REDD’, site_meter, appliances=[])
ElecMeter(instance=2, building=1, dataset=’REDD’, site_meter, appliances=[])
ElecMeter(instance=5, building=1, dataset=’REDD’, appliances=[Appliance(type=’fridge’, instance=1)])
ElecMeter(instance=6, building=1, dataset=’REDD’, appliances=[Appliance(type=’dish washer’, instance=1)])
ElecMeter(instance=7, building=1, dataset=’REDD’, appliances=[Appliance(type=’sockets’, instance=1)])
ElecMeter(instance=8, building=1, dataset=’REDD’, appliances=[Appliance(type=’sockets’, instance=2)])
ElecMeter(instance=9, building=1, dataset=’REDD’, appliances=[Appliance(type=’light’, instance=1)])
ElecMeter(instance=11, building=1, dataset=’REDD’, appliances=[Appliance(type=’microwave’, instance=1)])
ElecMeter(instance=12, building=1, dataset=’REDD’, appliances=[Appliance(type=’unknown’, instance=1)])
ElecMeter(instance=13, building=1, dataset=’REDD’, appliances=[Appliance(type=’electric space heater’, instance=1)])
ElecMeter(instance=14, building=1, dataset=’REDD’, appliances=[Appliance(type=’electric stove’, instance=1)])
ElecMeter(instance=15, building=1, dataset=’REDD’, appliances=[Appliance(type=’sockets’, instance=3)])
ElecMeter(instance=16, building=1, dataset=’REDD’, appliances=[Appliance(type=’sockets’, instance=4)])
ElecMeter(instance=17, building=1, dataset=’REDD’, appliances=[Appliance(type=’light’, instance=2)])
ElecMeter(instance=18, building=1, dataset=’REDD’, appliances=[Appliance(type=’light’, instance=3)])
ElecMeter(instance=19, building=1, dataset=’REDD’, appliances=[Appliance(type=’unknown’, instance=2)])
MeterGroup(meters=
ElecMeter(instance=3, building=1, dataset=’REDD’, appliances=[Appliance(type=’electric oven’, instance=1)])
ElecMeter(instance=4, building=1, dataset=’REDD’, appliances=[Appliance(type=’electric oven’, instance=1)])
)
MeterGroup(meters=
ElecMeter(instance=10, building=1, dataset=’REDD’, appliances=[Appliance(type=’washer dryer’, instance=1)])
ElecMeter(instance=20, building=1, dataset=’REDD’, appliances=[Appliance(type=’washer dryer’, instance=1)])
)


2 The Load API: Loading data into memory

2.1: 获取总表中的某一类用电器

fridge = elec['fridge']
print (fridge)

ElecMeter(instance=5, building=1, dataset=’REDD’, appliances=[Appliance(type=’fridge’, instance=1)])

2.2:显示可用的数据,在该数据集合中功率可用

print (fridge.available_columns())

[(‘power’, ‘active’)]

2.3:显示所选房间的所有数据

df = fridge.load().next()
print df

2.4:显示前面几组数据的详细信息

df = fridge.load().next()
print (df.head())

physical_quantity power
type active
2011-04-18 09:22:13-04:00 6
2011-04-18 09:22:16-04:00 6
2011-04-18 09:22:20-04:00 6
2011-04-18 09:22:23-04:00 6
2011-04-18 09:22:26-04:00 6


3 Meter selection and basic statistics

3.1 找到嵌套的电表
Note that there are two nested MeterGroups: one for the electric oven, and one for the washer dryer (both of which are 240 volt appliances and have two meters per appliance)

print (elec.nested_metergroups())

[MeterGroup(meters=
ElecMeter(instance=3, building=1, dataset=’REDD’, appliances=[Appliance(type=’electric oven’, instance=1)])
ElecMeter(instance=4, building=1, dataset=’REDD’, appliances=[Appliance(type=’electric oven’, instance=1)])
), MeterGroup(meters=
ElecMeter(instance=10, building=1, dataset=’REDD’, appliances=[Appliance(type=’washer dryer’, instance=1)])
ElecMeter(instance=20, building=1, dataset=’REDD’, appliances=[Appliance(type=’washer dryer’, instance=1)])
)]

3.2 找到主电表

print (elec.mains())

MeterGroup(meters=
ElecMeter(instance=1, building=1, dataset=’REDD’, site_meter, appliances=[])
ElecMeter(instance=2, building=1, dataset=’REDD’, site_meter, appliances=[])
)
3.3 得到两个主电表相加的数据和,这就是总的数据

print (elec.mains().power_series_all_data().head())

Loading data for meter ElecMeterID(instance=1, building=1, dataset=’REDD’)
Loading data for meter ElecMeterID(instance=2, building=1, dataset=’REDD’)
Done loading data all meters for this chunk.
2011-04-18 09:22:09-04:00 342.820007
2011-04-18 09:22:10-04:00 344.559998
2011-04-18 09:22:11-04:00 345.140015
2011-04-18 09:22:12-04:00 341.679993
2011-04-18 09:22:13-04:00 341.029999

3.4 显示数据中可用的数据类型

mains = elec.mains()
print (mains.available_power_ac_types())

3.5显示总用电量和单个电表的用电量

mains = elec.mains()
print (elec.mains().total_energy())
energy_per_meter = elec.submeters().energy_per_meter() # kWh, again
print (energy_per_meter)

3.6 找到用电总量大于20W的

energy_per_meter = elec.submeters().energy_per_meter()
energy_per_meter = energy_per_meter.loc['active']
more_than_20 = energy_per_meter[energy_per_meter > 20]
print (more_than_20)

(5, 1, REDD) 44.750925
(8, 1, REDD) 22.939649
(9, 1, REDD) 30.734511
(((10, 1, REDD), (20, 1, REDD)),) 32.614809
Name: active, dtype: float64

3.7 显示标签

print (more_than_20.index)

Index([ (5, 1, u’REDD’),
(8, 1, u’REDD’),
(9, 1, u’REDD’),
(((10, 1, u’REDD’), (20, 1, u’REDD’)),)],
dtype=’object’)


NOTE:the ElecMeter class represents a single electricity meter. Each ElecMeter has a list of associated Appliance objects. ElecMeter has many of the same stats methods as MeterGroup such as total_energy and available_power_ac_types and power_series and power_series_all_data. We will now explore some more stats functions (many of which are also available on MeterGroup)…


3.8 单个电表画图

fridge_meter = elec['fridge']
fridge_meter.plot()

3.9 全局选中所有房间的用电器

import nilmtk
print (nilmtk.global_meter_group.select_using_appliances(type='washer dryer'))

MeterGroup(meters=
ElecMeter(instance=10, building=1, dataset=’REDD’, appliances=[Appliance(type=’washer dryer’, instance=1)])
ElecMeter(instance=20, building=1, dataset=’REDD’, appliances=[Appliance(type=’washer dryer’, instance=1)])
ElecMeter(instance=7, building=2, dataset=’REDD’, appliances=[Appliance(type=’washer dryer’, instance=1)])
ElecMeter(instance=13, building=3, dataset=’REDD’, appliances=[Appliance(type=’washer dryer’, instance=1)])
ElecMeter(instance=14, building=3, dataset=’REDD’, appliances=[Appliance(type=’washer dryer’, instance=1)])
ElecMeter(instance=7, building=4, dataset=’REDD’, appliances=[Appliance(type=’washer dryer’, instance=1)])
ElecMeter(instance=8, building=5, dataset=’REDD’, appliances=[Appliance(type=’washer dryer’, instance=1)])
ElecMeter(instance=9, building=5, dataset=’REDD’, appliances=[Appliance(type=’washer dryer’, instance=1)])
ElecMeter(instance=4, building=6, dataset=’REDD’, appliances=[Appliance(type=’washer dryer’, instance=1)])

3.10 选中多个用电器

 print (elec.select_using_appliances(type=['fridge', 'microwave']))

MeterGroup(meters=
ElecMeter(instance=5, building=1, dataset=’REDD’, appliances=[Appliance(type=’fridge’, instance=1)])
ElecMeter(instance=11, building=1, dataset=’REDD’, appliances=[Appliance(type=’microwave’, instance=1)])
)
3.11 另一种选择方法

print (nilmtk.global_meter_group.select_using_appliances(category='heating'))

MeterGroup(meters=
ElecMeter(instance=13, building=1, dataset=’REDD’, appliances=[Appliance(type=’electric space heater’, instance=1)])
ElecMeter(instance=10, building=3, dataset=’REDD’, appliances=[Appliance(type=’electric furnace’, instance=1)])
ElecMeter(instance=4, building=4, dataset=’REDD’, appliances=[Appliance(type=’electric furnace’, instance=1)])
ElecMeter(instance=6, building=5, dataset=’REDD’, appliances=[Appliance(type=’electric furnace’, instance=1)])
ElecMeter(instance=12, building=5, dataset=’REDD’, appliances=[Appliance(type=’electric space heater’, instance=1)])
ElecMeter(instance=13, building=5, dataset=’REDD’, appliances=[Appliance(type=’electric space heater’, instance=1)])
ElecMeter(instance=12, building=6, dataset=’REDD’, appliances=[Appliance(type=’electric space heater’, instance=1)])
)
3.12 一种全局选中的方法

print (nilmtk.global_meter_group.select_using_appliances(building=1, category='single-phase induction motor'))

MeterGroup(meters=
ElecMeter(instance=5, building=1, dataset=’REDD’, appliances=[Appliance(type=’fridge’, instance=1)])
ElecMeter(instance=6, building=1, dataset=’REDD’, appliances=[Appliance(type=’dish washer’, instance=1)])
ElecMeter(instance=10, building=1, dataset=’REDD’, appliances=[Appliance(type=’washer dryer’, instance=1)])
ElecMeter(instance=20, building=1, dataset=’REDD’, appliances=[Appliance(type=’washer dryer’, instance=1)])

3.13 选中一个子表中的第二个

print (elec['light', 2])

ElecMeter(instance=17, building=1, dataset=’REDD’, appliances=[Appliance(type=’light’, instance=2)])

3.14 特殊选择

print (nilmtk.global_meter_group[{'dataset': 'REDD', 'building': 1, 'type': 'fridge', 'instance': 1}])

ElecMeter(instance=5, building=1, dataset=’REDD’, appliances=[Appliance(type=’fridge’, instance=1)])

3.15 电表ID

from nilmtk.elecmeter import ElecMeterID nilmtk.global_meter_group[ElecMeterID(instance=8, building=1, dataset='REDD')]

ElecMeter(instance=8, building=1, dataset=’REDD’, appliances=[Appliance(type=’sockets’, instance=2)]

smartMeter相关推荐

  1. 2022年软件测试工具大全(自动化、接口、性能、安全、测试管理)

    1.前言 根据 Tricentis 主导的一项全球调查为我们提供了几个有关测试趋势的重要观察.趋势表明,团队倾向于使用功能测试(自动化测试). 更多学习资源,公众号主页点击领取资料 查看我评论区置顶 ...

  2. 无线通信领域:技术整合,创造未来

    由于近距离无线通讯(NFC)的应用,多半涉及个人稳私与财务安全,因此包括国际标准化组织(ISO).国际电工委员会(IEC)与优力国际(UL)等认证机构,皆已提出多种安全标准规范,让NFC应用开发商能准 ...

  3. 5个实用的性能测试工具(软件测试工程师必备)

    在日常的软件测试工作中,最常用的性能测试工具是LoadRunner和Jmeter.今天给大家整理了5个针对web应用程序性能和负载压力能力的最广泛使用的性能测试工具. 这几个负载测试工具将确保应用程序 ...

  4. 15个最好的性能测试工具(软件测试工程师必备)

    在软件测试日常工作中,大家接触得比较多的性能测试工具有LoadRunner和Jmeter,这里整理了web应用程序性能和负载压力能力的最广泛使用的性能测试工具的综合列表. 这些负载测试工具将确保您的应 ...

  5. 2021年软件测试工具大全(自动化、接口、性能、安全、测试管理)

    目录 前言 Selenium(自动化测试) Appium(自动化测试) Cypress(自动化测试) Robot Framework(自动化测试) Airtest(自动化测试) Macaca(自动化测 ...

  6. 2021年软件测试工具趋势

    2021年软件测试工具趋势 1.前言 2.Selenium(自动化测试) 3.Appium(自动化测试) 4.Cypress(自动化测试) 5.Robot Framework(自动化测试) 6.Air ...

  7. 这16个性能测试工具,测试人用了都说好!

    在软件测试日常工作中,大家接触得比较多的性能测试工具有LoadRunner和Jmeter,这里整理了web应用程序性能和负载压力能力的最广泛使用的性能测试工具的综合列表. 这些负载测试工具将确保您的应 ...

  8. 软件测试-16个推荐的性能测试工具

    十六个推荐的性能测试工具 在软件测试日常工作中,大家接触得比较多的性能测试工具有LoadRunner和Jmeter,这里整理了web应用程序性能和负载压力能力的最广泛使用的性能测试工具的综合列表. 这 ...

  9. 几个智能家居平台研究——xlively,乐联网,majordomo,housemon,webmote,opensourceautomation...

    第一个最好研究也最容易懂的自然是乐联网与yeelink,谁他是中文的呢,还是比如符合中国人的习惯的.你配置自己的智能设备主动给乐联网提供采集数据后.用户就可以通过乐联网的管理平台或者APP来监控连接了 ...

最新文章

  1. 99 位职业设计师 99 个设计谏言
  2. Windows Tips--How do I disable the Windows Firewall service?
  3. xcode 的一些问题
  4. 河北高速盘点七大假牌假证违法案例:寒冬穿大裤衩开车
  5. OpenCV2马拉松第22圈——Hough变换直线检測原理与实现
  6. inline函数学习笔记
  7. 【转】NSMutableArray的正确使用
  8. latex精要(1)-安装与helloworld
  9. 简单几步搞定ISA ×××
  10. 串口光猫应用领域及技术参数详解
  11. 遗传算法求函数最大值实验_小知识:什么是遗传算法
  12. (转载)—— Logistic Regression(逻辑回归)模型实现二分类和多分类
  13. FreeSWITCH 下载地址
  14. 软件测试--接口流程化测试
  15. div显示在上层_将某个div层显示在最上面(总结)
  16. linux导航改端口波特率,各大导航端口速率修改方法
  17. linux下mysql的sql脚本在哪里,Linux下通过shell进MySQL执行SQL或导入脚本
  18. heka 0.11.0源码分析--Elasticsearch OutPut插件
  19. 增值电信业务经营许可证怎么续期,需要什么材料
  20. Elasticsearch的ETL利器——Ingest节点

热门文章

  1. 测试C++代码与WebBrowser HTML的互动
  2. Candy leetcode java
  3. IIS添加对ashx文件的支持
  4. ba网络c语言编程,如何用C语言程序构造随机网络和BA无尺度网络
  5. 扫码点菜系统代码_一顿火锅吃出474万天价?扫码点餐时,千万不要这样做
  6. python 读grid 数据_jqGrid获取到python返回的Json数据,未能显示到页面上,为毛???...
  7. c++在数组中添加元素_LeetCode 题解 | 1157. 子数组中占绝大多数的元素
  8. mybatis 依赖于jdbc_mybatis 详解(一)------JDBC
  9. 进位位判别法_''进位-判断-执行''的通用思想
  10. php dom怎么创建节点,前端必须掌握的DOM节点操作方法!