Created
February 13, 2017 14:56
-
-
Save nipunbatra/15ea66caf61cc021327ba0b1f74eca95 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"In this post, I'll show how to interface an NILM algorithm written in Matlab with nilmtk. I'll be using the code provided by the authors of the [Infinite Factorial Dynamical Model](http://papers.nips.cc/paper/5667-infinite-factorial-dynamical-model.pdf) paper presented at [NIPS 2015](https://nips.cc/). The authors have kindly made their [code](https://github.com/franrruiz/iFDM) available on Github. I had a conversation with them and they modified the code so that it can be easily interfaced with nilmk.\n", | |
"\n", | |
"Since the code is written in Matlab, we need to install some package that allows communication between Python and Matlab. The Matlab engine for Python would have been a perfect choice given that it is supported by Matlab. However, I had tough luck getting it to work on my system. Instead, I ended up using [pymatbridge](https://arokem.github.io/python-matlab-bridge/). Not only does pymatbridge provide the ability to communicate between the two languages, it also comes with a handy IPython extension that I'll be using in this post." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"Vendor: Continuum Analytics, Inc.\n", | |
"Package: mkl\n", | |
"Message: trial mode expires in 26 days\n" | |
] | |
} | |
], | |
"source": [ | |
"import pandas as pd\n", | |
"import matplotlib.pyplot as plt\n", | |
"plt.style.use('ggplot')\n", | |
"import warnings\n", | |
"warnings.filterwarnings('ignore')\n", | |
"\n", | |
"import pymatbridge as pymat\n", | |
"\n", | |
"%matplotlib inline" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Starting MATLAB on ZMQ socket ipc:///tmp/pymatbridge-29b8b57b-f052-42a1-8ffa-e824dcbec50a\n", | |
"Send 'exit' command to kill the server\n", | |
"...........MATLAB started and connected!\n" | |
] | |
} | |
], | |
"source": [ | |
"%load_ext pymatbridge" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Now, I have a Matlab session started." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": false | |
}, | |
"source": [ | |
"I'll be using the REDD data set for illustration. I'll disaggregate the first day from House #1. Also, we'll be disaggregating the lights, fridge, dish washer, microwave." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"from nilmtk import *" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/Users/nipunbatra/anaconda/lib/python2.7/site-packages/tables/__init__.py:82: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility\n", | |
" from tables.utilsextension import (\n", | |
"/Users/nipunbatra/anaconda/lib/python2.7/site-packages/tables/file.py:35: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility\n", | |
" from tables import hdf5extension\n", | |
"/Users/nipunbatra/anaconda/lib/python2.7/site-packages/tables/link.py:32: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility\n", | |
" from tables import linkextension\n", | |
"/Users/nipunbatra/anaconda/lib/python2.7/site-packages/tables/table.py:25: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility\n", | |
" from tables import tableextension\n", | |
"/Users/nipunbatra/anaconda/lib/python2.7/site-packages/tables/index.py:30: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility\n", | |
" from tables import indexesextension\n" | |
] | |
} | |
], | |
"source": [ | |
"ds = DataSet(\"/data/REDD/redd.h5\")" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Getting the `elec` for the first house." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"elec = ds.buildings[1].elec" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Setting the time window for our analysis." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"ds.set_window(\"2011-04-19\", \"2011-04-20\")" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Creating a Pandas dataframe of the appliances we are interested in, along with the mains. We will be summing up all the lights instances." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"appliances = {'mains':elec.mains(),\n", | |
" 'fridge':elec['fridge'],\n", | |
" 'dish washer':elec['dish washer'],\n", | |
" 'microwave':elec['microwave'],\n", | |
" 'light':MeterGroup([elec['light',1], elec['light',2], elec['light',3]])}" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We'll be downsampling the data to 30 seconds by median filter." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"dish washer\n", | |
"mains\n", | |
"Loading data for meter ElecMeterID(instance=2, building=1, dataset='REDD') \n", | |
"Done loading data all meters for this chunk.\n", | |
"fridge\n", | |
"microwave\n", | |
"light\n", | |
"Loading data for meter ElecMeterID(instance=18, building=1, dataset='REDD') \n", | |
"Done loading data all meters for this chunk.\n" | |
] | |
} | |
], | |
"source": [ | |
"data = {}\n", | |
"for appliance_name, appliance_el in appliances.iteritems():\n", | |
" print appliance_name\n", | |
" data[appliance_name] = next(appliance_el.load(sample_period=30, resample_kwargs = {\"how\":\"median\"}))\n", | |
" if appliance_name ==\"mains\":\n", | |
" data[appliance_name] = data[appliance_name][('power','apparent')]\n", | |
" else:\n", | |
" data[appliance_name] = data[appliance_name][('power','active')]" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Creating the dataframe." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"data_df = pd.DataFrame(data)[[\"mains\",\"fridge\",\"light\",\"dish washer\", \"microwave\"]].dropna()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>mains</th>\n", | |
" <th>fridge</th>\n", | |
" <th>light</th>\n", | |
" <th>dish washer</th>\n", | |
" <th>microwave</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>2011-04-19 00:00:00-04:00</th>\n", | |
" <td>190.699997</td>\n", | |
" <td>7</td>\n", | |
" <td>82</td>\n", | |
" <td>0</td>\n", | |
" <td>4</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2011-04-19 00:00:30-04:00</th>\n", | |
" <td>191.434998</td>\n", | |
" <td>7</td>\n", | |
" <td>83</td>\n", | |
" <td>0</td>\n", | |
" <td>4</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2011-04-19 00:01:00-04:00</th>\n", | |
" <td>190.529999</td>\n", | |
" <td>6</td>\n", | |
" <td>83</td>\n", | |
" <td>0</td>\n", | |
" <td>4</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2011-04-19 00:01:30-04:00</th>\n", | |
" <td>191.619995</td>\n", | |
" <td>7</td>\n", | |
" <td>83</td>\n", | |
" <td>0</td>\n", | |
" <td>4</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2011-04-19 00:02:00-04:00</th>\n", | |
" <td>192.069992</td>\n", | |
" <td>7</td>\n", | |
" <td>83</td>\n", | |
" <td>0</td>\n", | |
" <td>4</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" mains fridge light dish washer microwave\n", | |
"2011-04-19 00:00:00-04:00 190.699997 7 82 0 4\n", | |
"2011-04-19 00:00:30-04:00 191.434998 7 83 0 4\n", | |
"2011-04-19 00:01:00-04:00 190.529999 6 83 0 4\n", | |
"2011-04-19 00:01:30-04:00 191.619995 7 83 0 4\n", | |
"2011-04-19 00:02:00-04:00 192.069992 7 83 0 4" | |
] | |
}, | |
"execution_count": 10, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"data_df.head()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>mains</th>\n", | |
" <th>fridge</th>\n", | |
" <th>light</th>\n", | |
" <th>dish washer</th>\n", | |
" <th>microwave</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>count</th>\n", | |
" <td>2692.000000</td>\n", | |
" <td>2692.000000</td>\n", | |
" <td>2692.000000</td>\n", | |
" <td>2692.000000</td>\n", | |
" <td>2692.000000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>mean</th>\n", | |
" <td>295.715698</td>\n", | |
" <td>47.881500</td>\n", | |
" <td>111.082466</td>\n", | |
" <td>0.013930</td>\n", | |
" <td>20.370171</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>std</th>\n", | |
" <td>252.303360</td>\n", | |
" <td>77.789963</td>\n", | |
" <td>51.122974</td>\n", | |
" <td>0.116826</td>\n", | |
" <td>156.773621</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>min</th>\n", | |
" <td>168.059998</td>\n", | |
" <td>6.000000</td>\n", | |
" <td>66.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>2.000000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>25%</th>\n", | |
" <td>175.342499</td>\n", | |
" <td>6.000000</td>\n", | |
" <td>83.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>4.000000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>50%</th>\n", | |
" <td>246.055000</td>\n", | |
" <td>6.000000</td>\n", | |
" <td>84.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>4.000000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>75%</th>\n", | |
" <td>353.608734</td>\n", | |
" <td>7.000000</td>\n", | |
" <td>122.000000</td>\n", | |
" <td>0.000000</td>\n", | |
" <td>4.000000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>max</th>\n", | |
" <td>3388.339844</td>\n", | |
" <td>233.000000</td>\n", | |
" <td>408.000000</td>\n", | |
" <td>1.000000</td>\n", | |
" <td>1586.000000</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" mains fridge light dish washer microwave\n", | |
"count 2692.000000 2692.000000 2692.000000 2692.000000 2692.000000\n", | |
"mean 295.715698 47.881500 111.082466 0.013930 20.370171\n", | |
"std 252.303360 77.789963 51.122974 0.116826 156.773621\n", | |
"min 168.059998 6.000000 66.000000 0.000000 2.000000\n", | |
"25% 175.342499 6.000000 83.000000 0.000000 4.000000\n", | |
"50% 246.055000 6.000000 84.000000 0.000000 4.000000\n", | |
"75% 353.608734 7.000000 122.000000 0.000000 4.000000\n", | |
"max 3388.339844 233.000000 408.000000 1.000000 1586.000000" | |
] | |
}, | |
"execution_count": 11, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"data_df.describe()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.axes._subplots.AxesSubplot at 0x10e8412d0>" | |
] | |
}, | |
"execution_count": 12, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\nAWtRyOb/AAAAAElFTkSuQmCC\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x112047990>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"data_df.plot()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Creating a dataframe with mains as sum of appliances. \n", | |
"\n", | |
"We do this because the algorithm in this NIPS paper assumes that the signal to be disaggregated is the sum of the the appliances we are trying to disaggregate. " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 18, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"data_df_artificial_aggregate = data_df.copy()\n", | |
"data_df_artificial_aggregate[\"mains\"] = data_df_artificial_aggregate[[\"fridge\",\"light\",\"dish washer\", \"microwave\"]].sum(axis=1)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 19, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>mains</th>\n", | |
" <th>fridge</th>\n", | |
" <th>light</th>\n", | |
" <th>dish washer</th>\n", | |
" <th>microwave</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>2011-04-19 00:00:00-04:00</th>\n", | |
" <td>93</td>\n", | |
" <td>7</td>\n", | |
" <td>82</td>\n", | |
" <td>0</td>\n", | |
" <td>4</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2011-04-19 00:00:30-04:00</th>\n", | |
" <td>94</td>\n", | |
" <td>7</td>\n", | |
" <td>83</td>\n", | |
" <td>0</td>\n", | |
" <td>4</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2011-04-19 00:01:00-04:00</th>\n", | |
" <td>93</td>\n", | |
" <td>6</td>\n", | |
" <td>83</td>\n", | |
" <td>0</td>\n", | |
" <td>4</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2011-04-19 00:01:30-04:00</th>\n", | |
" <td>94</td>\n", | |
" <td>7</td>\n", | |
" <td>83</td>\n", | |
" <td>0</td>\n", | |
" <td>4</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2011-04-19 00:02:00-04:00</th>\n", | |
" <td>94</td>\n", | |
" <td>7</td>\n", | |
" <td>83</td>\n", | |
" <td>0</td>\n", | |
" <td>4</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" mains fridge light dish washer microwave\n", | |
"2011-04-19 00:00:00-04:00 93 7 82 0 4\n", | |
"2011-04-19 00:00:30-04:00 94 7 83 0 4\n", | |
"2011-04-19 00:01:00-04:00 93 6 83 0 4\n", | |
"2011-04-19 00:01:30-04:00 94 7 83 0 4\n", | |
"2011-04-19 00:02:00-04:00 94 7 83 0 4" | |
] | |
}, | |
"execution_count": 19, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"data_df_artificial_aggregate.head()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Interface requirements" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The reason we chose to create a dataframe in this format is that we tried to keep a simple interface between Matlab and Python. We chose the following interface:\n", | |
"\n", | |
"1. The input to the Matlab method should be a .mat where the rows correpond to different appliances and the columns correpsond to time. The first row should correspond to the mains (aggregate).\n", | |
"2. The output from the Matlab method should be a .mat where the rows correspond to the disaggregated time series data with columns correpsonding to time.\n", | |
"3. Any additional arguments to the Matlab disaggregation method should be a JSON file.\n", | |
"\n", | |
"So, based on these requirements, the Matlab function had the following signature\n", | |
"\n", | |
"```Matlab\n", | |
"function power_disaggregation(input_file, output_file, config_file)\n", | |
"%\n", | |
"% This function applies the iFDM model [1] for power disaggregation.\n", | |
"% \n", | |
"% Usage:\n", | |
"% power_disaggregation(input_file, output_file [, config_file])\n", | |
"% \n", | |
"% +input_file: Path to the input file. It should contain a matrix in which\n", | |
"% the first row corresponds to the observations (aggregated signal),\n", | |
"% while the rest of the rows correspond to the individual consuption of\n", | |
"% the devices. The number of columns of the matrix corresponds to the\n", | |
"% number of time steps.\n", | |
"% \n", | |
"% +output_file: Path to the output file. Two variables are saved in the\n", | |
"% output file, detailed below. Warning: These results correspond to the\n", | |
"% last iteration of the sampler, they have not been averaged over several\n", | |
"% iterations.\n", | |
"% -acc: The resulting accuracy.\n", | |
"% -output: The inferred disaggregated signals, sorted to match the input.\n", | |
"% \n", | |
"% +config_file: Path to a JSON configuration file (optional). \n", | |
"```" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"So, we are all set. We'll have a look at the first few lines of the parameters passed to the disaggregation method. " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 30, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
" {\r\n", | |
" \"Q\": 4,\r\n", | |
" \"Niter\": 1000,\r\n", | |
" \"verboseCycle\": 10,\r\n", | |
" \"pgas\":\r\n", | |
" {\r\n", | |
" \"N_PG\": 1000,\r\n", | |
" \"Niter\": 1,\r\n", | |
" \"maxM\": 40\r\n", | |
" },\r\n" | |
] | |
} | |
], | |
"source": [ | |
"!head /Users/nipunbatra/git/iFDM/PowerDisaggregation/parameters.json" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The authors suggested that the data should be scaled such that the aggregate power is in 10s. So, they suggested a scaling down factor of 100, which I'll do next." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 31, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"scaled_data_df = data_df_artificial_aggregate.div(100)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Now, we'll get the matrix representation from the dataframe and store in a .mat." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 32, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"import scipy.io as sio" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 33, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"sio.savemat(\"/Users/nipunbatra/git/iFDM/PowerDisaggregation/redd_data_nilmtk_1.mat\",{\"X\":scaled_data_df.T.values})" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 34, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"/Users/nipunbatra/git/iFDM/PowerDisaggregation\n" | |
] | |
} | |
], | |
"source": [ | |
"cd ~/git/iFDM/PowerDisaggregation/" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Finally, I'll call the Matlab method for disaggregation on the data we've produced using nilmtk." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 35, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"[\bWarning: Function isrow has the same name as a MATLAB builtin. We suggest you\n", | |
"rename the function to avoid a potential name conflict.]\b \n", | |
"[\b> In path (line 109)\n", | |
" In addpath (line 88)\n", | |
" In power_disaggregation (line 69)\n", | |
" In pymat_eval (line 31)\n", | |
" In matlabserver (line 24)]\b \n", | |
"[\bWarning: Function isrow has the same name as a MATLAB builtin. We suggest you\n", | |
"rename the function to avoid a potential name conflict.]\b \n", | |
"[\b> In path (line 109)\n", | |
" In addpath (line 88)\n", | |
" In power_disaggregation (line 70)\n", | |
" In pymat_eval (line 31)\n", | |
" In matlabserver (line 24)]\b \n", | |
"Initializing inference...\r", | |
"Iteration 10 out of 1000 completed\r", | |
"Iteration 20 out of 1000 completed\r", | |
"Iteration 30 out of 1000 completed\r", | |
"Iteration 40 out of 1000 completed\r", | |
"Iteration 50 out of 1000 completed\r", | |
"Iteration 60 out of 1000 completed\r", | |
"Iteration 70 out of 1000 completed\r", | |
"Iteration 80 out of 1000 completed\r", | |
"Iteration 90 out of 1000 completed\r", | |
"Iteration 100 out of 1000 completed\r", | |
"Iteration 110 out of 1000 completed\r", | |
"Iteration 120 out of 1000 completed\r", | |
"Iteration 130 out of 1000 completed\r", | |
"Iteration 140 out of 1000 completed\r", | |
"Iteration 150 out of 1000 completed\r", | |
"Iteration 160 out of 1000 completed\r", | |
"Iteration 170 out of 1000 completed\r", | |
"Iteration 180 out of 1000 completed\r", | |
"Iteration 190 out of 1000 completed\r", | |
"Iteration 200 out of 1000 completed\r", | |
"Iteration 210 out of 1000 completed\r", | |
"Iteration 220 out of 1000 completed\r", | |
"Iteration 230 out of 1000 completed\r", | |
"Iteration 240 out of 1000 completed\r", | |
"Iteration 250 out of 1000 completed\r", | |
"Iteration 260 out of 1000 completed\r", | |
"Iteration 270 out of 1000 completed\r", | |
"Iteration 280 out of 1000 completed\r", | |
"Iteration 290 out of 1000 completed\r", | |
"Iteration 300 out of 1000 completed\r", | |
"Iteration 310 out of 1000 completed\r", | |
"Iteration 320 out of 1000 completed\r", | |
"Iteration 330 out of 1000 completed\r", | |
"Iteration 340 out of 1000 completed\r", | |
"Iteration 350 out of 1000 completed\r", | |
"Iteration 360 out of 1000 completed\r", | |
"Iteration 370 out of 1000 completed\r", | |
"Iteration 380 out of 1000 completed\r", | |
"Iteration 390 out of 1000 completed\r", | |
"Iteration 400 out of 1000 completed\r", | |
"Iteration 410 out of 1000 completed\r", | |
"Iteration 420 out of 1000 completed\r", | |
"Iteration 430 out of 1000 completed\r", | |
"Iteration 440 out of 1000 completed\r", | |
"Iteration 450 out of 1000 completed\r", | |
"Iteration 460 out of 1000 completed\r", | |
"Iteration 470 out of 1000 completed\r", | |
"Iteration 480 out of 1000 completed\r", | |
"Iteration 490 out of 1000 completed\r", | |
"Iteration 500 out of 1000 completed\r", | |
"Iteration 510 out of 1000 completed\r", | |
"Iteration 520 out of 1000 completed\r", | |
"Iteration 530 out of 1000 completed\r", | |
"Iteration 540 out of 1000 completed\r", | |
"Iteration 550 out of 1000 completed\r", | |
"Iteration 560 out of 1000 completed\r", | |
"Iteration 570 out of 1000 completed\r", | |
"Iteration 580 out of 1000 completed\r", | |
"Iteration 590 out of 1000 completed\r", | |
"Iteration 600 out of 1000 completed\r", | |
"Iteration 610 out of 1000 completed\r", | |
"Iteration 620 out of 1000 completed\r", | |
"Iteration 630 out of 1000 completed\r", | |
"Iteration 640 out of 1000 completed\r", | |
"Iteration 650 out of 1000 completed\r", | |
"Iteration 660 out of 1000 completed\r", | |
"Iteration 670 out of 1000 completed\r", | |
"Iteration 680 out of 1000 completed\r", | |
"Iteration 690 out of 1000 completed\r", | |
"Iteration 700 out of 1000 completed\r", | |
"Iteration 710 out of 1000 completed\r", | |
"Iteration 720 out of 1000 completed\r", | |
"Iteration 730 out of 1000 completed\r", | |
"Iteration 740 out of 1000 completed\r", | |
"Iteration 750 out of 1000 completed\r", | |
"Iteration 760 out of 1000 completed\r", | |
"Iteration 770 out of 1000 completed\r", | |
"Iteration 780 out of 1000 completed\r", | |
"Iteration 790 out of 1000 completed\r", | |
"Iteration 800 out of 1000 completed\r", | |
"Iteration 810 out of 1000 completed\r", | |
"Iteration 820 out of 1000 completed\r", | |
"Iteration 830 out of 1000 completed\r", | |
"Iteration 840 out of 1000 completed\r", | |
"Iteration 850 out of 1000 completed\r", | |
"Iteration 860 out of 1000 completed\r", | |
"Iteration 870 out of 1000 completed\r", | |
"Iteration 880 out of 1000 completed\r", | |
"Iteration 890 out of 1000 completed\r", | |
"Iteration 900 out of 1000 completed\r", | |
"Iteration 910 out of 1000 completed\r", | |
"Iteration 920 out of 1000 completed\r", | |
"Iteration 930 out of 1000 completed\r", | |
"Iteration 940 out of 1000 completed\r", | |
"Iteration 950 out of 1000 completed\r", | |
"Iteration 960 out of 1000 completed\r", | |
"Iteration 970 out of 1000 completed\r", | |
"Iteration 980 out of 1000 completed\r", | |
"Iteration 990 out of 1000 completed\r", | |
"Iteration 1000 out of 1000 completed\r" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"%%matlab\n", | |
"cd('/Users/nipunbatra/git/iFDM/PowerDisaggregation/');\n", | |
"pwd;\n", | |
"power_disaggregation('redd_data_nilmtk_1.mat','output_nilmtk.mat', 'parameters.json' )" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 36, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"out = sio.loadmat(\"/Users/nipunbatra/git/iFDM/PowerDisaggregation/output_nilmtk.mat\")\n", | |
"disag_df = out['output']" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 37, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"disag_df = pd.DataFrame(disag_df).T\n", | |
"disag_df.columns = data_df.columns[1:]\n", | |
"disag_df.index = data_df.index\n", | |
"\n", | |
"# Scaling back up by a factor of 100\n", | |
"disag_df = disag_df.mul(100)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Creating dataframes for appliances to compare the ground truth and the disaggregated streams." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 38, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\nAd2BuiGPPFv62VnHl2YrR1GvPv0rfzLjEmBFxcFHjBclJVtw8c32PO3CPde/+uIeqfxKR4zau/zA\nsV2Ab7QRpRqo61I1fET3b337B8BB3Y8/NbZ5wUdDspG511kTR66b+7eR28IWFRUPffzFa9HOJllR\n3H/Q0F5nXHwucMyA2x/qteLqS3plyLs6kzwV5aU9R+68+1igbvThYw98b/6XWT9rvxz97W/t/uYr\ni4pT+Q0c0Ge3LSUlmWTPSOWkGcPWPHLfsFR4+zmch240t8vAux/tsfzKc3tsiztg8LBeP7zwXOCY\nbOWXUjrlbFBKNWBZVmR/tbW1XWtra3vYx91qa2tfqa2t/WZtbe2s2traKfb1qbW1tTdlkZ6V6XpT\nTezXTTWxsxzn9zfVxM7PRr6mmtiMpprYdPu4d1NNbLXbe2yqid3YVBObtu38uDFbmmpi5VnEG9pU\nE1vsOP+sqSY2xGXe9zXVxC60jyuaamLrs4m37vWX7mmqib3vSGd9U02sIpu410+8rmr8zKctR9yK\npprYBsuyiM+ac2V81pxZLuT/c1NN7CTH+aKmmtgwR5i6NuKNaKqJfeQ4n9ZUE7vRw7u7p6kmdrHj\nvLGpJhZ3mcYvV903+yn7uEdTTewrF3H/21QT29M+/mlTTexal3mf0lQTe8Jx/lhTTex77cSps8M9\n21QTO8Y+Pq+pJvbLLPM7vqkm9lfH+cammliZS5lfb6qJHWQfVzXVxJJtyZn+d/pVv1x09WU/vcWy\nLG740bXnnXzdb7N+1n7/ZkycfuxxMx7fmDq/fNItf7/2xl83ubjvg5tqYq86zl9rqomNzTLukLS6\n4rWmmtjBLuS3Ml2P2qw0EHhJSvkO8DrwtFLqOeAm4Ggp5YfABPvcK/lmVgoTb/Jb3nulxa33gojK\nJBhEWkGYZYxZyR2BPC/L3erHvgnAlTXIlRwK36yklFoA7J/h+irgqACzyjdvJa8TkcL0/PD0zLJY\neM+vt46XZxet/Xm704xfO3SYA9Je8o1UGVlpeQXkQZRl3q09o6wwBWjNDjEgHTbReiu5W0ohUs8P\nz3GtNs/CvIdceChFoWSCniGdDX7mGgTxvPzcswUgrAh2gmu73HtJIUovMaBzKgfw3hLK1eSqXOHR\nrJRxm9Cs0iq2Mn6TUZuHgpQhKrNSUGSbf77MkI76eWVFjmZIR9pj6wzKISgTQ6675NnEC9Os5Ieg\n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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x113103890>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n0papAAAAAElFTkSuQmCC\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x118822f50>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAEOCAYAAABiodtuAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmcHFW5//HPmclkI5kshCWEZlF2ELcRUK44gD8NjIiA\nHGQVBEEQXCEgqIyXRSN4DYiyBfAKBngQFLAJKGIQkcXm4spujE4WlrAlkAgJU78/TjV0unuS7p6e\n6ur09/16zWumqmt5uqqmnq5znqp2URQhIiJSqK3RAYiISPooOYiISAklBxERKaHkICIiJZQcRESk\nhJKDiIiUUHKQtYpzrtc59+RAwxXMP885d8bQRFc/zrl+59whjY5D1l5KDrK2Ow/YuYrpo/hHpKUN\na3QAIkMpiqJXgVcbHUezcM4Nj6Lo9UbHIY2nKwdpWs65kc65i51zLznnXnDO/QgYUTRNcTPTxs65\nG51zzznnljvn/uGcO7lo0SOccxc45553zj3tnPsf51z7auK42jl3TcHwUXGzz9EF437qnJsV/z3B\nOXeNc+5fzrllzrnHnHNfKVrm9s65O5xzLzrnXnHOPeKcO6xo1ePidS9xzvU5504rWkZH/P7nxu/1\nb865Y4um6XfOneScm+Wcewn434Hep7QWJQdpZt8G9gcOB3YhXCGcwOqbhX4EjAX2BLYGjgbmF7zu\ngJOABcBO8d8nAp9ezTLvAnYvGN4DeC7+ndcN/Cb+ezjwV2BfYFvgLOBbzrkjC6a/Nl7G+4EdgK8A\nLxat90xgDvBOwrY41zlXuM7LgU8AxwLbAP8NTHfOfabMcn4PvBv4+mrep7SSKIr0o5+m+wHWAZYD\nRxeN/yPwRMFwL/BkwfCfgDNXs9x5wC+Kxt0GzFrNPJsB/cA28XAf4WS+MB7eNn5989Us4wLgVwXD\nLwGfXs30/cCMonGPAOfGf28OvAFsVTTNN4GHi5ZzeaP3p37S96M+B2lWbyc0If2haPy9QM9q5psB\nXOqc24vwqTsbRdE9Ba9HhARSaBEhAZQVRdE859w8YE/nXASMJ1yhfNM5ty3hCuJfURT9E8A51wZM\nAz4FTAFGAh2ExJR3PjAzvpqYA9wSRdHDRasujnMhsH78dxfhKugh51zhNMOAlUXzPTjQe5PWpWYl\naSlRFP0Y2BS4BJgMzHbOXV00WXGHbMSa/1fuIjRV7Q7cE0XRf4DfERLDHvHreV8FTiMkqg8TmoVm\nUtBfEkXR2cBWgBGale53zp21hjgpiDP/+/3x8vM/2wM7Fs2jDnspoeQgzeofhJPjrkXjd2UNpahR\nFD0dRdGPoyj6NHAMcKhzbswg4/kt8CHCyT7ft3BXPPwhVk0OuwGz4xj+HEXRXEIiWCXuKIr+GUXR\nxVEUHUjoFzh+DTEUzv9Q/HvTKIrmFv38s5Y3KK1FzUrSlKIoetU5dwlwtnPuGeAJQufyVsCzA83n\nnLsIyMbTjyR0aP87iqJX8pPUGNJdwATg48A5BePOI3wIK0wOjwGHO+e6CU1BRxA6v1+MYxwDTAd+\nRmhqGg9MBf6+hhhcPv4oip5yzl0JXO6cmwbcT+ineS8wKYqi79b4PqVF6MpBmtlpwC+Aq4EHgE7g\nh6z6CbrcTW0zCNVCdwOjgL2Kpi+2xhvjoihaREg4S/J9A1EU/YVwwn8ifj3vrHjdNxP6TMYBFxas\nYwUhIVxB6GS+ndDvsaY7oovjPBb4PnAGIbHcSajs+scaliOCi6Jkbwb13l9J6DB81szeMcA0FxL+\nYZcBR5pZcUeciIgMoUZcOVxFuEQuy3u/N7CFmW1J+ORzcSUL9d531yW6IdYMcTZDjKA4601x1lez\nxDmQxJODmd1D6c08hT5OfJemmT0AjPfeb1DBorsHH10iuhsdQAW6Gx1AhbobHUCFuhsdQIW6Gx1A\nhbobHUCFuhsdwGCksc9hCuEmorz5wMYNikVEpCWlMTlAacWInpIpIpKgxDukAbz3mwG3luuQ9t5f\nAswxs+vi4ceAD5nZM0XTdVNw2WZmZw5hyCIiay3v/bcKBueY2Zw03udwC+FBZ9d573cBXipODABm\nNofwWIG8MylTo97X0xUBSzLZ3LghibZ6vfHPkIvfO5lsrtra/V4GEWO83vUy2dzi+O/DMtncT2tc\nzur2Xdk4+3q6NiI8OC9vUSab26iG9f8DeFsN269wGRFtbW9kbn0w8f+1vp6uacD0KuLvBXr7eroW\nARsCT2Syua2HKr5y8sdsbFwmm1tSZrJeyu/3CHgqk81tOTTRDayvp2s8oS/1Y5lsLhuP7qWK/6M4\n/l0y2dwDVa67A3h9EMdpZGa9xSMTP2C999cS7hid5L3vI5zUOwDM7FIzu817v7f3/inCbf1HJR2j\niEirSzw5mNnBFUxzYhKxiIhIeWntkBYRkQZSchARkRJp7JAWkbVLb6UTdh7y1reYjv3EIV8DXisz\nWXe5ZXYecixuxIiJ1ayvXqZc/9uRS2++lpHv3vlQ4H3x6O5qYuk85FhGfWD3Y1j1WV9rtPHN97ct\nuf5KKlxXxfEoOYhIEnormWjJrMvOLPj7O5ls7uUBllWyvHjeFzo/+emK1lVPCw7afQJw6pJZl83K\nZHO/jEf3UsXJeMmsy85cMuuymdVWK83fd5cO4BvjDj12TeuqOBZQs5KIiJSh5CAiIiWUHEREpISS\ng4iIlFByEJGW55z7lHPuAefcK865Z5xz9zvnvhkPL41/+ouGi7+/fK2iaiURSauan2lV1Uqc+ypw\nCnACcEf8/eTvAk4GJkRRtCKerh/YMYqiuauJNZGYk6DkICItyzk3DvgWcHgURT/Pj4+i6E/AYQ0L\nLAXUrCQirez9wAjg5kYHkja6chCRhit6VHfei309XQPNUq/vb5kELI6iqD8/wjn3B2BbQtL4aBRF\n99RpXU1FyUFEGi7/XQRFSWJCJpt7qczkvQz8fQ7Veh6Y5JxryyeIKIo+AOCc62Mt6kOolpqVRKSV\n3Ud4ftMnGh1I2ujKQURaVhRFLznnvgX8yDnngF8RvmRsR2CdhgbXYLpyEJG0SqRJJ4qi84CvANOA\np+OfS+Lh+wonXc1iGlnKmm+Sq+u6deUgIi0viqJZwKw1TNOeUDipoCsHEREpoeQgIiIllBxERKSE\nkoOIiJRoleTQsjeypMRgtn8j91291q3jrzbabpUZkkqpVkkOIiJDaa17KmurJIdabquX+hnM9m/k\nvqvXunX8SdNpleQgIiJVUHIQEakz59yPDzjggN3jvz/onHssofX2O+feVo9lKTmISMtyzs1zzi2L\nv/bzaefcVc65ejxTKQqPaoIoiu6JomibNc1ww/zF7PCrP11ah3XXhZKDiLSyCPhYFEVjgfcAXcDX\nCydwztX0mKEoau6uplZ5ttJaU0HQpFTKKrVIdLtFUbTQOTcb2CH+vugTgS8TPkS/3Tn3MeBsYFPg\nEeBzURT9FcDf//g7Xln5Bo8uXX7tG87dQkERgnOuG7g6iqJMPJwBLgD+K172tcAPR7Q5XuuPdnDO\nLQVWRFE00Tk3AjgHOJDw5UM/B74cRdF/4mWdAnx5w5EdLH5txVH13B66chCRVufgzZP23sDD8fh9\ngfcB2znn3g1cAXwWmAhcCtzinOtwzg1/8IVXfnLAlHV55CPvPgy4ATgg36y0yoqcawd+CfyTkGSm\nANdGUfTYuTtsSuew9r9FUTQ2iqKJ8SzfAbYA3hn/ngJ8M17WVOCrm44esffdH9qBNyI+XM+N0ipX\nDs19fdf8VMoqq/W+8+4K26j7u4WjF3PeXQPNUvo1od3f5aY506pdtQN+4ZxbCbxMOHGfS2ha+nYU\nRS8BOOeOBS6NouiP8Xw/cc6dTvgOaoBhR2++AUB/FEW/cM79kfJ2AiYDpxR8Nekfwq9VD5P4+yU+\nC+xYEMe3gZ8CpwMeuPKe7h0eAxg7rL13yco3Dqp2Awwk8eTgvZ8KzADagZlmNr3o9UnANcCGcXzn\nm9mPk45TRJLzx1P2KPc1oZMy2dzzZSbvpX5fExoB+0ZRtEoWij/19xWM2hQ4wjl3UsG4DsKJ3rU5\nt4hwzsr7F+FTfrEM8K/C76xejfWA0cBDBVchjrdafCYDbyahrglj/n3Xcy9XsNjKJNqs5L1vBy4C\npgLbAQd777ctmuxE4GEzexfQDXzPe98qVzgikh6FyebfwDlRFE0o+BkTRdH1wKL+KJpcNO+mAyyz\nD9gkbl4qUtIMtRhYDmxXsM7xURR1xq8vAjbJT5x78ZVNihcwGEn3OewEPGVm88xsBXAdoV2v0CIg\n/+Y7gefNbGWCMYqIFLsc+JxzbicXrOOc63HOjSE0C628ct6zLFmxst05tz+hr6KcBwnnuO8450Y7\n50Y65z4AsN6IYfynv39951wHQHx1cTkwwzm3HoBzbopz7iPxsgw48oNz/rb18jf6WbryjW/W8w0n\nnRymsOql2nxKL70uB7b33i8E/gx8MaHYRETyVmmiiqLoIUL7/0XAC8CTwBHxayt2mjjmyJ/NX8y7\n7vzz1YS+gBvLLS+KojeAfQidy/8mnA89wK7rdjJmWPtc4Gnn3LPxfKcCTwH3O+deBn4NbBUv63Zg\nxr+WvXb7h+7+G+2O3xTHPRhJN9dUEvjpwJ/MrNt7/3bg1977d5rZ0sKJvPfdhGYnAMwMyrRDAtDR\nMXLA15LXTfKxVLu+7hrmWcWGl900DVgGMPbAIw8AtqxpQavfd93lXtvgB7PGPnPSIW8Ou1Gjx65m\nGQNqG9M5sf+VJdQy7yqcaxv0Mmoweo+eXZfdlaWKdXcDvW7U6DHR8mW0dY5ft4p517jcamfa8LKb\nTiU+hipdXlvnuInVrCuKov8Fdot/CsefRXzyLxgHcFvRIk4G+N2f/zb66eMOYNwRJ9zSedBn8ndD\nTwZ64/muzMcVD/85/snr7Whz/Pv2Wx5dZ/e97syPi6ddAVxdMO2kwmX1L11yxYJP7XHGxj+/dzM3\nfERJ3AW6GWDbeO8Lx88xszkuyRs1vPe7AL1mNjUe/hrQX9gp7b2/DTjHzO6Nh38DnGpmuTUsPqJM\no13cSbU0k811ls7SEL0kdKLId9Blsrlq68V7GUSM8XrXy2Rzi+O/D89kc9fUuJzV7buycfb1dG0E\nLCgYtSiTzW1Uw/rnApvXsP0KlxHR1tafufXBxL9/uK+naxowvYr4e4Hevp6ufOfqE5lsbus6hNJL\nhcdTUafyeplsbnGly4vnfSqTzdX2QWQQ+nq61geeAfbPZHM/j0f3UsX/URz/Lpls7oEq1z2KkEQ7\nMtnc6prgB4qn7Lkz6SuHHLCl934zYCFwEHBw0TSPAR8G7vXebwBsDcwd5HpVSthYKmUVaTKJ9jnE\nHcsnAncQ7jC83swe9d4f570/Lp7sXKDLe/9n4E5gmpm9kGScIiKtLvESUTObDcwuGndpwd+LCR02\nIiLSIHp8hoiIlGiV5KAHnzWWHrwntdB2q8yQfEWp7jwWkWJR0e966K1kos5Djn3z7zH7+FOoopS1\n85BjcSNGVlXKWi8bzfr1Oq/88gZGvrPrIMJD8qDKEt7OQ45l1K57HAPsVc26p9z0+46lP/sJnQd9\n5htAJY/lqIiSg4gUq/cn0d5KJ1wy67IzC/4+L5PNPTfA8kqWGc/7Qucnj6h4ffWy8JD/twFw8pJZ\nl1kmm7spHt1Lle99yazLZlZbyrpg//8aDZy+ZNZlZ2WyuRXVzLs6rdKspFLCxlIpq0iTaZXkICIi\nVVByEBGREkoOIiJSolWSg0riGkulrFILbbfKDEkpa6skBxGp3FCUsialGWMulJr4lRxEpNiQfBJN\nSKNirtc2S802b5XkkJps3KJUyirSZFolOYiISBWUHEREpISSg4iIlGiV5JCaTp4WpVJWqYW2W2VU\nyioiiVApa+OkJn4lBxEpplLW2terUtYmk5ps3KJUyirSZFolOYiISBWUHEREpESrJIfUtOO1qEZX\nK9W6DFUrNZa2W2VUrSQiiVAfiSg5SEvQya42zbjdmjHmQqmJX8lB6qqvp6uZyyAlaOZ9qFLWOmmV\n5JCabNyiVMoq0mRaJTmIiEgVlBxERKREqySH1LTjtahGl7I2et06/mqj7VYZlbKKSCL04L3GSU38\nSg4iIlJiWNIr9N5PBWYA7cBMM5teZppu4PtAB7DYzLqTjFEGpZnLICVo5n2oUtY6SfTKwXvfDlwE\nTAW2Aw723m9bNM144IfAPma2A/DJOqw6NZdqLUqlrCJNJulmpZ2Ap8xsnpmtAK4D9i2a5hDgRjOb\nD2BmixOOUUSk5SXdrDQF6CsYng/sXDTNlkCH9/63wFjgAjO7OqH4RESE5JNDJZfXHcB7gD2B0cB9\n3vv7zezJwonifonu/LCZAfSWX2LHyAFfS143ycdS7fq6a5gHgI1vud/N//gubHjJDacArwKMPfDI\nAwhJv3qr33fd5V7b4Aezxj5z0iFvDrtRo8euZhkDahvTObH/lSXUMu8qnGsb9DJqMHqPnl2X3ZWl\ninV3A71u1Ogx0fJltHWOX7eKeetugx/MOhlYWualbgaIq61z3MSBXhtKG1z407HPfOFQOg/+7IGE\nJnOo4f9o4slnHQPsVc08k3+cHbHoyB42uvbOrwMrqpk3z3vfWzA4x8zmuChKrjnUe78L0GtmU+Ph\nrwH9hZ3S3vtTgVFm1hsPzwRuN7OfrWHxEWU6c/p6uiJgaSab66zPuxi0XhI6eOP3Tiabq7aTq5ca\nY+zr6WoD3gA2yGRzz8YxHJ7J5q6pYVlr2ndl4+zr6doIWFAwalEmm9uohvXPBTavYfsVLiOira0/\nc+uD7bUuYxDrngZMryL+XqC3r6drITAZeDyTzW0zVPGVkz9mY1My2dzCMpP1Un6/R8CTmWxuq6GJ\nbmB9PV1TCC0hB2WyOYtH91LF/1Ec/86ZbO7BKtc9DngJWCeTzS2rZt5Y2XNn0lcOOWBL7/1mwELg\nIODgomluBi6KO69HEJqd/ifJIEVEWl2iHdJmthI4EbgDeAS43swe9d4f570/Lp7mMeB24C/AA8Dl\nZvZIknHKoDRzGaQEzbwPVcpaJ4nf52Bms4HZReMuLRo+Hzi/jqtVKWFjqZRVpMnoDmkRESmh5CAi\nIiVaJTmkph2vRemprFILbbfK6KmsIpIIPZW1cVITv5KDiIiUUHKQektDGaSaIwYnDfuwViplrZNW\nSQ6puVRrUSplFWkyrZIcRESkCq2SHFJzqdaiVK0ktdB2q4yqlUQkEapWapzUxK/kICIiJZQcRESk\nhJKD1FsayiDVVj04adiHtVIpa520SnJITTtei1Ipq0iTaZXkICIiVWiV5JCaS7UWpVLWGvT1dD3Q\n19P1wTrF0Iz0f1sZlbKKtJidgI80YL0qZW2c1MSv5CAiIiWUHKTe0lDpouaIwUnDPqyVqpXqpFWS\nQ2ou1VqUqpVEmkyrJAcREamCkoOIiJRoleSQmna8FqVSVqmFtltlVMoqIolQKWvjpCZ+JQcRESmh\n5CD1loYySDVHDE4a9mGtVMpaJ62SHFJzqdaiVMoq0mRaJTmIiEgVWiU5pOZSrUWpWklqoe1WGVUr\niUgiVK3UOKmJX8lBRERKDEt6hd77qcAMoB2YaWbTB5jufcB9gDezmxIMUUSk5SV65eC9bwcuAqYC\n2wEHe++3HWC66cDtqN2x2aShDFLHzOCkYR/WSqWsdZJ0s9JOwFNmNs/MVgDXAfuWme4k4GfAc3Va\nb2ra8VqUSllFmkzSyWEK0FcwPD8e9ybv/RRCwrg4HqV/LBGRhCWdHCo50c8ATjOziHCJVY/LrNRc\nqrUolbJKLbTdKjMkzYBJd0gvADIFwxnC1UOh9wLXee8BJgF7ee9XmNkthRN577uB7vywmQH0ll1r\nR8eIAV9LXjfJx1Lt+rprmAeAKfbbYQv87mxwwdVfAZYAjD3wyP2BLWpZ3hr2XXe519b/3lXjnv3q\nUW8Ou1Gjx65mGQNqG9M5of+VJdQy7yqcc7UuY9QHdt+t1nlH79Gz67K7slQxfzfQ60aNHhMtX0bb\nuAnr1rruelj//Cu/BLxU5qVuBoirrXP8xIFeG0rrn3fF+GdPObr4WO+uNpaJp5x9DLBXNfNseOmN\no58+7gAmX/XL04D/VDNvnve+t2BwjpnNcVGUXKuN934Y8DiwJ7AQeBA42MweHWD6q4BbK6xWyl9p\nrKKvpysClmayuc6aA6+vXhI6eOP3Tiabq/YTRS81xtjX0zUSWA5kMtnc/DiGwzPZ3DU1LGtN+65s\nnH09XZsC8wpGLcpkcxvVsP65wOY1bL/CZUS0tfVnbn2wvaZ54exMNveNGtc9DZheRfy9QG9fT9dC\nYDLweCab26aWddcqf8zGNs9kc/PKTNZL+f0eAU9msrmthiS41ejr6docmMuqx3ovVfwfxfHvnMnm\nHqxy3esBzwITMtlcuWS6JmXPnYk2K5nZSuBE4A7gEeB6M3vUe3+c9/64JGMREZGBJX6fg5nNBmYX\njbt0gGmPKjdeUi0NZZBqqx6cNOzDWqmUtU5a5Q5pVTw1lkpZRZpMqyQHERGpQqskh9RcqrUolbJK\nLbTdKqOnsopIIvRU1sZJTfxKDiIiUkLJQURESig5SL2loQxSbdWDk4Z9WCuVstZJqySH1LTjtSiV\nsoo0mVZJDqnJxi2q0dVKtS5D1UqNpe1WGVUriUgidKUjSg7SEnSyq00zbrdmjLlQauJXchARkRJK\nDiIiUkLJQeotDWWQ6sgcnDTsw1qplLVOWiU5pKYdr0WplFWkybRKckhNNm5RjS5lbfS6dfzVRtut\nMiplFZFE6MF7jZOa+JUcRESkhJKDiIiUUHIQEZESSg5Sb2kog1RH5uCkYR/WSqWsddIqySE1nTwt\nSqWsIk2mVZJDarJxi1Ipq9RC260yKmUVkUSolLVxUhO/koOIiJRQchARkRJKDiIiUkLJQeotDWWQ\n6sgcnDTsw1qplLVOWiU5pKaTp0WplFWkybRKckhNNm5RKmWVWmi7VUalrCKSCJWyNk5q4h+W9Aq9\n91OBGUA7MNPMphe9figwjZAFlwLHm9lfko5TRKSVJXrl4L1vBy4CpgLbAQd777ctmmwusJuZ7Qic\nBVyWZIwiIpL8lcNOwFNmNg/Ae38dsC/waH4CM7uvYPoHgI2TDFBERJLvc5gC9BUMz4/HDeRo4LYh\njUjqLQ1lkOrIHJw07MNaqZS1TpK+cqi4s8V7vzvwGWDXoQtHRFIsNSfKlBuSZJ50clgAZAqGM4Sr\nh1V473cELgemmtmL5Rbkve8GuvPDZgbQW3atHR0jBnwted0kH0u16+uuYR4AJv/kthGLjtib9b87\n84vAiwBjDzxyf2CLWpa3hn3XXe619b59ycTnvva5N4fdqNFjV7OMAbWN6ZzQ/8oSapl3Fc65Wpcx\n6gO771brvKP36Nl12V1Zqpi/G+h1o0aPiZYvo23chHVrXXc9rHfuxScBz5d5qZsB4mrrHD9xoNeG\n0nrn/Gjd5844gTGfOHRfYJN4dHe1sUw85exjgL2qmWeDC3869pkvHMqGl9xwCvBqNfPmee97Cwbn\nmNkcF0XJVU5574cBjwN7AguBB4GDzezRgmk2Ae4CDjOz+6tYfESZzNnX0xUBSzPZXOdgYq+jXhI6\neOP3Tiabq/YTRS81xtjX09UJvAy8PZPNzY1jODyTzV1Tw7LWtO/KxtnX07Ul8ETBqEWZbG6jGtY/\nF9i8hu1XuIyItrb+zK0Pttc0L5ydyea+UeO6pwHTq4i/F+jt6+laCEwGHs9kc9vUsu5a5Y/Z2NaZ\nbO6JMpP1Un6/R8CTmWxuq6GJbmB9PV1bA48BR2eyuSvj0b1U8X8Ux79zJpt7sMp1TyF8yN4gk809\nW828sbLnzkT7HMxsJXAicAfwCHC9mT3qvT/Oe39cPNk3gQnAxd77h733VW0oEREZvMTvczCz2cDs\nonGXFvx9DHBM0nGJiMhbdIe0iIiUUHKQektDGaSqXAYnDfuwViplrRMlBxFJq9ScKFNOD94TkUTo\nwXuNk5r4lRxERKSEkoOIiJRQchARkRJKDiIiUkLJQeotDWWQqnIZnDTsw1qplLVOlBxEJK1Sc6JM\nOZWyikgiVMraOKmJX8lBRERKKDmIiEgJJQcRESmh5CAiIiWUHKTe0lAGqSqXtUMz7cdGHveqVhIR\nkWQoOYiISAklBxERKaHkICIiJZQcRESkhJKDiIiUUHKQelMpq9RLM+3HQR33fT1dg5lfpawiIpIM\nJQcRESmh5CAiIiWUHEREpISSg4iIlFByEBGREkoOUm8qZZV6aab9ONjjXqWsIiKSfkoOIiJSYljS\nK/TeTwVmAO3ATDObXmaaC4G9gGXAkWb2cLJRioi0tkSvHLz37cBFwFRgO+Bg7/22RdPsDWxhZlsC\nxwIXJxmjiIgk36y0E/CUmc0zsxXAdcC+RdN8HPhfADN7ABjvvd8g2TBFRFpb0s1KU4C+guH5wM4V\nTLMx8MyaFj7986eXJJH92ocDDC/3WiN85owvrHPlORcmEkv83stul9UZTIxbT9x64nYv/5MFo9ab\nNOvzp7+0X/twXh02avysGrZ/HH/HQPEPFOcuYzaaNHn54sJRNe3/T7SPGO6Iqt5+heL30FbLMvZr\nH87rbR2dtWw7gL07xnSO6H+94vjz23O/9hEdEBHhRib9f5M/ZgGeHjVpUrn3PtB+3699eENiBnj/\nmI3W3XD5Ypa3j3xzf1XzfzRik93b9l5wL8+PGD+x2v39ns5NJ2366iLmjpmy/qzPn76y2thP/eG5\nZce7KIqqXVbNvPcHAFPN7LPx8GHAzmZ2UsE0twLfMbN74+E7gWlm9n9Fy+oGuvPDZnbmkL8BEZG1\nkPf+WwWDc8xsTtLNSguATMFwhnBlsLppNo7HrcLM5phZb/4nfnMu7T/NEGczxKg4FWfaf5olTsAV\nnkvNbA4k36yUA7b03m8GLAQOAg4umuYW4ETgOu/9LsBLZrbGJiUREamfRK8czGwl4cR/B/AIcL2Z\nPeq9P857f1w8zW3AXO/9U8ClwAlJxigiIg24z8HMZgOzi8ZdWjR8Yg2LnjOIsJI0p9EBVGBOowOo\n0JxGB1DG19WeAAANWklEQVShOY0OoEJzGh1AheY0OoAKzWl0AIORaIe0iIg0Bz0+Q0RESig5iIhI\niaZLDt77pohZcdZXs8QprWdtPTYT75Cuhfd+DHAUcBuwCFjmvXdmlqoOE8VZX00U53Aze73RcayJ\n4qyfZjk2ByP1HdLe+z0ID9/7G7AYeL3wjuq0UJz11URxfgk4ErgZ+KOZ/TKNJwnFWT/NcmwOVjNc\nDm0EXGtmBwDfAHb13h8NqbucU5z1lfo4vfd7Em7iPAp4HPiW935nM4vSEiMoziGQ+mOzHlL3Rrz3\nm3jv31MwahvgVQAzexY4FTgrHu5PPsJAcdZXE8XZUTA4CbjNzB42s1nAT4BLoLExguKsp2Y5Nust\nVcnBe382cC8w3Xt/nvd+POGGuePz05jZr4Gc9/4bDQpTcdZZM8Tpve/w3v8PcF78CRdgJas+/PEC\noMN7f1Q8j1OcTR9n6o/NoZKa5OC9nwRsBWwBeMKBcmb8dNZHvfeFz5W9Etig6FOH4lScQxVjG/BD\nwifb/wO+5r0/zsxuBNb33h9aMPnXgU8CJN1OrjjrHmfqj82hlJrkAKwAdgHWM7MXAQPw3h9O+Ea4\nQ733u8XTbg0siL8wSHEqzqE2DtgROM7MfgJ8D3iX9/5DwOeBc733I+JpFxJOHO0NaH9WnPXVDMfm\nkGlYcshfIsY73ZnZy4SNn//U8FfgPuD9hC/6+RZwiPf+d/E0f1ScinOo4isYbotPDP8idJRCaGbI\nAZ+KH2/8K+BC7/2BhPbnMWb2xlC2PyvOoYs1rcdm0hJPDt77z3nv3wWMBYh3ev5y8R5gK+/9O+In\nuM4lVAaMMbMrgS8D081sRzO7U3EqziHw5v9EfCLrjz+x3gy813u/vpktAf4CrPTebw5MA35JqLT5\nu5l9bohjVJx11ETHZqISu8/Be7898FPCl/vMB0aa2ZHxa1cDFxIuIT8NvN3M8qVh9wCfNbPHFKfi\nHMI4DwG+SjgZ3Gdm18fj9wGeBJYBXwCeM7Pp8Wv3AV82s/vj4Y6hblZQnHWNsSmOzUZJ8sphfcJB\n8jHgZGCS9/68+LVpZvZHM1sAXEH4QqDLvPcPEO4+XKQ4FedQ8d5vSziRfQX4DXBCfHIDGE/4tqyF\nhE+zH/fe7+e934JwgnvzO3sTOOEqzvpK/bHZSEN25eBDyddWwMNmtsJ7/zlgOzP7Qvz65sDDwPZm\ntiB/yRm/th7wLmBy3GE1ZBRny8ZZuN5uYP+CGPcCZprZlDLzfRzYD/gAMMPMLlaczRFnsxybaTEk\nycF7fyxwNqGDZjFwRvxSjrDhn4+n+z4w0cw+HQ8fA9xuZsXfKz0kFGfLxnkmsAHwWzO7wXv/XsLJ\n690F09wO/MnMTisYl28zHwGssKHvIFWc9YuxKY7NNKl7s5L3fhShN/+DZtYD/Bv4GrAUmAVcVjD5\n1UB7nNEBXiOUjw05xdmycX6d8Cn1duAk7/3JZvYQsNCHG57yTgF2896Pi+f7DvApADN7LYETruKs\nX4xNcWymTd2Tg5ktJ+yI9eNRVwPPE+4onAa804cSNYC3Ay+a2UvxvFeb2TP1jklxKk4A7/0w4IPA\nKWZ2C+G5OBv5cNPV8cDx3vuN48lfIFTQ5J1r4ZEOQ05x1lczHJtpVLfk4Fe9SeVKYF8AM3sC+AOw\nGbAucBKwp/f+TsLzSB6oVwwVxjksrXHG/2z5v5tlezZLnMMslCL+nVAiCaG+/g/AnsCLwAzg/Ljz\n9AxgCqGTFAvlloqzieL03rc1w7GZVjUnB+/9Ed77D+Uvv2zVm1R+D4z33n84Hn6CkLUnmNlsws44\nD3ivmV1Te/gVxXmk977He79JHOfKlMb5JeBa7/2OcZxp3Z6Hee93zTcPpDjOkQV/t8cnMgjNH1O8\n99vH4/5K+FT7DuBc4MfAR4B+wk1ZQ13Z0+W9H5sfTnGck7337fHfw9IYp/d+68JhM+tP47HZLKrq\nkPbhDsLJhHa6fuApYAzwRTN7zocysAcJdzgeRrjkPMzMVnrvbwPON7O76vweBor1v4DvEJ6e+Hcg\nAxxtZku8998mPNMlDXEOJ9xp2QWcFrfX5l9LU5xvI1yOv0yo6JhCaE5I237/KPAlQt36PfnKEu/9\nLsBI4CFCmeUoMzs1fu1m4Pp8M4dP5j6ADwO9hJPpyWb2ajx+J2B0CuN8lnBPwnHx+NRsTx9uYLsZ\neB34iJn9s+C11PwPNZuKrxziHRwR7iJcYGZ7ACcQPiXkO3Smm9kNFm47nwVEwHXe+9mEJPJEXaMv\nH2e7Dw+/2gv4vpl9lPDY30XAf+LJzktBnPkHdLUTPmV9ysweyn8ij52foji3A+42s73N7AzCh4ML\n4tcaut+99y5uLjyV8Gn1IuC3wFTv/SfiycYCzsyWEurrd/Def8V7PwHoICQ9YOjq6+M42733nweu\nAS4ys+PziSE2rtFxFsS7HeED1gxC+/wm/q0nqKZhe7bHf74D+DZwP7Cvf+u5TADfbfT/ULNa45VD\nvAOmA8OBGwk3sexrZp8peH0h4M3s7sJLzvhT8S7ANmZ2WdkV1ElBnCOB64EHzey1+LUrCBUVZ8Xj\nn0pBnMOBW4E/AacTEthRwM7APwmlgH/wq9ZaNyLOEYQT2d7AFmZ2aPz6qYRPlHuY2X0N3J5thJPU\nG3Hbds7Mnoibar5J+DYx80XfJhZ/2vwS8B7gZjMb0sctF8V5JOHBc9PN7Bnv/d6EZ/a8UnwibVCc\nWCgxPQJ4v5kd773vJLTbfwl41oq+xjPJOONj82zC1xxngcfM7Gnv/fsJHw6+YmYPDzBvYsdms1tt\ncvBvPVq3k9C2eBBwN6GHf08z+0s83fHAQWbWHQ/vByw0s0Q6dorinE243f1mwhXNgcBOhDs1u4Ft\nzWyvlMR5KPBrwk1AdwHrAOcAnyXcRLRLCuK8AziA0IF3OqEkcTjhC0/eAN5mZvs0KM7PELbXVWZ2\nuvd+NOHqsN3CTU7XAr+28Aycwvk64+bF4fG0yxOOc33gRODdhMdBP04omXzSzL6eoji3Ab5PaKL7\nKDAP6AMiMzusEXH68OTWCwjJ9CHC01FPMbO749e/T7iqPdvMXsx/KEj62FwbrKlZaSzhrsDPmdnV\nwKWEy7KnCY/ZzWfxnwPPee83i+eLgESqJsrEeU0c2zbAx83sp2b2RQuldmcTvjxkh5TE+UPClc6r\nhATxuJm9aGbfBcb4cPdoo+P8CTAzHn8TsBzYndD/8EPgXwUdqonF6cMXvO9LuLrZy3u/hZktizsh\nV8QnqhEUPSnTe38S4bHQmNnrCZxwi+PcysK3h91LeDLpwWb2CcKxuY/3/h3xfJ9vcJxbW3h20P6E\nK9mzzWw34GhCc90H4vlOTDJOwjH2vbg5biahKWlqwevfI/TfbRcP55tp20j2f6jprTY5xO1083jr\n0bp3EzqmZgM7+nDXYT+wMbDSzObF8/3CzB4dopgrifP3hE8Ve3jvNyyYdGvCp6BHUxLn7+J4/k64\nIWcd7/0UHyptHgUeSUmcdxMeUbwcmG1mB8SfwN4NvBa3Oycap5m9ApxkZjMIVzf/DW8WTQBMAEab\n2V/jbfrJePxMM/t2EjGuLk7CFePpZvanePgxQkd/Pv4rGxxnb/zSCuBjhOITzOw/wHXAxPj1K5KM\nk5Dsbyjob7iP0G+Xr6KaD1wOnOq9zxL6SzCzG5P8H1obVNIhfRPhizgmW6hNfoJQw/xNwqfLW4Fr\nCRUBjVQY5yuEG25eI5TZbe69PwO4GHjIzN5ISZxLCE0KLxE+hXcQLuMfAJ4ws6caF2ZJnH8lbM/N\nvPfreu/PInQC3teoAM3s3/GfMwgPRvtoQb/C5oTSxS8R2qU3jOcZ6k+2a4rz7XGc/cTfQxybRqio\nmx/P0+g4t/De7x33I2WB73vvt/Hen06o+Ml/cEk0TjNbbmb/Kfgf/ihvbbN8ee32hIKUP1v8lFWp\nXiXJ4feEZ5EcCWDhcbr7EE6yJxAu43Y3s/MGXEIyiuN8iNDXEBHqrLcE9jGzHzQqwFhxnA8QDuR/\nxNtwOvBRCxVBjTTQ9mwj3EU6jNAZ/bNGBZhnZk8Tmr4Kt9kuhOaFfPPiRY2IrVBxnHHn9Md8+LKY\n7YEjzOyFRsYYx5WP82vx8DmEiqTTCJVBHzOzuY2L8M2bWdsJz3S6LR63rQ/PdXoV2NLMTm9kjM2u\novsc4vbF6cAPCJd1VxAuie8f2vCqUybOqwjPjP+bDfEzZqpRJs6ZwNfNrGGfwsspE+eVwFfNrNFX\niaso6HS8kdAf9jywAHjUzH7X2OjeUhTnIuAVQrXaE2napkVxPkPo5L8W+GvcrJQKcfPr5YQ+z6MJ\n+/6UNCTYtUHFN8HF5XYHEp5RclEaPomVozjrq4niHE1oK98WOMvMLljDLA3RpHH+t5ld2OCQSsSl\nq/lHdlxlZlc0OKS1SrV3SA8H3mhwm/0aKc76aoY4vfdfBTYhfEnLa42OZyCKs358eKjfEYSbRV9f\n0/RSncS+JlRkKBXeLJhmilOahZKDiIiUSPI7pEVEpEkoOYiISAklBxERKaHkICIiJZQcRESkhJKD\niIiUUHIQEZES/x/Jb6FPDOvGyAAAAABJRU5ErkJggg==\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x118947790>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x118997e10>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"appliance_dfs = {}\n", | |
"for appliance in ['fridge', 'light', 'dish washer','microwave']:\n", | |
" appliance_dfs[appliance] = pd.DataFrame({\"GT\":data_df[appliance],\"Predicted\":disag_df[appliance]})\n", | |
" appliance_dfs[appliance].plot(title=appliance)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"There you go! We have a working interface to the Matlab iFDM NILM algorithm. It should be noted that the program over 1000 iterations took several hours to run. I think that speedups upto 2 orders of magnitude should be possible by compiling it using `mex-setup`. I'll get onto that in a while. Another thing to note is that the disaggregated fridge power signal matches the state changes observed in the ground truth signal. However, the predicted seems to have a higher magniutde than the ground truth. This can possibly be due to the fact that the aggregate measures apparent power and the appliance meters measure active power.\n", | |
"\n", | |
"I think that this small demo shows that it is straight forward to interface a Matlab NILM algorithm with nilmtk. Hope to get more such state-of-the-art algorithms interfaced with nilmtk soon." | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 2", | |
"language": "python", | |
"name": "python2" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 2 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython2", | |
"version": "2.7.11" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 0 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment