class TestInference(TestCase):
    def setUp(self):
        self.home = 'xusuqian'
        self.datastore = Data_store(redd_hdf5_path='/home/uftp/hubei/30%s.h5' %
                                    self.home)
        self.datarange = [
            pd.Timestamp('2017-12-2 00:00:00'),
            pd.Timestamp('2018-1-1 00:00:00')
        ]
        print('')

    def setUp_dynamic(self):
        # select total power data in a period
        # datastore = Data_store(redd_hdf5_path='D:\SJTU\湖北项目\数据\h5s/30xiayurong.h5')
        # datastore = Data_store(redd_hdf5_path='D:\SJTU\湖北项目\数据\h5s/30xusuqian.h5')
        # datastore = Data_store(redd_hdf5_path='/home/uftp/hubei/30xusuqian.h5')
        # datastore = Data_store(redd_hdf5_path='/home/uftp/hubei/30fake.h5')
        pss = []
        # datarange = [pd.Timestamp('2017-12-15 10:00:00'), pd.Timestamp('2017-12-15 12:00:00')]
        appliance_truth = {}
        appliance_consumtion = {}
        for app in self.datastore.appliance_names:
            if (app in ['meter', 'TVbox', 'TV']) and self.home == 'xusuqian':
                if app == 'meter':
                    totalpower = self.datastore.get_instance_ps(
                        appliance_name=app,
                        instance='1').loc[self.datarange[0]:self.datarange[-1]]
                continue
            theps = self.datastore.get_instance_ps(
                appliance_name=app,
                instance='1').loc[self.datarange[0]:self.datarange[-1]]
            appliance_truth[app] = theps
            pss.append(theps)
            appliance_consumtion[app] = Tools.ps_consumption(theps=theps)
            # if(app=='lamp'):
            #     print()
        knownps = aggregate_with_resample(pss)
        appliance_truth['unknown'] = totalpower - knownps
        appliance_consumtion['unknown'] = Tools.ps_consumption(
            theps=appliance_truth['unknown'])
        ps = totalpower
        cluster = Clustering()
        print('miaomiaomiao?')
        del pss
        # ps.plot()
        # ps=median_filter(ps=ps)
        # ps.plot()
        # plt.show()
        # 获得states_list
        from readData.getdistributions import getDistribitions
        self.appliance_truth = appliance_truth
        # centers_list, states_list = getDistribitions(ps=ps, redd_hdf5_path='D:\SJTU\湖北项目\数据\h5s/30xusuqian.h5',
        #                                              center_path='D:\SJTU\湖北项目\数据\ori\\xusuqian')
        # centers_list, states_list = getDistribitions(ps=ps)
        centers_list, states_list = getDistribitions(
            ps=ps,
            redd_hdf5_path='/home/uftp/hubei/30%s.h5' % self.home,
            center_path='/home/uftp/hubei/ori/%s' % self.home,
            load=False)
        self.appliance_consumtion = appliance_consumtion
        self.inference = Inference(total_ps=ps, states_list=states_list)

    def test_infer_operating_list_to_chunks(self):
        self.setUp_dynamic()
        infer_result = self.inference.infer_operating_list_to_chunks_dynamic()
        infer_result.get_estimated_ps_dict()
        print(self.appliance_consumtion)
        performance = Performance(infer_result=infer_result,
                                  appliance_truth=self.appliance_truth)
        error = performance.dissagga_metric()
        print(1 - error)
        print(Parameters())
        print()

    def test_infer_operating_list_to_chunks_static(self):
        import staticGO
        appliance_truth, ps, states_list, centers, state_r3_list, appliance_consumtion = staticGO.staticGo(
            self.datastore, self.datarange)
        self.inference = Inference(total_ps=ps,
                                   states_list=states_list,
                                   centers_list=centers)
        infer_result = self.inference.infer_operating_list_to_chunks_static(
            state_r3_list=state_r3_list)
        infer_result.get_estimated_ps_dict()
        print(appliance_consumtion)
        performance = Performance(infer_result=infer_result,
                                  appliance_truth=appliance_truth)
        df1, df2 = performance.dissagga_metric2()
        error = performance.dissagga_metric()
        print(1 - error)
        print(self.inference.para)
        print()


# t=TestInference()
# t.setUp()
# t.test_infer_operating_list_to_chunks()
示例#2
0
class TestInference(TestCase):
    def setUp(self):
        self.unknown = True
        self.home = 'xiayurong'
        self.datastore = Data_store(
            redd_hdf5_path='/home/uftp/hubei/4test/30%s.h5' % self.home)
        self.datarange = [
            pd.Timestamp('2017-12-10 00:00:00'),
            pd.Timestamp('2017-12-17 00:00:00')
        ]
        print('')

    def setUp_dynamic(self):
        # select total power data in a period
        # datastore = Data_store(redd_hdf5_path='D:\SJTU\湖北项目\数据\h5s/30xiayurong.h5')
        # datastore = Data_store(redd_hdf5_path='D:\SJTU\湖北项目\数据\h5s/30xusuqian.h5')
        # datastore = Data_store(redd_hdf5_path='/home/uftp/hubei/30xusuqian.h5')
        # datastore = Data_store(redd_hdf5_path='/home/uftp/hubei/30fake.h5')
        pss = []
        # datarange = [pd.Timestamp('2017-12-15 10:00:00'), pd.Timestamp('2017-12-15 12:00:00')]
        appliance_truth = {}
        appliance_consumtion = {}
        if self.unknown:
            for app in self.datastore.appliance_names:
                if (app in ['TVbox', 'TV']) and self.home == 'xusuqian':
                    continue
                if (app in ['lamp', 'TV']) and self.home == 'xiayurong':
                    continue
                if (app in ['sterilizer', 'iron', 'kitchen', 'TV'
                            ]) and self.home == 'zhouqi':
                    continue
                if (app == 'meter'):
                    for key in self.datastore.keys_dict[app]:
                        meterdata = self.datastore.get_instance_ps(
                            appliance_name=app, instance=key
                        ).loc[self.datarange[0]:self.datarange[-1]]
                        try:
                            ps += meterdata
                        except:
                            ps = meterdata
                    continue
                for key in self.datastore.keys_dict[app]:
                    theps = self.datastore.get_instance_ps(
                        appliance_name=app,
                        instance=key).loc[self.datarange[0]:self.datarange[-1]]
                    appliance_truth[app + '_' + key] = theps
                    appliance_consumtion[app + '_' +
                                         key] = Tools.ps_consumption(
                                             theps=theps)
        else:
            for app in self.datastore.appliance_names:
                if (app in ['TVbox', 'TV']) and self.home == 'xusuqian':
                    continue
                if (app in ['lamp', 'TV']) and self.home == 'xiayurong':
                    continue
                if (app in ['sterilizer', 'iron', 'kitchen', 'TV'
                            ]) and self.home == 'zhouqi':
                    continue
                if (app in ['meter', 'unknown']): continue
                for key in self.datastore.keys_dict[app]:
                    theps = self.datastore.get_instance_ps(
                        appliance_name=app,
                        instance=key).loc[self.datarange[0]:self.datarange[-1]]
                    appliance_truth[app + '_' + key] = theps
                    appliance_consumtion[app + '_' +
                                         key] = Tools.ps_consumption(
                                             theps=theps)
                    pss.append(theps)
            ps = aggregate_with_resample(pss)
            del pss
        # ps.plot()
        # ps=median_filter(ps=ps)
        # ps.plot()
        # plt.show()
        # 获得states_list
        from readData.getdistributions import getDistribitions
        self.appliance_truth = appliance_truth
        # centers_list, states_list = getDistribitions(ps=ps, redd_hdf5_path='D:\SJTU\湖北项目\数据\h5s/30xusuqian.h5',
        #                                              center_path='D:\SJTU\湖北项目\数据\ori\\xusuqian')
        # centers_list, states_list = getDistribitions(ps=ps)
        centers_list, states_list = getDistribitions(
            ps=ps,
            redd_hdf5_path='/home/uftp/hubei/30%s.h5' % self.home,
            center_path='/home/uftp/hubei/ori/%s' % self.home,
            load=False)
        self.appliance_consumtion = appliance_consumtion
        self.inference = Inference(total_ps=ps, states_list=states_list)

    def test_infer_operating_list_to_chunks(self):
        self.setUp_dynamic()
        infer_result = self.inference.infer_operating_list_to_chunks_dynamic()
        infer_result.get_estimated_ps_dict()
        print(self.appliance_consumtion)
        performance = Performance(infer_result=infer_result,
                                  appliance_truth=self.appliance_truth)
        error = performance.dissagga_metric()
        print(1 - error)
        print(Parameters())
        print()

    def test_infer_operating_list_to_chunks_static(self):
        import staticGO
        appliance_truth, ps, states_list, centers, state_r3_list,appliance_consumtion\
            =staticGO.staticGo(self.datastore,self.datarange, home=self.home, unknown=self.unknown)
        print(datetime.datetime.now())
        self.inference = Inference(total_ps=ps,
                                   states_list=states_list,
                                   centers_list=centers)
        infer_result = self.inference.infer_operating_list_to_chunks_static(
            state_r3_list=state_r3_list)
        infer_result.get_estimated_ps_dict()
        print(appliance_consumtion)
        performance = Performance(infer_result=infer_result,
                                  appliance_truth=appliance_truth)
        df1, df2 = performance.dissagga_metric2()
        error = performance.dissagga_metric()
        print(1 - error)
        print(self.inference.para)
        print()
        print(datetime.datetime.now())
        print()


# t=TestInference()
# t.setUp()
# t.test_infer_operating_list_to_chunks()