def co_disag():
    # TRAIN
    disag = CombinatorialOptimisation()
    disag.train(meters)

    # TEST
    appliance_powers = disag.disaggregate_chunk(mains)
    for i, df in appliance_powers.iteritems():
        appliance = disag.model[i]['training_metadata'].dominant_appliance()
        appliance_type = appliance.identifier.type
        y_pred = df.values
        if appliance_type in MAINS_APPLIANCES:
            np.save(join(BASE_DIRECTORY, 'CO_' + appliance_type), y_pred)

    appliance_powers = disag.disaggregate_chunk(fridge_mains)
    for i, df in appliance_powers.iteritems():
        appliance = disag.model[i]['training_metadata'].dominant_appliance()
        appliance_type = appliance.identifier.type
        y_pred = df.values
        if appliance_type in ['fridge freezer']:
            np.save(join(BASE_DIRECTORY, 'CO_' + appliance_type), y_pred)

    appliance_powers = disag.disaggregate_chunk(kettle_mains)
    for i, df in appliance_powers.iteritems():
        appliance = disag.model[i]['training_metadata'].dominant_appliance()
        appliance_type = appliance.identifier.type
        y_pred = df.values
        if appliance_type in ['kettle']:
            np.save(join(BASE_DIRECTORY, 'CO_' + appliance_type), y_pred)
示例#2
0
 def test_co_correctness(self):
     elec = self.dataset.buildings[1].elec
     co = CombinatorialOptimisation()
     co.train(elec)
     mains = elec.mains()
     pred = co.disaggregate_chunk(mains.load(sample_period=1).next())
     gt = {}
     for meter in elec.submeters().meters:
         gt[meter] = meter.load(sample_period=1).next().squeeze()
     gt = pd.DataFrame(gt)
     pred = pred[gt.columns]
     self.assertTrue(gt.equals(pred))
    def test_co_correctness(self):
        elec = self.dataset.buildings[1].elec
        co = CombinatorialOptimisation()
        co.train(elec)
        mains = elec.mains()

        pred = co.disaggregate_chunk(next(mains.load(sample_period=1)))
        gt = {}
        for meter in elec.submeters().meters:
            gt[meter] = next(meter.load(sample_period=1)).squeeze()
        gt = pd.DataFrame(gt)
        pred = pred[gt.columns]
        self.assertTrue(gt.equals(pred))
示例#4
0
if algorithm == 'fhmm':
    clf = fhmm_exact.FHMM()
elif algorithm == 'combOpt':
    print('here')
    clf = CombinatorialOptimisation()
start = time.time()
clf.train(train_elec, sample_period=samplePeriod)
end = time.time()
print('Training runtime =', end - start, 'seconds.')

# make predicitons
pred = {}
testChunks = test_elec.mains().load(sample_period=samplePeriod)
for i, chunk in enumerate(testChunks):
    chunk_drop_na = chunk.dropna()
    pred[i] = clf.disaggregate_chunk(chunk_drop_na)
print('---------------------------------')
print('Testing done')
print('---------------------------------')
# If everything can fit in memory
pred_overall = pd.concat(pred)
pred_overall.index = pred_overall.index.droplevel()

# use appliance names as the labels
appliance_labels = []
for m in pred_overall.columns.values:
    name = m.appliances[0].metadata['original_name']
    name = name.replace('_', ' ')
    name = name.capitalize()
    appliance_labels.append(name)
pred_overall.columns = appliance_labels