def concept_drift_detection(self, X, Y): if self.init_drift_detection: if self.drift_detector == "KSWIN": self.cdd = [KSWIN(w_size = 100, stat_size = 30, alpha=self.confidence) for elem in X.T] if self.drift_detector == "ADWIN": self.cdd = [ADWIN() for elem in X.T] if self.drift_detector == "DDM": self.cdd = [DDM() for elem in X.T] if self.drift_detector == "EDDM": self.cdd = [EDDM() for elem in X.T] if self.drift_detector == "KSVEC": self.cdd = KSVEC(vec_size=X.shape[1]) self.init_drift_detection = False self.drift_detected = False if not self.init_drift_detection: if self.drift_detector == "KSVEC": self.cdd.add_element(X) if self.cdd.detected_change(): self.drift_detected = True else: for elem, detector in zip(X.T, self.cdd): for e in elem: detector.add_element(e) if detector.detected_change(): self.drift_detected = True self.n_detections = self.n_detections +1 return self.drift_detected
def concept_drift_detection(self, X, Y): if self.init_drift_detection: if self.drift_detector == "KSWIN": self.cdd = [ KSWIN(w_size=100, stat_size=30, alpha=self.confidence) for elem in X.T ] if self.drift_detector == "ADWIN": self.cdd = [ADWIN() for elem in X.T] if self.drift_detector == "DDM": self.cdd = [DDM() for elem in X.T] if self.drift_detector == "EDDM": self.cdd = [EDDM() for elem in X.T] self.init_drift_detection = False self.drift_detected = False if not self.init_drift_detection: for elem, detector in zip(X.T, self.cdd): for e in elem: detector.add_element(e) if detector.detected_change(): self.drift_detected = True self.n_detections = self.n_detections + 1 return self.drift_detected # if name=="__main__": # from skmultiflow import
def make_detector(warn=False, s=1e-5, drift_detector='adwin'): sensitivity = s * 10 if warn else s if drift_detector == 'adwin': return ADWIN(delta=sensitivity) if drift_detector == 'EDDM': return EDDM() if drift_detector == 'DDM': return DDM()
def __init__(self, list_drifts_detectors = [[ADWIN(delta=0.5), ADWIN(delta=0.05)], [DDM(min_num_instances=100, warning_level=2.0, out_control_level=3.0)], [PageHinkley(min_instances=100, delta=0.05, threshold=50, alpha=0.9999), PageHinkley(min_instances=100, delta=0.05, threshold=100, alpha=0.9999)]], # [SeqDrift2ChangeDetector(delta=0.5, block_size=100), SeqDrift2ChangeDetector(delta=0.05, block_size=100)]], list_names_drifts_detectors = ['ADWIN','DDM','PH'], stream = BernoulliStream(drift_period = 1000, n_drifts = 50, widths_drifts = [1], mean_errors = [0.1,0.9]), n_runs = 1, name_file = None): self.name_file = name_file if (self.name_file == None) or not(isinstance(self.name_file, str)) : raise ValueError("Attribute 'name_file' must be specified and must be a string, passed {}".format(type(self.name_file))) self.list_drifts_detectors = list_drifts_detectors self.list_names_drifts_detectors = list_names_drifts_detectors self.stream = stream self.n_runs = n_runs self.lenght_stream = stream.n_samples self.true_positions = stream.list_positions self.n_drift_detectors = len(self.list_drifts_detectors)
def tst(): ddm = DDM() data_stream = np.random.randint(2, size=2000) average_prediciton = [] for i in range(1000, 1200): data_stream[i] = 1 for i in range(1500, 1700): data_stream[i] = 1 for i in range(2000): ddm.add_element(data_stream[i]) if ddm.detected_warning_zone(): print('Warning zone has been detected in data: ' + str(data_stream[i]) + ' - of index: ' + str(i)) if ddm.detected_change(): print('Change has been detected in data: ' + str(data_stream[i]) + ' - of index: ' + str(i)) average_prediciton.append(ddm.miss_prob) # print('X', hddm.X_, ' ', 'Z', hddm.Z_) # print('X_e', hddm.X_epsilon, ' ', 'Z', hddm.Z_epsilon) showPlot(average_prediciton)
[PageHinkley(min_instances=30, delta=0.005, threshold=0.5, alpha=0.999), PageHinkley(min_instances=30, delta=0.005, threshold=1.5, alpha=0.999)], [PageHinkley(min_instances=30, delta=0.005, threshold=0.5, alpha=0.9), PageHinkley(min_instances=30, delta=0.005, threshold=1.5, alpha=0.9)], [PageHinkley(min_instances=30, delta=0.05, threshold=1.5, alpha=0.999), PageHinkley(min_instances=30, delta=0.05, threshold=2.5, alpha=0.999)], [PageHinkley(min_instances=30, delta=0.05, threshold=1.5, alpha=0.9), PageHinkley(min_instances=30, delta=0.05, threshold=2.5, alpha=0.9)], [PageHinkley(min_instances=30, delta=0.05, threshold=0.5, alpha=0.999), PageHinkley(min_instances=30, delta=0.05, threshold=1.5, alpha=0.999)], [PageHinkley(min_instances=30, delta=0.05, threshold=0.5, alpha=0.9), PageHinkley(min_instances=30, delta=0.05, threshold=1.5, alpha=0.9)], [ADWIN(delta=0.5), ADWIN(delta=0.05)], [ADWIN(delta=0.4), ADWIN(delta=0.04)], [ADWIN(delta=0.3), ADWIN(delta=0.03)], [ADWIN(delta=0.2), ADWIN(delta=0.02)], [ADWIN(delta=0.1), ADWIN(delta=0.01)], [ADWIN(delta=0.05), ADWIN(delta=0.005)], [ADWIN(delta=0.02), ADWIN(delta=0.002)], [ADWIN(delta=0.01), ADWIN(delta=0.001)], [ADWIN(delta=0.001), ADWIN(delta=0.0001)], [DDM(min_num_instances=15, warning_level=0.5, out_control_level=1.0)], [DDM(min_num_instances=15, warning_level=0.75, out_control_level=1.25)], [DDM(min_num_instances=15, warning_level=1, out_control_level=1.5)], [DDM(min_num_instances=15, warning_level=1.25, out_control_level=1.75)], [DDM(min_num_instances=15, warning_level=1.5, out_control_level=2.0)], [DDM(min_num_instances=30, warning_level=0.5, out_control_level=1.0)], [DDM(min_num_instances=30, warning_level=0.75, out_control_level=1.25)], [DDM(min_num_instances=30, warning_level=1, out_control_level=1.5)], [DDM(min_num_instances=30, warning_level=1.25, out_control_level=1.75)], [DDM(min_num_instances=30, warning_level=1.5, out_control_level=2.0)], [SeqDrift2ChangeDetector(delta=0.5, block_size=100), SeqDrift2ChangeDetector(delta=0.05, block_size=100)], [SeqDrift2ChangeDetector(delta=0.4, block_size=100), SeqDrift2ChangeDetector(delta=0.04, block_size=100)], [SeqDrift2ChangeDetector(delta=0.3, block_size=100), SeqDrift2ChangeDetector(delta=0.03, block_size=100)], [SeqDrift2ChangeDetector(delta=0.2, block_size=100), SeqDrift2ChangeDetector(delta=0.02, block_size=100)], [SeqDrift2ChangeDetector(delta=0.1, block_size=100), SeqDrift2ChangeDetector(delta=0.01, block_size=100)], [SeqDrift2ChangeDetector(delta=0.05, block_size=100), SeqDrift2ChangeDetector(delta=0.005, block_size=100)],
def __init__(self): """Inicjalizacja klasy algorytmu DDM""" self.name = 'DDM' self.model = DDM() self.change_indexes = [] self.warning_zones_indexes = []
######################## CURIE ################### lst_dim = [n_bins] * n_feats curie = CA_VonNeumann_Classifier(bins=[], bins_margin=bins_margin, dimensions=lst_dim, cells=empties(lst_dim)) limits_automata = list(np.zeros(1)) #ca_names=['CURIE'] mutants_time = empty_mutant(curie.dimensions) ######################## LEARNERS ################### learners_ref = [HoeffdingTree(), KNN(), NaiveBayes()] ######################## DETECTORS ################### detectores_ref = [DDM(), EDDM(), ADWIN(), PageHinkley(), curie] n_pasos = len(datasets) * len(tipos) * len(learners_ref) * len( detectores_ref) SCORES_LER = [] TIMES_LER = [] RAMS_LER = [] DETECTIONS_LER = [] for ler in range(len(learners_ref)): learner = deepcopy(learners_ref[ler]) SCORES_DET = [] TIMES_DET = []
def reset_model(self): self.model = DDM() self.change_indexes = [] self.warning_zones_indexes = []