In [1]:
import numpy as np
import pandas as pd
from os.path import join

from pylab import rcParams
import matplotlib.pyplot as plt
%matplotlib inline
rcParams['figure.figsize'] = (16, 8)

import nilmtk
from nilmtk import DataSet, TimeFrame, MeterGroup, HDFDataStore
from nilmtk.disaggregate import CombinatorialOptimisation
from nilmtk.utils import print_dict
from nilmtk.metrics import f1_score

import seaborn as sns

import warnings
from nilmtk.plots import plot_pairwise_heatmap
warnings.filterwarnings("ignore")

In [2]:
data_dir = '/home/nipun/Downloads/'
we = DataSet(join(data_dir, 'wikienergy.h5'))
print('loaded ' + str(len(we.buildings)) + ' buildings')


loaded 239 buildings

In [3]:
building_number = 11
print_dict(we.buildings[building_number].metadata)


  • instance: 11
  • dataset: WikiEnergy
  • original_name: 434

In [4]:
elec = we.buildings[building_number].elec
elec.appliances


Out[4]:
[Appliance(type='fridge', instance=1),
 Appliance(type='dish washer', instance=1),
 Appliance(type='electric water heating appliance', instance=1),
 Appliance(type='spin dryer', instance=1),
 Appliance(type='electric furnace', instance=1),
 Appliance(type='sockets', instance=1),
 Appliance(type='sockets', instance=2),
 Appliance(type='air conditioner', instance=1),
 Appliance(type='sockets', instance=3),
 Appliance(type='sockets', instance=4)]

In [5]:
submeters = elec.submeters().meters
submeters


Out[5]:
[ElecMeter(instance=2, building=11, dataset='WikiEnergy', appliances=[Appliance(type='air conditioner', instance=1)]),
 ElecMeter(instance=3, building=11, dataset='WikiEnergy', appliances=[Appliance(type='sockets', instance=1)]),
 ElecMeter(instance=4, building=11, dataset='WikiEnergy', appliances=[Appliance(type='sockets', instance=2)]),
 ElecMeter(instance=5, building=11, dataset='WikiEnergy', appliances=[Appliance(type='dish washer', instance=1)]),
 ElecMeter(instance=6, building=11, dataset='WikiEnergy', appliances=[Appliance(type='spin dryer', instance=1)]),
 ElecMeter(instance=7, building=11, dataset='WikiEnergy', appliances=[Appliance(type='electric furnace', instance=1)]),
 ElecMeter(instance=8, building=11, dataset='WikiEnergy', appliances=[Appliance(type='sockets', instance=3)]),
 ElecMeter(instance=9, building=11, dataset='WikiEnergy', appliances=[Appliance(type='sockets', instance=4)]),
 ElecMeter(instance=10, building=11, dataset='WikiEnergy', appliances=[Appliance(type='fridge', instance=1)]),
 ElecMeter(instance=11, building=11, dataset='WikiEnergy', appliances=[Appliance(type='electric water heating appliance', instance=1)])]

In [6]:
we.store.window = TimeFrame(start='2014-04-01 00:00:00-05:00', end='2014-04-02 00:00:00-05:00')

In [7]:
first =submeters[0]

In [8]:
first.entropy()


Out[8]:
-24.495644032026519

In [9]:
first.mutual_information(submeters[9])


Out[9]:
0.16001344202839082

In [10]:
elec.entropy()


Out[10]:
-0.76226727667920013

In [12]:
elec.entropy_per_meter().plot(kind='barh')


Out[12]:
<matplotlib.axes.AxesSubplot at 0x7fb1ac137050>

In [14]:
plot_correlation_heatmap(_, "")


---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-14-98219e606aff> in <module>()
----> 1 plot_correlation_heatmap(_, "")

/home/nipun/git/nilmtk/nilmtk/plots.pyc in plot_correlation_heatmap(df, labels, edgecolors, cmap, log)
     50 def plot_correlation_heatmap(df, labels, edgecolors='w', 
     51                              cmap=matplotlib.cm.RdYlBu_r, log=False):
---> 52     width = len(df.columns)/4
     53     height = len(df.index)/4
     54 

AttributeError: 'AxesSubplot' object has no attribute 'columns'

In [10]:
plot_correlation_heatmap(correlation_df)