Как я могу пометить свои данные в формате dict, чтобы подготовиться к обучению и тестированию глубокого обучения?

#python #dictionary #split #label #training-data

#python #словарь #разделение #метка #обучение-данные

Вопрос:

У меня есть данные 3222 .wav, структурированные, как показано ниже, в виде выходных данных переменной :

final = {‘a0001.wav’: массив Numpy, ‘a0002.wav’: массив Numpay, …,’a3222.wav’: массив Numpy}

* Размер всего массива Numpy равен 99X160

Мой вопрос в том, как я могу добавить метку каждого.wav, например, метка ‘a0001.wav’ равна 1 или метка ‘a0002.wav’ равна 0 и т.д. И как я могу разделить окончательные помеченные данные на обучающие и тестовые части?

Ниже приведен полный код :

     import glob
from scipy.io import wavfile
import numpy as np

# Data augmentation

def augmentation(signal, split_size):
    split_signal={}
    split_list=[j*split_size for j in range(int(len(signal)/split_size))]
    for item in range(len(split_list)-1): 
        split_signal[item]=signal[int(split_list[item]):int(split_list[item 1])]
    Num_split=int(len(signal)/split_size)
    return split_signal, Num_split

# Variable defenition
aug_sig={}
final={}

aug_len=160

# Import file
files = glob.glob('*.wav')
for item in files:
    fs, data = wavfile.read(item)
    aug_sig[item]=augmentation(data[int(len(data)/2)-8000:int(len(data)/2) 8000], aug_len)
    arr=[]
    for i in range(aug_sig[item][1]-1):
        arr=np.concatenate((arr, aug_sig[item][0][i].transpose()), axis=0)
        
        
    final[item]=arr.reshape(aug_sig[item][1]-1,aug_len)
  

Комментарии:

1. зависит от пакета, который вы хотите использовать для глубокого обучения. Вы могли бы использовать sklearn, который предоставляет вам функцию train_test_split ( scikit-learn.org/stable/modules/generated /… ) и функция для одного горячего кодирования ( scikit-learn.org/stable/modules/generated /… )

2. @Racooneer : Я буду использовать sklearn, но основная проблема связана с метками. Как я могу пометить все свои данные? Должен ли я добавить столбец label в свой «окончательный» вывод?

3. Если я правильно понял, имя файла «.wav» должно быть меткой? Я действительно не понимаю, какой тогда будет задача обучения, но это ваше дело… Моя идея заключалась бы в том, чтобы создать столбец string для вашего фрейма данных с именем во время цикла for, и это можно разделить с помощью одной горячей кодировки… это шаг, который берет столбец категориальных строк и разбивает их на несколько столбцов, при этом запись столбца поворачивается к заголовку столбца, а записи равны 1 и 0…