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)
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))
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