In [2]:
from hmmlearn import hmm
import numpy as np
import json
import pandas as pd
%matplotlib inline
In [2]:
#Takes the JSON files and reloads them back into python
device = "Refrigerator"
def open_device_15min(device_type, device_num):
with open("Devices/{0}/{0}_{1}.json".format(device_type,device_num)) as f:
return pd.DataFrame(json.load(f)['time_15'])
fridges = [open_device_15min(device,i)for i in range(8)]
In [3]:
for fridge in fridges:
print fridge['values']
In [4]:
# inital starting spots drawn from priors
pi = np.random.dirichlet([1,1])
A = np.array([np.random.dirichlet([1,1]) for i in range(2)])
l = 0,100
r = 10,1
b = 2,2
w = 2,2
mu = [np.random.normal(l[i],r[i]) for i in range(2)]
tao = [np.random.gamma(b[i],w[i]) for i in range(2)]
print "pi: {}".format(pi)
print "A: {}".format(A)
print "mu: {}".format(mu)
print "tao: {}".format(tao)
In [5]:
startprob = pi
transmat = A
means = mu
covars = tao
ghmm = hmm.GaussianHMM(n_components = 2)
In [6]:
def generate_input(fridge):
return np.column_stack([map(int,fridge["values"].values > 0),fridge["values"].values])
X = generate_input(fridges[0])
print X[:10]
ghmm.fit([X])
Out[6]:
In [9]:
Ys = [generate_input(fridge) for fridge in fridges]
print Ys[0][:,0]
print
print ghmm.predict(Ys[1])
In [10]:
[ghmm.score(Y) for Y in Ys]
ghmm.get_params()
dir(ghmm)
Out[10]:
In [11]:
ghmm._get_covars()
Out[11]:
In [12]:
ghmm._get_means()
Out[12]:
In [13]:
ghmm._get_transmat()
Out[13]:
In [14]:
ghmm._get_startprob()
Out[14]:
In [15]:
ghmm.decode(X)
Out[15]:
In [ ]: