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)
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---------------------------')