非侵入式电荷负载分解(Non-intrusive load monitoring,NILM)---- NILMTK(安装教程)_卷了个积的博客-程序员信息网_非侵入式负荷分解

技术标签: 算法  机器学习  深度学习  非侵入式电荷负载分解  数据处理  

前段时间在做“非侵入式电荷负载分解”的项目,非侵入式电荷负载分解是开展节能工作的基础,加强能耗监控尤其是电力能耗的监测工作对提高能源利用率、实现能源的可持续发展、建设节约型社会和环节能源压力等具有重要的现实意义。

非侵入式,就是在不用安装大量的监控设备的情况下,实现总功率数据到单个电器消耗功率的分解。比如我现在拥有一年的电力数据,假设采样频率为6s钟,该电力数据包含了这一年某个家庭的总消耗功率,还有就是家庭中几种电器如冰箱、洗衣机、洗碗机等用电设备对应的采样频率为6s的消耗功率数据。我们的任务是利用这一年的功率数据作为训练,然后在一年后,只要给你一个该家庭的总功率消耗信息,利用现有训练好的算法将该总功率数据分解到各个电器的消耗功率中去。

刚接到这个项目的时候无从入手,仔细查阅了现有的关于非侵入式电荷负载分解的算法,自己总结了几个常用的算法。本篇博文主要是为开展该项目做的准备。

先简单介绍以下NILMTK这个包吧,这个包是国外的一个作者编的,具体的GitHub地址在NILMTK,使用起来还是蛮方便的,但是这个包现在的兼容性好像不太好,经常会报一些无从下手的错误,而且这个包的安装过程是比较艰辛的。笔者现在已经安装成功了,现在分享以下安装经验:

具体的英文版本的安装教程可以参考这里:Installation, 小编试过里面的一些安装方法,发现第一个安装方法对其他包的版本的要求是比较高的,也就是说兼容性不太好。这里的中文安装方法主要是利用英文安装教程中的第二种,下面简单介绍以下,以下安装过程是基于Ubuntu系统的操作的,其他的linux系统应该也不会有问题:

1.首先你得安装一个python对应版本的Anaconda,Anaconda的安装教程可以参考这里:Anaconda的安装 ,注意一定要安装和自己的python版本对应的Anaconda。

2.安装好Anaconda后,使用以下指令更新:

conda update --yes conda

3.安装HDF5 libraries 和 python-dev:

sudo apt-get install libhdf5-serial-dev python-dev

4.安装Anaconda中可能会缺少的一些库:

conda install --yes pip numpy scipy six scikit-learn pandas numexpr
pytables dateutil matplotlib networkx future

注意:如果你使用的是pandas 0.17,建议更新一下版本,因为可能会报错版本不兼容。

5.安装NILM Metadata(包含NILM的一些元数据):

git clone https://github.com/nilmtk/nilm_metadata/
cd nilm_metadata
python setup.py develop
cd ..

6.安装 psycopg2 和 postgres:

sudo apt-get install postgresql postgresql-contrib
sudo apt-get install postgresql-server-dev-all
pip install psycopg2

7.使用 pip 安装 Misc:

pip install nose coveralls coverage git+https://github.com/hmmlearn/[email protected]#egg

8.最后安装NILMTK:

git clone https://github.com/nilmtk/nilmtk.git
cd nilmtk
python setup.py develop
cd..
  1. 你可以试着运行以下以下指令看看NILMTK是否安装成功。
cd nilmtk
nosetests

英文版的教程中还包含了另外几种系统的安装方法。Windows的安装方法还没有尝试过,不过linux上的安装方法这个应该是最成功也最方便的了。后面几篇博文会简单解读以下基于这个包的几种电荷分解算法。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/baidu_36161077/article/details/81136340

智能推荐

3A认证系统 环境搭建,freeradius + mysql + daloradius 时间:2018.2.2_宠辱不惊去留无意的博客-程序员信息网

参考资料:http://blog.sina.com.cn/s/blog_5de56eee0102vyn0.htmlhttps://blog.csdn.net/yhcs1213/article/details/50496724https://www.cnblogs.com/ios9/p/9749713.htmlhttps://blog.csdn.net/cluniquecui/art...

搜索--poj3984 迷宫问题(广搜C+深搜C++)+HDU 1372 Knight Moves_小雪花122333的博客-程序员信息网

定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0,};它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。 Input 一个5 × 5的二维数组,...

[Oracle 学习] ORACLE的UTL_FILE包_angangu5722的博客-程序员信息网

