def __init__(self):
        QMainWindow.__init__(self)
        loadUi("../ui/Prediction.ui", self)
        self.setWindowTitle("Wavelet Transform Data Analyzer Tool")
        self.setWindowIcon(QtGui.QIcon('../icon/icon.png'))
        Features.center(self)
        list_tables = Database.get_table_names(Database.database_name)
        Features.list_db_tables(self, list_tables)
        for i in range(2, 21):
            self.comboBox_kfold.addItem(str(i), i)

        self.selected_table_name = ""
        self.checkBox_knn.setChecked(True)
        self.checkBox_randomForest.setChecked(True)
        self.checkBox_svcLinear.setChecked(True)
        self.checkBox_svcPoly.setChecked(True)  # prediction page checks
        self.checkBox_gaussianNB.setChecked(True)
        self.checkBox_svcRBF.setChecked(True)

        self.pushButton.clicked.connect(self.analyze_signal)

        self.dbTables_listWidget.itemSelectionChanged.connect(self.selectionChanged)
Пример #2
0
    def run(self):
        wave_types = pywt.wavelist(kind='discrete')
        levels = [1, 2, 3]
        signals = []
        self.average, self.entropy, self.kurtosis, self.max_v, self.median, self.min_v, self.skewness, self.standart_dev = Features.check_statistics(
            self)
        table_names = Database.get_table_names(Database.database_name)

        for wave_func in wave_types:
            if wave_func.find("sym") == -1:
                for level in levels:
                    self.wavelet_level = level
                    self.wavelet_type = wave_func
                    col, self.header, self.db_header = Features.init_table(
                        self, len(self.all_signals))
                    self.db_matrix = np.zeros(
                        (len(self.all_signals), 8 * (self.wavelet_level + 1)))

                    if not any("Db_GTZAN_function_" + str(wave_func) +
                               "_Degree_" + str(level) in s
                               for s in table_names):

                        for iter in range(0, len(self.all_signals)):
                            self.signals.clear()
                            self.audio, self.sample = librosa.load(
                                self.all_signals[iter])
                            self.signals.append(self.audio)
                            self.time = np.arange(0, len(
                                self.audio)) / self.sample

                            coeffs = pywt.wavedec(
                                self.audio,
                                self.wavelet_type,
                                level=self.wavelet_level)  # wavelet analyze

                            for i in range(0, self.wavelet_level + 1):
                                self.signals.append(
                                    coeffs[i]
                                )  # adding signals array to coeffs

                            self.db_matrix[iter] = Features.insertTable(
                                self, iter, col
                            )  # level = 3 ise signals içinde  5 (4 analiz edilmiş + 1 kaynak)

                        w_name = str(wave_func)
                        table_name = "Db_GTZAN_function_" + w_name + "_Degree_" + str(
                            level)
                        Database.create_table(Database.database_name,
                                              table_name, self.db_header, "")

                        for index in range(0, len(self.all_signals)):
                            name = self.all_signals[index].split(
                                sep='/')  # name of signal
                            Database.delete_row(Database.database_name,
                                                table_name, name[-1], "")
                            Database.add_values_to_table(
                                Database.database_name, table_name, name[-1],
                                self.db_header, self.db_matrix[index],
                                "")  # adding db to values
                        print(table_name)
                    else:
                        print("Db_GTZAN_function_" + str(wave_func) +
                              "_Degree_" + str(level) + ' passed')
            else:
                print(wave_func + " passed")
    def analyze_all_continuous(self):
        list_tables = Database.get_table_names(Database.database_name)

        iter = 0
        func_names = {}
        for table in list_tables:
            if (table.split('_')[0] != 'Comp'):
                func_name = table.split('_')[3]
                if (func_names.get(func_name, -1) == -1):
                    func_names[str(func_name)] = iter
                    iter += 1

        acc_matrix = [['' for x in range(7)] for x in range(iter)]
        rec_matrix = [['' for x in range(7)] for x in range(iter)]
        prec_matrix = [['' for x in range(7)] for x in range(iter)]

        iter = -1
        x = 0
        for table in list_tables:
            print(table)
            if (table.split('_')[0] != 'Comp'):
                func_name = table.split('_')[3]

                result = ClassifyMusic.run(table, 5, [1, 2, 3, 4, 5, 6], False)

                string = acc_matrix[func_names.get(func_name)]
                array = [func_name, result[0][2], result[1][2], result[2][2], result[3][2], result[4][2], result[5][2]]
                if (string[0] == ''):
                    acc_matrix[func_names.get(func_name)] = array
                else:
                    arr = [a + '-' + b for a, b in zip(string, array)]
                    acc_matrix[func_names.get(func_name)] = arr

                array = [func_name, result[0][3], result[1][3], result[2][3], result[3][3], result[4][3], result[5][3]]
                if (string[0] == ''):
                    prec_matrix[func_names.get(func_name)] = array
                else:
                    arr = [a + '-' + b for a, b in zip(string, array)]
                    prec_matrix[func_names.get(func_name)] = arr

                array = [func_name, result[0][4], result[1][4], result[2][4], result[3][4], result[4][4], result[5][4]]
                if (string[0] == ''):
                    rec_matrix[func_names.get(func_name)] = array
                else:
                    arr = [a + '-' + b for a, b in zip(string, array)]
                    rec_matrix[func_names.get(func_name)] = arr

        avg_acc_matrix = cont_create_tables(acc_matrix)
        avg_rec_matrix = cont_create_tables(rec_matrix)
        avg_prec_matrix = cont_create_tables(prec_matrix)

        print('-------------------------------------------------------------------')
        print('------------------------------------acc matrix---------------------')

        print(tabulate(avg_acc_matrix, tablefmt="latex_raw",
                       headers=['Type', 'Random Forest', 'KNN', 'SVC Poly', 'GaussianNB', 'SVC Linear', 'SVC RBF']))

        print(
            '----------------------------------------------------------------------------')
        print(
            '-----------------------------------acc matrix--------------------------------')

        print(
            '-------------------------------------------------------------------------------')
        print(
            '----------------------------------------rec matrix-----------------------------')


        print(tabulate(avg_rec_matrix, tablefmt="latex_raw",
                       headers=['Type', 'Random Forest', 'KNN', 'SVC Poly', 'GaussianNB', 'SVC Linear', 'SVC RBF']))

        print(
            '-----------------------------------------------------------------------------------')
        print(
            '-----------------------------rec matrix--------------------------------------------')

        print(
            '----------------------------------------------------------------')
        print(
            '-------------------------prec matrix-----------------------------')

        print(tabulate(avg_prec_matrix, tablefmt="latex_raw",
                       headers=['Type', 'Random Forest', 'KNN', 'SVC Poly', 'GaussianNB', 'SVC Linear', 'SVC RBF']))

        print(
            '-------------------------------------------------------------------------------')
        print(
            '-----------------------------------------prec matrix---------------------------')