f1scores = [[[] for i in range(len(test_channels))] for j in range(len(train_channels))] for run in range(run_nr): print('run ' + str(run)) # firstly split the input into train test doas_train, doas_test, ind_test = train_test_doa(doas, 0.2) for ind_train, ch_train in enumerate(train_channels): for ind_test, ch_test in enumerate(test_channels): print("start running for channel " + str(ch_train) + ' and ' + str(ch_test) + ' ' + segment + '\n') # SplitData(self, doas, channels, levels, segment, orientation): train_data = SplitData(doas_train, [ch_train], ['light', 'deep'], [segment], ['all']) test_data = SplitData(doas_test, [ch_test], ['light', 'deep'], [segment], ['all']) X_train, y_train = obtain_features_labels(train_data, encoding) x_test, y_test = obtain_features_labels(test_data, encoding) # model = SVC(gamma="auto") # model = DecisionTreeClassifier(random_state=99, criterion='gini', max_depth=2) model = RandomForestClassifier(n_estimators=5000, max_depth=5, min_samples_split=5, min_samples_leaf=10) model.fit(X_train, y_train) predictions = model.predict(x_test) report = classification_report(y_test, predictions, output_dict=True) acc = report['accuracy'] f1sc = report['weighted avg']['f1-score'] accuracies[ind_train][ind_test].append(acc) f1scores[ind_train][ind_test].append(f1sc)
np.savetxt(write_file, np.array(ind_test), fmt="%s", newline=' ') write_file.write('\n') for ind_segment, segment in enumerate(segments): for channel in range(len(all_channels)): print("start running for channel " + str(all_channels[channel]) + ' ' + segment + '\n') # SplitData(self, doas, channels, levels, segment, orientation): train_data = ExtractData(doas_train, [all_channels[channel]], ['light', 'deep'], [segment], ['all']) test_data = ExtractData(doas_test, [all_channels[channel]], ['light', 'deep'], [segment], ['all']) X_train, y_train = obtain_features_labels(train_data, encoding, selected_symbols=15) x_test, y_test = obtain_features_labels(test_data, encoding, selected_symbols=15) model = RandomForestClassifier(n_estimators=5000, max_depth=5, min_samples_split=5, min_samples_leaf=10) model.fit(X_train, y_train) predictions = model.predict(x_test) report = classification_report(y_test, predictions, output_dict=True)