def trainELMClassifier(trainData, trainLabels, testData): print("\nTraining ELM Classifier...") trainData = np.asarray(trainData) trainLabels = np.asarray(trainLabels) print(trainData.shape) print(trainLabels.shape) # create initialize elm activation functions nh = 100 activation = 'tanh' if activation == 'rbf': act_layer = RBFRandomLayer(n_hidden=nh, random_state=0, rbf_width=0.001) elif activation == 'tanh': act_layer = MLPRandomLayer(n_hidden=nh, activation_func='tanh') elif activation == 'tribas': act_layer = MLPRandomLayer(n_hidden=nh, activation_func='tribas') elif activation == 'hardlim': act_layer = MLPRandomLayer(n_hidden=nh, activation_func='hardlim') # initialize ELM Classifier elm = GenELMClassifier(hidden_layer=act_layer) t0 = time() elm.fit(trainData, trainLabels) print("\nTraining finished in %0.3fs \n" % (time() - t0)) t0 = time() predictedLabels = elm.predict(testData) print("\nTesting finished in %0.3fs" % (time() - t0)) t0 = time() confidence_scores = elm.decision_function(testData) print("\nTesting finished in %0.3fs" % (time() - t0)) print("\nPredicted Labels") print("----------------------------------") print(predictedLabels) print("\nConfidence Scores") print("----------------------------------") print(confidence_scores) params = { 'nh': nh, 'af': activation, } return confidence_scores, predictedLabels, params
for train_index, test_index in sKF.split(std_X, y): i += 1 x_train = std_X[train_index] y_train = y[train_index] x_test = std_X[test_index] y_test = y[test_index] #------------------------------------------------------------------------------- grbf = GRBFRandomLayer(n_hidden=500, grbf_lambda=0.0001) act = MLPRandomLayer(n_hidden=500, activation_func='sigmoid') rbf = RBFRandomLayer(n_hidden=290, rbf_width=0.0001, activation_func='sigmoid') clf = GenELMClassifier(hidden_layer=rbf) clf.fit(x_train, y_train.ravel()) y_pre = clf.predict(x_test) y_score = clf.decision_function(x_test) fpr, tpr, thresholds = roc_curve(y_test, y_score) tprs.append(tpr) fprs.append(fpr) roc_auc = auc(fpr, tpr) tn, fp, fn, tp = confusion_matrix(y_test, y_pre).ravel() test_acc = (tn + tp) / (tn + fp + fn + tp) test_Sn = tp / (fn + tp) test_Sp = tn / (fp + tn) mcc = (tp * tn - fp * fn) / pow( ((tp + fp) * (tp + fn) * (tn + fp) * (tn + fn)), 0.5) final_test_acc.append(test_acc) final_test_Sn.append(test_Sn) final_test_Sp.append(test_Sp) final_mcc.append(mcc)