#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…