Esempio n. 1
0
    def get_changepoint_BinCheb(self, instances, is_normal=False):
        cheb = ""
        if self.is_k:
            cheb = chebyshev_base(min_size=self.min_winsize,
                                  max_window=self.max_winsize,
                                  k=self.K)
        else:
            cheb = chebyshev_base_e(min_size=self.min_winsize,
                                    max_window=self.max_winsize,
                                    e=self.E)
        bin = binning(bin_period=self.Bin_size)
        change_points = []
        temp_bin = []
        mean_list = []
        # instances = data.get_dataset_test(i)
        for index, instance in enumerate(instances):
            is_change = False
            can_add_bin = bin.can_add_bin()
            if not can_add_bin:
                temp_bin.append(bin.get_bin())
                mean_bin = mean(bin.get_bin())
                mean_list.append(mean_bin)
                is_change = cheb.add_element(mean_bin)
                bin = binning(bin_period=self.Bin_size)
            bin.add_instance(instance)

            if is_change:
                if is_normal:
                    for j in range(index - self.Bin_size, index):
                        change_points.append(j)
                else:
                    change_points.append(index)
        self.cheb = cheb
        self.ex = cheb.get_exception()
        return change_points, mean_list
Esempio n. 2
0
def get_Changepoint_fix_Bin(bin_size, instances, e, max_window=100):
    bin = binning(bin_period=bin_size)
    cheb = cheb_noDY(bin_size=bin_size, e=e, max_window=max_window)
    change_points = []
    for index, instance in enumerate(instances):
        bin.add_instance(instance)
        can_add_bin = bin.can_add_bin()
        if not can_add_bin:
            mean_bin = mean(bin.get_bin())
            bln_change = cheb.add_element(mean_bin)
            if bln_change:
                change_points.append(index)
            bin = binning(bin_period=bin_size)

    return change_points
Esempio n. 3
0
def cal_k_tran(data,input_k,input_bin):
    data.clear_change_points()
    cheb = chebyshev_base(min_size=60, max_window=60, k=input_k)
    bin = binning(bin_period=input_bin)
    for i, file_name in enumerate(data.get_files_test()):
        change_points = []
        instances = data.get_dataset_test(i)
        for index, instance in enumerate(instances):
            is_change = False
            can_add_bin = bin.can_add_bin()
            if can_add_bin:
                bin.add_instance(instance)
            else:
                mean_bin = mean(bin.get_bin())
                is_change = cheb.add_element(mean_bin)
                bin.reset_bin()

            # if is_change:
            #     change_points.append(index)
            if is_change:
                for j in range(index - bin_period + 1, index + 1):
                    change_points.append(j)

        data.set_change_points(change_points)
    return data
Esempio n. 4
0
def gen_dataBin(instances, input_bin):
    mean_list = []
    bin = binning(bin_period=input_bin)
    for index_in , instance in enumerate(instances):
        can_add_bin = bin.can_add_bin()
        if not can_add_bin:
            mean_bin = bin.get_mean_bin()
            for i in range(input_bin):
                mean_list.append(mean_bin)
            bin = binning(bin_period=input_bin)

        bin.add_instance(instance)
    if bin.current_size()>0:
        mean_bin = bin.get_mean_bin()
        for i in range(bin.current_size()):
            mean_list.append(mean_bin)
    return mean_list
Esempio n. 5
0
def convert_databin(bin_size, instances):
    bin = binning(bin_period=bin_size)
    data_after_bin = []
    for index, instance in enumerate(instances):
        can_add_bin = bin.can_add_bin()
        if not can_add_bin:
            mean_bin = mean(bin.get_bin())
            for i in range(bin_size):
                data_after_bin.append(mean_bin)
            bin = binning(bin_period=bin_size)
        bin.add_instance(instance)
        if index == len(instances) - 1:
            if len(bin.get_bin()) >= 0:
                mean_bin = mean(bin.get_bin())
                for i in range(len(bin.get_bin())):
                    data_after_bin.append(mean_bin)

    return data_after_bin
Esempio n. 6
0
    def get_changepoint_skmethod(self, instances, is_normal=False):
        change_points = []
        ks = sk_detection(k=self.K)
        bin = binning(bin_period=self.Bin_size)
        for index, instance in enumerate(instances):
            is_change = False
            can_add_bin = bin.can_add_bin()
            if not can_add_bin:
                is_change = ks.add_element(bin)
                bin = binning(bin_period=self.Bin_size)
            bin.add_instance(instance)

            if is_change:
                if is_normal:
                    for j in range(index - self.Bin_size, index):
                        change_points.append(j)
                else:
                    change_points.append(index)

        return change_points
Esempio n. 7
0
 def __init__(self, max_window=100, k=3, bin_size=3):
     super().__init__()
     self.window = []
     self.sample_count = None
     self._width = 0
     self.k = k
     self._variance = None
     self.max_size = max_window
     self.count_detect = 0
     self.reset()
     self.mean_list = []
     self.std_low_list = []
     self.std_high_list = []
     self.bin_size = bin_size
     self.bin = binning(bin_period=bin_size)
Esempio n. 8
0
    def reset(self):
        """ reset

        Resets the change detector parameters.

        """
        super().reset()
        self.sample_count = 1
        # self.mean = 1.0
        self._variance = 0.0
        self._width = 0
        self.window = []
        self.mean_list = []
        self.std_low_list = []
        self.std_high_list = []
        self.bin_size = 3
        self.bin = binning(bin_period=self.bin_size)
Esempio n. 9
0
 def __init__(self, max_window=100, k=3, bin_size=3):
     super().__init__()
     self.window = []
     self.sample_count = None
     self._width = 0
     self.k = k
     self._total = None
     # self._mean = None
     self._variance = None
     self.max_size = max_window
     # self.warning_level = warning_level
     # self.out_control_level = out_control_level
     self.count_detect = 0
     self.mean_list = []
     self.std_low_list = []
     self.std_high_list = []
     self.bin_size = bin_size
     self.bin = binning(bin_period=bin_size)
Esempio n. 10
0
    def get_changepoint_kalmanBinCheb(self,
                                      instances,
                                      inpput_x=10,
                                      input_var=10000,
                                      model_mean=0,
                                      model_variance=0.01):
        x_start = inpput_x
        x_var_start = input_var
        model_mean = model_mean
        model_variance = model_variance

        cheb = chebyshev_base(min_size=self.min_winsize,
                              max_window=self.max_winsize,
                              k=self.K)
        bin = binning(bin_period=self.Bin_size)

        change_points = []
        measurements = instances
        # xs = np.zeros((len(measurements), 2))
        # ps = np.zeros((len(measurements), 2))
        x = x_start
        x_var = x_var_start

        for index, measurement in enumerate(measurements):
            x, x_var = kalman.update(x, x_var, measurement, model_variance)
            # xs[i] = x, x_var
            x, x_var = kalman.predict(x, x_var, model_mean, model_variance)
            # ps[i] = x, x_var

            is_change = False
            can_add_bin = bin.can_add_bin()
            if not can_add_bin:
                mean_bin = mean(bin.get_bin())
                is_change = cheb.add_element(mean_bin)
                bin.reset_bin()
            bin.add_instance(x)
            if is_change:
                for j in range(index - self.bin_period + 1, index + 1):
                    change_points.append(j)
        return change_points
Esempio n. 11
0
    def add_element(self, value):
        bln_change = False
        self.bin.add_instance(value)
        can_add_bin = self.bin.can_add_bin()
        if not can_add_bin:
            if len(self.window) > 0:
                last_bin = self.window[-1]
                mean_pre = last_bin.get_mean_bin()
                std_pre = last_bin.get_std_bin()
                mean_cur = self.bin.get_mean_bin()
                std_cur = self.bin.get_std_bin()
                kstar = abs(mean_pre - mean_cur) / (std_pre + std_cur)
                if kstar >= self.k:
                    bln_change = True
            self.window.append(self.bin)
            self.in_concept_change = bln_change
            self.bin = binning(bin_period=self.bin_size)

            if len(self.window) > self.max_size:
                self.window.pop(0)

        return bln_change
Esempio n. 12
0
def cal_k_tran(data, input_k, input_bin):
    x_start = 10
    x_var_start = 10000
    model_mean = 0
    model_variance = 0.01

    data.clear_change_points()
    cheb = chebyshev_base(min_size=60, max_window=60, k=input_k)
    bin = binning(bin_period=input_bin)
    for i, file_name in enumerate(data.get_files_test()):
        change_points = []
        measurements = data.get_dataset_test(i)
        xs = np.zeros((len(measurements), 2))
        ps = np.zeros((len(measurements), 2))
        x = x_start
        x_var = x_var_start

        for index, measurement in enumerate(measurements):
            x, x_var = kalman.update(x, x_var, measurement, model_variance)
            xs[i] = x, x_var
            x, x_var = kalman.predict(x, x_var, model_mean, model_variance)
            ps[i] = x, x_var

            is_change = False
            can_add_bin = bin.can_add_bin()
            if not can_add_bin:
                mean_bin = mean(bin.get_bin())
                is_change = cheb.add_element(mean_bin)
                bin.reset_bin()
            bin.add_instance(x)
            if is_change:
                for j in range(index - bin_period + 1, index + 1):
                    change_points.append(j)

        data.set_change_points(change_points)
    return data
Esempio n. 13
0
                            #                  interval=I)
                            data = data_stream(path='D:\\git_project\\data stream\\lightcurve_benchmark\\{}'.format(data_type), type=type,
                                               pattern=pattern, len=L,
                                               interval=I)
                            data.load_data_fromfile()

                            # binning process
                            cheb = chebyshev_base(min_size=60,max_window=60,k=k)

                            for i,file_name in enumerate(data.get_files_test()):
                                change_points = []
                                measurements = data.get_dataset_test(i)
                                xs = np.zeros((len(measurements), 2))
                                ps = np.zeros((len(measurements), 2))

                                bin = binning(bin_period=bin_period)

                                x = x_start
                                x_var = x_var_start
                                for index, measurement in enumerate(measurements):
                                    x, x_var = kalman.update(x, x_var, measurement, model_variance)
                                    xs[i] = x, x_var
                                    x, x_var = kalman.predict(x, x_var, model_mean, model_variance)
                                    ps[i] = x, x_var

                                    is_change = False
                                    can_add_bin = bin.can_add_bin()
                                    if can_add_bin:
                                        bin.add_instance(x)
                                    else:
                                        mean_bin = mean(bin.get_bin())
Esempio n. 14
0
 def resetTempBin(self):
     self.bin = binning(bin_period=self.binSize)
Esempio n. 15
0
 def reset(self):
     super().reset()
     self.bin = binning(bin_period=self.binSize)
Esempio n. 16
0
 def __init__(self, initialBin=3, windowSize=100):
     super().__init__(initialBin, windowSize)
     self.bin = binning(bin_period=self.binSize)