Я работаю над проектом классификации звука , учитывая набор аудиозаписей, я пытаюсь определить, к какому классу будет относиться определенная запись. Вы можете сравнить это с проблемой распознавания жанра musi c или topi c (основной части текста), мои образцы имеют разную длину, и мне нужно назначить каждому образцу точно одну метку.
Я представляю свои функции в виде 2-мерных матриц, где каждый столбец представляет собой кадр в аудиофайле (например, 0,1 секунды), а каждая строка является функцией, относящейся исключительно к этому временному кадру (например, коэффициенты MF CC). Теперь, хотя мое количество строк будет фиксированным, количество столбцов будет варьироваться в зависимости от длины записи.
Я загружаю данные для обучения и тестирования в виде массивов numpy, они содержат 2D nxy матрица для каждой выборки, где n - константа (т.е. 13), а y - переменная, которая зависит от длины текущей выборки.
![...](https://i.stack.imgur.com/CDv7m.png)
Unfortunately, scikit-learn doesn't seem to be a big fan of this, time and time again raising me a ValueError: setting an array element with a sequence.
. Now I've seen a number of solutions:
- Using one of the gadgets in
sklearn.feature_extraction
to vectorize features in a sequence (text, images of varying size etc.), though most examples I've seen are for text-based problems, so I'm not entirely sure how applicable they are for an audio problem like this.
- Taking the mean of the columns to produce a single time-independent feature vector (as can be seen here https://www.youtube.com/watch?v=N1rcKBHlw-Y)
- При использовании такой модели, как K-NN, расстояния можно предварительно вычислить вручную, минуя scikit «последовательность или массив?» проверяет все вместе.
Теперь из этих трех я бы предпочел что-то похожее на # 1, так как кажется, что это подход, для которого оптимизирован scikit. Есть идеи?