Форум программистов, компьютерный форум, киберфорум
Python: Научные вычисления
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
1 / 1 / 0
Регистрация: 09.09.2017
Сообщений: 59

Сделать прогноз на заданный временной интервал в будущем

01.07.2020, 11:52. Показов 3009. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
У меня есть модель:
Python
1
2
3
4
5
6
look_back = 3
model = Sequential()
model.add(LSTM(4, input_shape=(look_back, 1)))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(trainX, trainY, epochs=20, batch_size=1, verbose=2)
Здесь trainX и trainY уже сформированны с помощью входного набора данных до текущего момента времени.
Теперь мне надо сделать предсказание на следующий период времени, который ещё не наступил:
Python
1
model.predict(...)
1. Каким образом мне в predict передать даты start_date и end_date. Неважно, в миллисекундах или в нормальном формате?
2. Каким образом подсчитать вероятности спрогнозированных значений данных при соответствующих значениях времени?
Прочитал документацию, в predict надо передавать массив данных, а не 2 даты. Т.е. получается, что подходит такая модель чисто для проверки, но никак не для предсказания в реальном времени? Ты можешь видеть, что LSTM достаточно эффективны, но в режиме реального времени спрогнозировать нельзя, ибо это не заложено разработчиками соответствующих библиотек Python. Нормально так.
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.07.2020, 11:52
Ответы с готовыми решениями:

Перевести временной интервал, заданный в минутах, в часы, минуты и секунды
Задание: Написать программу пересчета величины временного интервала, заданного в минутах, в величину, выраженную в часах, минутах и...

Перевести временной интервал, заданный в минутах в вид: сутки, часы, минуты
Здравствуйте. Не получается довести "до ума" задачку: Программа переводит временной интервал, заданный в минутах в вид: сутки, часы,...

Как сделать событие, происходящее через заданный интервал времени, например 5 сек.?
Просто subj, собственно.

16
578 / 411 / 69
Регистрация: 09.01.2018
Сообщений: 1,363
01.07.2020, 15:21
1. Ну, предположим, что мы проинтуичили и догадались, что вы используете Keras (а и вправду, зачем это явно писать? Или вы так проверяете нашу компетентность?).
2. В fit в качестве данных вы же задаете не start_date и end_date, а вполне себе сформириованные trainX, trainY - наборы. Вот точно такие же естественно для predict тоже задавать данные, предварительно их подготовив.
3. Вывод о невозможности использовании LSTM сетей для предсказания несколько - как бы помягче сказать - странен, тем более, что источников, описывающих применение этих сетей именно для предсказания, а не проверки (кстати - проверки чего? так и не понял) - более чем достаточно:
How to Develop Multi-Step LSTM Time Series Forecasting Models for Power Usage
3 Steps to Forecast Time Series: LSTM with TensorFlow Keras
Predicting Stock Price with LSTM
и т.д
Про использование в реальном времени - тоже несколько странное заявление. Предсказание в реальном времени - этот по сути предсказание на один шаг вперед. Т.е. набрали данные - сделали прогноз на шаг вперед - переучили модель на расширенных данных (если надо)- снова прогноз на шаг вперед. На каком из шагов этой цепочки вы увидели ограничение, делающее работу в он-лайн режиме невозможном?
О том, что разработчики такого инструмента что-то не додумали и "не включили" - можно делать заявление после того, как вы сами глубоко разберетесь с темой. До тех пор разумнее находиться на позиции, "я не понимаю, как именно с помощью инструмента можно что-то реализовать". Иначе это выглядит просто смешно.
1
1 / 1 / 0
Регистрация: 09.09.2017
Сообщений: 59
12.07.2020, 14:09  [ТС]
Прочитал разные источники, в том числе и то, что на ссылках. Везде вижу только
Python
1
model.predict(testX)
Всё равно везде передаются в predict уже известные данные, на основании которых потом и сравнивается предсказание с тем, что было в реале.
Однако, в режиме реального времен никакого testX нет и быть не может, ибо речь идёт о будущем, которое не наступило. Однако какой-то массив в predict всё равно надо передать.
И поэтому я и задаюсь вопросом, как с такой моделью работать в онлайн-режиме и что нужно передавать в predict?
0
578 / 411 / 69
Регистрация: 09.01.2018
Сообщений: 1,363
12.07.2020, 16:35
Плохо прочитали "разные источники". Впрочем, думаю, проблема именно в том, что вы читаете РАЗНЫЕ источники, вместо того, что-бы взять один, но полный - лучше всего книгу, еще лучше даже не по нейросетям, а методам прогнозирования и временным рядам - и по ней разобраться что да как. Потом разобраться в нейросетях (опят-же по книге, а не по отрывочним статейкам в интернет), а уж потом приступать к работе.
Но это лирика. А по факту.
Прогнозирование во временных рядах делется (если это не панельные данные) по единственной независимой переменной - времени. Причем даже не по самому времени, а по "тикам". Конечно никакого тестировочного testX при этом нет. Вы сами задаете те "тики" на которые хотите сделать прогноз.
В режиме он-лайн с такой моделью работать элементарно. Цикл состоит в следующем. Делаете прогноз на то количество "тиков", которые вас интересуют, потом получаете реальные данные в эти тики, сравниваете их с прогнозными. Если анализ показывает, что прогноз статистически не значимо отличается от реальных данных - цикл повторяется "как есть". Если различия статистически значимы - надо строить новую модель, используя предыдущие временные тики и значения, которые получены.
0
1 / 1 / 0
Регистрация: 09.09.2017
Сообщений: 59
13.07.2020, 09:46  [ТС]
Так что в таком случае передавать в predict? Массив [1,...,N], где N - количество тиков?

