|
0 / 0 / 0
Регистрация: 14.11.2013
Сообщений: 68
|
|||||||||||
Обучение в sklearn10.08.2020, 16:09. Показов 1031. Ответов 5
Всем доброго дня!
Прошу знающих, ну или не очень знающих помочь) Задача спрогнозировать событие и время когда это событие произойдёт. Для этого я использовал библиотеку sklearn. Данные привёт в такой формат:
В качестве ответа хочу получить сколько и каких событий будет в дата1+ n+1 дней. Хотел бы уточнить в каком виде лучше представлять датафрейм и как обучать, может кто-то сталкивался уже с этой проблемой. (Так же была мысля разбить каждое событие на отдельный датафрейм, состоящий из одной строчки:
Так же, буду признателен за ссылки на какие-нибудь курсы или литературу по этой теме) Заране спасибо!
0
|
|||||||||||
| 10.08.2020, 16:09 | |
|
Ответы с готовыми решениями:
5
sklearn Дедуктивное обучение или Обучение по прецедентам (плюсы и минусы)
|
|
578 / 411 / 69
Регистрация: 09.01.2018
Сообщений: 1,363
|
|
| 10.08.2020, 16:28 | |
|
А можно задать вопрос незнающему, или вернее - не понимающему то, что вы написали?
1. У вас события независимы? Т.е. вы можете предсказывать одно событие без оглядки на другие? 2. Если у вас события происходят каждый день, что что значит "спрогнозировать время когда это событие произойдёт"? Если же у вас события происходят не каждый день, то почему про это ни слова? 3. Что значит - "спрогнозировать событие и время"? Союз "и" в русском языке предполагает, что вы прогнозируете эти сущности отдельно друг от друга. Это соответствует действительности? 4. "Для обучения использую весь датафрейм, в качестве учителя выступает последний день" - а это что за загадка? Если у вас события независимы и заданы (количеством??) по дням, то это у вас т.н. "ряд событий". Анализируется соответствующими методами, рассматриваемыми в курсе "Анализ потоков событий". Если же у вас события зависимы или вообще это разные реализации одного и того-же события, то у вас задача предсказания значений классического временного ряда, рассмотриваемые в курсе "Анализ временных рядов". Правда, что такое "учитель" в таком случае - непонятно. 5. "В каком виде лучше представлять датафрейм" - датафрейм он и есть датафрейм. Что значит в каком виде, да еще и "лучше"? Другое дело, что если у вас первый из упомянутых случаев, то вам можно и Серией ограничиваться. 6. Вот после ответа на вопросы, возможно удастся понять, чему именно вы собрались обучать и что-то подсказать.
0
|
|
|
0 / 0 / 0
Регистрация: 14.11.2013
Сообщений: 68
|
||||||||||||
| 10.08.2020, 17:25 [ТС] | ||||||||||||
|
1. Некоторые события зависимы, некоторые нет. Но в случае с зависимыми событиями- они не всегда зависимы. Т.е. иногда событие1 влечёт за собой событие2, иногда нет. (Наверное, лучше их рассматривать как независимые) 2. События действительно происходят не каждый день, но датафрейме столбцы - это каждый день, начиная с определенной даты. Т.е. если событие1 не произошло в какой-то день - там будет стоять 0. Если произошло 2 раза - то 2. 3. Это значит, что по итогу мне нужно получить произойдёт событие1 в день n или нет. Ну в данной ситуации у меня была такая логика: обучается модель на последнем дне (т.е. на списке, где указано количество событий за последний день), и пытается предсказать следующий. Но до меня только после формирования модели и датафреймов дошло, что если в последний день ничего происходить не будет (кол-во будет везде проставлено как 0), то она даст предсказание со всеми нулями. Ну а так, да, отдельно друг от друга. Получается что я делаю прогноз на основе данных по количеству событий в день. Вот так выглядит датафрейм (значения от 0 до 208 и есть события):
Т.е. в случае если я рассматриваю это как временной ряд, получается такой датафрейм:
Надеюсь, в этот раз я немного понятнее обрисовал ситуацию)
0
|
||||||||||||
|
578 / 411 / 69
Регистрация: 09.01.2018
Сообщений: 1,363
|
|
| 10.08.2020, 18:31 | |
|
Да, стало немного :-) понятнее.
Смотрите. Исходим из ситуации, что серии событий независимы. Если у вас действительно количество событий 0 (в основном),1 (иногда), 2 ( редко) в день, то я бы рассматривал вашу задачу как ряд событий. Для таких рядов оперируют такими статистиками, как распределение вероятностей между появлениями событий и производными от нее- интенсивность события за период. Там работает не нормальное распределение, а распределение Пуассона, ну и всякие его "усложнения" (Иногда довольно сложные - но до них доберетесь потом). Т.о. получив это распределение по предыдущим значением вы можете предсказать вероятность события в следующий (некоторые после него) периоды - хоть час, хоть день, хоть неделю - как модель построите. Ваш Датафрейм (для КАЖДОГО события отдельный!!!) - это по сути единственный столбец Столбец -"ВременнАя метка" наступления события. Ну если очень хочется (или заготовка - "на потом"), можно свести все такие столбцы в единый датафрейм, где первый столбце "Временная метка" всех(!!!) событий (по сути объединение временных меток всех отдельных событий), а дальше - каждый столбец - содержит 1 в том рядке, которые соответствует моменту его наступления. Понятно, что так работать будет сложнее для каждого события в отдельности, зато вы потом сможете искать корреляции событий, что может оказать очень полезным (например, при анализе того-же интернет-трафика). Если же у вас события более часты, и вас не интересует момент события, а достаточно просто определить - по сути - сколько событий в день произойдет, то как я уже писал - это типичный временной ряд, и его можно "предсказывать" любым методом, который окажется подходящим и адекватным по сложности - от элементарного усреднения или методов Брауна-Хольта-Винтерса, до АRIMA или LSTM-нейросетей. Тут вы тоже по сути предсказываете вероятность того или иного значения количества событий на период прогнозирования. Надо сказать, что для временных рядов разработана и теория "панельных данных", и теория "многомерных рядов" и задача анализа контегральных рядов - когда значения одного ряда в разных сочетаниях могут оказывать влияние на значения другого. Но тут уже все намного сложнее. Так что выбирайте :-)
1
|
|
|
0 / 0 / 0
Регистрация: 14.11.2013
Сообщений: 68
|
||
| 11.08.2020, 12:12 [ТС] | ||
|
Я не знаток таких вещей, на работе поставили такую задачу (мол, тыж там интересовался этим...), сейчас пытаюсь это дело как-то реализовать) Я ведь правильно понимаю, что в первом случае алгоритм будет следующий: взять первый датафрейм (для первого события) где каждый столбец имеет значение времени события, обучить модель на последнем значении, предсказать следующее. Ну и так для всех оставльных событий)
0
|
||
|
578 / 411 / 69
Регистрация: 09.01.2018
Сообщений: 1,363
|
||
| 11.08.2020, 23:25 | ||
|
В данном случае, предполагая, что каждое Событие живет своей жизнью, все что вы можете - построить вероятность распределения времени ожидания следующего события. Ну, или вероятность наступления события в следующий день. Все! Ни больше и ни меньше. Для этого "последнее событие " вам без надобности. А вот в временном ряду - там можно "обучать" модель, но тоже,не на одном значении. Большинство методов связанных с временными рядами строят адаптивные модели, т.е. модели, которые набирая новые значения временного ряда и сверяя их с известными данными способны подстраиваться, адаптироваться, и "предсказывать" свои значения на следующих временных тиках.
1
|
||
| 11.08.2020, 23:25 | |
|
Помогаю со студенческими работами здесь
6
Ошибка sklearn
Обучение C# по видео курсам. Оптимально ли такое обучение? sklearn бинарная классификация Sklearn для начинающих Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
|
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
На примере нетипового документа разработанного в конфигурации КА2.
В качестве источника данных указан регистр накопления, в который записываются данные о. . .
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|