filled=True,
                                   rounded=True,
                                   special_characters=True,
                                   feature_names=labels_features,
                                   class_names=['0', '1'])
        # Convert to png
        call([
            'dot', '-Tpng', (subDir + 'HFCR - ' + key + ' - dtree.dot'), '-o',
            (subDir + 'HFCR Decision Trees - ' + key +
             ' - tree representation.png'), '-Gdpi=600'
        ])

        prd_trn_lst = best_model[0]
        prd_tst_lst = best_model[1]

        ds.plot_evaluation_results_kfold([0, 1], trn_y_lst, prd_trn_lst,
                                         tst_y_lst, prd_tst_lst)
        plt.suptitle('HFCR Decision Trees - ' + key +
                     ' - Performance & Confusion matrix')
        plt.savefig(subDir + 'HFCR Decision Trees - ' + key +
                    ' - Performance & Confusion matrix')

        if (offset == 1):
            break
        if (last_accuracy > best_accuracy and best_accuracy != -1):
            best_accuracy = last_accuracy
            last_accuracy = -1
            count += offset
            offset -= 1
        elif (best_accuracy == -1):
            best_accuracy = last_accuracy
            count += 1
                ds.multiple_line_chart(
                    n_estimators,
                    overfit_values[d][f],
                    ax=axs[k, i],
                    title=
                    'Overfitting for max_depth = %d with max_features = %f' %
                    (d, f),
                    xlabel='n_estimators',
                    ylabel='accuracy',
                    percentage=True)
        plt.suptitle('HFCR Overfitting - Random Forests')
        plt.savefig(subDir + 'HFCR Overfitting - Random Forests')

        print('HFCR Random Forests - Performance & Confusion Matrix')
        prd_trn_lst = best_model[0]
        prd_tst_lst = best_model[1]

        ds.plot_evaluation_results_kfold(pd.unique(y), trn_y_lst, prd_trn_lst,
                                         tst_y_lst, prd_tst_lst)
        plt.suptitle('HFCR Random Forests - ' + key +
                     '- Performance & Confusion Matrix')
        plt.savefig(subDir + 'HFCR Random Forests - ' + key +
                    '- Performance & Confusion Matrix')
        print()

        plt.close("all")

plt.figure(figsize=(7, 7))
ds.multiple_bar_chart(['Train', 'Test'], best_accuracies, ylabel='Accuracy')
plt.suptitle('HFCR Sampling & Feature Selection')
plt.savefig(graphsDir + 'HFCR Sampling & Feature Selection')