Exemple #1
0
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)