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)
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)
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
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