def execute(self, base_path, signal, subjects, window, window_overlap, selector, use_classifiers, with_all_signals, times): self.subjects = subjects self.window = window self.window_overlap = window_overlap self.selector = selector self.with_all_signals = with_all_signals predicts_rf = [] predicts_clf = [] predicts_nbrs = [] predicts_shooter = [] testings = [] for sub in subjects: print('sujeito = ', sub) training_labels, training_features = self.get_data(base_path, signal, sub, 'training') testing_labels, testing_features = self.get_data(base_path, signal, sub, 'testing') if (np.isscalar(training_features[0])): training_features = training_features.reshape(-1,1) testing_features = testing_features.reshape(-1,1) testings.insert(sub, testing_labels) if 'forest' in use_classifiers: rf = RandomForestClassifier(n_estimators=100, max_depth=5, oob_score=True) rf = rf.fit(training_features, training_labels) predictions = rf.predict(testing_features) predicts_rf.insert(sub, predictions) predicts_rf_subject = predictions if 'svm' in use_classifiers: clf = svm.SVC(gamma='scale', C=4) clf = clf.fit(training_features, training_labels) predictions = clf.predict(testing_features) predicts_clf.insert(sub, predictions) predicts_clf_subject = predictions if 'knn' in use_classifiers: knn = KNeighborsClassifier(n_neighbors=11, weights='distance', algorithm='auto', metric='euclidean') knn = knn.fit(training_features, training_labels) predictions = knn.predict(testing_features) predicts_nbrs.insert(sub, predictions) predicts_nbrs_subject = predictions if 'shooter' in use_classifiers: shoot2 = Shooter() predictions = shoot2.choose(predicts_rf_subject, predicts_nbrs_subject, predicts_clf_subject) predicts_shooter.insert(sub, predictions) return predicts_rf, predicts_clf, predicts_nbrs, predicts_shooter, testings
def one_classifier_and_decision(self, selection, number): print('Begining ' + str(number) + ' - todos com decisão ' + selection + ' ') shoot2 = Shooter() ecg_predicts_rf, ecg_predicts_clf, ecg_predicts_nbrs, ecg_predicts_shooter, ecg_testings = self.individual( 'ecg', selection, 0, True, ['svm']) eda_predicts_rf, eda_predicts_clf, eda_predicts_nbrs, eda_predicts_shooter, eda_testings = self.individual( 'eda', selection, 0, True, ['forest']) # emg_predicts_rf, emg_predicts_clf, emg_predicts_nbrs, emg_predicts_shooter, emg_testings = self.individual('emg', selection, 0, True, ['svm']) resp_predicts_rf, resp_predicts_clf, resp_predicts_nbrs, resp_predicts_shooter, resp_testings = self.individual( 'resp', selection, 0, True, ['svm']) # decision_predicts = [] # i = 0 # j = 0 # for i in range(self.CLASSIFICATION_TIMES): # decision_predicts.insert(i, []) # for j in range(len(self.BASE_SUBJECTS)): # decisao = shoot2.choose(ecg_predicts_clf[i][j], eda_predicts_rf[i][j], emg_predicts_clf[i][j]) # decision_predicts[i].insert(j, decisao) # evaluate = Evaluator() # evaluate.report(self.BASE_SUBJECTS, self.CLASSIFICATION_TIMES, ecg_testings, ecg_predicts_clf, eda_predicts_rf, emg_predicts_clf, decision_predicts, '/Volumes/My Passport/TCC/Resultados3/TODOS_' + str(number) + '_' + selection + '_1.csv') decision_predicts2 = [] i = 0 j = 0 for i in range(self.CLASSIFICATION_TIMES): decision_predicts2.insert(i, []) for j in range(len(self.BASE_SUBJECTS)): decisao = shoot2.choose(ecg_predicts_clf[i][j], eda_predicts_rf[i][j], resp_predicts_clf[i][j]) decision_predicts2[i].insert(j, decisao) evaluate = Evaluator() evaluate.report( self.BASE_SUBJECTS, self.CLASSIFICATION_TIMES, ecg_testings, ecg_predicts_clf, eda_predicts_rf, resp_predicts_clf, decision_predicts2, '/Volumes/My Passport/TCC/Resultados3/TODOS_' + str(number) + '_' + selection + '_2.csv')