«Правильный» способ подготовки и подачи нескольких кадров данных pandas, содержащих многомерные временные ряды, в LSTM вPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 «Правильный» способ подготовки и подачи нескольких кадров данных pandas, содержащих многомерные временные ряды, в LSTM в

Сообщение Anonymous »


Я новичок в работе с Tensorflow и в программировании в целом. Поэтому извините, если этот вопрос кажется тривиальным или ответ на него был дан где-то в другом месте, что я, возможно, не понял как решение моей проблемы.
Над чем я работаю
Проект, над которым я работаю, касается многомерной классификации временных рядов. Данные обучения, которые я использую, представляют собой около 100 кадров данных pandas, содержащих данные датчиков, сохраненные в формате CSV (хотел бы переключиться на соленья), состоящие из 13 функций/временных рядов. Столбцы/временные ряды в кадре данных во всех случаях имеют одинаковую длину, но сами кадры данных различаются по длине. Поскольку LSTM, похоже, поддерживают данные временных рядов разной длины (1, 2) в разных пакетах, я хотел бы попробовать их с различной длиной и добавить нулевое дополнение, если результаты неудовлетворительны. CSV-файлы сохраняются в разных папках с указанием 5 целей.

Мои данные упрощены и выглядят примерно так:

Для target1/example_t1_1.csv длиной n это будет:
время функцияA функцияB ... функцияK t1 а(t1) b(t1) ... К(t1) t2 а(t2) b(t2) ... К(t2) ... ... ... ... ... нет а(тн) b(tn) ... K(tn)
и target2/example_t2_1.csv длиной j:
время функцияA функцияB ... функцияK t1 а(t1) b(t1) ... К(t1) t2 а(t2) b(t2) ... К(t2) ... ... ... ... ... tj а(tj) b(tj) ... К(tj)
и так далее.
Какова моя цель
Моей целью было бы в основном использовать функции tf.data для создания конвейера данных, который считывает мои данные непосредственно в набор данных tf, на котором я затем выполняю другие операции, такие как поезд-тест-разделение, масштабирование и т. д. По крайней мере, мне кажется, что именно так вы и должны это делать. Или, по крайней мере, иметь более элегантный и удобный способ обработки данных многомерных временных рядов и способ маркировки данных по местоположению папки, как я делаю сейчас. Также сейчас работаю с 3d np.array. Я не могу понять, как читать данные разной длины без заполнения нулями.
Моя проблема
Я нахожу только ресурсы о том, как обращаться с tf.data с одним фреймом данных, где каждая строка представляет собой, по сути, один отдельный «обучающий экземпляр» (3, 4, 5), тогда как в моем случае я не Я хочу прочитать не один кадр данных в наборе данных, а несколько, где строки также должны рассматриваться как связанные. Я просто не могу понять, можно ли и как это сделать. Насколько я понимаю, моей целью должно быть создание некоего набора данных с размерами [num_of_различных_dfs, len_of_df (=None), num_of_features(13)]. С помощью этого видео (6) мне, по крайней мере, удалось поместить цели в набор данных tf, но мне не удалось сделать то же самое с фактическими данными.

Надеюсь, мой вопрос с пояснениями моих мыслей был понятен. Я был бы очень рад, если бы кто-нибудь мог предоставить дополнительную информацию о том, как правильно обрабатывать данные многомерных временных рядов, или направить меня к нужным ресурсам. Спасибо, что нашли время прочитать все это!
Как я читаю данные на данный момент
До сих пор я все считывал данные «вручную»: я написал две функции для поиска CSV с кратчайшим временным рядом (8 выборок) и считывал каждый из них такой длины как составной кадр данных для каждого цель. (Я знаю, что выбрасывать данные — это большая проблема, но в то время я не знал этого лучше.) В итоге у меня получилось 5 разных фреймов данных, содержащих данные временных рядов для каждой цели. Зная количество отдельных временных рядов, функция создала целевой вектор для каждой цели. Позже объединил 5 фреймов данных в массивы NumPy и сделал то же самое для целевых векторов, в результате чего у меня появился один двумерный массив «X» размера (8 * 100, 13) и целевой вектор «y» размера (100, 1). Затем X я превратил в трехмерный массив размером (100, 8, 13). Поскольку я хранил данные тестирования в другой папке, в которой выполнял те же действия, я не разделял X и y для обучения, тестирования и разделения. Вероятно, я бы не хотел делать это снова :D В конце концов я создал MinMax-Scaler со sklearn на X и применил его затем на X_test. Все это работает, но, похоже, не подходит для многомерных временных рядов, особенно разной длины. Надеюсь, это было понятно и вы видите, что это довольно окольный путь.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»