示例#1
0
    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
示例#2
0
    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
示例#3
0
    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
示例#4
0
    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
示例#5
0
    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
示例#6
0
    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