1

Я новичок в обучении машинам и раньше не использовал scikit-learn. Я работаю над проектом. В рамках проекта мне нужно подготовить алгоритм машинного обучения, чтобы классифицировать некоторые наблюдения на отдельные классы. Я обработал наблюдения с датчика, чтобы получить некоторые данные. Но проблема с обработанными данными заключается в том, что она представляет собой вектор разной длины для разных наблюдений.Уменьшите размерность данных с помощью подгонки кривой

enter image description here

Это изображение показывает некоторые данные. Зеленая линия - это необработанные данные после применения фильтра Гаусса, а красная линия показывает полиномиальность 16 градусов, соответствующую данным. Первая строка состоит из данных с 3 пиками, вторая строка содержит данные с 4 пиками, а 3-я строка содержит данные с 5 пиками. Я хочу иметь возможность классифицировать данные на отдельные классы.

В настоящее время я планирую использовать коэффициенты полинома в качестве моего вектор-функции. Первая строка просто прекрасна, но в случаях с большим числом пиков полином дает плохое соответствие и не может привести к надлежащей классификации. Я пробовал использовать полиномы более высокой степени, но это приводит к ошибкам с меньшим числом пиков. Простое подсчет числа пиков нельзя использовать для классификации, потому что это всего лишь подмножество нескольких классов, классификация будет также зависеть от относительных размеров и разделения наблюдаемых пиков, но эта информация не очень ясна в полиномиальном подходе для большее количество пиков.

Я хочу знать, если есть

  • Некоторые другие методы, вместо того, чтобы пытаться соответствовать полином, который может помочь мне, чтобы сгенерировать вектор признаков для классификации данных.
  • Способ визуализации данных высокой размерности в питоне

EDIT:

Я теперь фитинг сплайна вместо полинома к данным с использованием scipy.interpolate.UnivariateSpline и генерирует гораздо лучше подходит. Теперь я могу использовать расположение узлов и коэффициенты сплайна. Но длина этих векторов не постоянна и отличается даже для двух повторений одного и того же наблюдения. Может ли кто-нибудь предложить способ сопоставить его с вектором постоянной длины.

enter image description here

ответ

0

Другой способ сжать сигнал в характеристический вектор может быть сделать анализ FFT и использовать первые коэффициенты n FFT как ваши особенности.

Или вы можете сделать оконный БПФ, чтобы получить последовательность коэффициентов.

+0

я, возможно, ошибаюсь, но я думаю, что FFT используется для периодических данных. –

+0

Хорошо использовать БПФ на непериодических данных.ДПФ (дискретное преобразование Фурье) отлично работает на непериодических данных. Однако в DFT подразумевается, что сигнал периодически расширяется. Посмотрите на уравнение для обратного ДПФ, сигнал является N-периодическим, так как ДПФ является N-периодическим. – fferri

+0

О да, я попробую использовать ДПФ. Спасибо –

0

Если ваша проблема объясняется главным образом из-за различного количества образцов, интерполяция и повторная выборка действительно могут быть способом. Тем не менее, я бы использовал менее ограниченную технику интерполяции. Если у вас есть большое количество очков, будет работать даже линейная интерполяция. Кроме того, вы можете использовать регрессию Gaussian Process, которая хорошо реализована при изучении scikit. Вам не нужно сначала использовать гауссовский фильтр, так как вы используете регрессию.

Проверить эту ссылку за пример того, как применять ВОП для регрессии: http://scikit-learn.org/stable/modules/gaussian_process.html

+0

Проблема заключается не в различном количестве образцов, а в том, как получить правильный вектор функций, который может представлять данные. –

+0

Это зависит от того, где представлена ​​соответствующая информация в данных (количество экстремумов, амплитуда, сдвиг фазы и т. Д.). Но, если ваш сигнал прост, может быть очень просто использовать необработанный сигнал в качестве входа в классификатор. В этом случае достаточно повторной выборки для фиксированной длины вектора. –

+0

повторная выборка с фиксированной длиной вектора приведет к потере данных, относящихся к ширине пиков, что неприемлемо, поскольку классы также зависят от амплитуды и ширины пиков. –

Смежные вопросы