コード例 #1
0
    def train(self, splits, X=None, y=None):
        """train the CNN
        
        Arguments:
            splits {int array} -- split of data between types
        
        Keyword Arguments:
            X {ndarray} -- train input data (default: {None})
            y {ndarray} -- train labels (default: {None})
        """
        if not X or not y:
            X = self.data['features']
            y = self.data['labels']

        X_train, y_train, X_val, y_val, X_test, y_test = split_data(
            X, y, splits)

        y_train = to_categorical(y_train)
        y_val = to_categorical(y_val)
        y_test = to_categorical(y_test)

        self.model.fit(X_train,
                       y_train,
                       batch_size=128,
                       epochs=200,
                       verbose=2,
                       validation_data=(X_val, y_val))

        self.test(X_test, y_test)
コード例 #2
0
    def train(self, splits, X=None, y=None, verbose=False):
        """train the svm
        
        Arguments:
            splits {float array} -- test train splits
        
        Keyword Arguments:
            X {ndarray} -- input data (default: {None})
            y {ndarray} -- labels (default: {None})
            verbose {bool} -- Print output (default: {False})
        """
        if not X or not y:
            X = self.data['features']
            y = self.data['labels']
        X_train, y_train, X_test, y_test = split_data(X, y, splits)

        if verbose:
            print("Feature Shape for SVM ", self.title)
            print(X_train.shape)
            print("Label Shape for SVM ", self.title)
            print(y_train.shape)

        self.model.fit(X_train, y_train)
        if len(X_test) <= 0:
            return
        self.test(X_test, y_test, verbose)
コード例 #3
0
ファイル: svm.py プロジェクト: jaiveerk/FML
    def voter_metrics(self, splits, X=None, y=None, verbose=False):
        ''' 
        '''
        if not X or not y:
            X = self.data['features']
            y = self.data['labels']

        X_train, y_train, X_test, y_test = split_data(X, y, splits)

        true_neg =0
        false_neg =0
        true_pos =0
        false_pos =0
        for i,X_i in enumerate(X_test):
            pred = self.predict(X_i.reshape(1, -1))
            true = int(y_test[i])
            pred = int(pred)

            if true == 0 and pred == 0:
                true_neg += 1
            elif true == 0 and pred == 1:
                false_pos += 1
            elif true == 1 and pred == 0:
                false_neg += 1
            elif true == 1 and pred == 1:
                true_pos += 1

        false_posR = false_pos/ (true_neg + false_pos)
        balance = (false_neg + true_pos)/(true_neg + false_pos)
        pop = false_neg + true_pos +true_neg + false_pos
        self.metrics['balance'] = balance
        self.metrics['False Positive Rate'] = false_posR
        self.metrics['pop'] = pop
コード例 #4
0
    def build_conf_matrix(self, splits, X=None, y=None, verbose=False):
        if not X or not y:
            X = self.data['features']
            y = self.data['labels']

        X_train, y_train, X_test, y_test = split_data(X, y, splits)

        ## Want to step through the X_test and match up with y_test manually

        cm = ConfusionMatrix()

        for i, X_i in enumerate(X_test):
            pred = self.predict(X_i.reshape(1, -1))
            true = int(y_test[i])
            pred = int(pred)
            cm.add_value(true, pred)

        matrix = cm.print_matrix()

        return matrix