Обнаружение временных аномалий в реальном мире с помощью контролируемого машинного обучения и теории множеств

Сиэтл Берк Гилман Трейл

Изучите открытые данные города Сиэтла

Оглавление:

I. Постановка задачи

II. Ремоделирование временных рядов в контролируемую задачу

III. Контролируемое моделирование и анализ

I. Постановка задачи

Данные можно скачать здесь: Сиэтл Берк Гилман Трейл | Каггл

Суть этой постановки задачи состоит в том, что нам необходимо обнаружить аномалии за 3 часа.Аномалия определяется как всего 500 человек на следе через 3 часа. Чтобы решить эту проблему, мы даны почасовые данные о дорожном движении — пешеходном и велосипедном.

II. Ремоделирование временных рядов в контролируемую задачу

Итак, что мы можем сделать, так это сделать две копии данных, а затем соединить их так, чтобы час 0 сопоставлялся с часом 3 в одной строке.

Как это делается?

Сначала вносим данные:

import pandas as pd
df = pd.read_csv(r’/content/burke-gilman-trail-north-of-ne-70th-st-bike-and-ped-counter.csv’)

Следующий:

# change df to dataframe

df = pd.DataFrame(df)
df = df.fillna(0)

После того, как мы это сделали, теперь давайте сделаем копию наших данных, которая начинается со строки 3:

#create df2 that starts at the 4th row

df2 = df[df.index >= 3]
df2.head()

Теперь мы добавим столбец индекса в оба фрейма данных, который начинается с 1:

# add a numbering column to both df1 and df2. the first row should 1, second row is 2 and so on.  Both dataframe columns should start at 1

df['index'] = list(range(1, len(df) + 1))
df2['index'] = list(range(1, len(df2) + 1))

Причина, по которой мы это делаем, заключается в том, что мы можем присоединиться к столбцу индекса. Индекс 1 присоединится к индексу 1 в df2, но в этой строке мы увидим час 0 слева и час 3 справа…