Rilevazione di anomalie temporali nel mondo reale tramite apprendimento automatico supervisionato e teoria degli insiemi

Detection of real-world temporal anomalies through supervised machine learning and set theory

Sentiero Burke Gilman di Seattle

Esplora i dati aperti della città di Seattle

Indice:

I. Problema dichiarato

II. Trasformazione delle serie temporali in un problema supervisionato

III. Modellazione e analisi supervisionata

I. Problema dichiarato

I dati possono essere scaricati da qui: Sentiero Burke Gilman di Seattle | Kaggle

La sostanza di questo problema è che dobbiamo rilevare anomalie con 3 ore di anticipo. Un’anomalia è definita come >500 persone totali sul sentiero tra 3 ore. Per risolvere questo problema, ci sono stati forniti dati per ogni ora del traffico sul sentiero – pedoni e biciclette.

II. Trasformazione delle serie temporali in un problema supervisionato

Quindi quello che possiamo fare è fare due copie dei dati e poi possiamo unire i dati in modo che l’ora 0 corrisponda all’ora 3 sulla stessa riga.

Come si fa?

Prima, importiamo i dati:

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

Successivamente:

# cambia df in dataframe
df = pd.DataFrame(df)

df = df.fillna(0)

Una volta fatto questo, facciamo una copia dei nostri dati che inizia dalla riga 3:

# crea df2 che inizia dalla 4a riga
df2 = df[df.index >= 3]
df2.head()

Ora, aggiungeremo una colonna di indice a entrambi i dataframes che inizia da 1:

# aggiungi una colonna numerica sia a df1 che a df2. la prima riga dovrebbe essere 1, la seconda riga è 2 e così via. Entrambe le colonne dei dataframes dovrebbero iniziare da 1
df['index'] = list(range(1, len(df) + 1))
df2['index'] = list(range(1, len(df2) + 1))

Il motivo per cui facciamo questo è per poter unire sulla colonna di indice. L’indice 1 si unirà all’indice 1 di df2, ma su quella riga, vedremo l’ora 0 sul lato sinistro e l’ora 3 sul lato destro…