ORACLE的UTL_FILE包包UTL_FIle用于读写操作系统的文件,前提是首先创建Directory对象、授权。然后就可以使用UTL_FILE包中提供的类型、过程、函数来读取,写入,操作目录中的文件了。创建Directory的示例如下:SQL> CREATE DIRECTORY CZW AS 'D:\';Directory created...

5个AIDA64激活密钥_好好学习多挣钱的博客-程序员信息网_aida64密钥

序列号:1B4DU-KY6D6-8KDNF-4DAU4-CM8NQ序列号:YGDBR-41ND6-AFDND-ND234-R2TYB序列号:D6YSF-243D6-IVD92-GDGZ4-HFL2I序列号:YE4KU-DD7D6-5BD97-DD5A4-CQ5JK序列号:UTFF1-LRCD6-9CD98-VD8Y4-UEI32...

[解决方案] spring-mvc 400错误解决办法_米卡隆的博客-程序员信息网

先让我们看一下错误信息HTTP Status 400 -type Status reportmessagedescription The request sent by the client was syntactically incorrect.Apache Tomcat/[email protected] 导致400的错误代码/** * @aut

Linux下,如何给PHP安装pdo_mysql扩展_weixin_34007291的博客-程序员信息网

下载了一个免费开源的广告系统(openadserver),在Linux上安装时,提示要安装 pdo_mysql 扩展,先前有过编译安装 soap扩展 的经历,今天要编译安装 pdo_mysql 扩展,应该不难吧!参考文献如下:PHP5不重新编译,如何安装自带的未安装过的扩展,如soap扩展?参考上述教程,在第4步骤的“运行 configure 命令”,改成如下命令即可:./conf...

随便推点

linux 安装 加入内核参数,如何在Linux上通过GRUB添加内核参数_samuyie samuyie的博客-程序员信息网

我们可以在Linux内核启动时为其提供各种各样的参数。这些参数可以自定义内核默认的行为,或者通知内核关于硬件的配置信息。内核参数应在内核启动时通过引导装载程序,如GRUB或LILO传递给内核。在本教程中,我将会描述如何在Linux上通过GRUB添加内核参数。如果你在使用GRUB引导装载程序,想修改或添加内核参数,你可以编辑GRUB配置文件。下面是针对特定发行版在GRUB的配置文件中添加内核启动参数...

Storage事件无法触发解决__乐在其中_的博客-程序员信息网_storage事件不触发

Storage事件无法触发解决 分类:前端(30)  JavaScript(26) 版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[+]Web Storage 项目实践这段代码是从一个项目在摘出来的,主要实现了将一个图片利用canvas的toDataURL这个API转成BASE6

linux C++ makefile文件编写方法_令狐掌门的博客-程序员信息网

普通文件编译gcc 文件.c -o 生成可执行文件名如果是C++文件,则用g++makefile编写新建一个makefile, 首字母可以大写,也可以不大写,不需要后缀, 写入如下内容test:test.c gcc test.c -o test编译时直接运行make即可如果有多个文件,makefile该怎么写?多个文件可以直接一起编译,但是gcc的语句会很长,如下gcc 1.c 2.c -o testmakefile编写main:main.c tool.o gcc main

usaco 4.4.3_zwfars的博客-程序员信息网

好久 没有写了,拓扑排序所有可能的结果写出来就好了。。/*ID: zwfars1LANG: CTASK:frameup*/#include #include #includetypedef struct node{ int xmin,ymin; int xmax,ymax;}comb;comb ars[30]={{0}};char tem[20

3650m4 raid卡linux,IBM3650-M3安装ubuntu-server10.4关于raid卡驱动问题_雅愉一级品酒师的博客-程序员信息网

如是是64位系统,则解压其中的megaraid_sas-v00.00.04.37_k2.6.32-21-server.amd64.gz,得到megaraid_sas-v00.00.04.37_k2.6.32-21-server.amd64文件,把这个文件加上后缀.zip;再次解压就会得到下面所用用到的2个文件Ubuntu 10.04 LTS Server AMD64 x64 Installatio...

【Chromium】GPU进程启动流程_weixin_34186128的博客-程序员信息网

本篇文档以gpu进程的创建和启动为例,讲述chormium如何启动一个browser进程的子进程PS:本文使用的chromium代码版本为71前言GPU进程的启动时机是由browser进程负责的,browser进程会在进入message loop之前启动两个进程,先是启动zygote进程,然后是gpu进程GPU进程的创建和命令行参数的准备下面是在文件browser_main_loop.c...

推荐文章

热门文章

相关标签