P.S.: читал я и книги, но там в predict всё равно testX передают. Нет там примеров работы в режиме реального времени
0
578 / 411 / 69
Регистрация: 09.01.2018
Сообщений: 1,363
13.07.2020, 12:43
Вы знаете, становиться даже не интересно. Вам что-то советуешь, но вы не слушаете, остаетесь на своей волне и даже не понимаете, о чем речь. Если читали книги, то явно их не поняли. Причем вы заявляете, что там "все равно" все делают неправильно. И совершенно безаппеляционно: "Нет там примеров работы в режиме реального времени".Вы и вправду себя считаете "первопроходцем" прогнозирования в реальном времени?

Я не даром вам советовал начать с азов! Но и этот совет вы пропускаете мимо ушей. Еще раз, даже не книги, которые надо "думать, а не читать", а облегченные версии из интернет, которые можно тупо копипастить (я не призываю это делать, кстати):
Открываем самые первые ссылки в Гуугл и внимательно смотрим, а что же там передают при форекастинге в качестве параметров. И о чудо, никаких тебе testX:
https://machinelearningmastery... eat-sheet/

Потом силимся понять, а зачем вообще используют деление выборки на обучающую и тестовую. И с изумлением "открываем" (хотя это черным по белому написано в ЛЮБОЙ книге по временным рядам), что это делают не для реального прогноза, а только что-бы проверить адекватность модели.

Проверяем, а что-же там не додумали разработчики Keras.
https://machinelearningmastery... recasting/
Оказывается все они додумали и даже описали. Но на языке, понятном только тем, кто идет нормальным путем, а не прыгая через пять ступеней.
Хотите - прислушивайтесь к совету, хотите - набивайте шишки дальше, обвиняя всех в некомпетентности.
Удачи.
0
1 / 1 / 0
Регистрация: 09.09.2017
Сообщений: 59
13.07.2020, 13:02  [ТС]
Об этом и речь. Для предсказаний в режиме реального времени используются AutoReg, ARMA, ARIMA и т.д. А Sequential только для поверки адекватности модели.
Значит, мне фактически делать что-то из AutoReg, ARMA, ARIMA и т.п., и выбирать наиболее оптимальную
0
578 / 411 / 69
Регистрация: 09.01.2018
Сообщений: 1,363
13.07.2020, 13:05
А Sequential только для поверки адекватности модели. - вывод опять безаппеляционен и ошибочен. Продолжайте гадать.
0
1 / 1 / 0
Регистрация: 09.09.2017
Сообщений: 59
13.07.2020, 13:09  [ТС]
В примере по Sequential передаётся x_input, который как раз и является testX фактически. Но там и пример на проверку адекватности
0
578 / 411 / 69
Регистрация: 09.01.2018
Сообщений: 1,363
13.07.2020, 13:45
Это типа вы так тонко троллите? Еще раз. Наверное - последний. Чем отличается testX при использовании в predict от использовании любой другой последовательности, передаваемой в качестве входа в predict? И зачем вообще выборку разбивают на обучающую и тестовую? И чем работа на тестовых данных отличается от предсказания?
(Подсказка - ответ на первых страницах ЛЮБОЙ книги по временным рядам).
0
1 / 1 / 0
Регистрация: 09.09.2017
Сообщений: 59
13.07.2020, 14:20  [ТС]
Подставил вместо testX в predict массив из дат в миллисекундах. В результате:
Python
1
2
3
4
5
6
7
8
9
10
Traceback (most recent call last):
  File "D:\Prediction\PrPred.py", line 121, in <module>
    trainRealPredict = model.predict(df0.date.to_numpy())
  File "I:\Python\Python36\lib\site-packages\keras\engine\training.py", line 1441, in predict
    x, _, _ = self._standardize_user_data(x)
  File "I:\Python\Python36\lib\site-packages\keras\engine\training.py", line 579, in _standardize_user_data
    exception_prefix='input')
  File "I:\Python\Python36\lib\site-packages\keras\engine\training_utils.py", line 135, in standardize_input_data
    'with shape ' + str(data_shape))
ValueError: Error when checking input: expected lstm_1_input to have 3 dimensions, but got array with shape (1327, 1)
Так что не всё так просто с Sequential, как кажется на первый взгляд
0
578 / 411 / 69
Регистрация: 09.01.2018
Сообщений: 1,363
13.07.2020, 15:09
Цитата Сообщение от phoenix_css Посмотреть сообщение
Подставил вместо testX в predict массив из дат в миллисекундах. В результате:

Так что не всё так просто с Sequential, как кажется на первый взгляд
Опять все вокруг не правы и не умеют работать? Прям какой-то заговор против вас.
Подставили, да не то, что надо. А разобраться - уже очевидно - не ваш путь. Проще сваливать все на нерадивых разработчиков.
Удачного изобретения велосипеда.
0
1 / 1 / 0
Регистрация: 09.09.2017
Сообщений: 59
13.07.2020, 17:21  [ТС]
Если бы я мог разобраться, что подставить, я бы и не задавал вопросы.
Если бы я хотя бы в одном источнике прочитал, как использовать Sequential для реального прогноза, я бы вопросы не задавал.
А пока по Sequential я видел только примеры проверки адекватности модели.

То, что для вас само собой разумеющееся, для меня вообще не очевидно и не понятно. И пока то, что написано в разных источниках, ясности не вносит.

Добавлено через 1 час 50 минут
И я бы разобрался, если бы в литературе и статьях увидел ответы на свои вопросы. Но, как я понял из прочитанного, в том числе и документации по Keras, можно быть толковым разработчиком, но не способным внятно объяснить суть своих разработок
0
578 / 411 / 69
Регистрация: 09.01.2018
Сообщений: 1,363
13.07.2020, 17:48
Ну, я бы честно говоря удивился, если бы опять не увидел обвинения в сторону разработчиков, "не способных" на что-то там.
Понимаете, невозможно второкласснику, изучившему четыре операции арифметики, "толково" объяснить что такое интеграл. И тут проблема не в "неспособных" учителях будет. А разработчики Keras очень внятно и толково объяснили не тем, кто верит в то, что "он БЫ разобрался, если БЫ..", а тем, кто изучИл хоть немного теории. Но у каждого "второклассника", как и у каждого двоечника, всегда виноватым будет бестолковый учитель.
0
1 / 1 / 0
Регистрация: 09.09.2017
Сообщений: 59
13.07.2020, 18:43  [ТС]
Причём тут теория, если речь идёт о том, что необходимо передать в качестве массива в функцию predict в случае Sequential модели для предсказания будущих значений, а не для проверки адекватности модели?
Более того, я попробовал разные варианты с массивом временных тиков, записанных в миллисекундах. Применял reshape.
Python
1
dfdate = np.reshape(df0.date, (df0.date.shape[0], df0.date.shape[1], 1))
Не помогает и это.
0
578 / 411 / 69
Регистрация: 09.01.2018
Сообщений: 1,363
13.07.2020, 19:00
Причём тут теория, если речь идёт о том, что необходимо передать в качестве массива в функцию predict
Да, в который раз убеждаюсь. Знание формата fit или predict НЕ делает человека специалистом в ML. Но НЕзнание теории, в частности, неспособность ответить после трех упоминаний "И зачем вообще выборку разбивают на обучающую и тестовую? И чем работа на тестовых данных отличается от предсказания?" точно не дает человеку даже в этих самых форматах разобраться.

Не помогает и это.
Вам - не помогает. Другим - помогает. Угадайте - почему (только не говорите в очередной раз, что разработчики Keras то ли не продумали такую возможность, то-ли не способны внятно объяснять.)

Ладно, таки уже надоело. Не моя задача наставлять вас ну путь истинный. Надеюсь, если кому такая задача попадется - он все поймет. Так как выше уже ВСЕ что можно было (ну, кроме краткого курса по Time Series Forecasting, конечно) уже сказано.
Еще раз удачи.
0
1 / 1 / 0
Регистрация: 09.09.2017
Сообщений: 59
16.07.2020, 11:44  [ТС]
Теперь подставил trainX, в который засунул все данные за предыдущие периоды времени + текущие. Таймфрейм - 5 минут.
В итоге создаётся такое впечатление, что данные предсказаны не на будущий и на предыдущий период времени, хотя с другой стороны первые 12 тиков вроде как более менее приемлемо предсказано
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.07.2020, 11:44
Помогаю со студенческими работами здесь

Если значения матрицы не входят в заданный интервал, сделать номировку, чтобы они туда вошли
Пользователь задаeт с клавиатуры количество строк и столбцов двумеpного массива и интервал . Программа заполняет матрицу заданных размеров...

Временной интервал
Привет, подскажите как реализовать такое: есть промежуток времени например с 17:00 до 04:00 мне нужно выполнить код если текущее...

Временной интервал....
Мне надо решить задачу, а я чет даже не понимаю что надо сделать в этой задаче.... Временной интревал. Заданы моменты начала и конца...

Php временной интервал
Здравствуйте, нужно решить вот что, Если проходит определенный временной промежуток, то выполнить какое то условие, если проходит другой...

установить временной интервал
Здравствуйте. Подскажите пожалуйста как правильно установить временной интервал, я хочу сделать что то типа счетчика, код примерно такой: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru