def run(self, X_train, X_test, y_train, classes): wsd = wp.Wisard(self.addr_size) for i, y in enumerate(y_train): start_time = time.time() y.sort() y_ps = "-".join(y) ds = wp.DataSet() ds.add(wp.BinInput(X_train[i]), y_ps) wsd.train(ds) self.training_time.append(time.time() - start_time) y_pred_ps = [] for x in X_test: start_time = time.time() ds_test = wp.DataSet() ds_test.add(wp.BinInput(x)) y_pred_ps.append(wsd.classify(ds_test)[0]) self.classification_time.append(time.time() - start_time) y_pred = [] for y in y_pred_ps: y_pred.append(y.split("-")) return y_pred
def run(self, X_train, X_test, y_train, classes): wsds = {} for label in classes: wsds[label] = wp.ClusWisard(self.addr_size, self.minScore, self.threshold, self.discriminatorLimit) start_time = time.time() for i in range(len(X_train)): ds = wp.DataSet() if label in y_train[i]: ds.add(wp.BinInput(X_train[i]), "true") wsds[label].train(ds) else: ds.add(wp.BinInput(X_train[i]), "false") wsds[label].train(ds) self.training_time.append(time.time() - start_time) y_pred = [[]] * len(X_test) ds_test = wp.DataSet() for i in range(len(X_test)): ds_test.add(X_test[i]) for label in classes: start_time = time.time() outputs = wsds[label].classify(ds_test) self.classification_time.append( (time.time() - start_time) / len(X_test)) for i in range(len(outputs)): if outputs[i] == "true": y_pred[i].append(label) return y_pred
def run(self, X_train, X_test, y_train, classes): clus = wp.ClusWisard(self.addr_size, self.minScore, self.threshold, self.discriminatorLimit) for i, y in enumerate(y_train): start_time = time.time() y.sort() y_ps = "-".join(y) ds = wp.DataSet() ds.add(wp.BinInput(X_train[i]), y_ps) clus.train(ds) self.training_time.append(time.time() - start_time) y_pred_ps = [] for x in X_test: start_time = time.time() ds_test = wp.DataSet() ds_test.add(x) y_pred_ps.append(clus.classify(ds_test)[0]) self.classification_time.append(time.time() - start_time) y_pred = [] for y in y_pred_ps: y_pred.append(y.split("-")) return y_pred
def classify(self, test_dataset): results = [] for i in range(0, len(test_dataset)): result = {} for j in range(0, len(self.nets)): test = wp.DataSet() bi = wp.BinInput(test_dataset.get(i)) test.add(bi, test_dataset.getLabel(i)) r = self.nets[j].classify(test) if (r[0] in result): result[r[0]] += self.ensemble_weights[j] else: result[r[0]] = 0 results.append(max(result, key=result.get)) return results
def classify(self, test_dataset): results = [] for i in range(0, len(test_dataset)): scores = [] test = wp.DataSet() bi = wp.BinInput(test_dataset.get(i)) test.add(bi, test_dataset.getLabel(i)) for j in range(0, len(self.nets)): scores.append(self.nets[j].classify(test)[0]) out = self.nets[0].getAllScores(test) labels = self.get_labels(out) result = 0 if (self.voting == "borda0"): result = self.borda_count_0(scores, labels) else: if (self.voting == "borda1"): result = self.borda_count_1(scores, labels) else: result = self.dowdall(scores, labels) results.append(result) return results
def classify(self, test_dataset): results = [] for i in range(0, len(test_dataset)): votes = [] scores = [] test = wp.DataSet() bi = wp.BinInput(test_dataset.get(i)) test.add(bi, test_dataset.getLabel(i)) for j in range(0, len(self.nets)): votes.append(self.get_scores(self.nets[j].getAllScores(test))) labels = votes[0] for i in range(len(labels)): score = [] for j in range(len(votes)): if(labels[i] in votes[j]): score.append(votes[j].index(labels[i])) else: score.append(votes[j].index(max(votes[j]))) scores.append(score) result = 0 if(self.voting == "plurality1"): result = self.plurality1(scores, labels) else: if(self.voting == "plurality2"): result = self.plurality2(scores, labels) else: if(self.voting == "plurality3"): result = self.plurality3(scores, labels) else: result = self.plurality4(scores, labels, 0.3) results.append(result) return results